diff --git a/lit-block-handle/src/components/editor/examples/block-handle/editor.ts b/lit-block-handle/src/components/editor/examples/block-handle/editor.ts index f4fbdeb2af..0e4a1d8857 100644 --- a/lit-block-handle/src/components/editor/examples/block-handle/editor.ts +++ b/lit-block-handle/src/components/editor/examples/block-handle/editor.ts @@ -1,9 +1,6 @@ import 'prosekit/basic/style.css' import 'prosekit/basic/typography.css' -import '../../ui/block-handle' -import '../../ui/drop-indicator' - import { ContextProvider } from '@lit/context' import { html, @@ -16,6 +13,8 @@ import type { Editor, NodeJSON } from 'prosekit/core' import { createEditor } from 'prosekit/core' import { sampleContent } from '../../sample/sample-doc-block-handle' +import { registerLitEditorBlockHandle } from '../../ui/block-handle' +import { registerLitEditorDropIndicator } from '../../ui/drop-indicator' import { editorContext } from '../../ui/editor-context' import { defineExtension } from './extension' @@ -86,6 +85,9 @@ export class LitEditor extends LitElement { } export function registerLitEditor() { + registerLitEditorBlockHandle() + registerLitEditorDropIndicator() + if (customElements.get('lit-editor-example-block-handle')) return customElements.define('lit-editor-example-block-handle', LitEditor) } diff --git a/lit-block-handle/src/components/editor/ui/block-handle/block-handle.ts b/lit-block-handle/src/components/editor/ui/block-handle/block-handle.ts index 0c14d5fb31..7cc4822558 100644 --- a/lit-block-handle/src/components/editor/ui/block-handle/block-handle.ts +++ b/lit-block-handle/src/components/editor/ui/block-handle/block-handle.ts @@ -1,12 +1,16 @@ -import 'prosekit/lit/block-handle' - import { ContextConsumer } from '@lit/context' import { html, LitElement } from 'lit' +import { + registerBlockHandleAddElement, + registerBlockHandleDraggableElement, + registerBlockHandlePopupElement, + registerBlockHandlePositionerElement, + registerBlockHandleRootElement, +} from 'prosekit/lit/block-handle' import { editorContext } from '../editor-context' -/** @public */ -export class LitBlockHandle extends LitElement { +class LitBlockHandle extends LitElement { declare dir: 'ltr' | 'rtl' | 'auto' private _editorConsumer = new ContextConsumer(this, { @@ -55,7 +59,16 @@ export class LitBlockHandle extends LitElement { } } -customElements.define('lit-editor-block-handle', LitBlockHandle) +export function registerLitEditorBlockHandle() { + registerBlockHandleAddElement() + registerBlockHandleDraggableElement() + registerBlockHandlePopupElement() + registerBlockHandlePositionerElement() + registerBlockHandleRootElement() + + if (customElements.get('lit-editor-block-handle')) return + customElements.define('lit-editor-block-handle', LitBlockHandle) +} declare global { interface HTMLElementTagNameMap { diff --git a/lit-block-handle/src/components/editor/ui/block-handle/index.ts b/lit-block-handle/src/components/editor/ui/block-handle/index.ts index d34f6f62d8..40c59d8d74 100644 --- a/lit-block-handle/src/components/editor/ui/block-handle/index.ts +++ b/lit-block-handle/src/components/editor/ui/block-handle/index.ts @@ -1 +1 @@ -import './block-handle' +export { registerLitEditorBlockHandle } from './block-handle' diff --git a/lit-block-handle/src/components/editor/ui/drop-indicator/drop-indicator.ts b/lit-block-handle/src/components/editor/ui/drop-indicator/drop-indicator.ts index 8b868665f5..b18f3c6a20 100644 --- a/lit-block-handle/src/components/editor/ui/drop-indicator/drop-indicator.ts +++ b/lit-block-handle/src/components/editor/ui/drop-indicator/drop-indicator.ts @@ -1,12 +1,10 @@ -import 'prosekit/lit/drop-indicator' - import { ContextConsumer } from '@lit/context' import { html, LitElement } from 'lit' +import { registerDropIndicatorElement } from 'prosekit/lit/drop-indicator' import { editorContext } from '../editor-context' -/** @public */ -export class LitDropIndicator extends LitElement { +class LitDropIndicator extends LitElement { private _editorConsumer = new ContextConsumer(this, { context: editorContext, subscribe: true, @@ -31,7 +29,12 @@ export class LitDropIndicator extends LitElement { } } -customElements.define('lit-editor-drop-indicator', LitDropIndicator) +export function registerLitEditorDropIndicator() { + registerDropIndicatorElement() + + if (customElements.get('lit-editor-drop-indicator')) return + customElements.define('lit-editor-drop-indicator', LitDropIndicator) +} declare global { interface HTMLElementTagNameMap { diff --git a/lit-block-handle/src/components/editor/ui/drop-indicator/index.ts b/lit-block-handle/src/components/editor/ui/drop-indicator/index.ts index 97bdd8b943..f90b74e908 100644 --- a/lit-block-handle/src/components/editor/ui/drop-indicator/index.ts +++ b/lit-block-handle/src/components/editor/ui/drop-indicator/index.ts @@ -1 +1 @@ -import './drop-indicator' +export { registerLitEditorDropIndicator } from './drop-indicator' diff --git a/lit-code-block/src/components/editor/examples/code-block/editor.ts b/lit-code-block/src/components/editor/examples/code-block/editor.ts index 188ab7dc2c..b7b768ffbe 100644 --- a/lit-code-block/src/components/editor/examples/code-block/editor.ts +++ b/lit-code-block/src/components/editor/examples/code-block/editor.ts @@ -1,8 +1,6 @@ import 'prosekit/basic/style.css' import 'prosekit/basic/typography.css' -import '../../ui/toolbar/index' - import { ContextProvider } from '@lit/context' import { html, @@ -17,6 +15,7 @@ import { createEditor } from 'prosekit/core' import { sampleContent } from '../../sample/sample-doc-code-block' import { sampleUploader } from '../../sample/sample-uploader' import { editorContext } from '../../ui/editor-context' +import { registerLitEditorToolbar } from '../../ui/toolbar' import { defineExtension } from './extension' @@ -75,6 +74,8 @@ export class LitEditor extends LitElement { } export function registerLitEditor() { + registerLitEditorToolbar() + if (customElements.get('lit-editor-example-code-block')) return customElements.define('lit-editor-example-code-block', LitEditor) } diff --git a/lit-code-block/src/components/editor/ui/button/button.ts b/lit-code-block/src/components/editor/ui/button/button.ts index 96f4bd7815..aef47e4e1f 100644 --- a/lit-code-block/src/components/editor/ui/button/button.ts +++ b/lit-code-block/src/components/editor/ui/button/button.ts @@ -1,6 +1,10 @@ -import 'prosekit/lit/tooltip' - import { html, LitElement, nothing, type PropertyDeclaration } from 'lit' +import { + registerTooltipPopupElement, + registerTooltipPositionerElement, + registerTooltipRootElement, + registerTooltipTriggerElement, +} from 'prosekit/lit/tooltip' class LitButton extends LitElement { static override properties = { @@ -71,7 +75,15 @@ class LitButton extends LitElement { } } -customElements.define('lit-editor-button', LitButton) +export function registerLitEditorButton() { + registerTooltipPopupElement() + registerTooltipPositionerElement() + registerTooltipRootElement() + registerTooltipTriggerElement() + + if (customElements.get('lit-editor-button')) return + customElements.define('lit-editor-button', LitButton) +} declare global { interface HTMLElementTagNameMap { diff --git a/lit-code-block/src/components/editor/ui/button/index.ts b/lit-code-block/src/components/editor/ui/button/index.ts index ef28ef97fb..02efbeadd2 100644 --- a/lit-code-block/src/components/editor/ui/button/index.ts +++ b/lit-code-block/src/components/editor/ui/button/index.ts @@ -1 +1 @@ -import './button' +export { registerLitEditorButton } from './button' diff --git a/lit-code-block/src/components/editor/ui/image-upload-popover/image-upload-popover.ts b/lit-code-block/src/components/editor/ui/image-upload-popover/image-upload-popover.ts index 583c0ffde9..3a129e53de 100644 --- a/lit-code-block/src/components/editor/ui/image-upload-popover/image-upload-popover.ts +++ b/lit-code-block/src/components/editor/ui/image-upload-popover/image-upload-popover.ts @@ -1,10 +1,16 @@ -import '../button/index' - import { html, LitElement, nothing, type PropertyDeclaration } from 'lit' import type { Editor } from 'prosekit/core' import type { Uploader } from 'prosekit/extensions/file' import type { ImageExtension } from 'prosekit/extensions/image' -import type { OpenChangeEvent } from 'prosekit/lit/popover' +import { + registerPopoverPopupElement, + registerPopoverPositionerElement, + registerPopoverRootElement, + registerPopoverTriggerElement, + type OpenChangeEvent, +} from 'prosekit/lit/popover' + +import { registerLitEditorButton } from '../button' let imageUploadId = 0 @@ -173,7 +179,19 @@ class LitImageUploadPopover extends LitElement { } } -customElements.define('lit-editor-image-upload-popover', LitImageUploadPopover) +export function registerLitEditorImageUploadPopover() { + registerLitEditorButton() + registerPopoverPopupElement() + registerPopoverPositionerElement() + registerPopoverRootElement() + registerPopoverTriggerElement() + + if (customElements.get('lit-editor-image-upload-popover')) return + customElements.define( + 'lit-editor-image-upload-popover', + LitImageUploadPopover, + ) +} declare global { interface HTMLElementTagNameMap { diff --git a/lit-code-block/src/components/editor/ui/image-upload-popover/index.ts b/lit-code-block/src/components/editor/ui/image-upload-popover/index.ts index cf1b5dfb30..ff00f20c86 100644 --- a/lit-code-block/src/components/editor/ui/image-upload-popover/index.ts +++ b/lit-code-block/src/components/editor/ui/image-upload-popover/index.ts @@ -1 +1 @@ -import './image-upload-popover' +export { registerLitEditorImageUploadPopover } from './image-upload-popover' diff --git a/lit-code-block/src/components/editor/ui/toolbar/index.ts b/lit-code-block/src/components/editor/ui/toolbar/index.ts index 743d96b731..6d6df28ea4 100644 --- a/lit-code-block/src/components/editor/ui/toolbar/index.ts +++ b/lit-code-block/src/components/editor/ui/toolbar/index.ts @@ -1 +1 @@ -import './toolbar' +export { registerLitEditorToolbar } from './toolbar' diff --git a/lit-code-block/src/components/editor/ui/toolbar/toolbar.ts b/lit-code-block/src/components/editor/ui/toolbar/toolbar.ts index a20fadb58c..ee46ea40a1 100644 --- a/lit-code-block/src/components/editor/ui/toolbar/toolbar.ts +++ b/lit-code-block/src/components/editor/ui/toolbar/toolbar.ts @@ -1,6 +1,3 @@ -import '../button/index' -import '../image-upload-popover/index' - import { ContextConsumer } from '@lit/context' import { html, @@ -13,7 +10,9 @@ import type { BasicExtension } from 'prosekit/basic' import { defineUpdateHandler, type Editor } from 'prosekit/core' import type { Uploader } from 'prosekit/extensions/file' +import { registerLitEditorButton } from '../button' import { editorContext } from '../editor-context' +import { registerLitEditorImageUploadPopover } from '../image-upload-popover' function getToolbarItems(editor: Editor) { return { @@ -453,7 +452,13 @@ class LitToolbar extends LitElement { } } -customElements.define('lit-editor-toolbar', LitToolbar) +export function registerLitEditorToolbar() { + registerLitEditorButton() + registerLitEditorImageUploadPopover() + + if (customElements.get('lit-editor-toolbar')) return + customElements.define('lit-editor-toolbar', LitToolbar) +} declare global { interface HTMLElementTagNameMap { diff --git a/lit-slash-menu/src/components/editor/examples/slash-menu/editor.ts b/lit-slash-menu/src/components/editor/examples/slash-menu/editor.ts index 1fc121dd37..10cbfbd1e1 100644 --- a/lit-slash-menu/src/components/editor/examples/slash-menu/editor.ts +++ b/lit-slash-menu/src/components/editor/examples/slash-menu/editor.ts @@ -1,8 +1,6 @@ import 'prosekit/basic/style.css' import 'prosekit/basic/typography.css' -import '../../ui/slash-menu/index' - import { ContextProvider } from '@lit/context' import { html, @@ -15,6 +13,7 @@ import type { Editor } from 'prosekit/core' import { createEditor } from 'prosekit/core' import { editorContext } from '../../ui/editor-context' +import { registerLitEditorSlashMenu } from '../../ui/slash-menu' import { defineExtension } from './extension' @@ -74,6 +73,8 @@ export class LitEditor extends LitElement { } export function registerLitEditor() { + registerLitEditorSlashMenu() + if (customElements.get('lit-editor-example-slash-menu')) return customElements.define('lit-editor-example-slash-menu', LitEditor) } diff --git a/lit-slash-menu/src/components/editor/ui/slash-menu/index.ts b/lit-slash-menu/src/components/editor/ui/slash-menu/index.ts index 6b2bff17a8..9f49d0de7f 100644 --- a/lit-slash-menu/src/components/editor/ui/slash-menu/index.ts +++ b/lit-slash-menu/src/components/editor/ui/slash-menu/index.ts @@ -1,3 +1 @@ -import './slash-menu' -import './slash-menu-item' -import './slash-menu-empty' +export { registerLitEditorSlashMenu } from './slash-menu' diff --git a/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-empty.ts b/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-empty.ts index fa10dc238c..f2e0d5318d 100644 --- a/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-empty.ts +++ b/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-empty.ts @@ -1,8 +1,6 @@ -import 'prosekit/lit/autocomplete' - import { html, LitElement } from 'lit' -class SlashMenuEmptyElement extends LitElement { +export class SlashMenuEmptyElement extends LitElement { override createRenderRoot() { return this } @@ -17,5 +15,3 @@ class SlashMenuEmptyElement extends LitElement { ` } } - -customElements.define('lit-editor-slash-menu-empty', SlashMenuEmptyElement) diff --git a/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-item.ts b/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-item.ts index b2d9ab20ba..ad7bd23cf7 100644 --- a/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-item.ts +++ b/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu-item.ts @@ -1,8 +1,6 @@ -import 'prosekit/lit/autocomplete' - import { html, LitElement } from 'lit' -class SlashMenuItemElement extends LitElement { +export class SlashMenuItemElement extends LitElement { static override properties = { label: { type: String }, kbd: { type: String }, @@ -44,5 +42,3 @@ class SlashMenuItemElement extends LitElement { ` } } - -customElements.define('lit-editor-slash-menu-item', SlashMenuItemElement) diff --git a/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu.ts b/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu.ts index c6ffe16a87..5b0eedb85d 100644 --- a/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu.ts +++ b/lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu.ts @@ -1,13 +1,21 @@ -import 'prosekit/lit/autocomplete' - import { ContextConsumer } from '@lit/context' import { html, LitElement } from 'lit' import type { BasicExtension } from 'prosekit/basic' import type { Editor } from 'prosekit/core' import { canUseRegexLookbehind } from 'prosekit/core' +import { + registerAutocompleteEmptyElement, + registerAutocompleteItemElement, + registerAutocompletePopupElement, + registerAutocompletePositionerElement, + registerAutocompleteRootElement, +} from 'prosekit/lit/autocomplete' import { editorContext } from '../editor-context' +import { SlashMenuEmptyElement } from './slash-menu-empty' +import { SlashMenuItemElement } from './slash-menu-item' + // Match inputs like "/", "/table", "/heading 1" etc. Do not match "/ heading". const regex = canUseRegexLookbehind() ? /(?) { return { @@ -453,7 +452,13 @@ class LitToolbar extends LitElement { } } -customElements.define('lit-editor-toolbar', LitToolbar) +export function registerLitEditorToolbar() { + registerLitEditorButton() + registerLitEditorImageUploadPopover() + + if (customElements.get('lit-editor-toolbar')) return + customElements.define('lit-editor-toolbar', LitToolbar) +} declare global { interface HTMLElementTagNameMap { diff --git a/package.json b/package.json index eedcb998c0..24a64bb177 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,6 @@ "@types/node": "24.12.2", "prettier": "3.8.3", "prettier-plugin-packagejson": "3.0.2", - "prosekit-registry": "0.0.20260428183250" + "prosekit-registry": "0.0.20260430084437" } }