Liigu põhisisu juurde

Juhendid

Manustamine

Clepiti redaktori või rendereri integreerimine mis tahes rakendusse on lihtne: DOM-konteiner on ainus juhtimispunkt.

Redaktori paigaldamine

Anna konteinerelementile id, kutsu `Editor.create({ containerId, ... })`, hoia tagastatud `EditorAPI` alles ja kutsu `Editor.destroy(containerId)` puhastamisel.

TypeScript
import { Editor } from '@clepit/core';
import type { EditorAPI } from '@clepit/core';

// 1. Give your container a stable id
// <div id="my-editor"></div>

// 2. Create the editor and hold the returned API
const editor: EditorAPI = Editor.create({
  containerId: 'my-editor',
  minHeight: 400,
  placeholder: 'Start writing...',
  theme: 'auto',
  onChange: data => console.log(data),
  onReady: () => console.log('Editor ready'),
});

// 3. Extract content any time
const data = editor.data.extract();

// 4. Destroy on teardown (e.g. component unmount)
Editor.destroy('my-editor');

Ainult lugemiseks mõeldud väljundi renderdamine

Kutsu `Renderer.render({ containerId, data })`. Alljärgnev näide näitab reaalset Reacti mustrit `DocsRenderer` komponendist: `useId` genereerib unikaalse konteineri id ja `useEffect` käivitab renderdamise.

TSX
import { Renderer } from '@clepit/core';
import type { EditorData } from '@clepit/core';
import { useEffect, useId } from 'react';

type Props = { content: EditorData };

const ReadOnlyView = ({ content }: Props) => {
  // useId produces a stable, unique id per component instance
  const containerId = useId().replace(/[^a-z0-9]/gi, '');

  useEffect(() => {
    Renderer.render({
      containerId,
      data: content,
      margins: { bottom: 0, top: 0 },
    });
  }, [containerId, content]);

  return <div id={containerId} />;
};

Kus iga API töötab

Editor ja Renderer monteerivad päris DOM-i, seega töötavad nad ainult brauseris: kasuta nende jaoks effecte või use client direktiivi. Serveri väljund neid ei vaja: renderBlocks joonistab valmis HTML-i üldse ilma DOM-ita, kaetud allpool.

Ära kutsu Editor.create või Renderer.render serverikomponendis; need vajavad päris document-objekti. Serveris renderdamiseks kasuta hoopis renderBlocks-i.

Serveris renderdamine

renderBlocks joonistab sama dokumendi ilma DOM-ita valmis HTML-stringiks, nii et server saab saata päris märgistuse: roomajad loevad seda ja monteerimisel ei joonistata midagi uuesti. Serveeri kõrvale pageStylesheet() ja kutsu pärast monteerimist activateBlocks.

TypeScript
import { activateBlocks, pageStylesheet, renderBlocks } from '@clepit/core';

// On the server: finished HTML, no DOM needed
const html = renderBlocks(doc.blocks);
const css = pageStylesheet();

// In the browser, after mount: wire the interactive blocks
const dispose = activateBlocks(container, doc.blocks);
Kasutad Reacti? @clepit/react pakendab täpselt selle konveieri ClepitContentiks, serverist alustavaks komponendiks; vaata React-lehte.

Raamistikust sõltumatu

Põhipakett @clepit/core on puhas TypeScript, Reacti sõltuvust pole. Olenemata sellest, kas kasutad Reacti, Vue, Sveltet, Angulari või tavalist TS/JS, kõik kasutavad sama API-d.