prosekit-registry 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +241 -0
- package/dist/r/lit-example-minimal.json +36 -0
- package/dist/r/lit-example-slash-menu.json +55 -0
- package/dist/r/lit-example-table.json +56 -0
- package/dist/r/lit-example-toolbar.json +60 -0
- package/dist/r/lit-sample-sample-doc-table.json +29 -0
- package/dist/r/lit-sample-sample-uploader.json +29 -0
- package/dist/r/lit-ui-button.json +36 -0
- package/dist/r/lit-ui-editor-context.json +30 -0
- package/dist/r/lit-ui-image-upload-popover.json +42 -0
- package/dist/r/lit-ui-slash-menu.json +56 -0
- package/dist/r/lit-ui-table-handle.json +47 -0
- package/dist/r/lit-ui-toolbar.json +55 -0
- package/dist/r/preact-example-block-handle.json +60 -0
- package/dist/r/preact-example-blockquote.json +53 -0
- package/dist/r/preact-example-bold.json +56 -0
- package/dist/r/preact-example-change-tracking.json +50 -0
- package/dist/r/preact-example-code-block-themes.json +66 -0
- package/dist/r/preact-example-code-block.json +60 -0
- package/dist/r/preact-example-code.json +56 -0
- package/dist/r/preact-example-drop-cursor.json +48 -0
- package/dist/r/preact-example-emoji-rules.json +50 -0
- package/dist/r/preact-example-full.json +106 -0
- package/dist/r/preact-example-gap-cursor.json +48 -0
- package/dist/r/preact-example-hard-break.json +59 -0
- package/dist/r/preact-example-heading.json +56 -0
- package/dist/r/preact-example-horizontal-rule.json +53 -0
- package/dist/r/preact-example-image-view.json +55 -0
- package/dist/r/preact-example-inline-menu.json +54 -0
- package/dist/r/preact-example-italic.json +56 -0
- package/dist/r/preact-example-keymap.json +63 -0
- package/dist/r/preact-example-link-mark-view.json +55 -0
- package/dist/r/preact-example-link.json +54 -0
- package/dist/r/preact-example-list-custom-checkbox.json +63 -0
- package/dist/r/preact-example-list.json +56 -0
- package/dist/r/preact-example-loro.json +62 -0
- package/dist/r/preact-example-mark-rule.json +50 -0
- package/dist/r/preact-example-minimal.json +36 -0
- package/dist/r/preact-example-page.json +49 -0
- package/dist/r/preact-example-placeholder.json +43 -0
- package/dist/r/preact-example-readonly.json +66 -0
- package/dist/r/preact-example-rtl.json +74 -0
- package/dist/r/preact-example-save-html.json +36 -0
- package/dist/r/preact-example-save-json.json +36 -0
- package/dist/r/preact-example-save-markdown.json +50 -0
- package/dist/r/preact-example-search.json +54 -0
- package/dist/r/preact-example-slash-menu.json +51 -0
- package/dist/r/preact-example-strike.json +59 -0
- package/dist/r/preact-example-table.json +52 -0
- package/dist/r/preact-example-temml.json +51 -0
- package/dist/r/preact-example-text-align.json +59 -0
- package/dist/r/preact-example-text-color.json +59 -0
- package/dist/r/preact-example-toolbar.json +56 -0
- package/dist/r/preact-example-typography.json +59 -0
- package/dist/r/preact-example-underline.json +56 -0
- package/dist/r/preact-example-unmount.json +58 -0
- package/dist/r/preact-example-user-menu-dynamic.json +67 -0
- package/dist/r/preact-example-user-menu.json +59 -0
- package/dist/r/preact-example-view-adapter.json +58 -0
- package/dist/r/preact-example-word-counter.json +52 -0
- package/dist/r/preact-example-yjs.json +62 -0
- package/dist/r/preact-sample-define-atom-block.json +29 -0
- package/dist/r/preact-sample-katex.json +29 -0
- package/dist/r/preact-sample-sample-doc-block-handle.json +29 -0
- package/dist/r/preact-sample-sample-doc-bold.json +29 -0
- package/dist/r/preact-sample-sample-doc-code-block.json +29 -0
- package/dist/r/preact-sample-sample-doc-code.json +29 -0
- package/dist/r/preact-sample-sample-doc-drop-cursor.json +29 -0
- package/dist/r/preact-sample-sample-doc-full.json +29 -0
- package/dist/r/preact-sample-sample-doc-gap-cursor.json +29 -0
- package/dist/r/preact-sample-sample-doc-hard-break.json +29 -0
- package/dist/r/preact-sample-sample-doc-heading.json +29 -0
- package/dist/r/preact-sample-sample-doc-image.json +29 -0
- package/dist/r/preact-sample-sample-doc-inline-menu.json +29 -0
- package/dist/r/preact-sample-sample-doc-italic.json +29 -0
- package/dist/r/preact-sample-sample-doc-link-mark-view.json +29 -0
- package/dist/r/preact-sample-sample-doc-link.json +29 -0
- package/dist/r/preact-sample-sample-doc-list-custom-checkbox.json +29 -0
- package/dist/r/preact-sample-sample-doc-list.json +29 -0
- package/dist/r/preact-sample-sample-doc-page.json +29 -0
- package/dist/r/preact-sample-sample-doc-readonly.json +29 -0
- package/dist/r/preact-sample-sample-doc-rtl.json +29 -0
- package/dist/r/preact-sample-sample-doc-search.json +29 -0
- package/dist/r/preact-sample-sample-doc-strike.json +29 -0
- package/dist/r/preact-sample-sample-doc-table.json +29 -0
- package/dist/r/preact-sample-sample-doc-tex.json +29 -0
- package/dist/r/preact-sample-sample-doc-text-align.json +29 -0
- package/dist/r/preact-sample-sample-doc-text-color.json +29 -0
- package/dist/r/preact-sample-sample-doc-typography.json +29 -0
- package/dist/r/preact-sample-sample-doc-underline.json +29 -0
- package/dist/r/preact-sample-sample-doc-view-adapter.json +29 -0
- package/dist/r/preact-sample-sample-doc-word-counter.json +29 -0
- package/dist/r/preact-sample-sample-query-users.json +32 -0
- package/dist/r/preact-sample-sample-tag-data.json +27 -0
- package/dist/r/preact-sample-sample-uploader.json +29 -0
- package/dist/r/preact-sample-sample-user-data.json +27 -0
- package/dist/r/preact-sample-temml.json +29 -0
- package/dist/r/preact-ui-block-handle.json +41 -0
- package/dist/r/preact-ui-button.json +36 -0
- package/dist/r/preact-ui-code-block-view.json +36 -0
- package/dist/r/preact-ui-drop-indicator.json +36 -0
- package/dist/r/preact-ui-image-upload-popover.json +42 -0
- package/dist/r/preact-ui-image-view.json +41 -0
- package/dist/r/preact-ui-inline-menu.json +47 -0
- package/dist/r/preact-ui-search.json +47 -0
- package/dist/r/preact-ui-slash-menu.json +50 -0
- package/dist/r/preact-ui-table-handle.json +41 -0
- package/dist/r/preact-ui-tag-menu.json +36 -0
- package/dist/r/preact-ui-toolbar.json +51 -0
- package/dist/r/preact-ui-user-menu.json +36 -0
- package/dist/r/preact-ui-word-counter.json +36 -0
- package/dist/r/react-example-block-handle.json +60 -0
- package/dist/r/react-example-blockquote.json +53 -0
- package/dist/r/react-example-bold.json +56 -0
- package/dist/r/react-example-change-tracking.json +50 -0
- package/dist/r/react-example-code-block-themes.json +66 -0
- package/dist/r/react-example-code-block.json +60 -0
- package/dist/r/react-example-code.json +56 -0
- package/dist/r/react-example-drop-cursor.json +48 -0
- package/dist/r/react-example-emoji-rules.json +50 -0
- package/dist/r/react-example-full.json +113 -0
- package/dist/r/react-example-gap-cursor.json +48 -0
- package/dist/r/react-example-hard-break.json +59 -0
- package/dist/r/react-example-heading.json +56 -0
- package/dist/r/react-example-horizontal-rule.json +53 -0
- package/dist/r/react-example-image-view.json +55 -0
- package/dist/r/react-example-inline-menu.json +54 -0
- package/dist/r/react-example-italic.json +56 -0
- package/dist/r/react-example-keymap.json +63 -0
- package/dist/r/react-example-link-mark-view.json +55 -0
- package/dist/r/react-example-link.json +54 -0
- package/dist/r/react-example-list-custom-checkbox.json +63 -0
- package/dist/r/react-example-list.json +56 -0
- package/dist/r/react-example-loro.json +62 -0
- package/dist/r/react-example-mark-rule.json +50 -0
- package/dist/r/react-example-minimal.json +36 -0
- package/dist/r/react-example-notion.json +166 -0
- package/dist/r/react-example-page.json +62 -0
- package/dist/r/react-example-placeholder.json +43 -0
- package/dist/r/react-example-readonly.json +66 -0
- package/dist/r/react-example-rtl.json +74 -0
- package/dist/r/react-example-save-html.json +36 -0
- package/dist/r/react-example-save-json.json +36 -0
- package/dist/r/react-example-save-markdown.json +50 -0
- package/dist/r/react-example-search.json +54 -0
- package/dist/r/react-example-slash-menu.json +51 -0
- package/dist/r/react-example-strike.json +59 -0
- package/dist/r/react-example-table.json +52 -0
- package/dist/r/react-example-temml.json +51 -0
- package/dist/r/react-example-text-align.json +59 -0
- package/dist/r/react-example-text-color.json +59 -0
- package/dist/r/react-example-toolbar.json +56 -0
- package/dist/r/react-example-tweet.json +63 -0
- package/dist/r/react-example-typography.json +59 -0
- package/dist/r/react-example-underline.json +56 -0
- package/dist/r/react-example-unmount.json +58 -0
- package/dist/r/react-example-user-menu-dynamic.json +67 -0
- package/dist/r/react-example-user-menu.json +59 -0
- package/dist/r/react-example-view-adapter.json +58 -0
- package/dist/r/react-example-word-counter.json +52 -0
- package/dist/r/react-example-yjs.json +62 -0
- package/dist/r/react-sample-define-atom-block.json +29 -0
- package/dist/r/react-sample-katex.json +29 -0
- package/dist/r/react-sample-sample-doc-block-handle.json +29 -0
- package/dist/r/react-sample-sample-doc-bold.json +29 -0
- package/dist/r/react-sample-sample-doc-code-block.json +29 -0
- package/dist/r/react-sample-sample-doc-code.json +29 -0
- package/dist/r/react-sample-sample-doc-drop-cursor.json +29 -0
- package/dist/r/react-sample-sample-doc-full.json +29 -0
- package/dist/r/react-sample-sample-doc-gap-cursor.json +29 -0
- package/dist/r/react-sample-sample-doc-hard-break.json +29 -0
- package/dist/r/react-sample-sample-doc-heading.json +29 -0
- package/dist/r/react-sample-sample-doc-image.json +29 -0
- package/dist/r/react-sample-sample-doc-inline-menu.json +29 -0
- package/dist/r/react-sample-sample-doc-italic.json +29 -0
- package/dist/r/react-sample-sample-doc-link-mark-view.json +29 -0
- package/dist/r/react-sample-sample-doc-link.json +29 -0
- package/dist/r/react-sample-sample-doc-list-custom-checkbox.json +29 -0
- package/dist/r/react-sample-sample-doc-list.json +29 -0
- package/dist/r/react-sample-sample-doc-notion.json +29 -0
- package/dist/r/react-sample-sample-doc-page.json +29 -0
- package/dist/r/react-sample-sample-doc-readonly.json +29 -0
- package/dist/r/react-sample-sample-doc-rtl.json +29 -0
- package/dist/r/react-sample-sample-doc-search.json +29 -0
- package/dist/r/react-sample-sample-doc-strike.json +29 -0
- package/dist/r/react-sample-sample-doc-table.json +29 -0
- package/dist/r/react-sample-sample-doc-tex.json +29 -0
- package/dist/r/react-sample-sample-doc-text-align.json +29 -0
- package/dist/r/react-sample-sample-doc-text-color.json +29 -0
- package/dist/r/react-sample-sample-doc-tweet.json +29 -0
- package/dist/r/react-sample-sample-doc-typography.json +29 -0
- package/dist/r/react-sample-sample-doc-underline.json +29 -0
- package/dist/r/react-sample-sample-doc-view-adapter.json +29 -0
- package/dist/r/react-sample-sample-doc-word-counter.json +29 -0
- package/dist/r/react-sample-sample-query-users.json +32 -0
- package/dist/r/react-sample-sample-tag-data.json +27 -0
- package/dist/r/react-sample-sample-uploader.json +29 -0
- package/dist/r/react-sample-sample-user-data.json +27 -0
- package/dist/r/react-sample-temml.json +29 -0
- package/dist/r/react-ui-block-handle.json +41 -0
- package/dist/r/react-ui-button.json +36 -0
- package/dist/r/react-ui-code-block-view.json +36 -0
- package/dist/r/react-ui-drop-indicator.json +36 -0
- package/dist/r/react-ui-image-upload-popover.json +42 -0
- package/dist/r/react-ui-image-view.json +41 -0
- package/dist/r/react-ui-inline-menu.json +47 -0
- package/dist/r/react-ui-search.json +47 -0
- package/dist/r/react-ui-slash-menu.json +50 -0
- package/dist/r/react-ui-table-handle.json +41 -0
- package/dist/r/react-ui-tag-menu.json +36 -0
- package/dist/r/react-ui-toolbar.json +51 -0
- package/dist/r/react-ui-user-menu.json +36 -0
- package/dist/r/react-ui-word-counter.json +36 -0
- package/dist/r/registry.json +20642 -0
- package/dist/r/solid-example-block-handle.json +60 -0
- package/dist/r/solid-example-blockquote.json +53 -0
- package/dist/r/solid-example-bold.json +56 -0
- package/dist/r/solid-example-change-tracking.json +50 -0
- package/dist/r/solid-example-code-block-themes.json +66 -0
- package/dist/r/solid-example-code-block.json +60 -0
- package/dist/r/solid-example-code.json +56 -0
- package/dist/r/solid-example-drop-cursor.json +48 -0
- package/dist/r/solid-example-emoji-rules.json +50 -0
- package/dist/r/solid-example-full.json +106 -0
- package/dist/r/solid-example-gap-cursor.json +48 -0
- package/dist/r/solid-example-hard-break.json +59 -0
- package/dist/r/solid-example-heading.json +56 -0
- package/dist/r/solid-example-horizontal-rule.json +53 -0
- package/dist/r/solid-example-image-view.json +55 -0
- package/dist/r/solid-example-inline-menu.json +54 -0
- package/dist/r/solid-example-italic.json +56 -0
- package/dist/r/solid-example-keymap.json +63 -0
- package/dist/r/solid-example-link-mark-view.json +55 -0
- package/dist/r/solid-example-link.json +54 -0
- package/dist/r/solid-example-list-custom-checkbox.json +63 -0
- package/dist/r/solid-example-list.json +56 -0
- package/dist/r/solid-example-loro.json +62 -0
- package/dist/r/solid-example-mark-rule.json +50 -0
- package/dist/r/solid-example-minimal.json +36 -0
- package/dist/r/solid-example-placeholder.json +43 -0
- package/dist/r/solid-example-readonly.json +66 -0
- package/dist/r/solid-example-rtl.json +74 -0
- package/dist/r/solid-example-save-html.json +36 -0
- package/dist/r/solid-example-save-json.json +36 -0
- package/dist/r/solid-example-save-markdown.json +50 -0
- package/dist/r/solid-example-search.json +54 -0
- package/dist/r/solid-example-slash-menu.json +51 -0
- package/dist/r/solid-example-strike.json +59 -0
- package/dist/r/solid-example-table.json +52 -0
- package/dist/r/solid-example-temml.json +51 -0
- package/dist/r/solid-example-text-align.json +59 -0
- package/dist/r/solid-example-text-color.json +59 -0
- package/dist/r/solid-example-toolbar.json +56 -0
- package/dist/r/solid-example-typography.json +59 -0
- package/dist/r/solid-example-underline.json +56 -0
- package/dist/r/solid-example-unmount.json +58 -0
- package/dist/r/solid-example-user-menu-dynamic.json +67 -0
- package/dist/r/solid-example-user-menu.json +59 -0
- package/dist/r/solid-example-view-adapter.json +58 -0
- package/dist/r/solid-example-word-counter.json +52 -0
- package/dist/r/solid-example-yjs.json +62 -0
- package/dist/r/solid-sample-define-atom-block.json +29 -0
- package/dist/r/solid-sample-katex.json +29 -0
- package/dist/r/solid-sample-sample-doc-block-handle.json +29 -0
- package/dist/r/solid-sample-sample-doc-bold.json +29 -0
- package/dist/r/solid-sample-sample-doc-code-block.json +29 -0
- package/dist/r/solid-sample-sample-doc-code.json +29 -0
- package/dist/r/solid-sample-sample-doc-drop-cursor.json +29 -0
- package/dist/r/solid-sample-sample-doc-full.json +29 -0
- package/dist/r/solid-sample-sample-doc-gap-cursor.json +29 -0
- package/dist/r/solid-sample-sample-doc-hard-break.json +29 -0
- package/dist/r/solid-sample-sample-doc-heading.json +29 -0
- package/dist/r/solid-sample-sample-doc-image.json +29 -0
- package/dist/r/solid-sample-sample-doc-inline-menu.json +29 -0
- package/dist/r/solid-sample-sample-doc-italic.json +29 -0
- package/dist/r/solid-sample-sample-doc-link-mark-view.json +29 -0
- package/dist/r/solid-sample-sample-doc-link.json +29 -0
- package/dist/r/solid-sample-sample-doc-list-custom-checkbox.json +29 -0
- package/dist/r/solid-sample-sample-doc-list.json +29 -0
- package/dist/r/solid-sample-sample-doc-readonly.json +29 -0
- package/dist/r/solid-sample-sample-doc-rtl.json +29 -0
- package/dist/r/solid-sample-sample-doc-search.json +29 -0
- package/dist/r/solid-sample-sample-doc-strike.json +29 -0
- package/dist/r/solid-sample-sample-doc-table.json +29 -0
- package/dist/r/solid-sample-sample-doc-tex.json +29 -0
- package/dist/r/solid-sample-sample-doc-text-align.json +29 -0
- package/dist/r/solid-sample-sample-doc-text-color.json +29 -0
- package/dist/r/solid-sample-sample-doc-typography.json +29 -0
- package/dist/r/solid-sample-sample-doc-underline.json +29 -0
- package/dist/r/solid-sample-sample-doc-view-adapter.json +29 -0
- package/dist/r/solid-sample-sample-doc-word-counter.json +29 -0
- package/dist/r/solid-sample-sample-query-users.json +32 -0
- package/dist/r/solid-sample-sample-tag-data.json +27 -0
- package/dist/r/solid-sample-sample-uploader.json +29 -0
- package/dist/r/solid-sample-sample-user-data.json +27 -0
- package/dist/r/solid-sample-temml.json +29 -0
- package/dist/r/solid-ui-block-handle.json +41 -0
- package/dist/r/solid-ui-button.json +36 -0
- package/dist/r/solid-ui-code-block-view.json +36 -0
- package/dist/r/solid-ui-drop-indicator.json +36 -0
- package/dist/r/solid-ui-image-upload-popover.json +42 -0
- package/dist/r/solid-ui-image-view.json +41 -0
- package/dist/r/solid-ui-inline-menu.json +47 -0
- package/dist/r/solid-ui-search.json +47 -0
- package/dist/r/solid-ui-slash-menu.json +50 -0
- package/dist/r/solid-ui-table-handle.json +41 -0
- package/dist/r/solid-ui-tag-menu.json +36 -0
- package/dist/r/solid-ui-toolbar.json +51 -0
- package/dist/r/solid-ui-user-menu.json +36 -0
- package/dist/r/solid-ui-word-counter.json +36 -0
- package/dist/r/svelte-example-block-handle.json +60 -0
- package/dist/r/svelte-example-blockquote.json +53 -0
- package/dist/r/svelte-example-bold.json +56 -0
- package/dist/r/svelte-example-change-tracking.json +50 -0
- package/dist/r/svelte-example-code-block-themes.json +66 -0
- package/dist/r/svelte-example-code-block.json +60 -0
- package/dist/r/svelte-example-code.json +56 -0
- package/dist/r/svelte-example-drop-cursor.json +48 -0
- package/dist/r/svelte-example-emoji-rules.json +50 -0
- package/dist/r/svelte-example-full.json +106 -0
- package/dist/r/svelte-example-gap-cursor.json +48 -0
- package/dist/r/svelte-example-hard-break.json +59 -0
- package/dist/r/svelte-example-heading.json +56 -0
- package/dist/r/svelte-example-horizontal-rule.json +53 -0
- package/dist/r/svelte-example-image-view.json +55 -0
- package/dist/r/svelte-example-inline-menu.json +54 -0
- package/dist/r/svelte-example-italic.json +56 -0
- package/dist/r/svelte-example-katex.json +51 -0
- package/dist/r/svelte-example-keymap.json +56 -0
- package/dist/r/svelte-example-link-mark-view.json +55 -0
- package/dist/r/svelte-example-link.json +54 -0
- package/dist/r/svelte-example-list-custom-checkbox.json +63 -0
- package/dist/r/svelte-example-list.json +56 -0
- package/dist/r/svelte-example-loro.json +62 -0
- package/dist/r/svelte-example-mark-rule.json +50 -0
- package/dist/r/svelte-example-minimal.json +36 -0
- package/dist/r/svelte-example-page.json +62 -0
- package/dist/r/svelte-example-placeholder.json +43 -0
- package/dist/r/svelte-example-readonly.json +59 -0
- package/dist/r/svelte-example-rtl.json +74 -0
- package/dist/r/svelte-example-save-html.json +36 -0
- package/dist/r/svelte-example-save-json.json +36 -0
- package/dist/r/svelte-example-save-markdown.json +50 -0
- package/dist/r/svelte-example-search.json +54 -0
- package/dist/r/svelte-example-slash-menu.json +51 -0
- package/dist/r/svelte-example-strike.json +59 -0
- package/dist/r/svelte-example-table.json +52 -0
- package/dist/r/svelte-example-text-align.json +59 -0
- package/dist/r/svelte-example-text-color.json +59 -0
- package/dist/r/svelte-example-toolbar.json +56 -0
- package/dist/r/svelte-example-typography.json +59 -0
- package/dist/r/svelte-example-underline.json +56 -0
- package/dist/r/svelte-example-unmount.json +58 -0
- package/dist/r/svelte-example-user-menu-dynamic.json +67 -0
- package/dist/r/svelte-example-user-menu.json +59 -0
- package/dist/r/svelte-example-view-adapter.json +58 -0
- package/dist/r/svelte-example-word-counter.json +52 -0
- package/dist/r/svelte-example-yjs.json +62 -0
- package/dist/r/svelte-sample-define-atom-block.json +29 -0
- package/dist/r/svelte-sample-katex.json +29 -0
- package/dist/r/svelte-sample-sample-doc-block-handle.json +29 -0
- package/dist/r/svelte-sample-sample-doc-bold.json +29 -0
- package/dist/r/svelte-sample-sample-doc-code-block.json +29 -0
- package/dist/r/svelte-sample-sample-doc-code.json +29 -0
- package/dist/r/svelte-sample-sample-doc-drop-cursor.json +29 -0
- package/dist/r/svelte-sample-sample-doc-full.json +29 -0
- package/dist/r/svelte-sample-sample-doc-gap-cursor.json +29 -0
- package/dist/r/svelte-sample-sample-doc-hard-break.json +29 -0
- package/dist/r/svelte-sample-sample-doc-heading.json +29 -0
- package/dist/r/svelte-sample-sample-doc-image.json +29 -0
- package/dist/r/svelte-sample-sample-doc-inline-menu.json +29 -0
- package/dist/r/svelte-sample-sample-doc-italic.json +29 -0
- package/dist/r/svelte-sample-sample-doc-link-mark-view.json +29 -0
- package/dist/r/svelte-sample-sample-doc-link.json +29 -0
- package/dist/r/svelte-sample-sample-doc-list-custom-checkbox.json +29 -0
- package/dist/r/svelte-sample-sample-doc-list.json +29 -0
- package/dist/r/svelte-sample-sample-doc-page.json +29 -0
- package/dist/r/svelte-sample-sample-doc-readonly.json +29 -0
- package/dist/r/svelte-sample-sample-doc-rtl.json +29 -0
- package/dist/r/svelte-sample-sample-doc-search.json +29 -0
- package/dist/r/svelte-sample-sample-doc-strike.json +29 -0
- package/dist/r/svelte-sample-sample-doc-table.json +29 -0
- package/dist/r/svelte-sample-sample-doc-tex.json +29 -0
- package/dist/r/svelte-sample-sample-doc-text-align.json +29 -0
- package/dist/r/svelte-sample-sample-doc-text-color.json +29 -0
- package/dist/r/svelte-sample-sample-doc-typography.json +29 -0
- package/dist/r/svelte-sample-sample-doc-underline.json +29 -0
- package/dist/r/svelte-sample-sample-doc-view-adapter.json +29 -0
- package/dist/r/svelte-sample-sample-doc-word-counter.json +29 -0
- package/dist/r/svelte-sample-sample-query-users.json +32 -0
- package/dist/r/svelte-sample-sample-tag-data.json +27 -0
- package/dist/r/svelte-sample-sample-uploader.json +29 -0
- package/dist/r/svelte-sample-sample-user-data.json +27 -0
- package/dist/r/svelte-ui-block-handle.json +41 -0
- package/dist/r/svelte-ui-button.json +36 -0
- package/dist/r/svelte-ui-code-block-view.json +36 -0
- package/dist/r/svelte-ui-drop-indicator.json +36 -0
- package/dist/r/svelte-ui-image-upload-popover.json +42 -0
- package/dist/r/svelte-ui-image-view.json +41 -0
- package/dist/r/svelte-ui-inline-menu.json +47 -0
- package/dist/r/svelte-ui-search.json +47 -0
- package/dist/r/svelte-ui-slash-menu.json +50 -0
- package/dist/r/svelte-ui-table-handle.json +41 -0
- package/dist/r/svelte-ui-tag-menu.json +36 -0
- package/dist/r/svelte-ui-toolbar.json +51 -0
- package/dist/r/svelte-ui-user-menu.json +36 -0
- package/dist/r/svelte-ui-word-counter.json +36 -0
- package/dist/r/vanilla-example-minimal.json +36 -0
- package/dist/r/vanilla-example-slash-menu.json +51 -0
- package/dist/r/vanilla-ui-slash-menu.json +50 -0
- package/dist/r/vue-example-block-handle.json +60 -0
- package/dist/r/vue-example-blockquote.json +53 -0
- package/dist/r/vue-example-bold.json +56 -0
- package/dist/r/vue-example-change-tracking.json +50 -0
- package/dist/r/vue-example-code-block-themes.json +66 -0
- package/dist/r/vue-example-code-block.json +60 -0
- package/dist/r/vue-example-code.json +56 -0
- package/dist/r/vue-example-drop-cursor.json +48 -0
- package/dist/r/vue-example-emoji-rules.json +50 -0
- package/dist/r/vue-example-full.json +106 -0
- package/dist/r/vue-example-gap-cursor.json +48 -0
- package/dist/r/vue-example-hard-break.json +59 -0
- package/dist/r/vue-example-heading.json +56 -0
- package/dist/r/vue-example-horizontal-rule.json +53 -0
- package/dist/r/vue-example-image-view.json +55 -0
- package/dist/r/vue-example-inline-menu.json +54 -0
- package/dist/r/vue-example-italic.json +56 -0
- package/dist/r/vue-example-katex.json +51 -0
- package/dist/r/vue-example-keymap.json +63 -0
- package/dist/r/vue-example-link-mark-view.json +55 -0
- package/dist/r/vue-example-link.json +54 -0
- package/dist/r/vue-example-list-custom-checkbox.json +63 -0
- package/dist/r/vue-example-list.json +56 -0
- package/dist/r/vue-example-loro.json +62 -0
- package/dist/r/vue-example-mark-rule.json +50 -0
- package/dist/r/vue-example-minimal.json +36 -0
- package/dist/r/vue-example-placeholder.json +43 -0
- package/dist/r/vue-example-readonly.json +66 -0
- package/dist/r/vue-example-rtl.json +74 -0
- package/dist/r/vue-example-save-html.json +36 -0
- package/dist/r/vue-example-save-json.json +36 -0
- package/dist/r/vue-example-save-markdown.json +50 -0
- package/dist/r/vue-example-search.json +54 -0
- package/dist/r/vue-example-slash-menu.json +51 -0
- package/dist/r/vue-example-strike.json +59 -0
- package/dist/r/vue-example-table.json +52 -0
- package/dist/r/vue-example-text-align.json +59 -0
- package/dist/r/vue-example-text-color.json +59 -0
- package/dist/r/vue-example-toolbar.json +56 -0
- package/dist/r/vue-example-tweet.json +63 -0
- package/dist/r/vue-example-typography.json +59 -0
- package/dist/r/vue-example-underline.json +56 -0
- package/dist/r/vue-example-unmount.json +58 -0
- package/dist/r/vue-example-user-menu-dynamic.json +67 -0
- package/dist/r/vue-example-user-menu.json +59 -0
- package/dist/r/vue-example-view-adapter.json +58 -0
- package/dist/r/vue-example-word-counter.json +52 -0
- package/dist/r/vue-example-yjs.json +62 -0
- package/dist/r/vue-sample-define-atom-block.json +29 -0
- package/dist/r/vue-sample-katex.json +29 -0
- package/dist/r/vue-sample-sample-doc-block-handle.json +29 -0
- package/dist/r/vue-sample-sample-doc-bold.json +29 -0
- package/dist/r/vue-sample-sample-doc-code-block.json +29 -0
- package/dist/r/vue-sample-sample-doc-code.json +29 -0
- package/dist/r/vue-sample-sample-doc-drop-cursor.json +29 -0
- package/dist/r/vue-sample-sample-doc-full.json +29 -0
- package/dist/r/vue-sample-sample-doc-gap-cursor.json +29 -0
- package/dist/r/vue-sample-sample-doc-hard-break.json +29 -0
- package/dist/r/vue-sample-sample-doc-heading.json +29 -0
- package/dist/r/vue-sample-sample-doc-image.json +29 -0
- package/dist/r/vue-sample-sample-doc-inline-menu.json +29 -0
- package/dist/r/vue-sample-sample-doc-italic.json +29 -0
- package/dist/r/vue-sample-sample-doc-link-mark-view.json +29 -0
- package/dist/r/vue-sample-sample-doc-link.json +29 -0
- package/dist/r/vue-sample-sample-doc-list-custom-checkbox.json +29 -0
- package/dist/r/vue-sample-sample-doc-list.json +29 -0
- package/dist/r/vue-sample-sample-doc-readonly.json +29 -0
- package/dist/r/vue-sample-sample-doc-rtl.json +29 -0
- package/dist/r/vue-sample-sample-doc-search.json +29 -0
- package/dist/r/vue-sample-sample-doc-strike.json +29 -0
- package/dist/r/vue-sample-sample-doc-table.json +29 -0
- package/dist/r/vue-sample-sample-doc-tex.json +29 -0
- package/dist/r/vue-sample-sample-doc-text-align.json +29 -0
- package/dist/r/vue-sample-sample-doc-text-color.json +29 -0
- package/dist/r/vue-sample-sample-doc-tweet.json +29 -0
- package/dist/r/vue-sample-sample-doc-typography.json +29 -0
- package/dist/r/vue-sample-sample-doc-underline.json +29 -0
- package/dist/r/vue-sample-sample-doc-view-adapter.json +29 -0
- package/dist/r/vue-sample-sample-doc-word-counter.json +29 -0
- package/dist/r/vue-sample-sample-query-users.json +32 -0
- package/dist/r/vue-sample-sample-tag-data.json +27 -0
- package/dist/r/vue-sample-sample-uploader.json +29 -0
- package/dist/r/vue-sample-sample-user-data.json +27 -0
- package/dist/r/vue-ui-block-handle.json +41 -0
- package/dist/r/vue-ui-button.json +36 -0
- package/dist/r/vue-ui-code-block-view.json +36 -0
- package/dist/r/vue-ui-drop-indicator.json +36 -0
- package/dist/r/vue-ui-image-upload-popover.json +42 -0
- package/dist/r/vue-ui-image-view.json +41 -0
- package/dist/r/vue-ui-inline-menu.json +47 -0
- package/dist/r/vue-ui-search.json +47 -0
- package/dist/r/vue-ui-slash-menu.json +50 -0
- package/dist/r/vue-ui-table-handle.json +41 -0
- package/dist/r/vue-ui-tag-menu.json +36 -0
- package/dist/r/vue-ui-toolbar.json +51 -0
- package/dist/r/vue-ui-user-menu.json +36 -0
- package/dist/r/vue-ui-word-counter.json +36 -0
- package/package.json +353 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-page",
|
|
3
|
+
"title": "preact-example-page",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-sample-sample-doc-page.json"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [
|
|
10
|
+
"preact",
|
|
11
|
+
"prosekit"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "registry/src/preact/examples/page/editor.tsx",
|
|
16
|
+
"type": "registry:component",
|
|
17
|
+
"target": "components/editor/examples/page/editor.tsx",
|
|
18
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\nimport 'prosekit/extensions/page/style.css'\n\nimport { useCallback, useMemo, useState } from 'preact/hooks'\nimport { clsx, createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { sampleContent } from '../../sample/sample-doc-page'\n\nimport { defineExtension } from './extension'\n\ninterface EditorProps {\n initialContent?: NodeJSON\n}\n\nconst ZOOM_STEPS = [25, 50, 75, 100, 125, 150, 200]\nconst DEFAULT_ZOOM = 50\n\nfunction useZoom() {\n const [zoom, setZoom] = useState(DEFAULT_ZOOM)\n\n const zoomIn = useCallback(() => {\n setZoom((z) => {\n const next = ZOOM_STEPS.find((s) => s > z)\n return next ?? z\n })\n }, [])\n\n const zoomOut = useCallback(() => {\n setZoom((z) => {\n const prev = [...ZOOM_STEPS].reverse().find((s) => s < z)\n return prev ?? z\n })\n }, [])\n\n const canZoomIn = zoom < ZOOM_STEPS[ZOOM_STEPS.length - 1]\n const canZoomOut = zoom > ZOOM_STEPS[0]\n\n return { zoom, zoomIn, zoomOut, canZoomIn, canZoomOut }\n}\n\nexport default function Editor(props: EditorProps) {\n const defaultContent = props.initialContent ?? sampleContent\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({\n extension,\n defaultContent,\n })\n }, [defaultContent])\n\n const { zoom, zoomIn, zoomOut, canZoomIn, canZoomOut } = useZoom()\n\n return (\n <ProseKit editor={editor}>\n <div className=\"fixed top-5 right-5 flex items-center justify-center gap-1 border-gray-300 dark:border-gray-600 border p-2 text-sm text-gray-500 select-none print:hidden z-100 bg-gray-50 rounded\">\n <button className=\"size-6 flex justify-center items-center rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-30\" onClick={zoomOut} disabled={!canZoomOut}>-</button>\n <span className=\"w-12 text-center tabular-nums\">{zoom}%</span>\n <button className=\"size-6 flex justify-center items-center rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-30\" onClick={zoomIn} disabled={!canZoomIn}>+</button>\n </div>\n <div\n ref={editor.mount}\n className={clsx('ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500', 'print:transform-none! print:min-h-full! print:p-0! print:m-0!')}\n style={{\n transform: `scale(${zoom / 100})`,\n transformOrigin: 'top',\n minHeight: `${100 / (zoom / 100)}%`,\n }}\n >\n </div>\n </ProseKit>\n )\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "registry/src/preact/examples/page/extension.ts",
|
|
22
|
+
"type": "registry:component",
|
|
23
|
+
"target": "components/editor/examples/page/extension.ts",
|
|
24
|
+
"content": "import { defineBasicExtension } from 'prosekit/basic'\nimport { union } from 'prosekit/core'\nimport { definePageBreak, definePageRendering } from 'prosekit/extensions/page'\n\nexport function defineExtension() {\n return union(\n defineBasicExtension(),\n definePageBreak(),\n definePageRendering(),\n )\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "registry/src/preact/examples/page/index.ts",
|
|
28
|
+
"type": "registry:component",
|
|
29
|
+
"target": "components/editor/examples/page/index.ts",
|
|
30
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"meta": {
|
|
34
|
+
"hasIcons": false,
|
|
35
|
+
"hidden": true,
|
|
36
|
+
"story": "page",
|
|
37
|
+
"framework": "preact",
|
|
38
|
+
"accumulatedFiles": [
|
|
39
|
+
"registry/src/preact/examples/page/editor.tsx",
|
|
40
|
+
"registry/src/preact/examples/page/extension.ts",
|
|
41
|
+
"registry/src/preact/examples/page/index.ts",
|
|
42
|
+
"registry/src/preact/sample/sample-doc-page.ts"
|
|
43
|
+
],
|
|
44
|
+
"internalDependencies": [
|
|
45
|
+
"preact-sample-sample-doc-page"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
49
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-placeholder",
|
|
3
|
+
"title": "preact-example-placeholder",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Placeholder text displayed.",
|
|
6
|
+
"registryDependencies": [],
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"prosekit"
|
|
9
|
+
],
|
|
10
|
+
"files": [
|
|
11
|
+
{
|
|
12
|
+
"path": "registry/src/preact/examples/placeholder/editor.tsx",
|
|
13
|
+
"type": "registry:component",
|
|
14
|
+
"target": "components/editor/examples/placeholder/editor.tsx",
|
|
15
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useCallback, useMemo } from 'preact/hooks'\nimport { createEditor, jsonFromNode, type NodeJSON } from 'prosekit/core'\nimport type { ProseMirrorNode } from 'prosekit/pm/model'\nimport { ProseKit, useDocChange } from 'prosekit/preact'\n\nimport { defineExtension } from './extension'\n\nexport default function Editor(props: {\n initialContent?: NodeJSON\n onDocUpdate?: (doc: NodeJSON) => void\n}) {\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({ extension, defaultContent: props.initialContent })\n }, [props.initialContent])\n\n const { onDocUpdate } = props\n const handleDocChange = useCallback(\n (doc: ProseMirrorNode) => onDocUpdate?.(jsonFromNode(doc)),\n [onDocUpdate],\n )\n useDocChange(handleDocChange, { editor })\n\n return (\n <ProseKit editor={editor}>\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "registry/src/preact/examples/placeholder/extension.ts",
|
|
19
|
+
"type": "registry:component",
|
|
20
|
+
"target": "components/editor/examples/placeholder/extension.ts",
|
|
21
|
+
"content": "import { defineBasicExtension } from 'prosekit/basic'\nimport { union } from 'prosekit/core'\nimport { definePlaceholder } from 'prosekit/extensions/placeholder'\n\nexport function defineExtension() {\n return union(\n defineBasicExtension(),\n definePlaceholder({ placeholder: 'Type something...' }),\n )\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"path": "registry/src/preact/examples/placeholder/index.ts",
|
|
25
|
+
"type": "registry:component",
|
|
26
|
+
"target": "components/editor/examples/placeholder/index.ts",
|
|
27
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"meta": {
|
|
31
|
+
"hasIcons": false,
|
|
32
|
+
"hidden": false,
|
|
33
|
+
"story": "placeholder",
|
|
34
|
+
"framework": "preact",
|
|
35
|
+
"accumulatedFiles": [
|
|
36
|
+
"registry/src/preact/examples/placeholder/editor.tsx",
|
|
37
|
+
"registry/src/preact/examples/placeholder/extension.ts",
|
|
38
|
+
"registry/src/preact/examples/placeholder/index.ts"
|
|
39
|
+
],
|
|
40
|
+
"internalDependencies": []
|
|
41
|
+
},
|
|
42
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
43
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-readonly",
|
|
3
|
+
"title": "preact-example-readonly",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Toggle between read-only and editable mode.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-sample-sample-doc-readonly.json",
|
|
8
|
+
"https://prosekit.dev/r/preact-ui-button.json"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [
|
|
11
|
+
"prosekit"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "registry/src/preact/examples/readonly/editor.tsx",
|
|
16
|
+
"type": "registry:component",
|
|
17
|
+
"target": "components/editor/examples/readonly/editor.tsx",
|
|
18
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { sampleContent } from '../../sample/sample-doc-readonly'\n\nimport { defineExtension } from './extension'\nimport Toolbar from './toolbar'\n\ninterface EditorProps {\n initialContent?: NodeJSON\n}\n\nexport default function Editor(props: EditorProps) {\n const defaultContent = props.initialContent ?? sampleContent\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({ extension, defaultContent })\n }, [defaultContent])\n\n return (\n <ProseKit editor={editor}>\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <Toolbar />\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "registry/src/preact/examples/readonly/extension.ts",
|
|
22
|
+
"type": "registry:component",
|
|
23
|
+
"target": "components/editor/examples/readonly/extension.ts",
|
|
24
|
+
"content": "import { defineBasicExtension } from 'prosekit/basic'\n\nexport function defineExtension() {\n return defineBasicExtension()\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "registry/src/preact/examples/readonly/index.ts",
|
|
28
|
+
"type": "registry:component",
|
|
29
|
+
"target": "components/editor/examples/readonly/index.ts",
|
|
30
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "registry/src/preact/examples/readonly/toolbar.tsx",
|
|
34
|
+
"type": "registry:component",
|
|
35
|
+
"target": "components/editor/examples/readonly/toolbar.tsx",
|
|
36
|
+
"content": "import { Button } from '../../ui/button'\n\nimport { useReadonly } from './use-readonly'\n\nexport default function Toolbar() {\n const { readonly, setReadonly } = useReadonly()\n\n return (\n <div className=\"z-2 box-border border-gray-200 dark:border-gray-800 border-solid border-l-0 border-r-0 border-t-0 border-b flex flex-wrap gap-1 p-2 items-center\">\n <Button pressed={readonly} onClick={() => setReadonly(true)}>\n Readonly\n </Button>\n\n <Button pressed={!readonly} onClick={() => setReadonly(false)}>\n Editable\n </Button>\n </div>\n )\n}\n"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"path": "registry/src/preact/examples/readonly/use-readonly.ts",
|
|
40
|
+
"type": "registry:component",
|
|
41
|
+
"target": "components/editor/examples/readonly/use-readonly.ts",
|
|
42
|
+
"content": "import { useMemo, useState } from 'preact/hooks'\nimport { defineReadonly } from 'prosekit/extensions/readonly'\nimport { useExtension } from 'prosekit/preact'\n\nexport function useReadonly() {\n const [readonly, setReadonly] = useState(true)\n\n const extension = useMemo(() => {\n return readonly ? defineReadonly() : null\n }, [readonly])\n useExtension(extension)\n\n return { readonly, setReadonly }\n}\n"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"meta": {
|
|
46
|
+
"hasIcons": false,
|
|
47
|
+
"hidden": false,
|
|
48
|
+
"story": "readonly",
|
|
49
|
+
"framework": "preact",
|
|
50
|
+
"accumulatedFiles": [
|
|
51
|
+
"registry/src/preact/examples/readonly/editor.tsx",
|
|
52
|
+
"registry/src/preact/examples/readonly/extension.ts",
|
|
53
|
+
"registry/src/preact/examples/readonly/index.ts",
|
|
54
|
+
"registry/src/preact/examples/readonly/toolbar.tsx",
|
|
55
|
+
"registry/src/preact/examples/readonly/use-readonly.ts",
|
|
56
|
+
"registry/src/preact/sample/sample-doc-readonly.ts",
|
|
57
|
+
"registry/src/preact/ui/button/button.tsx",
|
|
58
|
+
"registry/src/preact/ui/button/index.ts"
|
|
59
|
+
],
|
|
60
|
+
"internalDependencies": [
|
|
61
|
+
"preact-sample-sample-doc-readonly",
|
|
62
|
+
"preact-ui-button"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
66
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-rtl",
|
|
3
|
+
"title": "preact-example-rtl",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Right-to-left text direction support.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-sample-sample-doc-rtl.json",
|
|
8
|
+
"https://prosekit.dev/r/preact-sample-sample-uploader.json",
|
|
9
|
+
"https://prosekit.dev/r/preact-ui-block-handle.json",
|
|
10
|
+
"https://prosekit.dev/r/preact-ui-drop-indicator.json",
|
|
11
|
+
"https://prosekit.dev/r/preact-ui-inline-menu.json",
|
|
12
|
+
"https://prosekit.dev/r/preact-ui-slash-menu.json",
|
|
13
|
+
"https://prosekit.dev/r/preact-ui-table-handle.json",
|
|
14
|
+
"https://prosekit.dev/r/preact-ui-toolbar.json"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": [
|
|
17
|
+
"prosekit"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
{
|
|
21
|
+
"path": "registry/src/preact/examples/rtl/editor.tsx",
|
|
22
|
+
"type": "registry:component",
|
|
23
|
+
"target": "components/editor/examples/rtl/editor.tsx",
|
|
24
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { sampleContent } from '../../sample/sample-doc-rtl'\nimport { sampleUploader } from '../../sample/sample-uploader'\nimport { BlockHandle } from '../../ui/block-handle'\nimport { DropIndicator } from '../../ui/drop-indicator'\nimport { InlineMenu } from '../../ui/inline-menu'\nimport { SlashMenu } from '../../ui/slash-menu'\nimport { TableHandle } from '../../ui/table-handle'\nimport { Toolbar } from '../../ui/toolbar'\n\ninterface EditorProps {\n initialContent?: NodeJSON\n}\n\nexport default function Editor(props: EditorProps) {\n const defaultContent = props.initialContent ?? sampleContent\n const editor = useMemo(() => {\n const extension = defineBasicExtension()\n return createEditor({ extension, defaultContent })\n }, [defaultContent])\n\n return (\n <ProseKit editor={editor}>\n <div dir=\"rtl\" className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <Toolbar uploader={sampleUploader} />\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n <InlineMenu />\n <SlashMenu />\n <BlockHandle dir=\"rtl\" />\n <TableHandle dir=\"rtl\" />\n <DropIndicator />\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "registry/src/preact/examples/rtl/index.ts",
|
|
28
|
+
"type": "registry:component",
|
|
29
|
+
"target": "components/editor/examples/rtl/index.ts",
|
|
30
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"meta": {
|
|
34
|
+
"hasIcons": false,
|
|
35
|
+
"hidden": false,
|
|
36
|
+
"story": "rtl",
|
|
37
|
+
"framework": "preact",
|
|
38
|
+
"accumulatedFiles": [
|
|
39
|
+
"registry/src/preact/examples/rtl/editor.tsx",
|
|
40
|
+
"registry/src/preact/examples/rtl/index.ts",
|
|
41
|
+
"registry/src/preact/sample/sample-doc-rtl.ts",
|
|
42
|
+
"registry/src/preact/sample/sample-uploader.ts",
|
|
43
|
+
"registry/src/preact/ui/block-handle/block-handle.tsx",
|
|
44
|
+
"registry/src/preact/ui/block-handle/index.ts",
|
|
45
|
+
"registry/src/preact/ui/button/button.tsx",
|
|
46
|
+
"registry/src/preact/ui/button/index.ts",
|
|
47
|
+
"registry/src/preact/ui/drop-indicator/drop-indicator.tsx",
|
|
48
|
+
"registry/src/preact/ui/drop-indicator/index.ts",
|
|
49
|
+
"registry/src/preact/ui/image-upload-popover/image-upload-popover.tsx",
|
|
50
|
+
"registry/src/preact/ui/image-upload-popover/index.ts",
|
|
51
|
+
"registry/src/preact/ui/inline-menu/index.ts",
|
|
52
|
+
"registry/src/preact/ui/inline-menu/inline-menu.tsx",
|
|
53
|
+
"registry/src/preact/ui/slash-menu/index.ts",
|
|
54
|
+
"registry/src/preact/ui/slash-menu/slash-menu-empty.tsx",
|
|
55
|
+
"registry/src/preact/ui/slash-menu/slash-menu-item.tsx",
|
|
56
|
+
"registry/src/preact/ui/slash-menu/slash-menu.tsx",
|
|
57
|
+
"registry/src/preact/ui/table-handle/index.ts",
|
|
58
|
+
"registry/src/preact/ui/table-handle/table-handle.tsx",
|
|
59
|
+
"registry/src/preact/ui/toolbar/index.ts",
|
|
60
|
+
"registry/src/preact/ui/toolbar/toolbar.tsx"
|
|
61
|
+
],
|
|
62
|
+
"internalDependencies": [
|
|
63
|
+
"preact-sample-sample-doc-rtl",
|
|
64
|
+
"preact-sample-sample-uploader",
|
|
65
|
+
"preact-ui-block-handle",
|
|
66
|
+
"preact-ui-drop-indicator",
|
|
67
|
+
"preact-ui-inline-menu",
|
|
68
|
+
"preact-ui-slash-menu",
|
|
69
|
+
"preact-ui-table-handle",
|
|
70
|
+
"preact-ui-toolbar"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
74
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-save-html",
|
|
3
|
+
"title": "preact-example-save-html",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Save and load documents as HTML format.",
|
|
6
|
+
"registryDependencies": [],
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"prosekit"
|
|
9
|
+
],
|
|
10
|
+
"files": [
|
|
11
|
+
{
|
|
12
|
+
"path": "registry/src/preact/examples/save-html/editor.tsx",
|
|
13
|
+
"type": "registry:component",
|
|
14
|
+
"target": "components/editor/examples/save-html/editor.tsx",
|
|
15
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useCallback, useMemo, useState } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, jsonFromHTML } from 'prosekit/core'\nimport { ProseKit, useDocChange } from 'prosekit/preact'\n\nexport default function Editor() {\n // A list of saved documents, stored as HTML strings\n const [records, setRecords] = useState<string[]>([])\n // Whether there are unsaved changes\n const [hasUnsavedChange, setHasUnsavedChange] = useState(false)\n // A key to force a re-render of the editor\n const [key, setKey] = useState(1)\n\n const editor = useMemo(() => {\n const extension = defineBasicExtension()\n return createEditor({ extension })\n }, [])\n\n const handleDocChange = useCallback(() => setHasUnsavedChange(true), [])\n useDocChange(handleDocChange, { editor })\n\n const handleSave = useCallback(() => {\n const record = editor.getDocHTML()\n setRecords((prev) => [...prev, record])\n setHasUnsavedChange(false)\n }, [editor])\n\n const handleLoad = useCallback(\n (record: string) => {\n editor.setContent(jsonFromHTML(record, { schema: editor.schema }))\n setHasUnsavedChange(false)\n setKey((prev) => prev + 1)\n },\n [editor],\n )\n\n return (\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <button\n onClick={handleSave}\n disabled={!hasUnsavedChange}\n className=\"m-1 border border-solid bg-white px-2 py-1 text-sm text-black disabled:cursor-not-allowed disabled:text-gray-500\"\n >\n {hasUnsavedChange ? 'Save' : 'No changes to save'}\n </button>\n <ul className=\"border-b border-t border-solid text-sm\">\n {records.map((record, index) => (\n <li key={index} className=\"m-1 flex gap-2\">\n <button\n className=\"border border-solid bg-white px-2 py-1 text-black\"\n onClick={() => handleLoad(record)}\n >\n Load\n </button>\n <span className=\"flex-1 overflow-x-scroll p-2\">\n <pre>{record}</pre>\n </span>\n </li>\n ))}\n </ul>\n <ProseKit editor={editor} key={key}>\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </ProseKit>\n </div>\n )\n}\n"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "registry/src/preact/examples/save-html/index.ts",
|
|
19
|
+
"type": "registry:component",
|
|
20
|
+
"target": "components/editor/examples/save-html/index.ts",
|
|
21
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"meta": {
|
|
25
|
+
"hasIcons": false,
|
|
26
|
+
"hidden": false,
|
|
27
|
+
"story": "save-html",
|
|
28
|
+
"framework": "preact",
|
|
29
|
+
"accumulatedFiles": [
|
|
30
|
+
"registry/src/preact/examples/save-html/editor.tsx",
|
|
31
|
+
"registry/src/preact/examples/save-html/index.ts"
|
|
32
|
+
],
|
|
33
|
+
"internalDependencies": []
|
|
34
|
+
},
|
|
35
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-save-json",
|
|
3
|
+
"title": "preact-example-save-json",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Save and load documents as JSON format.",
|
|
6
|
+
"registryDependencies": [],
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"prosekit"
|
|
9
|
+
],
|
|
10
|
+
"files": [
|
|
11
|
+
{
|
|
12
|
+
"path": "registry/src/preact/examples/save-json/editor.tsx",
|
|
13
|
+
"type": "registry:component",
|
|
14
|
+
"target": "components/editor/examples/save-json/editor.tsx",
|
|
15
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useCallback, useMemo, useState } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit, useDocChange } from 'prosekit/preact'\n\nexport default function Editor() {\n // A list of saved documents, stored as JSON strings\n const [records, setRecords] = useState<string[]>([])\n // Whether there are unsaved changes\n const [hasUnsavedChange, setHasUnsavedChange] = useState(false)\n // A key to force a re-render of the editor\n const [key, setKey] = useState(1)\n\n const editor = useMemo(() => {\n const extension = defineBasicExtension()\n return createEditor({ extension })\n }, [])\n\n const handleDocChange = useCallback(() => setHasUnsavedChange(true), [])\n useDocChange(handleDocChange, { editor })\n\n const handleSave = useCallback(() => {\n const record = JSON.stringify(editor.getDocJSON())\n setRecords((prev) => [...prev, record])\n setHasUnsavedChange(false)\n }, [editor])\n\n const handleLoad = useCallback((record: string) => {\n editor.setContent(JSON.parse(record) as NodeJSON)\n setHasUnsavedChange(false)\n setKey((prev) => prev + 1)\n }, [editor])\n\n return (\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <button\n onClick={handleSave}\n disabled={!hasUnsavedChange}\n className=\"m-1 border border-solid bg-white px-2 py-1 text-sm text-black disabled:cursor-not-allowed disabled:text-gray-500\"\n >\n {hasUnsavedChange ? 'Save' : 'No changes to save'}\n </button>\n <ul className=\"border-b border-t border-solid text-sm\">\n {records.map((record, index) => (\n <li key={index} className=\"m-1 flex gap-2\">\n <button\n className=\"border border-solid bg-white px-2 py-1 text-black\"\n onClick={() => handleLoad(record)}\n >\n Load\n </button>\n <span className=\"flex-1 overflow-x-scroll p-2\">\n <pre>{record}</pre>\n </span>\n </li>\n ))}\n </ul>\n <ProseKit editor={editor} key={key}>\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </ProseKit>\n </div>\n )\n}\n"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "registry/src/preact/examples/save-json/index.ts",
|
|
19
|
+
"type": "registry:component",
|
|
20
|
+
"target": "components/editor/examples/save-json/index.ts",
|
|
21
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"meta": {
|
|
25
|
+
"hasIcons": false,
|
|
26
|
+
"hidden": false,
|
|
27
|
+
"story": "save-json",
|
|
28
|
+
"framework": "preact",
|
|
29
|
+
"accumulatedFiles": [
|
|
30
|
+
"registry/src/preact/examples/save-json/editor.tsx",
|
|
31
|
+
"registry/src/preact/examples/save-json/index.ts"
|
|
32
|
+
],
|
|
33
|
+
"internalDependencies": []
|
|
34
|
+
},
|
|
35
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
36
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-save-markdown",
|
|
3
|
+
"title": "preact-example-save-markdown",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Save and load documents as Markdown format.",
|
|
6
|
+
"registryDependencies": [],
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"prosekit",
|
|
9
|
+
"rehype-parse",
|
|
10
|
+
"rehype-remark",
|
|
11
|
+
"remark-gfm",
|
|
12
|
+
"remark-html",
|
|
13
|
+
"remark-parse",
|
|
14
|
+
"remark-stringify",
|
|
15
|
+
"unified"
|
|
16
|
+
],
|
|
17
|
+
"files": [
|
|
18
|
+
{
|
|
19
|
+
"path": "registry/src/preact/examples/save-markdown/editor.tsx",
|
|
20
|
+
"type": "registry:component",
|
|
21
|
+
"target": "components/editor/examples/save-markdown/editor.tsx",
|
|
22
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useCallback, useMemo, useState } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, jsonFromHTML } from 'prosekit/core'\nimport { ProseKit, useDocChange } from 'prosekit/preact'\n\nimport { htmlFromMarkdown, markdownFromHTML } from './markdown'\n\nexport default function Editor() {\n // A list of saved documents, stored as Markdown strings\n const [records, setRecords] = useState<string[]>([])\n // Whether there are unsaved changes\n const [hasUnsavedChange, setHasUnsavedChange] = useState(false)\n // A key to force a re-render of the editor\n const [key, setKey] = useState(1)\n\n const editor = useMemo(() => {\n const extension = defineBasicExtension()\n return createEditor({ extension })\n }, [])\n\n const handleDocChange = useCallback(() => setHasUnsavedChange(true), [])\n useDocChange(handleDocChange, { editor })\n\n const handleSave = useCallback(() => {\n const html = editor.getDocHTML()\n const record = markdownFromHTML(html)\n setRecords((prev) => [...prev, record])\n setHasUnsavedChange(false)\n }, [editor])\n\n const handleLoad = useCallback(\n (record: string) => {\n const html = htmlFromMarkdown(record)\n editor.setContent(jsonFromHTML(html, { schema: editor.schema }))\n setHasUnsavedChange(false)\n setKey((prev) => prev + 1)\n },\n [editor],\n )\n\n return (\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <button\n onClick={handleSave}\n disabled={!hasUnsavedChange}\n className=\"m-1 border border-solid bg-white px-2 py-1 text-sm text-black disabled:cursor-not-allowed disabled:text-gray-500\"\n >\n {hasUnsavedChange ? 'Save' : 'No changes to save'}\n </button>\n <ul className=\"border-b border-t border-solid text-sm\">\n {records.map((record, index) => (\n <li key={index} className=\"m-1 flex gap-2\">\n <button\n className=\"border border-solid bg-white px-2 py-1 text-black\"\n onClick={() => handleLoad(record)}\n >\n Load\n </button>\n <span className=\"flex-1 overflow-x-scroll p-2\">\n <pre>{record}</pre>\n </span>\n </li>\n ))}\n </ul>\n <ProseKit editor={editor} key={key}>\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </ProseKit>\n </div>\n )\n}\n"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"path": "registry/src/preact/examples/save-markdown/index.ts",
|
|
26
|
+
"type": "registry:component",
|
|
27
|
+
"target": "components/editor/examples/save-markdown/index.ts",
|
|
28
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"path": "registry/src/preact/examples/save-markdown/markdown.ts",
|
|
32
|
+
"type": "registry:component",
|
|
33
|
+
"target": "components/editor/examples/save-markdown/markdown.ts",
|
|
34
|
+
"content": "import rehypeParse from 'rehype-parse'\nimport rehypeRemark from 'rehype-remark'\nimport remarkGfm from 'remark-gfm'\nimport remarkHtml from 'remark-html'\nimport remarkParse from 'remark-parse'\nimport remarkStringify from 'remark-stringify'\nimport { unified } from 'unified'\n\nexport function markdownFromHTML(html: string): string {\n return unified()\n .use(rehypeParse)\n .use(rehypeRemark)\n .use(remarkGfm)\n .use(remarkStringify)\n .processSync(html)\n .toString()\n}\n\nexport function htmlFromMarkdown(markdown: string): string {\n return unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkHtml)\n .processSync(markdown)\n .toString()\n}\n"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"meta": {
|
|
38
|
+
"hasIcons": false,
|
|
39
|
+
"hidden": false,
|
|
40
|
+
"story": "save-markdown",
|
|
41
|
+
"framework": "preact",
|
|
42
|
+
"accumulatedFiles": [
|
|
43
|
+
"registry/src/preact/examples/save-markdown/editor.tsx",
|
|
44
|
+
"registry/src/preact/examples/save-markdown/index.ts",
|
|
45
|
+
"registry/src/preact/examples/save-markdown/markdown.ts"
|
|
46
|
+
],
|
|
47
|
+
"internalDependencies": []
|
|
48
|
+
},
|
|
49
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
50
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-search",
|
|
3
|
+
"title": "preact-example-search",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Search and highlight text with navigation.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-sample-sample-doc-search.json",
|
|
8
|
+
"https://prosekit.dev/r/preact-ui-search.json"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [
|
|
11
|
+
"prosekit"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "registry/src/preact/examples/search/editor.tsx",
|
|
16
|
+
"type": "registry:component",
|
|
17
|
+
"target": "components/editor/examples/search/editor.tsx",
|
|
18
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\nimport 'prosekit/extensions/search/style.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { sampleContent } from '../../sample/sample-doc-search'\nimport { Search } from '../../ui/search'\n\nimport { defineExtension } from './extension'\n\ninterface EditorProps {\n initialContent?: NodeJSON\n}\n\nexport default function Editor(props: EditorProps) {\n const defaultContent = props.initialContent ?? sampleContent\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({\n extension,\n defaultContent,\n })\n }, [defaultContent])\n\n return (\n <ProseKit editor={editor}>\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <Search />\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "registry/src/preact/examples/search/extension.ts",
|
|
22
|
+
"type": "registry:component",
|
|
23
|
+
"target": "components/editor/examples/search/extension.ts",
|
|
24
|
+
"content": "import { defineBasicExtension } from 'prosekit/basic'\nimport { union } from 'prosekit/core'\nimport { defineSearchCommands } from 'prosekit/extensions/search'\n\nexport function defineExtension() {\n return union(defineBasicExtension(), defineSearchCommands())\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "registry/src/preact/examples/search/index.ts",
|
|
28
|
+
"type": "registry:component",
|
|
29
|
+
"target": "components/editor/examples/search/index.ts",
|
|
30
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"meta": {
|
|
34
|
+
"hasIcons": false,
|
|
35
|
+
"hidden": false,
|
|
36
|
+
"story": "search",
|
|
37
|
+
"framework": "preact",
|
|
38
|
+
"accumulatedFiles": [
|
|
39
|
+
"registry/src/preact/examples/search/editor.tsx",
|
|
40
|
+
"registry/src/preact/examples/search/extension.ts",
|
|
41
|
+
"registry/src/preact/examples/search/index.ts",
|
|
42
|
+
"registry/src/preact/sample/sample-doc-search.ts",
|
|
43
|
+
"registry/src/preact/ui/button/button.tsx",
|
|
44
|
+
"registry/src/preact/ui/button/index.ts",
|
|
45
|
+
"registry/src/preact/ui/search/index.ts",
|
|
46
|
+
"registry/src/preact/ui/search/search.tsx"
|
|
47
|
+
],
|
|
48
|
+
"internalDependencies": [
|
|
49
|
+
"preact-sample-sample-doc-search",
|
|
50
|
+
"preact-ui-search"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
54
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-slash-menu",
|
|
3
|
+
"title": "preact-example-slash-menu",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Command menu triggered by typing slash (/).",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-ui-slash-menu.json"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [
|
|
10
|
+
"prosekit"
|
|
11
|
+
],
|
|
12
|
+
"files": [
|
|
13
|
+
{
|
|
14
|
+
"path": "registry/src/preact/examples/slash-menu/editor.tsx",
|
|
15
|
+
"type": "registry:component",
|
|
16
|
+
"target": "components/editor/examples/slash-menu/editor.tsx",
|
|
17
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { createEditor } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { SlashMenu } from '../../ui/slash-menu'\n\nimport { defineExtension } from './extension'\n\nexport default function Editor() {\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({ extension })\n }, [])\n\n return (\n <ProseKit editor={editor}>\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n <SlashMenu />\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"path": "registry/src/preact/examples/slash-menu/extension.ts",
|
|
21
|
+
"type": "registry:component",
|
|
22
|
+
"target": "components/editor/examples/slash-menu/extension.ts",
|
|
23
|
+
"content": "import { defineBasicExtension } from 'prosekit/basic'\nimport { union } from 'prosekit/core'\nimport { definePlaceholder } from 'prosekit/extensions/placeholder'\n\nexport function defineExtension() {\n return union(\n defineBasicExtension(),\n definePlaceholder({ placeholder: 'Press / for commands...' }),\n )\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "registry/src/preact/examples/slash-menu/index.ts",
|
|
27
|
+
"type": "registry:component",
|
|
28
|
+
"target": "components/editor/examples/slash-menu/index.ts",
|
|
29
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"meta": {
|
|
33
|
+
"hasIcons": false,
|
|
34
|
+
"hidden": false,
|
|
35
|
+
"story": "slash-menu",
|
|
36
|
+
"framework": "preact",
|
|
37
|
+
"accumulatedFiles": [
|
|
38
|
+
"registry/src/preact/examples/slash-menu/editor.tsx",
|
|
39
|
+
"registry/src/preact/examples/slash-menu/extension.ts",
|
|
40
|
+
"registry/src/preact/examples/slash-menu/index.ts",
|
|
41
|
+
"registry/src/preact/ui/slash-menu/index.ts",
|
|
42
|
+
"registry/src/preact/ui/slash-menu/slash-menu-empty.tsx",
|
|
43
|
+
"registry/src/preact/ui/slash-menu/slash-menu-item.tsx",
|
|
44
|
+
"registry/src/preact/ui/slash-menu/slash-menu.tsx"
|
|
45
|
+
],
|
|
46
|
+
"internalDependencies": [
|
|
47
|
+
"preact-ui-slash-menu"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
51
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-strike",
|
|
3
|
+
"title": "preact-example-strike",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Example for strikethrough mark.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-sample-sample-doc-strike.json",
|
|
8
|
+
"https://prosekit.dev/r/preact-ui-button.json"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [
|
|
11
|
+
"prosekit"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "registry/src/preact/examples/strike/editor.tsx",
|
|
16
|
+
"type": "registry:component",
|
|
17
|
+
"target": "components/editor/examples/strike/editor.tsx",
|
|
18
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { sampleContent } from '../../sample/sample-doc-strike'\n\nimport { defineExtension } from './extension'\nimport Toolbar from './toolbar'\n\ninterface EditorProps {\n initialContent?: NodeJSON\n}\n\nexport default function Editor(props: EditorProps) {\n const defaultContent = props.initialContent ?? sampleContent\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({ extension, defaultContent })\n }, [defaultContent])\n\n return (\n <ProseKit editor={editor}>\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <Toolbar />\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "registry/src/preact/examples/strike/extension.ts",
|
|
22
|
+
"type": "registry:component",
|
|
23
|
+
"target": "components/editor/examples/strike/extension.ts",
|
|
24
|
+
"content": "import { defineBaseKeymap, union } from 'prosekit/core'\nimport { defineDoc } from 'prosekit/extensions/doc'\nimport { defineParagraph } from 'prosekit/extensions/paragraph'\nimport { defineStrike } from 'prosekit/extensions/strike'\nimport { defineText } from 'prosekit/extensions/text'\n\nexport function defineExtension() {\n return union(\n defineBaseKeymap(),\n defineDoc(),\n defineText(),\n defineParagraph(),\n defineStrike(),\n )\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "registry/src/preact/examples/strike/index.ts",
|
|
28
|
+
"type": "registry:component",
|
|
29
|
+
"target": "components/editor/examples/strike/index.ts",
|
|
30
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "registry/src/preact/examples/strike/toolbar.tsx",
|
|
34
|
+
"type": "registry:component",
|
|
35
|
+
"target": "components/editor/examples/strike/toolbar.tsx",
|
|
36
|
+
"content": "import { useEditor } from 'prosekit/preact'\n\nimport { Button } from '../../ui/button'\n\nimport type { EditorExtension } from './extension'\n\nexport default function Toolbar() {\n const editor = useEditor<EditorExtension>({ update: true })\n\n return (\n <div className=\"z-2 box-border border-gray-200 dark:border-gray-800 border-solid border-l-0 border-r-0 border-t-0 border-b flex flex-wrap gap-1 p-2 items-center\">\n <Button\n pressed={false}\n disabled={!editor.commands.toggleStrike.canExec()}\n onClick={() => editor.commands.toggleStrike()}\n >\n Strikethrough\n </Button>\n </div>\n )\n}\n"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"meta": {
|
|
40
|
+
"hasIcons": false,
|
|
41
|
+
"hidden": false,
|
|
42
|
+
"story": "strike",
|
|
43
|
+
"framework": "preact",
|
|
44
|
+
"accumulatedFiles": [
|
|
45
|
+
"registry/src/preact/examples/strike/editor.tsx",
|
|
46
|
+
"registry/src/preact/examples/strike/extension.ts",
|
|
47
|
+
"registry/src/preact/examples/strike/index.ts",
|
|
48
|
+
"registry/src/preact/examples/strike/toolbar.tsx",
|
|
49
|
+
"registry/src/preact/sample/sample-doc-strike.ts",
|
|
50
|
+
"registry/src/preact/ui/button/button.tsx",
|
|
51
|
+
"registry/src/preact/ui/button/index.ts"
|
|
52
|
+
],
|
|
53
|
+
"internalDependencies": [
|
|
54
|
+
"preact-sample-sample-doc-strike",
|
|
55
|
+
"preact-ui-button"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
59
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "preact-example-table",
|
|
3
|
+
"title": "preact-example-table",
|
|
4
|
+
"type": "registry:block",
|
|
5
|
+
"description": "Table node with row and column operations.",
|
|
6
|
+
"registryDependencies": [
|
|
7
|
+
"https://prosekit.dev/r/preact-sample-sample-doc-table.json",
|
|
8
|
+
"https://prosekit.dev/r/preact-ui-table-handle.json"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [
|
|
11
|
+
"prosekit"
|
|
12
|
+
],
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "registry/src/preact/examples/table/editor.tsx",
|
|
16
|
+
"type": "registry:component",
|
|
17
|
+
"target": "components/editor/examples/table/editor.tsx",
|
|
18
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { createEditor, type NodeJSON } from 'prosekit/core'\nimport { ProseKit } from 'prosekit/preact'\n\nimport { sampleContent } from '../../sample/sample-doc-table'\nimport { TableHandle } from '../../ui/table-handle'\n\nimport { defineExtension } from './extension'\n\ninterface EditorProps {\n initialContent?: NodeJSON\n}\n\nexport default function Editor(props: EditorProps) {\n const defaultContent = props.initialContent ?? sampleContent\n const editor = useMemo(() => {\n const extension = defineExtension()\n return createEditor({ extension, defaultContent })\n }, [defaultContent])\n\n return (\n <ProseKit editor={editor}>\n <div className=\"box-border h-full w-full min-h-36 overflow-y-hidden overflow-x-hidden rounded-md border border-solid border-gray-200 dark:border-gray-700 shadow-sm flex flex-col bg-white dark:bg-gray-950 text-black dark:text-white\">\n <div className=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ref={editor.mount} className=\"ProseMirror box-border min-h-full px-[max(4rem,calc(50%-20rem))] py-8 outline-hidden outline-0 [&_span[data-mention=user]]:text-blue-500 [&_span[data-mention=tag]]:text-violet-500\"></div>\n <TableHandle />\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "registry/src/preact/examples/table/extension.ts",
|
|
22
|
+
"type": "registry:component",
|
|
23
|
+
"target": "components/editor/examples/table/extension.ts",
|
|
24
|
+
"content": "import { defineBaseKeymap, defineHistory, union } from 'prosekit/core'\nimport { defineDoc } from 'prosekit/extensions/doc'\nimport { defineGapCursor } from 'prosekit/extensions/gap-cursor'\nimport { defineParagraph } from 'prosekit/extensions/paragraph'\nimport { defineTable } from 'prosekit/extensions/table'\nimport { defineText } from 'prosekit/extensions/text'\n\nexport function defineExtension() {\n return union(\n defineBaseKeymap(),\n defineDoc(),\n defineText(),\n defineParagraph(),\n defineTable(),\n defineHistory(),\n defineGapCursor(),\n )\n}\n\nexport type EditorExtension = ReturnType<typeof defineExtension>\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "registry/src/preact/examples/table/index.ts",
|
|
28
|
+
"type": "registry:component",
|
|
29
|
+
"target": "components/editor/examples/table/index.ts",
|
|
30
|
+
"content": "export { default as ExampleEditor } from './editor'\n"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"meta": {
|
|
34
|
+
"hasIcons": false,
|
|
35
|
+
"hidden": false,
|
|
36
|
+
"story": "table",
|
|
37
|
+
"framework": "preact",
|
|
38
|
+
"accumulatedFiles": [
|
|
39
|
+
"registry/src/preact/examples/table/editor.tsx",
|
|
40
|
+
"registry/src/preact/examples/table/extension.ts",
|
|
41
|
+
"registry/src/preact/examples/table/index.ts",
|
|
42
|
+
"registry/src/preact/sample/sample-doc-table.ts",
|
|
43
|
+
"registry/src/preact/ui/table-handle/index.ts",
|
|
44
|
+
"registry/src/preact/ui/table-handle/table-handle.tsx"
|
|
45
|
+
],
|
|
46
|
+
"internalDependencies": [
|
|
47
|
+
"preact-sample-sample-doc-table",
|
|
48
|
+
"preact-ui-table-handle"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json"
|
|
52
|
+
}
|