prosekit-registry 0.0.21 → 0.0.22
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/dist/r/lit-example-minimal.json +1 -1
- package/dist/r/lit-example-slash-menu.json +2 -2
- package/dist/r/lit-example-table.json +2 -2
- package/dist/r/lit-example-toolbar.json +2 -2
- package/dist/r/lit-sample-sample-doc-table.json +1 -1
- package/dist/r/lit-sample-sample-uploader.json +1 -1
- package/dist/r/lit-ui-button.json +2 -2
- package/dist/r/lit-ui-editor-context.json +1 -1
- package/dist/r/lit-ui-image-upload-popover.json +2 -2
- package/dist/r/lit-ui-slash-menu.json +4 -4
- package/dist/r/lit-ui-table-handle.json +2 -2
- package/dist/r/lit-ui-toolbar.json +1 -1
- package/dist/r/preact-example-block-handle.json +2 -2
- package/dist/r/preact-example-blockquote.json +2 -2
- package/dist/r/preact-example-bold.json +2 -2
- package/dist/r/preact-example-change-tracking.json +3 -3
- package/dist/r/preact-example-code-block-themes.json +2 -2
- package/dist/r/preact-example-code-block.json +2 -2
- package/dist/r/preact-example-code.json +2 -2
- package/dist/r/preact-example-drop-cursor.json +2 -2
- package/dist/r/preact-example-emoji-rules.json +2 -2
- package/dist/r/preact-example-full.json +2 -2
- package/dist/r/preact-example-gap-cursor.json +2 -2
- package/dist/r/preact-example-hard-break.json +2 -2
- package/dist/r/preact-example-heading.json +2 -2
- package/dist/r/preact-example-horizontal-rule.json +2 -2
- package/dist/r/preact-example-image-view.json +2 -2
- package/dist/r/preact-example-inline-menu.json +2 -2
- package/dist/r/preact-example-italic.json +2 -2
- package/dist/r/preact-example-keymap.json +2 -2
- package/dist/r/preact-example-link-mark-view.json +2 -2
- package/dist/r/preact-example-link.json +2 -2
- package/dist/r/preact-example-list-custom-checkbox.json +2 -2
- package/dist/r/preact-example-list.json +2 -2
- package/dist/r/preact-example-loro.json +2 -2
- package/dist/r/preact-example-mark-rule.json +2 -2
- package/dist/r/preact-example-minimal.json +1 -1
- package/dist/r/preact-example-placeholder.json +2 -2
- package/dist/r/preact-example-readonly.json +2 -2
- package/dist/r/preact-example-rtl.json +2 -2
- package/dist/r/preact-example-save-html.json +2 -2
- package/dist/r/preact-example-save-json.json +2 -2
- package/dist/r/preact-example-save-markdown.json +2 -2
- package/dist/r/preact-example-search.json +2 -2
- package/dist/r/preact-example-slash-menu.json +2 -2
- package/dist/r/preact-example-strike.json +2 -2
- package/dist/r/preact-example-table.json +2 -2
- package/dist/r/preact-example-temml.json +2 -2
- package/dist/r/preact-example-text-align.json +2 -2
- package/dist/r/preact-example-text-color.json +3 -3
- package/dist/r/preact-example-toolbar.json +2 -2
- package/dist/r/preact-example-typography.json +2 -2
- package/dist/r/preact-example-underline.json +2 -2
- package/dist/r/preact-example-unmount.json +2 -2
- package/dist/r/preact-example-user-menu-dynamic.json +2 -2
- package/dist/r/preact-example-user-menu.json +2 -2
- package/dist/r/preact-example-view-adapter.json +2 -2
- package/dist/r/preact-example-word-counter.json +2 -2
- package/dist/r/preact-example-yjs.json +2 -2
- package/dist/r/preact-sample-define-atom-block.json +1 -1
- package/dist/r/preact-sample-sample-doc-block-handle.json +1 -1
- package/dist/r/preact-sample-sample-doc-bold.json +1 -1
- package/dist/r/preact-sample-sample-doc-code-block.json +1 -1
- package/dist/r/preact-sample-sample-doc-code.json +1 -1
- package/dist/r/preact-sample-sample-doc-drop-cursor.json +1 -1
- package/dist/r/preact-sample-sample-doc-full.json +1 -1
- package/dist/r/preact-sample-sample-doc-gap-cursor.json +1 -1
- package/dist/r/preact-sample-sample-doc-hard-break.json +1 -1
- package/dist/r/preact-sample-sample-doc-heading.json +1 -1
- package/dist/r/preact-sample-sample-doc-image.json +1 -1
- package/dist/r/preact-sample-sample-doc-inline-menu.json +1 -1
- package/dist/r/preact-sample-sample-doc-italic.json +1 -1
- package/dist/r/preact-sample-sample-doc-link-mark-view.json +1 -1
- package/dist/r/preact-sample-sample-doc-link.json +1 -1
- package/dist/r/preact-sample-sample-doc-list-custom-checkbox.json +1 -1
- package/dist/r/preact-sample-sample-doc-list.json +1 -1
- package/dist/r/preact-sample-sample-doc-readonly.json +1 -1
- package/dist/r/preact-sample-sample-doc-rtl.json +1 -1
- package/dist/r/preact-sample-sample-doc-search.json +1 -1
- package/dist/r/preact-sample-sample-doc-strike.json +1 -1
- package/dist/r/preact-sample-sample-doc-table.json +1 -1
- package/dist/r/preact-sample-sample-doc-tex.json +1 -1
- package/dist/r/preact-sample-sample-doc-text-align.json +1 -1
- package/dist/r/preact-sample-sample-doc-text-color.json +1 -1
- package/dist/r/preact-sample-sample-doc-typography.json +1 -1
- package/dist/r/preact-sample-sample-doc-underline.json +1 -1
- package/dist/r/preact-sample-sample-doc-view-adapter.json +1 -1
- package/dist/r/preact-sample-sample-doc-word-counter.json +1 -1
- package/dist/r/preact-sample-sample-uploader.json +1 -1
- package/dist/r/preact-ui-block-handle.json +2 -2
- package/dist/r/preact-ui-button.json +2 -2
- package/dist/r/preact-ui-code-block-view.json +1 -1
- package/dist/r/preact-ui-drop-indicator.json +1 -1
- package/dist/r/preact-ui-image-upload-popover.json +2 -2
- package/dist/r/preact-ui-image-view.json +1 -1
- package/dist/r/preact-ui-inline-menu.json +2 -2
- package/dist/r/preact-ui-search.json +2 -2
- package/dist/r/preact-ui-slash-menu.json +4 -4
- package/dist/r/preact-ui-table-handle.json +2 -2
- package/dist/r/preact-ui-tag-menu.json +2 -2
- package/dist/r/preact-ui-toolbar.json +1 -1
- package/dist/r/preact-ui-user-menu.json +2 -2
- package/dist/r/preact-ui-word-counter.json +1 -1
- package/dist/r/react-example-block-handle.json +2 -2
- package/dist/r/react-example-blockquote.json +2 -2
- package/dist/r/react-example-bold.json +2 -2
- package/dist/r/react-example-change-tracking.json +3 -3
- package/dist/r/react-example-code-block-themes.json +2 -2
- package/dist/r/react-example-code-block.json +2 -2
- package/dist/r/react-example-code.json +2 -2
- package/dist/r/react-example-drop-cursor.json +2 -2
- package/dist/r/react-example-emoji-rules.json +2 -2
- package/dist/r/react-example-full.json +2 -2
- package/dist/r/react-example-gap-cursor.json +2 -2
- package/dist/r/react-example-hard-break.json +2 -2
- package/dist/r/react-example-heading.json +2 -2
- package/dist/r/react-example-horizontal-rule.json +2 -2
- package/dist/r/react-example-image-view.json +2 -2
- package/dist/r/react-example-inline-menu.json +2 -2
- package/dist/r/react-example-italic.json +2 -2
- package/dist/r/react-example-keymap.json +2 -2
- package/dist/r/react-example-link-mark-view.json +2 -2
- package/dist/r/react-example-link.json +2 -2
- package/dist/r/react-example-list-custom-checkbox.json +2 -2
- package/dist/r/react-example-list.json +2 -2
- package/dist/r/react-example-loro.json +2 -2
- package/dist/r/react-example-mark-rule.json +2 -2
- package/dist/r/react-example-minimal.json +1 -1
- package/dist/r/react-example-notion.json +6 -6
- package/dist/r/react-example-page.json +2 -2
- package/dist/r/react-example-placeholder.json +2 -2
- package/dist/r/react-example-readonly.json +2 -2
- package/dist/r/react-example-rtl.json +2 -2
- package/dist/r/react-example-save-html.json +2 -2
- package/dist/r/react-example-save-json.json +2 -2
- package/dist/r/react-example-save-markdown.json +2 -2
- package/dist/r/react-example-search.json +2 -2
- package/dist/r/react-example-slash-menu.json +2 -2
- package/dist/r/react-example-strike.json +2 -2
- package/dist/r/react-example-table.json +2 -2
- package/dist/r/react-example-temml.json +2 -2
- package/dist/r/react-example-text-align.json +2 -2
- package/dist/r/react-example-text-color.json +3 -3
- package/dist/r/react-example-toolbar.json +2 -2
- package/dist/r/react-example-tweet.json +2 -2
- package/dist/r/react-example-typography.json +2 -2
- package/dist/r/react-example-underline.json +2 -2
- package/dist/r/react-example-unmount.json +2 -2
- package/dist/r/react-example-user-menu-dynamic.json +2 -2
- package/dist/r/react-example-user-menu.json +2 -2
- package/dist/r/react-example-view-adapter.json +2 -2
- package/dist/r/react-example-word-counter.json +2 -2
- package/dist/r/react-example-yjs.json +2 -2
- package/dist/r/react-sample-define-atom-block.json +1 -1
- package/dist/r/react-sample-sample-doc-block-handle.json +1 -1
- package/dist/r/react-sample-sample-doc-bold.json +1 -1
- package/dist/r/react-sample-sample-doc-code-block.json +1 -1
- package/dist/r/react-sample-sample-doc-code.json +1 -1
- package/dist/r/react-sample-sample-doc-drop-cursor.json +1 -1
- package/dist/r/react-sample-sample-doc-full.json +1 -1
- package/dist/r/react-sample-sample-doc-gap-cursor.json +1 -1
- package/dist/r/react-sample-sample-doc-hard-break.json +1 -1
- package/dist/r/react-sample-sample-doc-heading.json +1 -1
- package/dist/r/react-sample-sample-doc-image.json +1 -1
- package/dist/r/react-sample-sample-doc-inline-menu.json +1 -1
- package/dist/r/react-sample-sample-doc-italic.json +1 -1
- package/dist/r/react-sample-sample-doc-link-mark-view.json +1 -1
- package/dist/r/react-sample-sample-doc-link.json +1 -1
- package/dist/r/react-sample-sample-doc-list-custom-checkbox.json +1 -1
- package/dist/r/react-sample-sample-doc-list.json +1 -1
- package/dist/r/react-sample-sample-doc-notion.json +1 -1
- package/dist/r/react-sample-sample-doc-page.json +1 -1
- package/dist/r/react-sample-sample-doc-readonly.json +1 -1
- package/dist/r/react-sample-sample-doc-rtl.json +1 -1
- package/dist/r/react-sample-sample-doc-search.json +1 -1
- package/dist/r/react-sample-sample-doc-strike.json +1 -1
- package/dist/r/react-sample-sample-doc-table.json +1 -1
- package/dist/r/react-sample-sample-doc-tex.json +1 -1
- package/dist/r/react-sample-sample-doc-text-align.json +1 -1
- package/dist/r/react-sample-sample-doc-text-color.json +1 -1
- package/dist/r/react-sample-sample-doc-tweet.json +1 -1
- package/dist/r/react-sample-sample-doc-typography.json +1 -1
- package/dist/r/react-sample-sample-doc-underline.json +1 -1
- package/dist/r/react-sample-sample-doc-view-adapter.json +1 -1
- package/dist/r/react-sample-sample-doc-word-counter.json +1 -1
- package/dist/r/react-sample-sample-uploader.json +1 -1
- package/dist/r/react-ui-block-handle.json +2 -2
- package/dist/r/react-ui-button.json +2 -2
- package/dist/r/react-ui-code-block-view.json +1 -1
- package/dist/r/react-ui-drop-indicator.json +1 -1
- package/dist/r/react-ui-image-upload-popover.json +2 -2
- package/dist/r/react-ui-image-view.json +1 -1
- package/dist/r/react-ui-inline-menu.json +2 -2
- package/dist/r/react-ui-search.json +2 -2
- package/dist/r/react-ui-slash-menu.json +4 -4
- package/dist/r/react-ui-table-handle.json +2 -2
- package/dist/r/react-ui-tag-menu.json +2 -2
- package/dist/r/react-ui-toolbar.json +1 -1
- package/dist/r/react-ui-user-menu.json +2 -2
- package/dist/r/react-ui-word-counter.json +1 -1
- package/dist/r/registry.json +480 -480
- package/dist/r/solid-example-block-handle.json +2 -2
- package/dist/r/solid-example-blockquote.json +2 -2
- package/dist/r/solid-example-bold.json +2 -2
- package/dist/r/solid-example-change-tracking.json +3 -3
- package/dist/r/solid-example-code-block-themes.json +2 -2
- package/dist/r/solid-example-code-block.json +2 -2
- package/dist/r/solid-example-code.json +2 -2
- package/dist/r/solid-example-drop-cursor.json +2 -2
- package/dist/r/solid-example-emoji-rules.json +2 -2
- package/dist/r/solid-example-full.json +2 -2
- package/dist/r/solid-example-gap-cursor.json +2 -2
- package/dist/r/solid-example-hard-break.json +2 -2
- package/dist/r/solid-example-heading.json +2 -2
- package/dist/r/solid-example-horizontal-rule.json +2 -2
- package/dist/r/solid-example-image-view.json +2 -2
- package/dist/r/solid-example-inline-menu.json +2 -2
- package/dist/r/solid-example-italic.json +2 -2
- package/dist/r/solid-example-keymap.json +2 -2
- package/dist/r/solid-example-link-mark-view.json +2 -2
- package/dist/r/solid-example-link.json +2 -2
- package/dist/r/solid-example-list-custom-checkbox.json +2 -2
- package/dist/r/solid-example-list.json +2 -2
- package/dist/r/solid-example-loro.json +2 -2
- package/dist/r/solid-example-mark-rule.json +2 -2
- package/dist/r/solid-example-minimal.json +1 -1
- package/dist/r/solid-example-placeholder.json +2 -2
- package/dist/r/solid-example-readonly.json +2 -2
- package/dist/r/solid-example-rtl.json +2 -2
- package/dist/r/solid-example-save-html.json +2 -2
- package/dist/r/solid-example-save-json.json +2 -2
- package/dist/r/solid-example-save-markdown.json +2 -2
- package/dist/r/solid-example-search.json +2 -2
- package/dist/r/solid-example-slash-menu.json +2 -2
- package/dist/r/solid-example-strike.json +2 -2
- package/dist/r/solid-example-table.json +2 -2
- package/dist/r/solid-example-temml.json +2 -2
- package/dist/r/solid-example-text-align.json +2 -2
- package/dist/r/solid-example-text-color.json +3 -3
- package/dist/r/solid-example-toolbar.json +2 -2
- package/dist/r/solid-example-typography.json +2 -2
- package/dist/r/solid-example-underline.json +2 -2
- package/dist/r/solid-example-unmount.json +2 -2
- package/dist/r/solid-example-user-menu-dynamic.json +2 -2
- package/dist/r/solid-example-user-menu.json +2 -2
- package/dist/r/solid-example-view-adapter.json +2 -2
- package/dist/r/solid-example-word-counter.json +2 -2
- package/dist/r/solid-example-yjs.json +2 -2
- package/dist/r/solid-sample-define-atom-block.json +1 -1
- package/dist/r/solid-sample-sample-doc-block-handle.json +1 -1
- package/dist/r/solid-sample-sample-doc-bold.json +1 -1
- package/dist/r/solid-sample-sample-doc-code-block.json +1 -1
- package/dist/r/solid-sample-sample-doc-code.json +1 -1
- package/dist/r/solid-sample-sample-doc-drop-cursor.json +1 -1
- package/dist/r/solid-sample-sample-doc-full.json +1 -1
- package/dist/r/solid-sample-sample-doc-gap-cursor.json +1 -1
- package/dist/r/solid-sample-sample-doc-hard-break.json +1 -1
- package/dist/r/solid-sample-sample-doc-heading.json +1 -1
- package/dist/r/solid-sample-sample-doc-image.json +1 -1
- package/dist/r/solid-sample-sample-doc-inline-menu.json +1 -1
- package/dist/r/solid-sample-sample-doc-italic.json +1 -1
- package/dist/r/solid-sample-sample-doc-link-mark-view.json +1 -1
- package/dist/r/solid-sample-sample-doc-link.json +1 -1
- package/dist/r/solid-sample-sample-doc-list-custom-checkbox.json +1 -1
- package/dist/r/solid-sample-sample-doc-list.json +1 -1
- package/dist/r/solid-sample-sample-doc-readonly.json +1 -1
- package/dist/r/solid-sample-sample-doc-rtl.json +1 -1
- package/dist/r/solid-sample-sample-doc-search.json +1 -1
- package/dist/r/solid-sample-sample-doc-strike.json +1 -1
- package/dist/r/solid-sample-sample-doc-table.json +1 -1
- package/dist/r/solid-sample-sample-doc-tex.json +1 -1
- package/dist/r/solid-sample-sample-doc-text-align.json +1 -1
- package/dist/r/solid-sample-sample-doc-text-color.json +1 -1
- package/dist/r/solid-sample-sample-doc-typography.json +1 -1
- package/dist/r/solid-sample-sample-doc-underline.json +1 -1
- package/dist/r/solid-sample-sample-doc-view-adapter.json +1 -1
- package/dist/r/solid-sample-sample-doc-word-counter.json +1 -1
- package/dist/r/solid-sample-sample-uploader.json +1 -1
- package/dist/r/solid-ui-block-handle.json +2 -2
- package/dist/r/solid-ui-button.json +2 -2
- package/dist/r/solid-ui-code-block-view.json +1 -1
- package/dist/r/solid-ui-drop-indicator.json +1 -1
- package/dist/r/solid-ui-image-upload-popover.json +2 -2
- package/dist/r/solid-ui-image-view.json +1 -1
- package/dist/r/solid-ui-inline-menu.json +2 -2
- package/dist/r/solid-ui-search.json +2 -2
- package/dist/r/solid-ui-slash-menu.json +4 -4
- package/dist/r/solid-ui-table-handle.json +2 -2
- package/dist/r/solid-ui-tag-menu.json +2 -2
- package/dist/r/solid-ui-toolbar.json +1 -1
- package/dist/r/solid-ui-user-menu.json +2 -2
- package/dist/r/solid-ui-word-counter.json +1 -1
- package/dist/r/svelte-example-block-handle.json +2 -2
- package/dist/r/svelte-example-blockquote.json +2 -2
- package/dist/r/svelte-example-bold.json +2 -2
- package/dist/r/svelte-example-change-tracking.json +3 -3
- package/dist/r/svelte-example-code-block-themes.json +2 -2
- package/dist/r/svelte-example-code-block.json +2 -2
- package/dist/r/svelte-example-code.json +2 -2
- package/dist/r/svelte-example-drop-cursor.json +2 -2
- package/dist/r/svelte-example-emoji-rules.json +2 -2
- package/dist/r/svelte-example-full.json +2 -2
- package/dist/r/svelte-example-gap-cursor.json +2 -2
- package/dist/r/svelte-example-hard-break.json +2 -2
- package/dist/r/svelte-example-heading.json +2 -2
- package/dist/r/svelte-example-horizontal-rule.json +2 -2
- package/dist/r/svelte-example-image-view.json +2 -2
- package/dist/r/svelte-example-inline-menu.json +2 -2
- package/dist/r/svelte-example-italic.json +2 -2
- package/dist/r/svelte-example-katex.json +2 -2
- package/dist/r/svelte-example-keymap.json +2 -2
- package/dist/r/svelte-example-link-mark-view.json +2 -2
- package/dist/r/svelte-example-link.json +2 -2
- package/dist/r/svelte-example-list-custom-checkbox.json +2 -2
- package/dist/r/svelte-example-list.json +2 -2
- package/dist/r/svelte-example-loro.json +2 -2
- package/dist/r/svelte-example-mark-rule.json +2 -2
- package/dist/r/svelte-example-minimal.json +1 -1
- package/dist/r/svelte-example-page.json +2 -2
- package/dist/r/svelte-example-placeholder.json +2 -2
- package/dist/r/svelte-example-readonly.json +2 -2
- package/dist/r/svelte-example-rtl.json +2 -2
- package/dist/r/svelte-example-save-html.json +2 -2
- package/dist/r/svelte-example-save-json.json +2 -2
- package/dist/r/svelte-example-save-markdown.json +2 -2
- package/dist/r/svelte-example-search.json +2 -2
- package/dist/r/svelte-example-slash-menu.json +2 -2
- package/dist/r/svelte-example-strike.json +2 -2
- package/dist/r/svelte-example-table.json +2 -2
- package/dist/r/svelte-example-text-align.json +2 -2
- package/dist/r/svelte-example-text-color.json +3 -3
- package/dist/r/svelte-example-toolbar.json +2 -2
- package/dist/r/svelte-example-typography.json +2 -2
- package/dist/r/svelte-example-underline.json +2 -2
- package/dist/r/svelte-example-unmount.json +2 -2
- package/dist/r/svelte-example-user-menu-dynamic.json +2 -2
- package/dist/r/svelte-example-user-menu.json +2 -2
- package/dist/r/svelte-example-view-adapter.json +2 -2
- package/dist/r/svelte-example-word-counter.json +2 -2
- package/dist/r/svelte-example-yjs.json +2 -2
- package/dist/r/svelte-sample-define-atom-block.json +1 -1
- package/dist/r/svelte-sample-sample-doc-block-handle.json +1 -1
- package/dist/r/svelte-sample-sample-doc-bold.json +1 -1
- package/dist/r/svelte-sample-sample-doc-code-block.json +1 -1
- package/dist/r/svelte-sample-sample-doc-code.json +1 -1
- package/dist/r/svelte-sample-sample-doc-drop-cursor.json +1 -1
- package/dist/r/svelte-sample-sample-doc-full.json +1 -1
- package/dist/r/svelte-sample-sample-doc-gap-cursor.json +1 -1
- package/dist/r/svelte-sample-sample-doc-hard-break.json +1 -1
- package/dist/r/svelte-sample-sample-doc-heading.json +1 -1
- package/dist/r/svelte-sample-sample-doc-image.json +1 -1
- package/dist/r/svelte-sample-sample-doc-inline-menu.json +1 -1
- package/dist/r/svelte-sample-sample-doc-italic.json +1 -1
- package/dist/r/svelte-sample-sample-doc-link-mark-view.json +1 -1
- package/dist/r/svelte-sample-sample-doc-link.json +1 -1
- package/dist/r/svelte-sample-sample-doc-list-custom-checkbox.json +1 -1
- package/dist/r/svelte-sample-sample-doc-list.json +1 -1
- package/dist/r/svelte-sample-sample-doc-page.json +1 -1
- package/dist/r/svelte-sample-sample-doc-readonly.json +1 -1
- package/dist/r/svelte-sample-sample-doc-rtl.json +1 -1
- package/dist/r/svelte-sample-sample-doc-search.json +1 -1
- package/dist/r/svelte-sample-sample-doc-strike.json +1 -1
- package/dist/r/svelte-sample-sample-doc-table.json +1 -1
- package/dist/r/svelte-sample-sample-doc-tex.json +1 -1
- package/dist/r/svelte-sample-sample-doc-text-align.json +1 -1
- package/dist/r/svelte-sample-sample-doc-text-color.json +1 -1
- package/dist/r/svelte-sample-sample-doc-typography.json +1 -1
- package/dist/r/svelte-sample-sample-doc-underline.json +1 -1
- package/dist/r/svelte-sample-sample-doc-view-adapter.json +1 -1
- package/dist/r/svelte-sample-sample-doc-word-counter.json +1 -1
- package/dist/r/svelte-sample-sample-uploader.json +1 -1
- package/dist/r/svelte-ui-block-handle.json +2 -2
- package/dist/r/svelte-ui-button.json +2 -2
- package/dist/r/svelte-ui-code-block-view.json +1 -1
- package/dist/r/svelte-ui-drop-indicator.json +1 -1
- package/dist/r/svelte-ui-image-upload-popover.json +2 -2
- package/dist/r/svelte-ui-image-view.json +1 -1
- package/dist/r/svelte-ui-inline-menu.json +2 -2
- package/dist/r/svelte-ui-search.json +2 -2
- package/dist/r/svelte-ui-slash-menu.json +4 -4
- package/dist/r/svelte-ui-table-handle.json +2 -2
- package/dist/r/svelte-ui-tag-menu.json +2 -2
- package/dist/r/svelte-ui-toolbar.json +1 -1
- package/dist/r/svelte-ui-user-menu.json +2 -2
- package/dist/r/svelte-ui-word-counter.json +1 -1
- package/dist/r/vanilla-example-minimal.json +1 -1
- package/dist/r/vanilla-example-slash-menu.json +2 -2
- package/dist/r/vanilla-ui-slash-menu.json +4 -4
- package/dist/r/vue-example-block-handle.json +2 -2
- package/dist/r/vue-example-blockquote.json +2 -2
- package/dist/r/vue-example-bold.json +2 -2
- package/dist/r/vue-example-change-tracking.json +3 -3
- package/dist/r/vue-example-code-block-themes.json +2 -2
- package/dist/r/vue-example-code-block.json +2 -2
- package/dist/r/vue-example-code.json +2 -2
- package/dist/r/vue-example-drop-cursor.json +2 -2
- package/dist/r/vue-example-emoji-rules.json +2 -2
- package/dist/r/vue-example-full.json +2 -2
- package/dist/r/vue-example-gap-cursor.json +2 -2
- package/dist/r/vue-example-hard-break.json +2 -2
- package/dist/r/vue-example-heading.json +2 -2
- package/dist/r/vue-example-horizontal-rule.json +2 -2
- package/dist/r/vue-example-image-view.json +2 -2
- package/dist/r/vue-example-inline-menu.json +2 -2
- package/dist/r/vue-example-italic.json +2 -2
- package/dist/r/vue-example-katex.json +2 -2
- package/dist/r/vue-example-keymap.json +2 -2
- package/dist/r/vue-example-link-mark-view.json +2 -2
- package/dist/r/vue-example-link.json +2 -2
- package/dist/r/vue-example-list-custom-checkbox.json +2 -2
- package/dist/r/vue-example-list.json +2 -2
- package/dist/r/vue-example-loro.json +2 -2
- package/dist/r/vue-example-mark-rule.json +2 -2
- package/dist/r/vue-example-minimal.json +1 -1
- package/dist/r/vue-example-placeholder.json +2 -2
- package/dist/r/vue-example-readonly.json +2 -2
- package/dist/r/vue-example-rtl.json +2 -2
- package/dist/r/vue-example-save-html.json +2 -2
- package/dist/r/vue-example-save-json.json +2 -2
- package/dist/r/vue-example-save-markdown.json +2 -2
- package/dist/r/vue-example-search.json +2 -2
- package/dist/r/vue-example-slash-menu.json +2 -2
- package/dist/r/vue-example-strike.json +2 -2
- package/dist/r/vue-example-table.json +2 -2
- package/dist/r/vue-example-text-align.json +2 -2
- package/dist/r/vue-example-text-color.json +3 -3
- package/dist/r/vue-example-toolbar.json +2 -2
- package/dist/r/vue-example-tweet.json +2 -2
- package/dist/r/vue-example-typography.json +2 -2
- package/dist/r/vue-example-underline.json +2 -2
- package/dist/r/vue-example-unmount.json +2 -2
- package/dist/r/vue-example-user-menu-dynamic.json +2 -2
- package/dist/r/vue-example-user-menu.json +2 -2
- package/dist/r/vue-example-view-adapter.json +2 -2
- package/dist/r/vue-example-word-counter.json +2 -2
- package/dist/r/vue-example-yjs.json +2 -2
- package/dist/r/vue-sample-define-atom-block.json +1 -1
- package/dist/r/vue-sample-sample-doc-block-handle.json +1 -1
- package/dist/r/vue-sample-sample-doc-bold.json +1 -1
- package/dist/r/vue-sample-sample-doc-code-block.json +1 -1
- package/dist/r/vue-sample-sample-doc-code.json +1 -1
- package/dist/r/vue-sample-sample-doc-drop-cursor.json +1 -1
- package/dist/r/vue-sample-sample-doc-full.json +1 -1
- package/dist/r/vue-sample-sample-doc-gap-cursor.json +1 -1
- package/dist/r/vue-sample-sample-doc-hard-break.json +1 -1
- package/dist/r/vue-sample-sample-doc-heading.json +1 -1
- package/dist/r/vue-sample-sample-doc-image.json +1 -1
- package/dist/r/vue-sample-sample-doc-inline-menu.json +1 -1
- package/dist/r/vue-sample-sample-doc-italic.json +1 -1
- package/dist/r/vue-sample-sample-doc-link-mark-view.json +1 -1
- package/dist/r/vue-sample-sample-doc-link.json +1 -1
- package/dist/r/vue-sample-sample-doc-list-custom-checkbox.json +1 -1
- package/dist/r/vue-sample-sample-doc-list.json +1 -1
- package/dist/r/vue-sample-sample-doc-readonly.json +1 -1
- package/dist/r/vue-sample-sample-doc-rtl.json +1 -1
- package/dist/r/vue-sample-sample-doc-search.json +1 -1
- package/dist/r/vue-sample-sample-doc-strike.json +1 -1
- package/dist/r/vue-sample-sample-doc-table.json +1 -1
- package/dist/r/vue-sample-sample-doc-tex.json +1 -1
- package/dist/r/vue-sample-sample-doc-text-align.json +1 -1
- package/dist/r/vue-sample-sample-doc-text-color.json +1 -1
- package/dist/r/vue-sample-sample-doc-tweet.json +1 -1
- package/dist/r/vue-sample-sample-doc-typography.json +1 -1
- package/dist/r/vue-sample-sample-doc-underline.json +1 -1
- package/dist/r/vue-sample-sample-doc-view-adapter.json +1 -1
- package/dist/r/vue-sample-sample-doc-word-counter.json +1 -1
- package/dist/r/vue-sample-sample-uploader.json +1 -1
- package/dist/r/vue-ui-block-handle.json +2 -2
- package/dist/r/vue-ui-button.json +2 -2
- package/dist/r/vue-ui-code-block-view.json +1 -1
- package/dist/r/vue-ui-drop-indicator.json +1 -1
- package/dist/r/vue-ui-image-upload-popover.json +2 -2
- package/dist/r/vue-ui-image-view.json +1 -1
- package/dist/r/vue-ui-inline-menu.json +2 -2
- package/dist/r/vue-ui-search.json +2 -2
- package/dist/r/vue-ui-slash-menu.json +4 -4
- package/dist/r/vue-ui-table-handle.json +2 -2
- package/dist/r/vue-ui-tag-menu.json +2 -2
- package/dist/r/vue-ui-toolbar.json +1 -1
- package/dist/r/vue-ui-user-menu.json +2 -2
- package/dist/r/vue-ui-word-counter.json +1 -1
- package/package.json +13 -13
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
],
|
|
10
10
|
"dependencies": [
|
|
11
11
|
"@lit/context",
|
|
12
|
-
"prosekit@^0.20.0
|
|
12
|
+
"prosekit@^0.20.0"
|
|
13
13
|
],
|
|
14
14
|
"files": [
|
|
15
15
|
{
|
|
16
16
|
"path": "registry/src/lit/examples/slash-menu/editor.ts",
|
|
17
17
|
"type": "registry:component",
|
|
18
18
|
"target": "components/editor/examples/slash-menu/editor.ts",
|
|
19
|
-
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport '../../ui/slash-menu/index'\n\nimport { ContextProvider } from '@lit/context'\nimport { html, LitElement, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport type { Editor } from 'prosekit/core'\nimport { createEditor } from 'prosekit/core'\n\nimport { editorContext } from '../../ui/editor-context'\n\nimport { defineExtension } from './extension'\n\nexport class LitEditor extends LitElement {\n static override properties = {\n editor: {\n state: true,\n attribute: false,\n } satisfies PropertyDeclaration<Editor>,\n }\n\n private editor: Editor\n private ref: Ref<HTMLDivElement>\n constructor() {\n super()\n\n const extension = defineExtension()\n this.editor = createEditor({ extension })\n this.ref = createRef<HTMLDivElement>()\n new ContextProvider(this, {\n context: editorContext,\n initialValue: this.editor,\n })\n }\n\n override createRenderRoot() {\n return this\n }\n\n override disconnectedCallback() {\n this.editor.unmount()\n super.disconnectedCallback()\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.editor.mount(this.ref.value)\n }\n\n override render() {\n return html`<div class=\"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-
|
|
19
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport '../../ui/slash-menu/index'\n\nimport { ContextProvider } from '@lit/context'\nimport { html, LitElement, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport type { Editor } from 'prosekit/core'\nimport { createEditor } from 'prosekit/core'\n\nimport { editorContext } from '../../ui/editor-context'\n\nimport { defineExtension } from './extension'\n\nexport class LitEditor extends LitElement {\n static override properties = {\n editor: {\n state: true,\n attribute: false,\n } satisfies PropertyDeclaration<Editor>,\n }\n\n private editor: Editor\n private ref: Ref<HTMLDivElement>\n constructor() {\n super()\n\n const extension = defineExtension()\n this.editor = createEditor({ extension })\n this.ref = createRef<HTMLDivElement>()\n new ContextProvider(this, {\n context: editorContext,\n initialValue: this.editor,\n })\n }\n\n override createRenderRoot() {\n return this\n }\n\n override disconnectedCallback() {\n this.editor.unmount()\n super.disconnectedCallback()\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.editor.mount(this.ref.value)\n }\n\n override render() {\n return html`<div class=\"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-[canvas] text-black dark:text-white\">\n <div class=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ${ref(this.ref)} class=\"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 <lit-editor-slash-menu style=\"display: contents;\"></lit-editor-slash-menu>\n </div>\n </div>`\n }\n}\n\nexport function registerLitEditor() {\n if (customElements.get('lit-editor-example-slash-menu')) return\n customElements.define('lit-editor-example-slash-menu', LitEditor)\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-example-slash-menu': LitEditor\n }\n}\n"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"path": "registry/src/lit/examples/slash-menu/extension.ts",
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
],
|
|
11
11
|
"dependencies": [
|
|
12
12
|
"@lit/context",
|
|
13
|
-
"prosekit@^0.20.0
|
|
13
|
+
"prosekit@^0.20.0"
|
|
14
14
|
],
|
|
15
15
|
"files": [
|
|
16
16
|
{
|
|
17
17
|
"path": "registry/src/lit/examples/table/editor.ts",
|
|
18
18
|
"type": "registry:component",
|
|
19
19
|
"target": "components/editor/examples/table/editor.ts",
|
|
20
|
-
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport '../../ui/table-handle/index'\n\nimport { ContextProvider } from '@lit/context'\nimport { html, LitElement, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport type { Editor } from 'prosekit/core'\nimport { createEditor } from 'prosekit/core'\n\nimport { sampleContent } from '../../sample/sample-doc-table'\nimport { editorContext } from '../../ui/editor-context'\n\nimport { defineExtension } from './extension'\n\nexport class LitEditor extends LitElement {\n static override properties = {\n editor: { state: true, attribute: false } satisfies PropertyDeclaration<Editor>,\n }\n\n private editor: Editor\n private ref: Ref<HTMLDivElement>\n constructor() {\n super()\n\n const extension = defineExtension()\n this.editor = createEditor({ extension, defaultContent: sampleContent })\n this.ref = createRef<HTMLDivElement>()\n new ContextProvider(this, {\n context: editorContext,\n initialValue: this.editor,\n })\n }\n\n override createRenderRoot() {\n return this\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.editor.mount(this.ref.value)\n }\n\n override render() {\n return html`<div class=\"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-
|
|
20
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport '../../ui/table-handle/index'\n\nimport { ContextProvider } from '@lit/context'\nimport { html, LitElement, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport type { Editor } from 'prosekit/core'\nimport { createEditor } from 'prosekit/core'\n\nimport { sampleContent } from '../../sample/sample-doc-table'\nimport { editorContext } from '../../ui/editor-context'\n\nimport { defineExtension } from './extension'\n\nexport class LitEditor extends LitElement {\n static override properties = {\n editor: { state: true, attribute: false } satisfies PropertyDeclaration<Editor>,\n }\n\n private editor: Editor\n private ref: Ref<HTMLDivElement>\n constructor() {\n super()\n\n const extension = defineExtension()\n this.editor = createEditor({ extension, defaultContent: sampleContent })\n this.ref = createRef<HTMLDivElement>()\n new ContextProvider(this, {\n context: editorContext,\n initialValue: this.editor,\n })\n }\n\n override createRenderRoot() {\n return this\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.editor.mount(this.ref.value)\n }\n\n override render() {\n return html`<div class=\"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-[canvas] text-black dark:text-white\">\n <div class=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ${ref(this.ref)} class=\"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 <lit-editor-table-handle></lit-editor-table-handle>\n </div>\n </div>`\n }\n}\n\nexport function registerLitEditor() {\n if (customElements.get('lit-editor-example-table')) return\n customElements.define('lit-editor-example-table', LitEditor)\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-example-table': LitEditor\n }\n}\n"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"path": "registry/src/lit/examples/table/extension.ts",
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
],
|
|
11
11
|
"dependencies": [
|
|
12
12
|
"@lit/context",
|
|
13
|
-
"prosekit@^0.20.0
|
|
13
|
+
"prosekit@^0.20.0"
|
|
14
14
|
],
|
|
15
15
|
"files": [
|
|
16
16
|
{
|
|
17
17
|
"path": "registry/src/lit/examples/toolbar/editor.ts",
|
|
18
18
|
"type": "registry:component",
|
|
19
19
|
"target": "components/editor/examples/toolbar/editor.ts",
|
|
20
|
-
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport '../../ui/toolbar/index'\n\nimport { ContextProvider } from '@lit/context'\nimport { html, LitElement, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport type { Editor } from 'prosekit/core'\nimport { createEditor } from 'prosekit/core'\n\nimport { sampleUploader } from '../../sample/sample-uploader'\nimport { editorContext } from '../../ui/editor-context'\n\nimport { defineExtension } from './extension'\n\nexport class LitEditor extends LitElement {\n static override properties = {\n editor: {\n state: true,\n attribute: false,\n } satisfies PropertyDeclaration<Editor>,\n }\n\n private editor: Editor\n private ref: Ref<HTMLDivElement>\n constructor() {\n super()\n\n const extension = defineExtension()\n this.editor = createEditor({ extension })\n this.ref = createRef<HTMLDivElement>()\n new ContextProvider(this, {\n context: editorContext,\n initialValue: this.editor,\n })\n }\n\n override createRenderRoot() {\n return this\n }\n\n override disconnectedCallback() {\n this.editor.unmount()\n super.disconnectedCallback()\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.editor.mount(this.ref.value)\n }\n\n override render() {\n return html`<div class=\"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-
|
|
20
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport '../../ui/toolbar/index'\n\nimport { ContextProvider } from '@lit/context'\nimport { html, LitElement, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport type { Editor } from 'prosekit/core'\nimport { createEditor } from 'prosekit/core'\n\nimport { sampleUploader } from '../../sample/sample-uploader'\nimport { editorContext } from '../../ui/editor-context'\n\nimport { defineExtension } from './extension'\n\nexport class LitEditor extends LitElement {\n static override properties = {\n editor: {\n state: true,\n attribute: false,\n } satisfies PropertyDeclaration<Editor>,\n }\n\n private editor: Editor\n private ref: Ref<HTMLDivElement>\n constructor() {\n super()\n\n const extension = defineExtension()\n this.editor = createEditor({ extension })\n this.ref = createRef<HTMLDivElement>()\n new ContextProvider(this, {\n context: editorContext,\n initialValue: this.editor,\n })\n }\n\n override createRenderRoot() {\n return this\n }\n\n override disconnectedCallback() {\n this.editor.unmount()\n super.disconnectedCallback()\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.editor.mount(this.ref.value)\n }\n\n override render() {\n return html`<div class=\"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-[canvas] text-black dark:text-white\">\n <lit-editor-toolbar .uploader=${sampleUploader}></lit-editor-toolbar>\n <div class=\"relative w-full flex-1 box-border overflow-y-auto\">\n <div ${ref(this.ref)} class=\"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 }\n}\n\nexport function registerLitEditor() {\n if (customElements.get('lit-editor-example-toolbar')) return\n customElements.define('lit-editor-example-toolbar', LitEditor)\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-example-toolbar': LitEditor\n }\n}\n"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"path": "registry/src/lit/examples/toolbar/extension.ts",
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
"description": "",
|
|
6
6
|
"registryDependencies": [],
|
|
7
7
|
"dependencies": [
|
|
8
|
-
"prosekit@^0.20.0
|
|
8
|
+
"prosekit@^0.20.0"
|
|
9
9
|
],
|
|
10
10
|
"files": [
|
|
11
11
|
{
|
|
12
12
|
"path": "registry/src/lit/ui/button/button.ts",
|
|
13
13
|
"type": "registry:component",
|
|
14
14
|
"target": "components/editor/ui/button/button.ts",
|
|
15
|
-
"content": "import 'prosekit/lit/tooltip'\n\nimport { html, LitElement, nothing, type PropertyDeclaration } from 'lit'\n\nclass LitButton extends LitElement {\n static override properties = {\n pressed: { type: Boolean },\n disabled: { type: Boolean },\n tooltip: { type: String },\n icon: { type: String },\n } satisfies Record<string, PropertyDeclaration>\n\n pressed = false\n disabled = false\n tooltip = ''\n icon = ''\n\n override createRenderRoot() {\n return this\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this.classList.add('contents')\n }\n\n private handleMouseDown = (event: MouseEvent) => {\n // Prevent the editor from being blurred when the button is clicked\n event.preventDefault()\n }\n\n override render() {\n const tooltip = this.tooltip\n\n return html`\n <prosekit-tooltip-root>\n <prosekit-tooltip-trigger class=\"block\">\n <button\n data-state=${this.pressed ? 'on' : 'off'}\n class=\"outline-unset focus-visible:outline-unset flex items-center justify-center rounded-md p-2 font-medium transition focus-visible:ring-2 text-sm focus-visible:ring-gray-900 dark:focus-visible:ring-gray-300 disabled:pointer-events-none min-w-9 min-h-9 text-gray-900 dark:text-gray-50 disabled:text-gray-900/50 dark:disabled:text-gray-50/50 bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 data-[state=on]:bg-gray-200 dark:data-[state=on]:bg-gray-700\"\n ?disabled=${this.disabled}\n @mousedown=${this.handleMouseDown}\n >\n ${this.icon ? html`<div class=\"${this.icon}\"></div>` : nothing}\n ${tooltip ? html`<span class=\"sr-only\">${tooltip}</span>` : nothing}\n </button>\n </prosekit-tooltip-trigger>\n ${tooltip\n ? html`\n <prosekit-tooltip-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-tooltip-popup class=\"flex box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none duration-100 data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 overflow-hidden rounded-md border border-solid bg-gray-900 dark:bg-gray-50 px-3 py-1.5 text-xs text-gray-50 dark:text-gray-900 shadow-xs text-nowrap\">\n ${tooltip}\n </prosekit-tooltip-popup>\n </prosekit-tooltip-positioner>\n `\n : nothing}\n </prosekit-tooltip-root>\n `\n }\n}\n\ncustomElements.define('lit-editor-button', LitButton)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-button': LitButton\n }\n}\n"
|
|
15
|
+
"content": "import 'prosekit/lit/tooltip'\n\nimport { html, LitElement, nothing, type PropertyDeclaration } from 'lit'\n\nclass LitButton extends LitElement {\n static override properties = {\n pressed: { type: Boolean },\n disabled: { type: Boolean },\n tooltip: { type: String },\n icon: { type: String },\n } satisfies Record<string, PropertyDeclaration>\n\n pressed = false\n disabled = false\n tooltip = ''\n icon = ''\n\n override createRenderRoot() {\n return this\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this.classList.add('contents')\n }\n\n private handleMouseDown = (event: MouseEvent) => {\n // Prevent the editor from being blurred when the button is clicked\n event.preventDefault()\n }\n\n override render() {\n const tooltip = this.tooltip\n\n return html`\n <prosekit-tooltip-root>\n <prosekit-tooltip-trigger class=\"block\">\n <button\n data-state=${this.pressed ? 'on' : 'off'}\n class=\"outline-unset focus-visible:outline-unset flex items-center justify-center rounded-md p-2 font-medium transition focus-visible:ring-2 text-sm focus-visible:ring-gray-900 dark:focus-visible:ring-gray-300 disabled:pointer-events-none min-w-9 min-h-9 text-gray-900 dark:text-gray-50 disabled:text-gray-900/50 dark:disabled:text-gray-50/50 bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 data-[state=on]:bg-gray-200 dark:data-[state=on]:bg-gray-700\"\n ?disabled=${this.disabled}\n @mousedown=${this.handleMouseDown}\n >\n ${this.icon ? html`<div class=\"${this.icon}\"></div>` : nothing}\n ${tooltip ? html`<span class=\"sr-only\">${tooltip}</span>` : nothing}\n </button>\n </prosekit-tooltip-trigger>\n ${tooltip\n ? html`\n <prosekit-tooltip-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-tooltip-popup class=\"flex box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none duration-100 data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 overflow-hidden rounded-md border border-solid bg-gray-900 dark:bg-gray-50 px-3 py-1.5 text-xs text-gray-50 dark:text-gray-900 shadow-xs text-nowrap\">\n ${tooltip}\n </prosekit-tooltip-popup>\n </prosekit-tooltip-positioner>\n `\n : nothing}\n </prosekit-tooltip-root>\n `\n }\n}\n\ncustomElements.define('lit-editor-button', LitButton)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-button': LitButton\n }\n}\n"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"path": "registry/src/lit/ui/button/index.ts",
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
"https://unpkg.com/prosekit-registry/dist/r/lit-ui-button.json"
|
|
8
8
|
],
|
|
9
9
|
"dependencies": [
|
|
10
|
-
"prosekit@^0.20.0
|
|
10
|
+
"prosekit@^0.20.0"
|
|
11
11
|
],
|
|
12
12
|
"files": [
|
|
13
13
|
{
|
|
14
14
|
"path": "registry/src/lit/ui/image-upload-popover/image-upload-popover.ts",
|
|
15
15
|
"type": "registry:component",
|
|
16
16
|
"target": "components/editor/ui/image-upload-popover/image-upload-popover.ts",
|
|
17
|
-
"content": "import '../button/index'\n\nimport { html, LitElement, nothing, type PropertyDeclaration } from 'lit'\nimport type { Editor } from 'prosekit/core'\nimport type { Uploader } from 'prosekit/extensions/file'\nimport type { ImageExtension } from 'prosekit/extensions/image'\nimport type { OpenChangeEvent } from 'prosekit/lit/popover'\n\nlet imageUploadId = 0\n\nclass LitImageUploadPopover extends LitElement {\n static override properties = {\n editor: { attribute: false } satisfies PropertyDeclaration<Editor>,\n uploader: { attribute: false } satisfies PropertyDeclaration<Uploader<string>>,\n tooltip: { type: String },\n disabled: { type: Boolean },\n icon: { type: String },\n }\n\n editor?: Editor<ImageExtension>\n uploader?: Uploader<string>\n tooltip = ''\n disabled = false\n icon = ''\n\n private open = false\n private url = ''\n private file: File | null = null\n private ariaId = `lit-image-upload-${imageUploadId++}`\n\n override createRenderRoot() {\n return this\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this.classList.add('contents')\n }\n\n private handleOpenChange = (event: OpenChangeEvent) => {\n if (!event.detail) {\n this.deferResetState()\n }\n\n this.open = event.detail\n this.requestUpdate()\n }\n\n private handleFileChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n const selectedFile = target.files?.[0]\n\n if (selectedFile) {\n this.file = selectedFile\n this.url = ''\n } else {\n this.file = null\n }\n\n this.requestUpdate()\n }\n\n private handleUrlChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n const inputUrl = target.value\n\n if (inputUrl) {\n this.url = inputUrl\n this.file = null\n } else {\n this.url = ''\n }\n\n this.requestUpdate()\n }\n\n private deferResetState() {\n setTimeout(() => {\n this.url = ''\n this.file = null\n this.requestUpdate()\n }, 300)\n }\n\n private handleSubmit = () => {\n const editor = this.editor\n if (!editor) return\n\n if (this.url) {\n editor.commands.insertImage({ src: this.url })\n } else if (this.file && this.uploader) {\n editor.commands.uploadImage({ file: this.file, uploader: this.uploader })\n }\n\n this.open = false\n this.deferResetState()\n this.requestUpdate()\n }\n\n override render() {\n return html`\n <prosekit-popover-root .open=${this.open} @open-change=${this.handleOpenChange}>\n <prosekit-popover-trigger>\n <lit-editor-button\n .pressed=${this.open}\n .disabled=${this.disabled}\n .tooltip=${this.tooltip}\n .icon=${this.icon}\n ></lit-editor-button>\n </prosekit-popover-trigger>\n\n <prosekit-popover-positioner placement=\"bottom\" class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-popover-popup class=\"box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-
|
|
17
|
+
"content": "import '../button/index'\n\nimport { html, LitElement, nothing, type PropertyDeclaration } from 'lit'\nimport type { Editor } from 'prosekit/core'\nimport type { Uploader } from 'prosekit/extensions/file'\nimport type { ImageExtension } from 'prosekit/extensions/image'\nimport type { OpenChangeEvent } from 'prosekit/lit/popover'\n\nlet imageUploadId = 0\n\nclass LitImageUploadPopover extends LitElement {\n static override properties = {\n editor: { attribute: false } satisfies PropertyDeclaration<Editor>,\n uploader: { attribute: false } satisfies PropertyDeclaration<Uploader<string>>,\n tooltip: { type: String },\n disabled: { type: Boolean },\n icon: { type: String },\n }\n\n editor?: Editor<ImageExtension>\n uploader?: Uploader<string>\n tooltip = ''\n disabled = false\n icon = ''\n\n private open = false\n private url = ''\n private file: File | null = null\n private ariaId = `lit-image-upload-${imageUploadId++}`\n\n override createRenderRoot() {\n return this\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this.classList.add('contents')\n }\n\n private handleOpenChange = (event: OpenChangeEvent) => {\n if (!event.detail) {\n this.deferResetState()\n }\n\n this.open = event.detail\n this.requestUpdate()\n }\n\n private handleFileChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n const selectedFile = target.files?.[0]\n\n if (selectedFile) {\n this.file = selectedFile\n this.url = ''\n } else {\n this.file = null\n }\n\n this.requestUpdate()\n }\n\n private handleUrlChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n const inputUrl = target.value\n\n if (inputUrl) {\n this.url = inputUrl\n this.file = null\n } else {\n this.url = ''\n }\n\n this.requestUpdate()\n }\n\n private deferResetState() {\n setTimeout(() => {\n this.url = ''\n this.file = null\n this.requestUpdate()\n }, 300)\n }\n\n private handleSubmit = () => {\n const editor = this.editor\n if (!editor) return\n\n if (this.url) {\n editor.commands.insertImage({ src: this.url })\n } else if (this.file && this.uploader) {\n editor.commands.uploadImage({ file: this.file, uploader: this.uploader })\n }\n\n this.open = false\n this.deferResetState()\n this.requestUpdate()\n }\n\n override render() {\n return html`\n <prosekit-popover-root .open=${this.open} @open-change=${this.handleOpenChange}>\n <prosekit-popover-trigger>\n <lit-editor-button\n .pressed=${this.open}\n .disabled=${this.disabled}\n .tooltip=${this.tooltip}\n .icon=${this.icon}\n ></lit-editor-button>\n </prosekit-popover-trigger>\n\n <prosekit-popover-positioner placement=\"bottom\" class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-popover-popup class=\"box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-xl border border-gray-200 dark:border-gray-800 shadow-lg bg-[canvas] flex flex-col gap-y-4 p-6 text-sm w-sm\">\n ${!this.file\n ? html`\n <label for=\"id-link-${this.ariaId}\">Embed Link</label>\n <input\n id=\"id-link-${this.ariaId}\"\n class=\"flex h-9 rounded-md w-full bg-[canvas] px-3 py-2 text-sm placeholder:text-gray-500 dark:placeholder:text-gray-500 transition border box-border border-gray-200 dark:border-gray-800 border-solid ring-0 ring-transparent focus-visible:ring-2 focus-visible:ring-gray-900 dark:focus-visible:ring-gray-300 focus-visible:ring-offset-0 outline-hidden focus-visible:outline-hidden file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:cursor-not-allowed disabled:opacity-50\"\n placeholder=\"Paste the image link...\"\n type=\"url\"\n .value=${this.url}\n @input=${this.handleUrlChange}\n />\n `\n : nothing}\n ${!this.url\n ? html`\n <label for=\"id-upload-${this.ariaId}\">Upload</label>\n <input\n id=\"id-upload-${this.ariaId}\"\n class=\"flex h-9 rounded-md w-full bg-[canvas] px-3 py-2 text-sm placeholder:text-gray-500 dark:placeholder:text-gray-500 transition border box-border border-gray-200 dark:border-gray-800 border-solid ring-0 ring-transparent focus-visible:ring-2 focus-visible:ring-gray-900 dark:focus-visible:ring-gray-300 focus-visible:ring-offset-0 outline-hidden focus-visible:outline-hidden file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:cursor-not-allowed disabled:opacity-50\"\n accept=\"image/*\"\n type=\"file\"\n @change=${this.handleFileChange}\n />\n `\n : nothing}\n ${this.url\n ? html`\n <button class=\"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white dark:ring-offset-gray-950 transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-gray-900 dark:focus-visible:ring-gray-300 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border-0 bg-gray-900 dark:bg-gray-50 text-gray-50 dark:text-gray-900 hover:bg-gray-900/90 dark:hover:bg-gray-50/90 h-10 px-4 py-2 w-full\" @click=${this.handleSubmit}>\n Insert Image\n </button>\n `\n : nothing}\n ${this.file\n ? html`\n <button class=\"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white dark:ring-offset-gray-950 transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-gray-900 dark:focus-visible:ring-gray-300 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border-0 bg-gray-900 dark:bg-gray-50 text-gray-50 dark:text-gray-900 hover:bg-gray-900/90 dark:hover:bg-gray-50/90 h-10 px-4 py-2 w-full\" @click=${this.handleSubmit}>\n Upload Image\n </button>\n `\n : nothing}\n </prosekit-popover-popup>\n </prosekit-popover-positioner>\n </prosekit-popover-root>\n `\n }\n}\n\ncustomElements.define('lit-editor-image-upload-popover', LitImageUploadPopover)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-image-upload-popover': LitImageUploadPopover\n }\n}\n"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"path": "registry/src/lit/ui/image-upload-popover/index.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
],
|
|
9
9
|
"dependencies": [
|
|
10
10
|
"@lit/context",
|
|
11
|
-
"prosekit@^0.20.0
|
|
11
|
+
"prosekit@^0.20.0"
|
|
12
12
|
],
|
|
13
13
|
"files": [
|
|
14
14
|
{
|
|
@@ -21,19 +21,19 @@
|
|
|
21
21
|
"path": "registry/src/lit/ui/slash-menu/slash-menu-empty.ts",
|
|
22
22
|
"type": "registry:component",
|
|
23
23
|
"target": "components/editor/ui/slash-menu/slash-menu-empty.ts",
|
|
24
|
-
"content": "import 'prosekit/lit/autocomplete'\n\nimport { html, LitElement } from 'lit'\n\nclass SlashMenuEmptyElement extends LitElement {\n override createRenderRoot() {\n return this\n }\n\n override render() {\n return html`\n <prosekit-autocomplete-empty class=\"relative flex items-center justify-between min-w-32 scroll-my-1 rounded-
|
|
24
|
+
"content": "import 'prosekit/lit/autocomplete'\n\nimport { html, LitElement } from 'lit'\n\nclass SlashMenuEmptyElement extends LitElement {\n override createRenderRoot() {\n return this\n }\n\n override render() {\n return html`\n <prosekit-autocomplete-empty class=\"relative flex items-center justify-between min-w-32 scroll-my-1 rounded-md px-3 py-1.5 text-sm box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\">\n <span>No results</span>\n </prosekit-autocomplete-empty>\n `\n }\n}\n\ncustomElements.define('lit-editor-slash-menu-empty', SlashMenuEmptyElement)\n"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "registry/src/lit/ui/slash-menu/slash-menu-item.ts",
|
|
28
28
|
"type": "registry:component",
|
|
29
29
|
"target": "components/editor/ui/slash-menu/slash-menu-item.ts",
|
|
30
|
-
"content": "import 'prosekit/lit/autocomplete'\n\nimport { html, LitElement } from 'lit'\n\nclass SlashMenuItemElement extends LitElement {\n static override properties = {\n label: { type: String },\n kbd: { type: String },\n }\n\n label: string\n kbd: string\n\n constructor() {\n super()\n this.label = ''\n this.kbd = ''\n }\n\n override createRenderRoot() {\n return this\n }\n\n // TODO: maybe this should changed to valueChange event??\n handleSelect = () => {\n this.dispatchEvent(new CustomEvent('select'))\n }\n\n override render() {\n return html`<prosekit-autocomplete-item\n @select=${this.handleSelect}\n class=\"relative flex items-center justify-between min-w-32 scroll-my-1 rounded-
|
|
30
|
+
"content": "import 'prosekit/lit/autocomplete'\n\nimport { html, LitElement } from 'lit'\n\nclass SlashMenuItemElement extends LitElement {\n static override properties = {\n label: { type: String },\n kbd: { type: String },\n }\n\n label: string\n kbd: string\n\n constructor() {\n super()\n this.label = ''\n this.kbd = ''\n }\n\n override createRenderRoot() {\n return this\n }\n\n // TODO: maybe this should changed to valueChange event??\n handleSelect = () => {\n this.dispatchEvent(new CustomEvent('select'))\n }\n\n override render() {\n return html`<prosekit-autocomplete-item\n @select=${this.handleSelect}\n class=\"relative flex items-center justify-between min-w-32 scroll-my-1 rounded-md px-3 py-1.5 text-sm box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n >\n <span>${this.label}</span>${this.kbd\n ? html`<kbd class=\"text-xs font-mono text-gray-400 dark:text-gray-500\">${this.kbd}</kbd>`\n : ''}\n </prosekit-autocomplete-item>`\n }\n}\n\ncustomElements.define('lit-editor-slash-menu-item', SlashMenuItemElement)\n"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"path": "registry/src/lit/ui/slash-menu/slash-menu.ts",
|
|
34
34
|
"type": "registry:component",
|
|
35
35
|
"target": "components/editor/ui/slash-menu/slash-menu.ts",
|
|
36
|
-
"content": "import 'prosekit/lit/autocomplete'\n\nimport { ContextConsumer } from '@lit/context'\nimport { html, LitElement } from 'lit'\nimport type { BasicExtension } from 'prosekit/basic'\nimport type { Editor } from 'prosekit/core'\nimport { canUseRegexLookbehind } from 'prosekit/core'\n\nimport { editorContext } from '../editor-context'\n\n// Match inputs like \"/\", \"/table\", \"/heading 1\" etc. Do not match \"/ heading\".\nconst regex = canUseRegexLookbehind() ? /(?<!\\S)\\/(\\S.*)?$/u : /\\/(\\S.*)?$/u\n\nclass SlashMenuElement extends LitElement {\n private editorConsumer = new ContextConsumer(this, {\n context: editorContext,\n subscribe: true,\n })\n\n override createRenderRoot() {\n return this\n }\n\n override render() {\n const editor = this.editorConsumer.value as Editor<BasicExtension> | undefined\n if (!editor) {\n return html``\n }\n\n return html`<prosekit-autocomplete-root .editor=${editor} .regex=${regex}>\n <prosekit-autocomplete-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-autocomplete-popup class=\"box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-
|
|
36
|
+
"content": "import 'prosekit/lit/autocomplete'\n\nimport { ContextConsumer } from '@lit/context'\nimport { html, LitElement } from 'lit'\nimport type { BasicExtension } from 'prosekit/basic'\nimport type { Editor } from 'prosekit/core'\nimport { canUseRegexLookbehind } from 'prosekit/core'\n\nimport { editorContext } from '../editor-context'\n\n// Match inputs like \"/\", \"/table\", \"/heading 1\" etc. Do not match \"/ heading\".\nconst regex = canUseRegexLookbehind() ? /(?<!\\S)\\/(\\S.*)?$/u : /\\/(\\S.*)?$/u\n\nclass SlashMenuElement extends LitElement {\n private editorConsumer = new ContextConsumer(this, {\n context: editorContext,\n subscribe: true,\n })\n\n override createRenderRoot() {\n return this\n }\n\n override render() {\n const editor = this.editorConsumer.value as Editor<BasicExtension> | undefined\n if (!editor) {\n return html``\n }\n\n return html`<prosekit-autocomplete-root .editor=${editor} .regex=${regex}>\n <prosekit-autocomplete-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-autocomplete-popup class=\"box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-xl border border-gray-200 dark:border-gray-800 shadow-lg bg-[canvas] flex flex-col relative max-h-100 min-h-0 min-w-60 select-none overflow-hidden whitespace-nowrap\">\n <div class=\"flex flex-col flex-1 min-h-0 overflow-y-auto p-1 bg-[canvas] overscroll-contain\">\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Text\"\n @select=${() => editor.commands.setParagraph()}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Heading 1\"\n kbd=\"#\"\n @select=${() => editor.commands.setHeading({ level: 1 })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Heading 2\"\n kbd=\"##\"\n @select=${() => editor.commands.setHeading({ level: 2 })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Heading 3\"\n kbd=\"###\"\n @select=${() => editor.commands.setHeading({ level: 3 })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Bullet list\"\n kbd=\"-\"\n @select=${() => editor.commands.wrapInList({ kind: 'bullet' })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Ordered list\"\n kbd=\"1.\"\n @select=${() => editor.commands.wrapInList({ kind: 'ordered' })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Task list\"\n kbd=\"[]\"\n @select=${() => editor.commands.wrapInList({ kind: 'task' })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Toggle list\"\n kbd=\">>\"\n @select=${() => editor.commands.wrapInList({ kind: 'toggle' })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Quote\"\n kbd=\">\"\n @select=${() => editor.commands.setBlockquote()}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Table\"\n @select=${() => editor.commands.insertTable({ row: 3, col: 3 })}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Divider\"\n kbd=\"---\"\n @select=${() => editor.commands.insertHorizontalRule()}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-item\n class=\"contents\"\n label=\"Code\"\n kbd=\"\\`\\`\\`\"\n @select=${() => editor.commands.setCodeBlock()}\n ></lit-editor-slash-menu-item>\n <lit-editor-slash-menu-empty class=\"contents\"></lit-editor-slash-menu-empty>\n </div>\n </prosekit-autocomplete-popup>\n </prosekit-autocomplete-positioner>\n </prosekit-autocomplete-root>`\n }\n}\n\ncustomElements.define('lit-editor-slash-menu', SlashMenuElement)\n"
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
39
|
"meta": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"@egoist/tailwindcss-icons",
|
|
11
11
|
"@iconify-json/lucide",
|
|
12
12
|
"@lit/context",
|
|
13
|
-
"prosekit@^0.20.0
|
|
13
|
+
"prosekit@^0.20.0"
|
|
14
14
|
],
|
|
15
15
|
"files": [
|
|
16
16
|
{
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"path": "registry/src/lit/ui/table-handle/table-handle.ts",
|
|
24
24
|
"type": "registry:component",
|
|
25
25
|
"target": "components/editor/ui/table-handle/table-handle.ts",
|
|
26
|
-
"content": "import 'prosekit/lit/table-handle'\nimport 'prosekit/web/menu'\n\nimport { ContextConsumer } from '@lit/context'\nimport { html, LitElement, nothing, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport type { Editor } from 'prosekit/core'\nimport { defineUpdateHandler } from 'prosekit/core'\nimport type { TableExtension } from 'prosekit/extensions/table'\n\nimport { editorContext } from '../editor-context'\n\nfunction getTableHandleState(editor: Editor<TableExtension>) {\n return {\n addTableColumnBefore: {\n canExec: editor.commands.addTableColumnBefore.canExec(),\n command: () => editor.commands.addTableColumnBefore(),\n },\n addTableColumnAfter: {\n canExec: editor.commands.addTableColumnAfter.canExec(),\n command: () => editor.commands.addTableColumnAfter(),\n },\n deleteCellSelection: {\n canExec: editor.commands.deleteCellSelection.canExec(),\n command: () => editor.commands.deleteCellSelection(),\n },\n deleteTableColumn: {\n canExec: editor.commands.deleteTableColumn.canExec(),\n command: () => editor.commands.deleteTableColumn(),\n },\n addTableRowAbove: {\n canExec: editor.commands.addTableRowAbove.canExec(),\n command: () => editor.commands.addTableRowAbove(),\n },\n addTableRowBelow: {\n canExec: editor.commands.addTableRowBelow.canExec(),\n command: () => editor.commands.addTableRowBelow(),\n },\n deleteTableRow: {\n canExec: editor.commands.deleteTableRow.canExec(),\n command: () => editor.commands.deleteTableRow(),\n },\n deleteTable: {\n canExec: editor.commands.deleteTable.canExec(),\n command: () => editor.commands.deleteTable(),\n },\n }\n}\n\nclass LitTableHandle extends LitElement {\n static override properties = {\n dir: { type: String } satisfies PropertyDeclaration<'ltr' | 'rtl'>,\n }\n\n override dir: string = ''\n\n private editorConsumer = new ContextConsumer(this, {\n context: editorContext,\n subscribe: true,\n })\n\n private removeUpdateExtension?: VoidFunction\n\n override createRenderRoot() {\n return this\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this.classList.add('contents')\n this.attachEditorListener()\n }\n\n override disconnectedCallback() {\n this.detachEditorListener()\n super.disconnectedCallback()\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.attachEditorListener()\n }\n\n private attachEditorListener() {\n this.detachEditorListener()\n\n const editor = this.editorConsumer.value\n if (!editor) return\n\n this.removeUpdateExtension = editor.use(defineUpdateHandler(() => this.requestUpdate()))\n }\n\n private detachEditorListener() {\n this.removeUpdateExtension?.()\n this.removeUpdateExtension = undefined\n }\n\n override render() {\n const editor = this.editorConsumer.value as Editor<TableExtension> | undefined\n if (!editor) {\n return nothing\n }\n\n const state = getTableHandleState(editor)\n const placement = this.dir === 'rtl' ? 'right' : 'left'\n\n return html`<prosekit-table-handle-root .editor=${editor}>\n <prosekit-table-handle-drag-preview .editor=${editor}></prosekit-table-handle-drag-preview>\n <prosekit-table-handle-drop-indicator\n .editor=${editor}\n ></prosekit-table-handle-drop-indicator>\n <prosekit-table-handle-column-positioner\n .editor=${editor}\n class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\"\n >\n <prosekit-table-handle-column-popup class=\"translate-y-[50%] flex box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none duration-100 data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95\">\n <prosekit-table-handle-column-menu-root>\n <prosekit-table-handle-column-menu-trigger\n .editor=${editor}\n class=\"h-4.5 w-6 flex items-center box-border justify-center bg-white dark:bg-gray-950 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-sm text-gray-500/50 dark:text-gray-400/50 border border-gray-200 dark:border-gray-800 border-solid p-0 transition-colors overflow-clip\"\n >\n <div class=\"i-lucide-grip-horizontal size-5 min-h-5 min-w-5 block\"></div>\n </prosekit-table-handle-column-menu-trigger>\n <prosekit-menu-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-menu-popup class=\"box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-950 shadow-lg overscroll-none relative flex flex-col max-h-100 min-w-32 select-none overflow-auto whitespace-nowrap p-1 outline-none\">\n ${state.addTableColumnBefore.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableColumnBefore.command}\n >\n <span>Insert Left</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.addTableColumnAfter.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableColumnAfter.command}\n >\n <span>Insert Right</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteCellSelection.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteCellSelection.command}\n >\n <span>Clear Contents</span>\n <span class=\"text-xs tracking-widest text-gray-500 dark:text-gray-500\">Del</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTableColumn.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteTableColumn.command}\n >\n <span>Delete Column</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTable.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n data-danger=\"\"\n @select=${state.deleteTable.command}\n >\n <span>Delete Table</span>\n </prosekit-menu-item>`\n : nothing}\n </prosekit-menu-popup>\n </prosekit-menu-positioner>\n </prosekit-table-handle-column-menu-root>\n </prosekit-table-handle-column-popup>\n </prosekit-table-handle-column-positioner>\n <prosekit-table-handle-row-positioner\n .editor=${editor}\n .placement=${placement}\n class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\"\n >\n <prosekit-table-handle-row-popup class=\"ltr:translate-x-[50%] rtl:translate-x-[-50%] flex box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none duration-100 data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95\">\n <prosekit-table-handle-row-menu-root>\n <prosekit-table-handle-row-menu-trigger\n .editor=${editor}\n class=\"h-6 w-4.5 flex items-center box-border justify-center bg-white dark:bg-gray-950 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-sm text-gray-500/50 dark:text-gray-400/50 border border-gray-200 dark:border-gray-800 border-solid p-0 transition-colors overflow-clip\"\n >\n <div class=\"i-lucide-grip-vertical size-5 min-h-5 min-w-5 block\"></div>\n </prosekit-table-handle-row-menu-trigger>\n <prosekit-menu-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-menu-popup class=\"box-border origin-(--transform-origin) transition transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-950 shadow-lg overscroll-none relative flex flex-col max-h-100 min-w-32 select-none overflow-auto whitespace-nowrap p-1 outline-none\">\n ${state.addTableRowAbove.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableRowAbove.command}\n >\n <span>Insert Above</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.addTableRowBelow.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableRowBelow.command}\n >\n <span>Insert Below</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteCellSelection.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteCellSelection.command}\n >\n <span>Clear Contents</span>\n <span class=\"text-xs tracking-widest text-gray-500 dark:text-gray-500\">Del</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTableRow.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteTableRow.command}\n >\n <span>Delete Row</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTable.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n data-danger=\"\"\n @select=${state.deleteTable.command}\n >\n <span>Delete Table</span>\n </prosekit-menu-item>`\n : nothing}\n </prosekit-menu-popup>\n </prosekit-menu-positioner>\n </prosekit-table-handle-row-menu-root>\n </prosekit-table-handle-row-popup>\n </prosekit-table-handle-row-positioner>\n </prosekit-table-handle-root>`\n }\n}\n\ncustomElements.define('lit-editor-table-handle', LitTableHandle)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-table-handle': LitTableHandle\n }\n}\n"
|
|
26
|
+
"content": "import 'prosekit/lit/table-handle'\nimport 'prosekit/web/menu'\n\nimport { ContextConsumer } from '@lit/context'\nimport { html, LitElement, nothing, type PropertyDeclaration, type PropertyValues } from 'lit'\nimport type { Editor } from 'prosekit/core'\nimport { defineUpdateHandler } from 'prosekit/core'\nimport type { TableExtension } from 'prosekit/extensions/table'\n\nimport { editorContext } from '../editor-context'\n\nfunction getTableHandleState(editor: Editor<TableExtension>) {\n return {\n addTableColumnBefore: {\n canExec: editor.commands.addTableColumnBefore.canExec(),\n command: () => editor.commands.addTableColumnBefore(),\n },\n addTableColumnAfter: {\n canExec: editor.commands.addTableColumnAfter.canExec(),\n command: () => editor.commands.addTableColumnAfter(),\n },\n deleteCellSelection: {\n canExec: editor.commands.deleteCellSelection.canExec(),\n command: () => editor.commands.deleteCellSelection(),\n },\n deleteTableColumn: {\n canExec: editor.commands.deleteTableColumn.canExec(),\n command: () => editor.commands.deleteTableColumn(),\n },\n addTableRowAbove: {\n canExec: editor.commands.addTableRowAbove.canExec(),\n command: () => editor.commands.addTableRowAbove(),\n },\n addTableRowBelow: {\n canExec: editor.commands.addTableRowBelow.canExec(),\n command: () => editor.commands.addTableRowBelow(),\n },\n deleteTableRow: {\n canExec: editor.commands.deleteTableRow.canExec(),\n command: () => editor.commands.deleteTableRow(),\n },\n deleteTable: {\n canExec: editor.commands.deleteTable.canExec(),\n command: () => editor.commands.deleteTable(),\n },\n }\n}\n\nclass LitTableHandle extends LitElement {\n static override properties = {\n dir: { type: String } satisfies PropertyDeclaration<'ltr' | 'rtl'>,\n }\n\n override dir: string = ''\n\n private editorConsumer = new ContextConsumer(this, {\n context: editorContext,\n subscribe: true,\n })\n\n private removeUpdateExtension?: VoidFunction\n\n override createRenderRoot() {\n return this\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this.classList.add('contents')\n this.attachEditorListener()\n }\n\n override disconnectedCallback() {\n this.detachEditorListener()\n super.disconnectedCallback()\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties)\n this.attachEditorListener()\n }\n\n private attachEditorListener() {\n this.detachEditorListener()\n\n const editor = this.editorConsumer.value\n if (!editor) return\n\n this.removeUpdateExtension = editor.use(defineUpdateHandler(() => this.requestUpdate()))\n }\n\n private detachEditorListener() {\n this.removeUpdateExtension?.()\n this.removeUpdateExtension = undefined\n }\n\n override render() {\n const editor = this.editorConsumer.value as Editor<TableExtension> | undefined\n if (!editor) {\n return nothing\n }\n\n const state = getTableHandleState(editor)\n const placement = this.dir === 'rtl' ? 'right' : 'left'\n\n return html`<prosekit-table-handle-root .editor=${editor}>\n <prosekit-table-handle-drag-preview .editor=${editor}></prosekit-table-handle-drag-preview>\n <prosekit-table-handle-drop-indicator\n .editor=${editor}\n ></prosekit-table-handle-drop-indicator>\n <prosekit-table-handle-column-positioner\n .editor=${editor}\n class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\"\n >\n <prosekit-table-handle-column-popup class=\"translate-y-[50%] flex box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none duration-100 data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95\">\n <prosekit-table-handle-column-menu-root>\n <prosekit-table-handle-column-menu-trigger\n .editor=${editor}\n class=\"h-4.5 w-6 flex items-center box-border justify-center bg-[canvas] hover:bg-gray-100 dark:hover:bg-gray-800 rounded-sm text-gray-500/50 dark:text-gray-400/50 border border-gray-200 dark:border-gray-800 border-solid p-0 transition-colors overflow-clip\"\n >\n <div class=\"i-lucide-grip-horizontal size-5 min-h-5 min-w-5 block\"></div>\n </prosekit-table-handle-column-menu-trigger>\n <prosekit-menu-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-menu-popup class=\"box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-xl border border-gray-200 dark:border-gray-800 shadow-lg bg-[canvas] relative flex flex-col max-h-100 min-w-32 select-none overflow-auto whitespace-nowrap p-1 outline-none\">\n ${state.addTableColumnBefore.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableColumnBefore.command}\n >\n <span>Insert Left</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.addTableColumnAfter.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableColumnAfter.command}\n >\n <span>Insert Right</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteCellSelection.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteCellSelection.command}\n >\n <span>Clear Contents</span>\n <span class=\"text-xs tracking-widest text-gray-500 dark:text-gray-500\">Del</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTableColumn.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteTableColumn.command}\n >\n <span>Delete Column</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTable.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n data-danger=\"\"\n @select=${state.deleteTable.command}\n >\n <span>Delete Table</span>\n </prosekit-menu-item>`\n : nothing}\n </prosekit-menu-popup>\n </prosekit-menu-positioner>\n </prosekit-table-handle-column-menu-root>\n </prosekit-table-handle-column-popup>\n </prosekit-table-handle-column-positioner>\n <prosekit-table-handle-row-positioner\n .editor=${editor}\n .placement=${placement}\n class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\"\n >\n <prosekit-table-handle-row-popup class=\"ltr:translate-x-[50%] rtl:translate-x-[-50%] flex box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none duration-100 data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95\">\n <prosekit-table-handle-row-menu-root>\n <prosekit-table-handle-row-menu-trigger\n .editor=${editor}\n class=\"h-6 w-4.5 flex items-center box-border justify-center bg-[canvas] hover:bg-gray-100 dark:hover:bg-gray-800 rounded-sm text-gray-500/50 dark:text-gray-400/50 border border-gray-200 dark:border-gray-800 border-solid p-0 transition-colors overflow-clip\"\n >\n <div class=\"i-lucide-grip-vertical size-5 min-h-5 min-w-5 block\"></div>\n </prosekit-table-handle-row-menu-trigger>\n <prosekit-menu-positioner class=\"block overflow-visible w-min h-min z-50 ease-out transition-transform duration-100 motion-reduce:transition-none\">\n <prosekit-menu-popup class=\"box-border origin-(--transform-origin) transition-[opacity,scale] transition-discrete motion-reduce:transition-none data-[state=closed]:duration-150 data-[state=closed]:opacity-0 starting:opacity-0 data-[state=closed]:scale-95 starting:scale-95 duration-40 rounded-xl border border-gray-200 dark:border-gray-800 shadow-lg bg-[canvas] relative flex flex-col max-h-100 min-w-32 select-none overflow-auto whitespace-nowrap p-1 outline-none\">\n ${state.addTableRowAbove.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableRowAbove.command}\n >\n <span>Insert Above</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.addTableRowBelow.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.addTableRowBelow.command}\n >\n <span>Insert Below</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteCellSelection.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteCellSelection.command}\n >\n <span>Clear Contents</span>\n <span class=\"text-xs tracking-widest text-gray-500 dark:text-gray-500\">Del</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTableRow.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n @select=${state.deleteTableRow.command}\n >\n <span>Delete Row</span>\n </prosekit-menu-item>`\n : nothing}\n ${state.deleteTable.canExec\n ? html`<prosekit-menu-item\n class=\"relative min-w-32 scroll-my-1 rounded-sm px-3 py-1.5 flex items-center justify-between gap-8 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 hover:data-[disabled=true]:opacity-50 data-danger:text-red-500 box-border cursor-default select-none whitespace-nowrap outline-hidden data-highlighted:bg-gray-100 dark:data-highlighted:bg-gray-800\"\n data-danger=\"\"\n @select=${state.deleteTable.command}\n >\n <span>Delete Table</span>\n </prosekit-menu-item>`\n : nothing}\n </prosekit-menu-popup>\n </prosekit-menu-positioner>\n </prosekit-table-handle-row-menu-root>\n </prosekit-table-handle-row-popup>\n </prosekit-table-handle-row-positioner>\n </prosekit-table-handle-root>`\n }\n}\n\ncustomElements.define('lit-editor-table-handle', LitTableHandle)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lit-editor-table-handle': LitTableHandle\n }\n}\n"
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
29
|
"meta": {
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"https://unpkg.com/prosekit-registry/dist/r/preact-ui-drop-indicator.json"
|
|
11
11
|
],
|
|
12
12
|
"dependencies": [
|
|
13
|
-
"prosekit@^0.20.0
|
|
13
|
+
"prosekit@^0.20.0"
|
|
14
14
|
],
|
|
15
15
|
"files": [
|
|
16
16
|
{
|
|
17
17
|
"path": "registry/src/preact/examples/block-handle/editor.tsx",
|
|
18
18
|
"type": "registry:component",
|
|
19
19
|
"target": "components/editor/examples/block-handle/editor.tsx",
|
|
20
|
-
"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-block-handle'\nimport { BlockHandle } from '../../ui/block-handle'\nimport { DropIndicator } from '../../ui/drop-indicator'\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-
|
|
20
|
+
"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-block-handle'\nimport { BlockHandle } from '../../ui/block-handle'\nimport { DropIndicator } from '../../ui/drop-indicator'\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-[canvas] 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 <BlockHandle />\n <DropIndicator />\n </div>\n </div>\n </ProseKit>\n )\n}\n"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"path": "registry/src/preact/examples/block-handle/extension.ts",
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
"https://unpkg.com/prosekit-registry/dist/r/preact-ui-toolbar.json"
|
|
8
8
|
],
|
|
9
9
|
"dependencies": [
|
|
10
|
-
"prosekit@^0.20.0
|
|
10
|
+
"prosekit@^0.20.0"
|
|
11
11
|
],
|
|
12
12
|
"files": [
|
|
13
13
|
{
|
|
14
14
|
"path": "registry/src/preact/examples/blockquote/editor.tsx",
|
|
15
15
|
"type": "registry:component",
|
|
16
16
|
"target": "components/editor/examples/blockquote/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 { Toolbar } from '../../ui/toolbar'\n\nimport { defineExtension } from './extension'\n\nexport default function Editor() {\n const editor = useMemo(() => {\n return createEditor({ extension: defineExtension() })\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-
|
|
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 { Toolbar } from '../../ui/toolbar'\n\nimport { defineExtension } from './extension'\n\nexport default function Editor() {\n const editor = useMemo(() => {\n return createEditor({ extension: defineExtension() })\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-[canvas] 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"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"path": "registry/src/preact/examples/blockquote/extension.ts",
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
"https://unpkg.com/prosekit-registry/dist/r/preact-ui-toolbar.json"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": [
|
|
11
|
-
"prosekit@^0.20.0
|
|
11
|
+
"prosekit@^0.20.0"
|
|
12
12
|
],
|
|
13
13
|
"files": [
|
|
14
14
|
{
|
|
15
15
|
"path": "registry/src/preact/examples/bold/editor.tsx",
|
|
16
16
|
"type": "registry:component",
|
|
17
17
|
"target": "components/editor/examples/bold/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-bold'\nimport { Toolbar } from '../../ui/toolbar'\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-
|
|
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-bold'\nimport { Toolbar } from '../../ui/toolbar'\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-[canvas] 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
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"path": "registry/src/preact/examples/bold/extension.ts",
|
|
@@ -5,20 +5,20 @@
|
|
|
5
5
|
"description": "Track and commit document changes with version history.",
|
|
6
6
|
"registryDependencies": [],
|
|
7
7
|
"dependencies": [
|
|
8
|
-
"prosekit@^0.20.0
|
|
8
|
+
"prosekit@^0.20.0"
|
|
9
9
|
],
|
|
10
10
|
"files": [
|
|
11
11
|
{
|
|
12
12
|
"path": "registry/src/preact/examples/change-tracking/editor-diff.tsx",
|
|
13
13
|
"type": "registry:component",
|
|
14
14
|
"target": "components/editor/examples/change-tracking/editor-diff.tsx",
|
|
15
|
-
"content": "import { useMemo } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, union } from 'prosekit/core'\nimport { defineCommitViewer, type Commit } from 'prosekit/extensions/commit'\nimport { defineReadonly } from 'prosekit/extensions/readonly'\nimport { ProseKit } from 'prosekit/preact'\n\nexport default function EditorDiff(props: { commit: Commit }) {\n const editor = useMemo(() => {\n const extension = union(\n defineBasicExtension(),\n defineReadonly(),\n defineCommitViewer(props.commit),\n )\n return createEditor({ extension })\n }, [props.commit])\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-
|
|
15
|
+
"content": "import { useMemo } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, union } from 'prosekit/core'\nimport { defineCommitViewer, type Commit } from 'prosekit/extensions/commit'\nimport { defineReadonly } from 'prosekit/extensions/readonly'\nimport { ProseKit } from 'prosekit/preact'\n\nexport default function EditorDiff(props: { commit: Commit }) {\n const editor = useMemo(() => {\n const extension = union(\n defineBasicExtension(),\n defineReadonly(),\n defineCommitViewer(props.commit),\n )\n return createEditor({ extension })\n }, [props.commit])\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-[canvas] 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
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"path": "registry/src/preact/examples/change-tracking/editor-main.tsx",
|
|
19
19
|
"type": "registry:component",
|
|
20
20
|
"target": "components/editor/examples/change-tracking/editor-main.tsx",
|
|
21
|
-
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, union, type NodeJSON } from 'prosekit/core'\nimport { defineCommitRecorder, type CommitRecorder } from 'prosekit/extensions/commit'\nimport { ProseKit } from 'prosekit/preact'\n\nexport default function EditorMain(props: {\n commitRecorder: CommitRecorder\n initialContent?: NodeJSON\n}) {\n const editor = useMemo(() => {\n const extension = union(\n defineBasicExtension(),\n defineCommitRecorder(props.commitRecorder),\n )\n return createEditor({ extension, defaultContent: props.initialContent })\n }, [props.commitRecorder, props.initialContent])\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-
|
|
21
|
+
"content": "import 'prosekit/basic/style.css'\nimport 'prosekit/basic/typography.css'\n\nimport { useMemo } from 'preact/hooks'\nimport { defineBasicExtension } from 'prosekit/basic'\nimport { createEditor, union, type NodeJSON } from 'prosekit/core'\nimport { defineCommitRecorder, type CommitRecorder } from 'prosekit/extensions/commit'\nimport { ProseKit } from 'prosekit/preact'\n\nexport default function EditorMain(props: {\n commitRecorder: CommitRecorder\n initialContent?: NodeJSON\n}) {\n const editor = useMemo(() => {\n const extension = union(\n defineBasicExtension(),\n defineCommitRecorder(props.commitRecorder),\n )\n return createEditor({ extension, defaultContent: props.initialContent })\n }, [props.commitRecorder, props.initialContent])\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-[canvas] 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"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"path": "registry/src/preact/examples/change-tracking/editor.tsx",
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
"https://unpkg.com/prosekit-registry/dist/r/preact-ui-code-block-view.json"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": [
|
|
11
|
-
"prosekit@^0.20.0
|
|
11
|
+
"prosekit@^0.20.0"
|
|
12
12
|
],
|
|
13
13
|
"files": [
|
|
14
14
|
{
|
|
15
15
|
"path": "registry/src/preact/examples/code-block-themes/editor.tsx",
|
|
16
16
|
"type": "registry:component",
|
|
17
17
|
"target": "components/editor/examples/code-block-themes/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-code-block'\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-
|
|
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-code-block'\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-[canvas] 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
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"path": "registry/src/preact/examples/code-block-themes/extension.ts",
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
"https://unpkg.com/prosekit-registry/dist/r/preact-ui-toolbar.json"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": [
|
|
12
|
-
"prosekit@^0.20.0
|
|
12
|
+
"prosekit@^0.20.0"
|
|
13
13
|
],
|
|
14
14
|
"files": [
|
|
15
15
|
{
|
|
16
16
|
"path": "registry/src/preact/examples/code-block/editor.tsx",
|
|
17
17
|
"type": "registry:component",
|
|
18
18
|
"target": "components/editor/examples/code-block/editor.tsx",
|
|
19
|
-
"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-code-block'\nimport { Toolbar } from '../../ui/toolbar'\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-
|
|
19
|
+
"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-code-block'\nimport { Toolbar } from '../../ui/toolbar'\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-[canvas] 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"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"path": "registry/src/preact/examples/code-block/extension.ts",
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
"https://unpkg.com/prosekit-registry/dist/r/preact-ui-toolbar.json"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": [
|
|
11
|
-
"prosekit@^0.20.0
|
|
11
|
+
"prosekit@^0.20.0"
|
|
12
12
|
],
|
|
13
13
|
"files": [
|
|
14
14
|
{
|
|
15
15
|
"path": "registry/src/preact/examples/code/editor.tsx",
|
|
16
16
|
"type": "registry:component",
|
|
17
17
|
"target": "components/editor/examples/code/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-code'\nimport { Toolbar } from '../../ui/toolbar'\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-
|
|
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-code'\nimport { Toolbar } from '../../ui/toolbar'\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-[canvas] 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
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"path": "registry/src/preact/examples/code/extension.ts",
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
"https://unpkg.com/prosekit-registry/dist/r/preact-sample-sample-doc-drop-cursor.json"
|
|
8
8
|
],
|
|
9
9
|
"dependencies": [
|
|
10
|
-
"prosekit@^0.20.0
|
|
10
|
+
"prosekit@^0.20.0"
|
|
11
11
|
],
|
|
12
12
|
"files": [
|
|
13
13
|
{
|
|
14
14
|
"path": "registry/src/preact/examples/drop-cursor/editor.tsx",
|
|
15
15
|
"type": "registry:component",
|
|
16
16
|
"target": "components/editor/examples/drop-cursor/editor.tsx",
|
|
17
|
-
"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-drop-cursor'\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-
|
|
17
|
+
"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-drop-cursor'\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-[canvas] 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"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"path": "registry/src/preact/examples/drop-cursor/extension.ts",
|