Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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'
Expand Down Expand Up @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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, {
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import './block-handle'
export { registerLitEditorBlockHandle } from './block-handle'
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import './drop-indicator'
export { registerLitEditorDropIndicator } from './drop-indicator'
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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'

Expand Down Expand Up @@ -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)
}
Expand Down
18 changes: 15 additions & 3 deletions lit-code-block/src/components/editor/ui/button/button.ts
Original file line number Diff line number Diff line change
@@ -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 = {
Expand Down Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion lit-code-block/src/components/editor/ui/button/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import './button'
export { registerLitEditorButton } from './button'
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import './image-upload-popover'
export { registerLitEditorImageUploadPopover } from './image-upload-popover'
2 changes: 1 addition & 1 deletion lit-code-block/src/components/editor/ui/toolbar/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import './toolbar'
export { registerLitEditorToolbar } from './toolbar'
13 changes: 9 additions & 4 deletions lit-code-block/src/components/editor/ui/toolbar/toolbar.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import '../button/index'
import '../image-upload-popover/index'

import { ContextConsumer } from '@lit/context'
import {
html,
Expand All @@ -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<BasicExtension>) {
return {
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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'

Expand Down Expand Up @@ -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)
}
Expand Down
4 changes: 1 addition & 3 deletions lit-slash-menu/src/components/editor/ui/slash-menu/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
import './slash-menu'
import './slash-menu-item'
import './slash-menu-empty'
export { registerLitEditorSlashMenu } from './slash-menu'
Original file line number Diff line number Diff line change
@@ -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
}
Expand All @@ -17,5 +15,3 @@ class SlashMenuEmptyElement extends LitElement {
`
}
}

customElements.define('lit-editor-slash-menu-empty', SlashMenuEmptyElement)
Original file line number Diff line number Diff line change
@@ -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 },
Expand Down Expand Up @@ -44,5 +42,3 @@ class SlashMenuItemElement extends LitElement {
`
}
}

customElements.define('lit-editor-slash-menu-item', SlashMenuItemElement)
29 changes: 26 additions & 3 deletions lit-slash-menu/src/components/editor/ui/slash-menu/slash-menu.ts
Original file line number Diff line number Diff line change
@@ -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() ? /(?<!\S)\/(\S.*)?$/u : /\/(\S.*)?$/u

Expand Down Expand Up @@ -121,4 +129,19 @@ class SlashMenuElement extends LitElement {
}
}

customElements.define('lit-editor-slash-menu', SlashMenuElement)
export function registerLitEditorSlashMenu() {
registerAutocompleteEmptyElement()
registerAutocompleteItemElement()
registerAutocompletePopupElement()
registerAutocompletePositionerElement()
registerAutocompleteRootElement()

if (!customElements.get('lit-editor-slash-menu-item')) {
customElements.define('lit-editor-slash-menu-item', SlashMenuItemElement)
}
if (!customElements.get('lit-editor-slash-menu-empty')) {
customElements.define('lit-editor-slash-menu-empty', SlashMenuEmptyElement)
}
if (customElements.get('lit-editor-slash-menu')) return
customElements.define('lit-editor-slash-menu', SlashMenuElement)
}
5 changes: 3 additions & 2 deletions lit-table/src/components/editor/examples/table/editor.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import 'prosekit/basic/style.css'
import 'prosekit/basic/typography.css'

import '../../ui/table-handle/index'

import { ContextProvider } from '@lit/context'
import {
html,
Expand All @@ -16,6 +14,7 @@ import { createEditor } from 'prosekit/core'

import { sampleContent } from '../../sample/sample-doc-table'
import { editorContext } from '../../ui/editor-context'
import { registerLitEditorTableHandle } from '../../ui/table-handle'

import { defineExtension } from './extension'

Expand Down Expand Up @@ -84,6 +83,8 @@ export class LitEditor extends LitElement {
}

export function registerLitEditor() {
registerLitEditorTableHandle()

if (customElements.get('lit-editor-example-table')) return
customElements.define('lit-editor-example-table', LitEditor)
}
Expand Down
2 changes: 1 addition & 1 deletion lit-table/src/components/editor/ui/table-handle/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import './table-handle'
export { registerLitEditorTableHandle } from './table-handle'
Loading
Loading