@ecsplico/editor 0.0.0-stage → 2.0.0
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/CHANGELOG.md +19 -0
- package/LICENSE +21 -0
- package/README.md +232 -2
- package/dist/code/CodeSurface.d.ts +24 -0
- package/dist/code/CodeSurface.js +57 -0
- package/dist/code/CodeSurface.js.map +1 -0
- package/dist/code/CodeSurface.vue.d.ts +29 -0
- package/dist/code/CodeSurface2.js +75 -0
- package/dist/code/CodeSurface2.js.map +1 -0
- package/dist/code/chrome-theme.js +76 -0
- package/dist/code/chrome-theme.js.map +1 -0
- package/dist/code/compartments.js +19 -0
- package/dist/code/compartments.js.map +1 -0
- package/dist/code/editor-factory.d.ts +41 -0
- package/dist/code/editor-factory.js +126 -0
- package/dist/code/editor-factory.js.map +1 -0
- package/dist/code/format-json.d.ts +27 -0
- package/dist/code/format-json.js +94 -0
- package/dist/code/format-json.js.map +1 -0
- package/dist/code/highlight-style.js +118 -0
- package/dist/code/highlight-style.js.map +1 -0
- package/dist/code/index.d.ts +6 -0
- package/dist/code/index.js +6 -0
- package/dist/code/jsonl-language.d.ts +6 -0
- package/dist/code/jsonl-language.js +33 -0
- package/dist/code/jsonl-language.js.map +1 -0
- package/dist/code/kind.d.ts +15 -0
- package/dist/code/kind.js +142 -0
- package/dist/code/kind.js.map +1 -0
- package/dist/code/lang-registry.d.ts +31 -0
- package/dist/code/lang-registry.js +54 -0
- package/dist/code/lang-registry.js.map +1 -0
- package/dist/code/react.d.ts +2 -0
- package/dist/code/react.js +1 -0
- package/dist/code/vue.d.ts +2 -0
- package/dist/code/vue.js +1 -0
- package/dist/core/abilities.d.ts +32 -0
- package/dist/core/abilities.js +160 -0
- package/dist/core/abilities.js.map +1 -0
- package/dist/core/block-convert.d.ts +59 -0
- package/dist/core/block-convert.js +164 -0
- package/dist/core/block-convert.js.map +1 -0
- package/dist/core/block-drag.d.ts +12 -0
- package/dist/core/block-drag.js +62 -0
- package/dist/core/block-drag.js.map +1 -0
- package/dist/core/block-flash.d.ts +19 -0
- package/dist/core/block-flash.js +66 -0
- package/dist/core/block-flash.js.map +1 -0
- package/dist/core/context.d.ts +63 -0
- package/dist/core/context.js +108 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/convert.d.ts +96 -0
- package/dist/core/convert.js +241 -0
- package/dist/core/convert.js.map +1 -0
- package/dist/core/core-feature.d.ts +17 -0
- package/dist/core/core-feature.js +100 -0
- package/dist/core/core-feature.js.map +1 -0
- package/dist/core/define-editor.d.ts +23 -0
- package/dist/core/define-editor.js +110 -0
- package/dist/core/define-editor.js.map +1 -0
- package/dist/core/doc-anchors.d.ts +67 -0
- package/dist/core/doc-anchors.js +112 -0
- package/dist/core/doc-anchors.js.map +1 -0
- package/dist/core/document-markdown.d.ts +13 -0
- package/dist/core/document-markdown.js +31 -0
- package/dist/core/document-markdown.js.map +1 -0
- package/dist/core/download.d.ts +5 -0
- package/dist/core/download.js +16 -0
- package/dist/core/download.js.map +1 -0
- package/dist/core/editor-ui.d.ts +45 -0
- package/dist/core/editor-ui.js +38 -0
- package/dist/core/editor-ui.js.map +1 -0
- package/dist/core/extension-points.d.ts +64 -0
- package/dist/core/feature-context.d.ts +32 -0
- package/dist/core/feature-context.js +46 -0
- package/dist/core/feature-context.js.map +1 -0
- package/dist/core/feature.d.ts +234 -0
- package/dist/core/feature.js +13 -0
- package/dist/core/feature.js.map +1 -0
- package/dist/core/fences.d.ts +16 -0
- package/dist/core/fences.js +105 -0
- package/dist/core/fences.js.map +1 -0
- package/dist/core/fetch-error.d.ts +5 -0
- package/dist/core/fetch-error.js +11 -0
- package/dist/core/fetch-error.js.map +1 -0
- package/dist/core/index.d.ts +28 -0
- package/dist/core/index.js +27 -0
- package/dist/core/metadata-types.d.ts +27 -0
- package/dist/core/metadata-types.js +10 -0
- package/dist/core/metadata-types.js.map +1 -0
- package/dist/core/metadata.d.ts +39 -0
- package/dist/core/metadata.js +76 -0
- package/dist/core/metadata.js.map +1 -0
- package/dist/core/notify.d.ts +31 -0
- package/dist/core/notify.js +7 -0
- package/dist/core/notify.js.map +1 -0
- package/dist/core/pipeline.d.ts +52 -0
- package/dist/core/pipeline.js +78 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/schema/abilities.d.ts +55 -0
- package/dist/core/schema/abilities.js +113 -0
- package/dist/core/schema/abilities.js.map +1 -0
- package/dist/core/schema/block-ids.d.ts +29 -0
- package/dist/core/schema/block-ids.js +134 -0
- package/dist/core/schema/block-ids.js.map +1 -0
- package/dist/core/schema/hex-color.d.ts +5 -0
- package/dist/core/schema/hex-color.js +7 -0
- package/dist/core/schema/hex-color.js.map +1 -0
- package/dist/core/schema/index.d.ts +21 -0
- package/dist/core/schema/index.js +33 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/mark-flags.d.ts +12 -0
- package/dist/core/schema/node-flags.d.ts +23 -0
- package/dist/core/schema/node-flags.js +34 -0
- package/dist/core/schema/node-flags.js.map +1 -0
- package/dist/core/schema/opaque-fence.d.ts +11 -0
- package/dist/core/schema/opaque-fence.js +57 -0
- package/dist/core/schema/opaque-fence.js.map +1 -0
- package/dist/core/schema/strike.d.ts +4 -0
- package/dist/core/schema/strike.js +9 -0
- package/dist/core/schema/strike.js.map +1 -0
- package/dist/core/selection-range.d.ts +13 -0
- package/dist/core/selection-range.js +28 -0
- package/dist/core/selection-range.js.map +1 -0
- package/dist/core/slash.d.ts +24 -0
- package/dist/core/slash.js +60 -0
- package/dist/core/slash.js.map +1 -0
- package/dist/core/store.d.ts +22 -0
- package/dist/core/store.js +61 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/suggestion-popup.d.ts +63 -0
- package/dist/core/suggestion-popup.js +57 -0
- package/dist/core/suggestion-popup.js.map +1 -0
- package/dist/core/tag-name.js +11 -0
- package/dist/core/tag-name.js.map +1 -0
- package/dist/core/toolbar-items.d.ts +10 -0
- package/dist/core/toolbar-items.js +206 -0
- package/dist/core/toolbar-items.js.map +1 -0
- package/dist/core/toolbar.d.ts +74 -0
- package/dist/core/toolbar.js +45 -0
- package/dist/core/toolbar.js.map +1 -0
- package/dist/document/DocumentSurface.d.ts +38 -0
- package/dist/document/DocumentSurface.js +44 -0
- package/dist/document/DocumentSurface.js.map +1 -0
- package/dist/document/DocumentSurface.vue.d.ts +56 -0
- package/dist/document/DocumentSurface2.js +71 -0
- package/dist/document/DocumentSurface2.js.map +1 -0
- package/dist/document/react.d.ts +2 -0
- package/dist/document/react.js +1 -0
- package/dist/document/vue.d.ts +2 -0
- package/dist/document/vue.js +1 -0
- package/dist/features/ai/agent-op-review.d.ts +69 -0
- package/dist/features/ai/agent-op-review.js +182 -0
- package/dist/features/ai/agent-op-review.js.map +1 -0
- package/dist/features/ai/agent-ops.d.ts +15 -0
- package/dist/features/ai/agent-ops.js +228 -0
- package/dist/features/ai/agent-ops.js.map +1 -0
- package/dist/features/ai/ai-apply.d.ts +76 -0
- package/dist/features/ai/ai-apply.js +193 -0
- package/dist/features/ai/ai-apply.js.map +1 -0
- package/dist/features/ai/ai-menu.d.ts +38 -0
- package/dist/features/ai/ai-menu.js +20 -0
- package/dist/features/ai/ai-menu.js.map +1 -0
- package/dist/features/ai/ai-review.d.ts +136 -0
- package/dist/features/ai/ai-review.js +543 -0
- package/dist/features/ai/ai-review.js.map +1 -0
- package/dist/features/ai/ai-selection-highlight.d.ts +21 -0
- package/dist/features/ai/ai-selection-highlight.js +44 -0
- package/dist/features/ai/ai-selection-highlight.js.map +1 -0
- package/dist/features/ai/ai-sse.d.ts +28 -0
- package/dist/features/ai/ai-sse.js +82 -0
- package/dist/features/ai/ai-sse.js.map +1 -0
- package/dist/features/ai/assistant.d.ts +53 -0
- package/dist/features/ai/assistant.js +82 -0
- package/dist/features/ai/assistant.js.map +1 -0
- package/dist/features/ai/block-actions.d.ts +20 -0
- package/dist/features/ai/block-actions.js +55 -0
- package/dist/features/ai/block-actions.js.map +1 -0
- package/dist/features/ai/components/AiReviewBar.js +145 -0
- package/dist/features/ai/components/AiReviewBar.js.map +1 -0
- package/dist/features/ai/components/AiReviewBar.vue.d.ts +15 -0
- package/dist/features/ai/components/AiSelectionMenu.js +519 -0
- package/dist/features/ai/components/AiSelectionMenu.js.map +1 -0
- package/dist/features/ai/components/AiSelectionMenu.vue.d.ts +17 -0
- package/dist/features/ai/components/AiSidebar.js +378 -0
- package/dist/features/ai/components/AiSidebar.js.map +1 -0
- package/dist/features/ai/components/AiSidebar.vue.d.ts +26 -0
- package/dist/features/ai/components/DocumentChatAnswer.js +67 -0
- package/dist/features/ai/components/DocumentChatAnswer.js.map +1 -0
- package/dist/features/ai/components/DocumentChatAnswer.vue.d.ts +13 -0
- package/dist/features/ai/components/DocumentChatOps.js +113 -0
- package/dist/features/ai/components/DocumentChatOps.js.map +1 -0
- package/dist/features/ai/components/DocumentChatOps.vue.d.ts +27 -0
- package/dist/features/ai/components/ModelQuickSwitch.js +84 -0
- package/dist/features/ai/components/ModelQuickSwitch.js.map +1 -0
- package/dist/features/ai/components/ModelQuickSwitch.vue.d.ts +23 -0
- package/dist/features/ai/components/SettingsAiTab.js +88 -0
- package/dist/features/ai/components/SettingsAiTab.js.map +1 -0
- package/dist/features/ai/components/SettingsAiTab.vue.d.ts +6 -0
- package/dist/features/ai/components/SettingsModelProfiles.js +260 -0
- package/dist/features/ai/components/SettingsModelProfiles.js.map +1 -0
- package/dist/features/ai/components/SettingsModelProfiles.vue.d.ts +6 -0
- package/dist/features/ai/document-chat-model.d.ts +88 -0
- package/dist/features/ai/document-chat-model.js +190 -0
- package/dist/features/ai/document-chat-model.js.map +1 -0
- package/dist/features/ai/document-chat.d.ts +17 -0
- package/dist/features/ai/document-chat.js +112 -0
- package/dist/features/ai/document-chat.js.map +1 -0
- package/dist/features/ai/feature.d.ts +25 -0
- package/dist/features/ai/feature.js +89 -0
- package/dist/features/ai/feature.js.map +1 -0
- package/dist/features/ai/ghost-autocomplete.d.ts +47 -0
- package/dist/features/ai/ghost-autocomplete.js +204 -0
- package/dist/features/ai/ghost-autocomplete.js.map +1 -0
- package/dist/features/ai/index.d.ts +24 -0
- package/dist/features/ai/index.js +23 -0
- package/dist/features/ai/model-profiles.d.ts +36 -0
- package/dist/features/ai/model-profiles.js +111 -0
- package/dist/features/ai/model-profiles.js.map +1 -0
- package/dist/features/ai/preview-extensions.js +14 -0
- package/dist/features/ai/preview-extensions.js.map +1 -0
- package/dist/features/ai/protocol/agent-ops.d.ts +120 -0
- package/dist/features/ai/protocol/agent-ops.js +298 -0
- package/dist/features/ai/protocol/agent-ops.js.map +1 -0
- package/dist/features/ai/protocol/chat.d.ts +57 -0
- package/dist/features/ai/protocol/chat.js +146 -0
- package/dist/features/ai/protocol/chat.js.map +1 -0
- package/dist/features/ai/protocol/complete.d.ts +21 -0
- package/dist/features/ai/protocol/complete.js +81 -0
- package/dist/features/ai/protocol/complete.js.map +1 -0
- package/dist/features/ai/protocol/index.d.ts +7 -0
- package/dist/features/ai/protocol/index.js +7 -0
- package/dist/features/ai/protocol/models.d.ts +48 -0
- package/dist/features/ai/protocol/models.js +41 -0
- package/dist/features/ai/protocol/models.js.map +1 -0
- package/dist/features/ai/protocol/schemas.d.ts +36 -0
- package/dist/features/ai/protocol/schemas.js +40 -0
- package/dist/features/ai/protocol/schemas.js.map +1 -0
- package/dist/features/ai/protocol/tasks.d.ts +107 -0
- package/dist/features/ai/protocol/tasks.js +227 -0
- package/dist/features/ai/protocol/tasks.js.map +1 -0
- package/dist/features/ai/rate-limit.d.ts +9 -0
- package/dist/features/ai/rate-limit.js +20 -0
- package/dist/features/ai/rate-limit.js.map +1 -0
- package/dist/features/ai/react/AiReviewBar.d.ts +12 -0
- package/dist/features/ai/react/AiReviewBar.js +156 -0
- package/dist/features/ai/react/AiReviewBar.js.map +1 -0
- package/dist/features/ai/react/AiSelectionMenu.d.ts +14 -0
- package/dist/features/ai/react/AiSelectionMenu.js +513 -0
- package/dist/features/ai/react/AiSelectionMenu.js.map +1 -0
- package/dist/features/ai/react/AiSidebar.d.ts +19 -0
- package/dist/features/ai/react/AiSidebar.js +339 -0
- package/dist/features/ai/react/AiSidebar.js.map +1 -0
- package/dist/features/ai/react/DocumentChatAnswer.d.ts +10 -0
- package/dist/features/ai/react/DocumentChatAnswer.js +70 -0
- package/dist/features/ai/react/DocumentChatAnswer.js.map +1 -0
- package/dist/features/ai/react/DocumentChatOps.d.ts +19 -0
- package/dist/features/ai/react/DocumentChatOps.js +111 -0
- package/dist/features/ai/react/DocumentChatOps.js.map +1 -0
- package/dist/features/ai/react/ModelQuickSwitch.d.ts +19 -0
- package/dist/features/ai/react/ModelQuickSwitch.js +89 -0
- package/dist/features/ai/react/ModelQuickSwitch.js.map +1 -0
- package/dist/features/ai/react/SettingsAiTab.d.ts +5 -0
- package/dist/features/ai/react/SettingsAiTab.js +103 -0
- package/dist/features/ai/react/SettingsAiTab.js.map +1 -0
- package/dist/features/ai/react/SettingsModelProfiles.d.ts +8 -0
- package/dist/features/ai/react/SettingsModelProfiles.js +318 -0
- package/dist/features/ai/react/SettingsModelProfiles.js.map +1 -0
- package/dist/features/ai/react/use-ai-assistant.d.ts +22 -0
- package/dist/features/ai/react/use-ai-assistant.js +36 -0
- package/dist/features/ai/react/use-ai-assistant.js.map +1 -0
- package/dist/features/ai/react/use-document-chat.d.ts +32 -0
- package/dist/features/ai/react/use-document-chat.js +43 -0
- package/dist/features/ai/react/use-document-chat.js.map +1 -0
- package/dist/features/ai/react/use-model-profiles.d.ts +20 -0
- package/dist/features/ai/react/use-model-profiles.js +33 -0
- package/dist/features/ai/react/use-model-profiles.js.map +1 -0
- package/dist/features/ai/react.d.ts +23 -0
- package/dist/features/ai/react.js +28 -0
- package/dist/features/ai/react.js.map +1 -0
- package/dist/features/ai/sidebar-flow.d.ts +61 -0
- package/dist/features/ai/sidebar-flow.js +125 -0
- package/dist/features/ai/sidebar-flow.js.map +1 -0
- package/dist/features/ai/use-ai-assistant.d.ts +22 -0
- package/dist/features/ai/use-ai-assistant.js +39 -0
- package/dist/features/ai/use-ai-assistant.js.map +1 -0
- package/dist/features/ai/use-document-chat.d.ts +33 -0
- package/dist/features/ai/use-document-chat.js +45 -0
- package/dist/features/ai/use-document-chat.js.map +1 -0
- package/dist/features/ai/use-model-profiles.d.ts +23 -0
- package/dist/features/ai/use-model-profiles.js +50 -0
- package/dist/features/ai/use-model-profiles.js.map +1 -0
- package/dist/features/ai/vue.d.ts +21 -0
- package/dist/features/ai/vue.js +28 -0
- package/dist/features/ai/vue.js.map +1 -0
- package/dist/features/authors/attribution.d.ts +36 -0
- package/dist/features/authors/attribution.js +94 -0
- package/dist/features/authors/attribution.js.map +1 -0
- package/dist/features/authors/author-color-styles.d.ts +12 -0
- package/dist/features/authors/author-color-styles.js +24 -0
- package/dist/features/authors/author-color-styles.js.map +1 -0
- package/dist/features/authors/components/AuthorColorsButton.js +50 -0
- package/dist/features/authors/components/AuthorColorsButton.js.map +1 -0
- package/dist/features/authors/components/AuthorColorsButton.vue.d.ts +11 -0
- package/dist/features/authors/components/AuthorColorsPanel.js +72 -0
- package/dist/features/authors/components/AuthorColorsPanel.js.map +1 -0
- package/dist/features/authors/components/AuthorColorsPanel.vue.d.ts +11 -0
- package/dist/features/authors/components/SettingsAuthorsTab.js +49 -0
- package/dist/features/authors/components/SettingsAuthorsTab.js.map +1 -0
- package/dist/features/authors/components/SettingsAuthorsTab.vue.d.ts +6 -0
- package/dist/features/authors/feature.d.ts +22 -0
- package/dist/features/authors/feature.js +47 -0
- package/dist/features/authors/feature.js.map +1 -0
- package/dist/features/authors/index.d.ts +7 -0
- package/dist/features/authors/index.js +6 -0
- package/dist/features/authors/react/AuthorColorsButton.d.ts +8 -0
- package/dist/features/authors/react/AuthorColorsButton.js +41 -0
- package/dist/features/authors/react/AuthorColorsButton.js.map +1 -0
- package/dist/features/authors/react/AuthorColorsPanel.d.ts +8 -0
- package/dist/features/authors/react/AuthorColorsPanel.js +125 -0
- package/dist/features/authors/react/AuthorColorsPanel.js.map +1 -0
- package/dist/features/authors/react/SettingsAuthorsTab.d.ts +5 -0
- package/dist/features/authors/react/SettingsAuthorsTab.js +92 -0
- package/dist/features/authors/react/SettingsAuthorsTab.js.map +1 -0
- package/dist/features/authors/react.d.ts +11 -0
- package/dist/features/authors/react.js +16 -0
- package/dist/features/authors/react.js.map +1 -0
- package/dist/features/authors/schema.d.ts +22 -0
- package/dist/features/authors/schema.js +70 -0
- package/dist/features/authors/schema.js.map +1 -0
- package/dist/features/authors/vue.d.ts +10 -0
- package/dist/features/authors/vue.js +16 -0
- package/dist/features/authors/vue.js.map +1 -0
- package/dist/features/block-ui/block-actions.d.ts +17 -0
- package/dist/features/block-ui/block-actions.js +37 -0
- package/dist/features/block-ui/block-actions.js.map +1 -0
- package/dist/features/block-ui/components/BlockActionsOverlay.js +142 -0
- package/dist/features/block-ui/components/BlockActionsOverlay.js.map +1 -0
- package/dist/features/block-ui/components/BlockActionsOverlay.vue.d.ts +25 -0
- package/dist/features/block-ui/components/BlockHandles.js +113 -0
- package/dist/features/block-ui/components/BlockHandles.js.map +1 -0
- package/dist/features/block-ui/components/BlockUi.js +181 -0
- package/dist/features/block-ui/components/BlockUi.js.map +1 -0
- package/dist/features/block-ui/components/BlockUi.vue.d.ts +17 -0
- package/dist/features/block-ui/feature.d.ts +21 -0
- package/dist/features/block-ui/feature.js +23 -0
- package/dist/features/block-ui/feature.js.map +1 -0
- package/dist/features/block-ui/handle-geometry.js +52 -0
- package/dist/features/block-ui/handle-geometry.js.map +1 -0
- package/dist/features/block-ui/index.d.ts +3 -0
- package/dist/features/block-ui/index.js +3 -0
- package/dist/features/block-ui/react/BlockActionsOverlay.d.ts +19 -0
- package/dist/features/block-ui/react/BlockActionsOverlay.js +142 -0
- package/dist/features/block-ui/react/BlockActionsOverlay.js.map +1 -0
- package/dist/features/block-ui/react/BlockHandles.d.ts +15 -0
- package/dist/features/block-ui/react/BlockHandles.js +104 -0
- package/dist/features/block-ui/react/BlockHandles.js.map +1 -0
- package/dist/features/block-ui/react/BlockUi.d.ts +14 -0
- package/dist/features/block-ui/react/BlockUi.js +174 -0
- package/dist/features/block-ui/react/BlockUi.js.map +1 -0
- package/dist/features/block-ui/react.d.ts +11 -0
- package/dist/features/block-ui/react.js +13 -0
- package/dist/features/block-ui/react.js.map +1 -0
- package/dist/features/block-ui/vue.d.ts +9 -0
- package/dist/features/block-ui/vue.js +12 -0
- package/dist/features/block-ui/vue.js.map +1 -0
- package/dist/features/collab/anchor-resolver.d.ts +7 -0
- package/dist/features/collab/anchor-resolver.js +92 -0
- package/dist/features/collab/anchor-resolver.js.map +1 -0
- package/dist/features/collab/feature.d.ts +22 -0
- package/dist/features/collab/feature.js +36 -0
- package/dist/features/collab/feature.js.map +1 -0
- package/dist/features/collab/index.d.ts +3 -0
- package/dist/features/collab/index.js +3 -0
- package/dist/features/collab/react.d.ts +7 -0
- package/dist/features/collab/react.js +10 -0
- package/dist/features/collab/react.js.map +1 -0
- package/dist/features/collab/vue.d.ts +6 -0
- package/dist/features/collab/vue.js +37 -0
- package/dist/features/collab/vue.js.map +1 -0
- package/dist/features/comments/comments-plugin.d.ts +71 -0
- package/dist/features/comments/comments-plugin.js +185 -0
- package/dist/features/comments/comments-plugin.js.map +1 -0
- package/dist/features/comments/components/CommentBubble.js +54 -0
- package/dist/features/comments/components/CommentBubble.js.map +1 -0
- package/dist/features/comments/components/CommentBubble.vue.d.ts +14 -0
- package/dist/features/comments/components/CommentComposer.js +87 -0
- package/dist/features/comments/components/CommentComposer.js.map +1 -0
- package/dist/features/comments/components/CommentComposer.vue.d.ts +21 -0
- package/dist/features/comments/components/CommentThreadView.js +255 -0
- package/dist/features/comments/components/CommentThreadView.js.map +1 -0
- package/dist/features/comments/components/CommentThreadView.vue.d.ts +29 -0
- package/dist/features/comments/components/CommentsListMenu.js +134 -0
- package/dist/features/comments/components/CommentsListMenu.js.map +1 -0
- package/dist/features/comments/components/CommentsListMenu.vue.d.ts +10 -0
- package/dist/features/comments/components/CommentsMargin.js +291 -0
- package/dist/features/comments/components/CommentsMargin.js.map +1 -0
- package/dist/features/comments/components/CommentsMargin.vue.d.ts +16 -0
- package/dist/features/comments/components/CommentsOverlay.js +39 -0
- package/dist/features/comments/components/CommentsOverlay.js.map +1 -0
- package/dist/features/comments/components/CommentsPopover.js +124 -0
- package/dist/features/comments/components/CommentsPopover.js.map +1 -0
- package/dist/features/comments/components/CommentsPopover.vue.d.ts +10 -0
- package/dist/features/comments/components/CommentsToolbarButton.js +61 -0
- package/dist/features/comments/components/CommentsToolbarButton.js.map +1 -0
- package/dist/features/comments/components/SettingsCommentsTab.js +46 -0
- package/dist/features/comments/components/SettingsCommentsTab.js.map +1 -0
- package/dist/features/comments/components/SettingsCommentsTab.vue.d.ts +6 -0
- package/dist/features/comments/feature.d.ts +39 -0
- package/dist/features/comments/feature.js +128 -0
- package/dist/features/comments/feature.js.map +1 -0
- package/dist/features/comments/index.d.ts +6 -0
- package/dist/features/comments/index.js +6 -0
- package/dist/features/comments/model.d.ts +87 -0
- package/dist/features/comments/model.js +390 -0
- package/dist/features/comments/model.js.map +1 -0
- package/dist/features/comments/react/CommentAvatar.js +24 -0
- package/dist/features/comments/react/CommentAvatar.js.map +1 -0
- package/dist/features/comments/react/CommentBubble.d.ts +11 -0
- package/dist/features/comments/react/CommentBubble.js +43 -0
- package/dist/features/comments/react/CommentBubble.js.map +1 -0
- package/dist/features/comments/react/CommentComposer.d.ts +15 -0
- package/dist/features/comments/react/CommentComposer.js +69 -0
- package/dist/features/comments/react/CommentComposer.js.map +1 -0
- package/dist/features/comments/react/CommentThreadView.d.ts +24 -0
- package/dist/features/comments/react/CommentThreadView.js +249 -0
- package/dist/features/comments/react/CommentThreadView.js.map +1 -0
- package/dist/features/comments/react/CommentsListMenu.d.ts +8 -0
- package/dist/features/comments/react/CommentsListMenu.js +115 -0
- package/dist/features/comments/react/CommentsListMenu.js.map +1 -0
- package/dist/features/comments/react/CommentsMargin.d.ts +16 -0
- package/dist/features/comments/react/CommentsMargin.js +294 -0
- package/dist/features/comments/react/CommentsMargin.js.map +1 -0
- package/dist/features/comments/react/CommentsOverlay.d.ts +11 -0
- package/dist/features/comments/react/CommentsOverlay.js +52 -0
- package/dist/features/comments/react/CommentsOverlay.js.map +1 -0
- package/dist/features/comments/react/CommentsPopover.d.ts +15 -0
- package/dist/features/comments/react/CommentsPopover.js +107 -0
- package/dist/features/comments/react/CommentsPopover.js.map +1 -0
- package/dist/features/comments/react/CommentsToolbarButton.d.ts +12 -0
- package/dist/features/comments/react/CommentsToolbarButton.js +52 -0
- package/dist/features/comments/react/CommentsToolbarButton.js.map +1 -0
- package/dist/features/comments/react/SettingsCommentsTab.d.ts +5 -0
- package/dist/features/comments/react/SettingsCommentsTab.js +77 -0
- package/dist/features/comments/react/SettingsCommentsTab.js.map +1 -0
- package/dist/features/comments/react/use-comments.d.ts +17 -0
- package/dist/features/comments/react/use-comments.js +37 -0
- package/dist/features/comments/react/use-comments.js.map +1 -0
- package/dist/features/comments/react.d.ts +23 -0
- package/dist/features/comments/react.js +28 -0
- package/dist/features/comments/react.js.map +1 -0
- package/dist/features/comments/schema.d.ts +51 -0
- package/dist/features/comments/schema.js +41 -0
- package/dist/features/comments/schema.js.map +1 -0
- package/dist/features/comments/shortcuts.js +34 -0
- package/dist/features/comments/shortcuts.js.map +1 -0
- package/dist/features/comments/use-comments.d.ts +37 -0
- package/dist/features/comments/use-comments.js +45 -0
- package/dist/features/comments/use-comments.js.map +1 -0
- package/dist/features/comments/vue.d.ts +20 -0
- package/dist/features/comments/vue.js +28 -0
- package/dist/features/comments/vue.js.map +1 -0
- package/dist/features/composites/ai-brief.d.ts +31 -0
- package/dist/features/composites/ai-brief.js +56 -0
- package/dist/features/composites/ai-brief.js.map +1 -0
- package/dist/features/composites/anchors.d.ts +47 -0
- package/dist/features/composites/anchors.js +137 -0
- package/dist/features/composites/anchors.js.map +1 -0
- package/dist/features/composites/components/CompositeChrome.js +243 -0
- package/dist/features/composites/components/CompositeChrome.js.map +1 -0
- package/dist/features/composites/components/CompositeChrome.vue.d.ts +19 -0
- package/dist/features/composites/components/CompositeDetails.js +158 -0
- package/dist/features/composites/components/CompositeDetails.js.map +1 -0
- package/dist/features/composites/components/CompositeDetails.vue.d.ts +19 -0
- package/dist/features/composites/components/CompositeFieldEditor.js +114 -0
- package/dist/features/composites/components/CompositeFieldEditor.js.map +1 -0
- package/dist/features/composites/components/CompositeFieldEditor.vue.d.ts +23 -0
- package/dist/features/composites/components/CompositeInspector.js +439 -0
- package/dist/features/composites/components/CompositeInspector.js.map +1 -0
- package/dist/features/composites/components/CompositeInspector.vue.d.ts +32 -0
- package/dist/features/composites/components/CompositeStatusMenu.js +51 -0
- package/dist/features/composites/components/CompositeStatusMenu.js.map +1 -0
- package/dist/features/composites/components/CompositeStatusMenu.vue.d.ts +28 -0
- package/dist/features/composites/components/CompositeSummaryEditor.js +79 -0
- package/dist/features/composites/components/CompositeSummaryEditor.js.map +1 -0
- package/dist/features/composites/components/CompositeSummaryEditor.vue.d.ts +18 -0
- package/dist/features/composites/components/CompositeTable.js +348 -0
- package/dist/features/composites/components/CompositeTable.js.map +1 -0
- package/dist/features/composites/components/CompositeTable.vue.d.ts +15 -0
- package/dist/features/composites/components/CompositeTagsEditor.js +95 -0
- package/dist/features/composites/components/CompositeTagsEditor.js.map +1 -0
- package/dist/features/composites/components/CompositeTagsEditor.vue.d.ts +13 -0
- package/dist/features/composites/components/CompositeView.js +46 -0
- package/dist/features/composites/components/CompositeView.js.map +1 -0
- package/dist/features/composites/components/CompositeView.vue.d.ts +96 -0
- package/dist/features/composites/components/SettingsEditingTab.js +119 -0
- package/dist/features/composites/components/SettingsEditingTab.js.map +1 -0
- package/dist/features/composites/components/SettingsEditingTab.vue.d.ts +11 -0
- package/dist/features/composites/convert.d.ts +24 -0
- package/dist/features/composites/convert.js +145 -0
- package/dist/features/composites/convert.js.map +1 -0
- package/dist/features/composites/editing-settings-keys.js +47 -0
- package/dist/features/composites/editing-settings-keys.js.map +1 -0
- package/dist/features/composites/feature.d.ts +30 -0
- package/dist/features/composites/feature.js +305 -0
- package/dist/features/composites/feature.js.map +1 -0
- package/dist/features/composites/fences.d.ts +20 -0
- package/dist/features/composites/fences.js +86 -0
- package/dist/features/composites/fences.js.map +1 -0
- package/dist/features/composites/heading-composites.d.ts +36 -0
- package/dist/features/composites/heading-composites.js +140 -0
- package/dist/features/composites/heading-composites.js.map +1 -0
- package/dist/features/composites/index.d.ts +20 -0
- package/dist/features/composites/index.js +20 -0
- package/dist/features/composites/kinds.d.ts +49 -0
- package/dist/features/composites/kinds.js +131 -0
- package/dist/features/composites/kinds.js.map +1 -0
- package/dist/features/composites/legacy.d.ts +8 -0
- package/dist/features/composites/legacy.js +25 -0
- package/dist/features/composites/legacy.js.map +1 -0
- package/dist/features/composites/markdown-export.d.ts +17 -0
- package/dist/features/composites/markdown-export.js +49 -0
- package/dist/features/composites/markdown-export.js.map +1 -0
- package/dist/features/composites/meta-display.js +46 -0
- package/dist/features/composites/meta-display.js.map +1 -0
- package/dist/features/composites/node-views.d.ts +17 -0
- package/dist/features/composites/node-views.js +18 -0
- package/dist/features/composites/node-views.js.map +1 -0
- package/dist/features/composites/nodes.d.ts +56 -0
- package/dist/features/composites/nodes.js +480 -0
- package/dist/features/composites/nodes.js.map +1 -0
- package/dist/features/composites/outline.d.ts +35 -0
- package/dist/features/composites/outline.js +69 -0
- package/dist/features/composites/outline.js.map +1 -0
- package/dist/features/composites/react/CompositeChrome.d.ts +16 -0
- package/dist/features/composites/react/CompositeChrome.js +234 -0
- package/dist/features/composites/react/CompositeChrome.js.map +1 -0
- package/dist/features/composites/react/CompositeDetails.d.ts +16 -0
- package/dist/features/composites/react/CompositeDetails.js +149 -0
- package/dist/features/composites/react/CompositeDetails.js.map +1 -0
- package/dist/features/composites/react/CompositeFieldEditor.d.ts +18 -0
- package/dist/features/composites/react/CompositeFieldEditor.js +131 -0
- package/dist/features/composites/react/CompositeFieldEditor.js.map +1 -0
- package/dist/features/composites/react/CompositeInspector.d.ts +23 -0
- package/dist/features/composites/react/CompositeInspector.js +506 -0
- package/dist/features/composites/react/CompositeInspector.js.map +1 -0
- package/dist/features/composites/react/CompositeStatusMenu.d.ts +15 -0
- package/dist/features/composites/react/CompositeStatusMenu.js +36 -0
- package/dist/features/composites/react/CompositeStatusMenu.js.map +1 -0
- package/dist/features/composites/react/CompositeSummaryEditor.d.ts +15 -0
- package/dist/features/composites/react/CompositeSummaryEditor.js +85 -0
- package/dist/features/composites/react/CompositeSummaryEditor.js.map +1 -0
- package/dist/features/composites/react/CompositeTable.d.ts +11 -0
- package/dist/features/composites/react/CompositeTable.js +342 -0
- package/dist/features/composites/react/CompositeTable.js.map +1 -0
- package/dist/features/composites/react/CompositeTagsEditor.d.ts +10 -0
- package/dist/features/composites/react/CompositeTagsEditor.js +122 -0
- package/dist/features/composites/react/CompositeTagsEditor.js.map +1 -0
- package/dist/features/composites/react/CompositeView.d.ts +6 -0
- package/dist/features/composites/react/CompositeView.js +30 -0
- package/dist/features/composites/react/CompositeView.js.map +1 -0
- package/dist/features/composites/react/SettingsEditingTab.d.ts +8 -0
- package/dist/features/composites/react/SettingsEditingTab.js +153 -0
- package/dist/features/composites/react/SettingsEditingTab.js.map +1 -0
- package/dist/features/composites/react/use-composite-anchors.d.ts +17 -0
- package/dist/features/composites/react/use-composite-anchors.js +46 -0
- package/dist/features/composites/react/use-composite-anchors.js.map +1 -0
- package/dist/features/composites/react/use-composite-rows.d.ts +11 -0
- package/dist/features/composites/react/use-composite-rows.js +26 -0
- package/dist/features/composites/react/use-composite-rows.js.map +1 -0
- package/dist/features/composites/react.d.ts +24 -0
- package/dist/features/composites/react.js +30 -0
- package/dist/features/composites/react.js.map +1 -0
- package/dist/features/composites/rows-model.d.ts +38 -0
- package/dist/features/composites/rows-model.js +92 -0
- package/dist/features/composites/rows-model.js.map +1 -0
- package/dist/features/composites/rows.d.ts +76 -0
- package/dist/features/composites/rows.js +159 -0
- package/dist/features/composites/rows.js.map +1 -0
- package/dist/features/composites/schema.d.ts +21 -0
- package/dist/features/composites/schema.js +26 -0
- package/dist/features/composites/schema.js.map +1 -0
- package/dist/features/composites/structure-mode.d.ts +11 -0
- package/dist/features/composites/structure-mode.js +16 -0
- package/dist/features/composites/structure-mode.js.map +1 -0
- package/dist/features/composites/structure.d.ts +19 -0
- package/dist/features/composites/structure.js +19 -0
- package/dist/features/composites/structure.js.map +1 -0
- package/dist/features/composites/table-model.js +117 -0
- package/dist/features/composites/table-model.js.map +1 -0
- package/dist/features/composites/tree-root.d.ts +11 -0
- package/dist/features/composites/tree-root.js +16 -0
- package/dist/features/composites/tree-root.js.map +1 -0
- package/dist/features/composites/use-composite-anchors.d.ts +18 -0
- package/dist/features/composites/use-composite-anchors.js +42 -0
- package/dist/features/composites/use-composite-anchors.js.map +1 -0
- package/dist/features/composites/use-composite-rows.d.ts +25 -0
- package/dist/features/composites/use-composite-rows.js +28 -0
- package/dist/features/composites/use-composite-rows.js.map +1 -0
- package/dist/features/composites/vue.d.ts +23 -0
- package/dist/features/composites/vue.js +30 -0
- package/dist/features/composites/vue.js.map +1 -0
- package/dist/features/media/assets.d.ts +30 -0
- package/dist/features/media/assets.js +26 -0
- package/dist/features/media/assets.js.map +1 -0
- package/dist/features/media/audio-recorder.d.ts +25 -0
- package/dist/features/media/audio-recorder.js +123 -0
- package/dist/features/media/audio-recorder.js.map +1 -0
- package/dist/features/media/components/AudioRecorderModal.js +152 -0
- package/dist/features/media/components/AudioRecorderModal.js.map +1 -0
- package/dist/features/media/components/AudioRecorderModal.vue.d.ts +15 -0
- package/dist/features/media/components/AudioView.js +46 -0
- package/dist/features/media/components/AudioView.js.map +1 -0
- package/dist/features/media/components/FileView.js +73 -0
- package/dist/features/media/components/FileView.js.map +1 -0
- package/dist/features/media/components/VideoView.js +47 -0
- package/dist/features/media/components/VideoView.js.map +1 -0
- package/dist/features/media/feature.d.ts +22 -0
- package/dist/features/media/feature.js +101 -0
- package/dist/features/media/feature.js.map +1 -0
- package/dist/features/media/file-import.d.ts +21 -0
- package/dist/features/media/file-import.js +76 -0
- package/dist/features/media/file-import.js.map +1 -0
- package/dist/features/media/index.d.ts +7 -0
- package/dist/features/media/index.js +7 -0
- package/dist/features/media/node-views.d.ts +28 -0
- package/dist/features/media/node-views.js +28 -0
- package/dist/features/media/node-views.js.map +1 -0
- package/dist/features/media/react/AudioRecorderModal.d.ts +12 -0
- package/dist/features/media/react/AudioRecorderModal.js +147 -0
- package/dist/features/media/react/AudioRecorderModal.js.map +1 -0
- package/dist/features/media/react/AudioView.js +32 -0
- package/dist/features/media/react/AudioView.js.map +1 -0
- package/dist/features/media/react/FileView.js +61 -0
- package/dist/features/media/react/FileView.js.map +1 -0
- package/dist/features/media/react/TitleField.js +30 -0
- package/dist/features/media/react/TitleField.js.map +1 -0
- package/dist/features/media/react/VideoView.js +33 -0
- package/dist/features/media/react/VideoView.js.map +1 -0
- package/dist/features/media/react/use-audio-recorder.d.ts +11 -0
- package/dist/features/media/react/use-audio-recorder.js +21 -0
- package/dist/features/media/react/use-audio-recorder.js.map +1 -0
- package/dist/features/media/react.d.ts +19 -0
- package/dist/features/media/react.js +37 -0
- package/dist/features/media/react.js.map +1 -0
- package/dist/features/media/schema.d.ts +59 -0
- package/dist/features/media/schema.js +194 -0
- package/dist/features/media/schema.js.map +1 -0
- package/dist/features/media/upload.d.ts +41 -0
- package/dist/features/media/upload.js +106 -0
- package/dist/features/media/upload.js.map +1 -0
- package/dist/features/media/use-audio-recorder.d.ts +12 -0
- package/dist/features/media/use-audio-recorder.js +21 -0
- package/dist/features/media/use-audio-recorder.js.map +1 -0
- package/dist/features/media/vue.d.ts +19 -0
- package/dist/features/media/vue.js +35 -0
- package/dist/features/media/vue.js.map +1 -0
- package/dist/features/mentions/index.d.ts +22 -0
- package/dist/features/mentions/index.js +34 -0
- package/dist/features/mentions/index.js.map +1 -0
- package/dist/features/mentions/mention-suggestion.d.ts +11 -0
- package/dist/features/mentions/mention-suggestion.js +34 -0
- package/dist/features/mentions/mention-suggestion.js.map +1 -0
- package/dist/features/mentions/mention-text.d.ts +18 -0
- package/dist/features/mentions/mention-text.js +75 -0
- package/dist/features/mentions/mention-text.js.map +1 -0
- package/dist/features/mentions/mention.d.ts +20 -0
- package/dist/features/mentions/mention.js +33 -0
- package/dist/features/mentions/mention.js.map +1 -0
- package/dist/features/mentions/metadata-defaults.d.ts +8 -0
- package/dist/features/mentions/metadata-defaults.js +30 -0
- package/dist/features/mentions/metadata-defaults.js.map +1 -0
- package/dist/features/mentions/normalize.d.ts +10 -0
- package/dist/features/mentions/normalize.js +31 -0
- package/dist/features/mentions/normalize.js.map +1 -0
- package/dist/features/mentions/schema.d.ts +10 -0
- package/dist/features/mentions/schema.js +10 -0
- package/dist/features/mentions/schema.js.map +1 -0
- package/dist/features/mentions/tag-suggestion.d.ts +11 -0
- package/dist/features/mentions/tag-suggestion.js +45 -0
- package/dist/features/mentions/tag-suggestion.js.map +1 -0
- package/dist/features/mentions/tag.d.ts +43 -0
- package/dist/features/mentions/tag.js +155 -0
- package/dist/features/mentions/tag.js.map +1 -0
- package/dist/features/tables/feature.d.ts +14 -0
- package/dist/features/tables/feature.js +100 -0
- package/dist/features/tables/feature.js.map +1 -0
- package/dist/features/tables/index.d.ts +3 -0
- package/dist/features/tables/index.js +3 -0
- package/dist/features/tables/schema.d.ts +6 -0
- package/dist/features/tables/schema.js +27 -0
- package/dist/features/tables/schema.js.map +1 -0
- package/dist/features/themes/components/SettingsAppearanceTab.js +227 -0
- package/dist/features/themes/components/SettingsAppearanceTab.js.map +1 -0
- package/dist/features/themes/components/SettingsAppearanceTab.vue.d.ts +6 -0
- package/dist/features/themes/feature.d.ts +24 -0
- package/dist/features/themes/feature.js +25 -0
- package/dist/features/themes/feature.js.map +1 -0
- package/dist/features/themes/index.d.ts +6 -0
- package/dist/features/themes/index.js +6 -0
- package/dist/features/themes/react/SettingsAppearanceTab.d.ts +5 -0
- package/dist/features/themes/react/SettingsAppearanceTab.js +221 -0
- package/dist/features/themes/react/SettingsAppearanceTab.js.map +1 -0
- package/dist/features/themes/react.d.ts +13 -0
- package/dist/features/themes/react.js +15 -0
- package/dist/features/themes/react.js.map +1 -0
- package/dist/features/themes/schema.d.ts +21 -0
- package/dist/features/themes/schema.js +16 -0
- package/dist/features/themes/schema.js.map +1 -0
- package/dist/features/themes/scope-css.d.ts +5 -0
- package/dist/features/themes/scope-css.js +142 -0
- package/dist/features/themes/scope-css.js.map +1 -0
- package/dist/features/themes/theme-runtime.d.ts +14 -0
- package/dist/features/themes/theme-runtime.js +147 -0
- package/dist/features/themes/theme-runtime.js.map +1 -0
- package/dist/features/themes/vue.d.ts +13 -0
- package/dist/features/themes/vue.js +29 -0
- package/dist/features/themes/vue.js.map +1 -0
- package/dist/features/transcript/TranscriptSegmentView.js +169 -0
- package/dist/features/transcript/TranscriptSegmentView.js.map +1 -0
- package/dist/features/transcript/TranscriptSegmentView.vue.d.ts +96 -0
- package/dist/features/transcript/convert.d.ts +11 -0
- package/dist/features/transcript/convert.js +40 -0
- package/dist/features/transcript/convert.js.map +1 -0
- package/dist/features/transcript/feature.d.ts +25 -0
- package/dist/features/transcript/feature.js +59 -0
- package/dist/features/transcript/feature.js.map +1 -0
- package/dist/features/transcript/index.d.ts +7 -0
- package/dist/features/transcript/index.js +7 -0
- package/dist/features/transcript/react/TranscriptSegmentView.d.ts +6 -0
- package/dist/features/transcript/react/TranscriptSegmentView.js +155 -0
- package/dist/features/transcript/react/TranscriptSegmentView.js.map +1 -0
- package/dist/features/transcript/react.d.ts +9 -0
- package/dist/features/transcript/react.js +12 -0
- package/dist/features/transcript/react.js.map +1 -0
- package/dist/features/transcript/schema.d.ts +9 -0
- package/dist/features/transcript/schema.js +9 -0
- package/dist/features/transcript/schema.js.map +1 -0
- package/dist/features/transcript/segment-node.d.ts +21 -0
- package/dist/features/transcript/segment-node.js +113 -0
- package/dist/features/transcript/segment-node.js.map +1 -0
- package/dist/features/transcript/segment.d.ts +10 -0
- package/dist/features/transcript/segment.js +26 -0
- package/dist/features/transcript/segment.js.map +1 -0
- package/dist/features/transcript/speakers.d.ts +8 -0
- package/dist/features/transcript/speakers.js +22 -0
- package/dist/features/transcript/speakers.js.map +1 -0
- package/dist/features/transcript/vue.d.ts +8 -0
- package/dist/features/transcript/vue.js +12 -0
- package/dist/features/transcript/vue.js.map +1 -0
- package/dist/i18n/de/ai.js +168 -0
- package/dist/i18n/de/ai.js.map +1 -0
- package/dist/i18n/de/authors.js +21 -0
- package/dist/i18n/de/authors.js.map +1 -0
- package/dist/i18n/de/block.js +16 -0
- package/dist/i18n/de/block.js.map +1 -0
- package/dist/i18n/de/comments.js +35 -0
- package/dist/i18n/de/comments.js.map +1 -0
- package/dist/i18n/de/common.js +10 -0
- package/dist/i18n/de/common.js.map +1 -0
- package/dist/i18n/de/composites.js +147 -0
- package/dist/i18n/de/composites.js.map +1 -0
- package/dist/i18n/de/integrations.js +42 -0
- package/dist/i18n/de/integrations.js.map +1 -0
- package/dist/i18n/de/markdown.js +16 -0
- package/dist/i18n/de/markdown.js.map +1 -0
- package/dist/i18n/de/media.js +27 -0
- package/dist/i18n/de/media.js.map +1 -0
- package/dist/i18n/de/mentions.js +10 -0
- package/dist/i18n/de/mentions.js.map +1 -0
- package/dist/i18n/de/outline.js +9 -0
- package/dist/i18n/de/outline.js.map +1 -0
- package/dist/i18n/de/settings.js +12 -0
- package/dist/i18n/de/settings.js.map +1 -0
- package/dist/i18n/de/tables.js +15 -0
- package/dist/i18n/de/tables.js.map +1 -0
- package/dist/i18n/de/themes.js +26 -0
- package/dist/i18n/de/themes.js.map +1 -0
- package/dist/i18n/de/toolbar.js +22 -0
- package/dist/i18n/de/toolbar.js.map +1 -0
- package/dist/i18n/de/transcript.js +10 -0
- package/dist/i18n/de/transcript.js.map +1 -0
- package/dist/i18n/de/tree.js +31 -0
- package/dist/i18n/de/tree.js.map +1 -0
- package/dist/i18n/de.d.ts +502 -0
- package/dist/i18n/de.js +42 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en/ai.js +168 -0
- package/dist/i18n/en/ai.js.map +1 -0
- package/dist/i18n/en/authors.js +21 -0
- package/dist/i18n/en/authors.js.map +1 -0
- package/dist/i18n/en/block.js +16 -0
- package/dist/i18n/en/block.js.map +1 -0
- package/dist/i18n/en/comments.js +35 -0
- package/dist/i18n/en/comments.js.map +1 -0
- package/dist/i18n/en/common.js +10 -0
- package/dist/i18n/en/common.js.map +1 -0
- package/dist/i18n/en/composites.js +145 -0
- package/dist/i18n/en/composites.js.map +1 -0
- package/dist/i18n/en/integrations.js +42 -0
- package/dist/i18n/en/integrations.js.map +1 -0
- package/dist/i18n/en/markdown.js +16 -0
- package/dist/i18n/en/markdown.js.map +1 -0
- package/dist/i18n/en/media.js +27 -0
- package/dist/i18n/en/media.js.map +1 -0
- package/dist/i18n/en/mentions.js +10 -0
- package/dist/i18n/en/mentions.js.map +1 -0
- package/dist/i18n/en/outline.js +9 -0
- package/dist/i18n/en/outline.js.map +1 -0
- package/dist/i18n/en/settings.js +12 -0
- package/dist/i18n/en/settings.js.map +1 -0
- package/dist/i18n/en/tables.js +15 -0
- package/dist/i18n/en/tables.js.map +1 -0
- package/dist/i18n/en/themes.js +26 -0
- package/dist/i18n/en/themes.js.map +1 -0
- package/dist/i18n/en/toolbar.js +22 -0
- package/dist/i18n/en/toolbar.js.map +1 -0
- package/dist/i18n/en/transcript.js +10 -0
- package/dist/i18n/en/transcript.js.map +1 -0
- package/dist/i18n/en/tree.js +31 -0
- package/dist/i18n/en/tree.js.map +1 -0
- package/dist/i18n/en.js +42 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +24 -0
- package/dist/i18n/index.js +31 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +0 -0
- package/dist/integrations/composite-ai/composite-fill.d.ts +17 -0
- package/dist/integrations/composite-ai/composite-fill.js +129 -0
- package/dist/integrations/composite-ai/composite-fill.js.map +1 -0
- package/dist/integrations/composite-ai/composite-summary.d.ts +28 -0
- package/dist/integrations/composite-ai/composite-summary.js +143 -0
- package/dist/integrations/composite-ai/composite-summary.js.map +1 -0
- package/dist/integrations/composite-ai/document-transcribe.d.ts +14 -0
- package/dist/integrations/composite-ai/document-transcribe.js +89 -0
- package/dist/integrations/composite-ai/document-transcribe.js.map +1 -0
- package/dist/integrations/composite-ai/index.d.ts +22 -0
- package/dist/integrations/composite-ai/index.js +80 -0
- package/dist/integrations/composite-ai/index.js.map +1 -0
- package/dist/integrations/composite-media/index.d.ts +19 -0
- package/dist/integrations/composite-media/index.js +72 -0
- package/dist/integrations/composite-media/index.js.map +1 -0
- package/dist/integrations/transcript-ai/index.d.ts +16 -0
- package/dist/integrations/transcript-ai/index.js +63 -0
- package/dist/integrations/transcript-ai/index.js.map +1 -0
- package/dist/integrations/transcript-ai/protocol.d.ts +68 -0
- package/dist/integrations/transcript-ai/protocol.js +132 -0
- package/dist/integrations/transcript-ai/protocol.js.map +1 -0
- package/dist/integrations/transcript-ai/transcript-cleanup.d.ts +35 -0
- package/dist/integrations/transcript-ai/transcript-cleanup.js +169 -0
- package/dist/integrations/transcript-ai/transcript-cleanup.js.map +1 -0
- package/dist/markdown/MarkdownSurface.d.ts +25 -0
- package/dist/markdown/MarkdownSurface.js +93 -0
- package/dist/markdown/MarkdownSurface.js.map +1 -0
- package/dist/markdown/MarkdownSurface.vue.d.ts +76 -0
- package/dist/markdown/MarkdownSurface2.js +237 -0
- package/dist/markdown/MarkdownSurface2.js.map +1 -0
- package/dist/markdown/clipboard.d.ts +17 -0
- package/dist/markdown/clipboard.js +125 -0
- package/dist/markdown/clipboard.js.map +1 -0
- package/dist/markdown/document.d.ts +36 -0
- package/dist/markdown/document.js +100 -0
- package/dist/markdown/document.js.map +1 -0
- package/dist/markdown/frontmatter.d.ts +18 -0
- package/dist/markdown/frontmatter.js +32 -0
- package/dist/markdown/frontmatter.js.map +1 -0
- package/dist/markdown/index.d.ts +6 -0
- package/dist/markdown/index.js +6 -0
- package/dist/markdown/policy.d.ts +34 -0
- package/dist/markdown/policy.js +78 -0
- package/dist/markdown/policy.js.map +1 -0
- package/dist/markdown/react.d.ts +2 -0
- package/dist/markdown/react.js +1 -0
- package/dist/markdown/source-mode.d.ts +49 -0
- package/dist/markdown/source-mode.js +86 -0
- package/dist/markdown/source-mode.js.map +1 -0
- package/dist/markdown/vue.d.ts +2 -0
- package/dist/markdown/vue.js +1 -0
- package/dist/nuxt/module.d.ts +62 -0
- package/dist/nuxt/module.js +101 -0
- package/dist/nuxt/module.js.map +1 -0
- package/dist/nuxt/runtime/install-context.d.ts +16 -0
- package/dist/nuxt/runtime/install-context.js +25 -0
- package/dist/nuxt/runtime/install-context.js.map +1 -0
- package/dist/nuxt/runtime/plugins/editor-context-nuxt-ui.client.ts +8 -0
- package/dist/nuxt/runtime/server/api/ai/chat.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/chat.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/chat.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/complete.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/complete.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/complete.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/generate.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/generate.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/generate.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/models.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/models.get.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/models.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/transcribe.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/transcribe.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/transcribe.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id].post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/settings.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/settings.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/settings.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/settings.put.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/settings.put.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/settings.put.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/tags.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/tags.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/tags.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.post.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/users.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/users.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/users.get.js.map +1 -0
- package/dist/nuxt/runtime/server/plugins/collab.d.ts +5 -0
- package/dist/nuxt/runtime/server/plugins/collab.js +10 -0
- package/dist/nuxt/runtime/server/plugins/collab.js.map +1 -0
- package/dist/nuxt/runtime/server/plugins/editor-server.d.ts +5 -0
- package/dist/nuxt/runtime/server/plugins/editor-server.js +20 -0
- package/dist/nuxt/runtime/server/plugins/editor-server.js.map +1 -0
- package/dist/nuxt/runtime/server/routes/collab/[id].d.ts +5 -0
- package/dist/nuxt/runtime/server/routes/collab/[id].js +35 -0
- package/dist/nuxt/runtime/server/routes/collab/[id].js.map +1 -0
- package/dist/nuxt/runtime/server/utils/editor-route.d.ts +11 -0
- package/dist/nuxt/runtime/server/utils/editor-route.js +49 -0
- package/dist/nuxt/runtime/server/utils/editor-route.js.map +1 -0
- package/dist/outline/EditorOutline.js +124 -0
- package/dist/outline/EditorOutline.js.map +1 -0
- package/dist/outline/EditorOutline.vue.d.ts +15 -0
- package/dist/outline/heading-outline.d.ts +26 -0
- package/dist/outline/heading-outline.js +46 -0
- package/dist/outline/heading-outline.js.map +1 -0
- package/dist/outline/index.d.ts +2 -0
- package/dist/outline/index.js +1 -0
- package/dist/outline/react/EditorOutline.d.ts +12 -0
- package/dist/outline/react/EditorOutline.js +112 -0
- package/dist/outline/react/EditorOutline.js.map +1 -0
- package/dist/outline/react.d.ts +2 -0
- package/dist/outline/react.js +1 -0
- package/dist/outline/vue.d.ts +2 -0
- package/dist/outline/vue.js +1 -0
- package/dist/presets/advanced.d.ts +33 -0
- package/dist/presets/advanced.js +50 -0
- package/dist/presets/advanced.js.map +1 -0
- package/dist/presets/simple.d.ts +9 -0
- package/dist/presets/simple.js +12 -0
- package/dist/presets/simple.js.map +1 -0
- package/dist/react/AdvancedEditor.d.ts +23 -0
- package/dist/react/AdvancedEditor.js +24 -0
- package/dist/react/AdvancedEditor.js.map +1 -0
- package/dist/react/EditorSettingsModal.d.ts +14 -0
- package/dist/react/EditorSettingsModal.js +40 -0
- package/dist/react/EditorSettingsModal.js.map +1 -0
- package/dist/react/EditorSettingsPanel.d.ts +18 -0
- package/dist/react/EditorSettingsPanel.js +40 -0
- package/dist/react/EditorSettingsPanel.js.map +1 -0
- package/dist/react/EditorSurface.d.ts +61 -0
- package/dist/react/EditorSurface.js +277 -0
- package/dist/react/EditorSurface.js.map +1 -0
- package/dist/react/EditorToolbar.d.ts +15 -0
- package/dist/react/EditorToolbar.js +182 -0
- package/dist/react/EditorToolbar.js.map +1 -0
- package/dist/react/Icon.d.ts +13 -0
- package/dist/react/Icon.js +19 -0
- package/dist/react/Icon.js.map +1 -0
- package/dist/react/SettingsSection.d.ts +10 -0
- package/dist/react/SettingsSection.js +22 -0
- package/dist/react/SettingsSection.js.map +1 -0
- package/dist/react/SimpleEditor.d.ts +27 -0
- package/dist/react/SimpleEditor.js +22 -0
- package/dist/react/SimpleEditor.js.map +1 -0
- package/dist/react/advanced-preset.d.ts +11 -0
- package/dist/react/advanced-preset.js +31 -0
- package/dist/react/advanced-preset.js.map +1 -0
- package/dist/react/advanced.d.ts +4 -0
- package/dist/react/advanced.js +3 -0
- package/dist/react/context.d.ts +12 -0
- package/dist/react/context.js +21 -0
- package/dist/react/context.js.map +1 -0
- package/dist/react/editor-ui.d.ts +14 -0
- package/dist/react/editor-ui.js +20 -0
- package/dist/react/editor-ui.js.map +1 -0
- package/dist/react/index.d.ts +17 -0
- package/dist/react/index.js +17 -0
- package/dist/react/notify.d.ts +6 -0
- package/dist/react/notify.js +25 -0
- package/dist/react/notify.js.map +1 -0
- package/dist/react/settings.d.ts +17 -0
- package/dist/react/settings.js +27 -0
- package/dist/react/settings.js.map +1 -0
- package/dist/react/simple.d.ts +2 -0
- package/dist/react/simple.js +1 -0
- package/dist/react/styles/advanced.css +18 -0
- package/dist/react/styles/themes-bridge.css +26 -0
- package/dist/react/styles/ui-vars.css +20 -0
- package/dist/react/suggestion-renderer.d.ts +12 -0
- package/dist/react/suggestion-renderer.js +90 -0
- package/dist/react/suggestion-renderer.js.map +1 -0
- package/dist/react/ui/alert.js +38 -0
- package/dist/react/ui/alert.js.map +1 -0
- package/dist/react/ui/avatar.js +24 -0
- package/dist/react/ui/avatar.js.map +1 -0
- package/dist/react/ui/badge.js +30 -0
- package/dist/react/ui/badge.js.map +1 -0
- package/dist/react/ui/button.js +50 -0
- package/dist/react/ui/button.js.map +1 -0
- package/dist/react/ui/collapsible.js +19 -0
- package/dist/react/ui/collapsible.js.map +1 -0
- package/dist/react/ui/command.js +47 -0
- package/dist/react/ui/command.js.map +1 -0
- package/dist/react/ui/dialog.js +88 -0
- package/dist/react/ui/dialog.js.map +1 -0
- package/dist/react/ui/dropdown-menu.js +70 -0
- package/dist/react/ui/dropdown-menu.js.map +1 -0
- package/dist/react/ui/input-group.js +57 -0
- package/dist/react/ui/input-group.js.map +1 -0
- package/dist/react/ui/input.js +16 -0
- package/dist/react/ui/input.js.map +1 -0
- package/dist/react/ui/label.js +17 -0
- package/dist/react/ui/label.js.map +1 -0
- package/dist/react/ui/popover.js +36 -0
- package/dist/react/ui/popover.js.map +1 -0
- package/dist/react/ui/radio-group.js +29 -0
- package/dist/react/ui/radio-group.js.map +1 -0
- package/dist/react/ui/select.js +88 -0
- package/dist/react/ui/select.js.map +1 -0
- package/dist/react/ui/separator.js +18 -0
- package/dist/react/ui/separator.js.map +1 -0
- package/dist/react/ui/switch.js +21 -0
- package/dist/react/ui/switch.js.map +1 -0
- package/dist/react/ui/table.js +44 -0
- package/dist/react/ui/table.js.map +1 -0
- package/dist/react/ui/tabs.js +41 -0
- package/dist/react/ui/tabs.js.map +1 -0
- package/dist/react/ui/textarea.js +15 -0
- package/dist/react/ui/textarea.js.map +1 -0
- package/dist/react/ui/tooltip.js +37 -0
- package/dist/react/ui/tooltip.js.map +1 -0
- package/dist/react/ui/utils.d.ts +5 -0
- package/dist/react/ui/utils.js +10 -0
- package/dist/react/ui/utils.js.map +1 -0
- package/dist/react/use-editor-i18n.d.ts +12 -0
- package/dist/react/use-editor-i18n.js +17 -0
- package/dist/react/use-editor-i18n.js.map +1 -0
- package/dist/react/use-notifier.d.ts +11 -0
- package/dist/react/use-notifier.js +25 -0
- package/dist/react/use-notifier.js.map +1 -0
- package/dist/react/use-store.d.ts +6 -0
- package/dist/react/use-store.js +10 -0
- package/dist/react/use-store.js.map +1 -0
- package/dist/schema/advanced.d.ts +14 -0
- package/dist/schema/advanced.js +43 -0
- package/dist/schema/advanced.js.map +1 -0
- package/dist/schema/simple.d.ts +10 -0
- package/dist/schema/simple.js +13 -0
- package/dist/schema/simple.js.map +1 -0
- package/dist/server/adapter.d.ts +101 -0
- package/dist/server/ai.d.ts +101 -0
- package/dist/server/ai.js +105 -0
- package/dist/server/ai.js.map +1 -0
- package/dist/server/collab-state.d.ts +16 -0
- package/dist/server/collab-state.js +43 -0
- package/dist/server/collab-state.js.map +1 -0
- package/dist/server/collab.d.ts +68 -0
- package/dist/server/collab.js +187 -0
- package/dist/server/collab.js.map +1 -0
- package/dist/server/errors.d.ts +17 -0
- package/dist/server/errors.js +26 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/handlers/ai.d.ts +223 -0
- package/dist/server/handlers/ai.js +422 -0
- package/dist/server/handlers/ai.js.map +1 -0
- package/dist/server/handlers/context.d.ts +64 -0
- package/dist/server/handlers/context.js +85 -0
- package/dist/server/handlers/context.js.map +1 -0
- package/dist/server/handlers/editor.d.ts +107 -0
- package/dist/server/handlers/editor.js +241 -0
- package/dist/server/handlers/editor.js.map +1 -0
- package/dist/server/handlers/index.d.ts +4 -0
- package/dist/server/handlers/index.js +4 -0
- package/dist/server/host.d.ts +61 -0
- package/dist/server/host.js +105 -0
- package/dist/server/host.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.js +7 -0
- package/dist/server/node.d.ts +24 -0
- package/dist/server/node.js +54 -0
- package/dist/server/node.js.map +1 -0
- package/dist/server/rate-limit.d.ts +22 -0
- package/dist/server/rate-limit.js +34 -0
- package/dist/server/rate-limit.js.map +1 -0
- package/dist/settings/index.d.ts +110 -0
- package/dist/settings/index.js +114 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/values.d.ts +35 -0
- package/dist/settings/values.js +41 -0
- package/dist/settings/values.js.map +1 -0
- package/dist/styles/ai.css +77 -0
- package/dist/styles/authors.css +18 -0
- package/dist/styles/block-ui.css +16 -0
- package/dist/styles/collab.css +26 -0
- package/dist/styles/comments.css +11 -0
- package/dist/styles/composites.css +56 -0
- package/dist/styles/core.css +99 -0
- package/dist/styles/media.css +8 -0
- package/dist/styles/mentions.css +24 -0
- package/dist/styles/tables.css +25 -0
- package/dist/styles/themes.css +622 -0
- package/dist/styles/tokens.css +29 -0
- package/dist/styles/transcript.css +13 -0
- package/dist/tree/DocumentTree.js +595 -0
- package/dist/tree/DocumentTree.js.map +1 -0
- package/dist/tree/DocumentTree.vue.d.ts +36 -0
- package/dist/tree/folder-paths.js +11 -0
- package/dist/tree/folder-paths.js.map +1 -0
- package/dist/tree/index.d.ts +4 -0
- package/dist/tree/index.js +1 -0
- package/dist/tree/react/DocumentTree.d.ts +24 -0
- package/dist/tree/react/DocumentTree.js +579 -0
- package/dist/tree/react/DocumentTree.js.map +1 -0
- package/dist/tree/react/use-tree-view.d.ts +14 -0
- package/dist/tree/react/use-tree-view.js +21 -0
- package/dist/tree/react/use-tree-view.js.map +1 -0
- package/dist/tree/react.d.ts +3 -0
- package/dist/tree/react.js +3 -0
- package/dist/tree/store.d.ts +45 -0
- package/dist/tree/tree-items.js +221 -0
- package/dist/tree/tree-items.js.map +1 -0
- package/dist/tree/tree-view-model.d.ts +29 -0
- package/dist/tree/tree-view-model.js +71 -0
- package/dist/tree/tree-view-model.js.map +1 -0
- package/dist/tree/tree-view.d.ts +15 -0
- package/dist/tree/tree-view.js +21 -0
- package/dist/tree/tree-view.js.map +1 -0
- package/dist/tree/types.d.ts +23 -0
- package/dist/tree/types.js +0 -0
- package/dist/tree/vue.d.ts +3 -0
- package/dist/tree/vue.js +3 -0
- package/dist/vue/AdvancedEditor.js +100 -0
- package/dist/vue/AdvancedEditor.js.map +1 -0
- package/dist/vue/AdvancedEditor.vue.d.ts +71 -0
- package/dist/vue/SimpleEditor.js +61 -0
- package/dist/vue/SimpleEditor.js.map +1 -0
- package/dist/vue/SimpleEditor.vue.d.ts +36 -0
- package/dist/vue/advanced-preset.d.ts +13 -0
- package/dist/vue/advanced-preset.js +33 -0
- package/dist/vue/advanced-preset.js.map +1 -0
- package/dist/vue/advanced.d.ts +3 -0
- package/dist/vue/advanced.js +3 -0
- package/dist/vue/components/EditorSettingsModal.js +69 -0
- package/dist/vue/components/EditorSettingsModal.js.map +1 -0
- package/dist/vue/components/EditorSettingsModal.vue.d.ts +24 -0
- package/dist/vue/components/EditorSettingsPanel.js +58 -0
- package/dist/vue/components/EditorSettingsPanel.js.map +1 -0
- package/dist/vue/components/EditorSettingsPanel.vue.d.ts +29 -0
- package/dist/vue/components/EditorSurface.js +229 -0
- package/dist/vue/components/EditorSurface.js.map +1 -0
- package/dist/vue/components/EditorSurface.vue.d.ts +68 -0
- package/dist/vue/components/EditorToolbar.js +189 -0
- package/dist/vue/components/EditorToolbar.js.map +1 -0
- package/dist/vue/components/EditorToolbar.vue.d.ts +17 -0
- package/dist/vue/components/SettingsSection.js +26 -0
- package/dist/vue/components/SettingsSection.js.map +1 -0
- package/dist/vue/components/SettingsSection.vue.d.ts +21 -0
- package/dist/vue/components/SuggestionList.js +91 -0
- package/dist/vue/components/SuggestionList.js.map +1 -0
- package/dist/vue/components/SuggestionList.vue.d.ts +19 -0
- package/dist/vue/context.d.ts +24 -0
- package/dist/vue/context.js +42 -0
- package/dist/vue/context.js.map +1 -0
- package/dist/vue/index.d.ts +26 -0
- package/dist/vue/index.js +16 -0
- package/dist/vue/kit/index.d.ts +3 -0
- package/dist/vue/kit/index.js +1 -0
- package/dist/vue/kit/nuxt-ui.css +24 -0
- package/dist/vue/kit/nuxt-ui.d.ts +31 -0
- package/dist/vue/kit/nuxt-ui.js +101 -0
- package/dist/vue/kit/nuxt-ui.js.map +1 -0
- package/dist/vue/kit/types.d.ts +370 -0
- package/dist/vue/kit/use-ui-kit.d.ts +12 -0
- package/dist/vue/kit/use-ui-kit.js +17 -0
- package/dist/vue/kit/use-ui-kit.js.map +1 -0
- package/dist/vue/notify.d.ts +12 -0
- package/dist/vue/notify.js +27 -0
- package/dist/vue/notify.js.map +1 -0
- package/dist/vue/settings.d.ts +16 -0
- package/dist/vue/settings.js +64 -0
- package/dist/vue/settings.js.map +1 -0
- package/dist/vue/simple.d.ts +2 -0
- package/dist/vue/simple.js +1 -0
- package/dist/vue/store-ref.d.ts +20 -0
- package/dist/vue/store-ref.js +59 -0
- package/dist/vue/store-ref.js.map +1 -0
- package/dist/vue/suggestion-renderer.d.ts +6 -0
- package/dist/vue/suggestion-renderer.js +20 -0
- package/dist/vue/suggestion-renderer.js.map +1 -0
- package/dist/vue/use-editor-i18n.d.ts +12 -0
- package/dist/vue/use-editor-i18n.js +17 -0
- package/dist/vue/use-editor-i18n.js.map +1 -0
- package/dist/vue/use-editor-ui.d.ts +15 -0
- package/dist/vue/use-editor-ui.js +23 -0
- package/dist/vue/use-editor-ui.js.map +1 -0
- package/dist/vue/use-notifier.d.ts +11 -0
- package/dist/vue/use-notifier.js +19 -0
- package/dist/vue/use-notifier.js.map +1 -0
- package/docs/extending.md +538 -0
- package/docs/integration.md +537 -0
- package/docs/llms.md +375 -0
- package/docs/usage.md +1071 -0
- package/package.json +619 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","names":[],"sources":["../../../src/features/transcript/feature.ts"],"sourcesContent":["import type { NodeViewRenderer } from '@tiptap/core'\nimport type { EditorFeature } from '../../core'\nimport { commandItem, filterMetadataItems } from '../../core'\nimport { ABILITY } from '../../core/schema'\nimport { speakerConversions } from './convert'\nimport { segmentSpeakerLines } from './segment'\nimport { TranscriptSegmentNode } from './segment-node'\nimport { speakersIn } from './speakers'\n\n/** What a framework binding supplies to the transcript feature: the node view of the speaker segment. */\nexport interface TranscriptUi {\n nodeViews: {\n transcriptSegment: NodeViewRenderer\n }\n}\n\n/**\n * The speaker segment node with the node view of a framework binding (`VueNodeViewRenderer(TranscriptSegmentView)`,\n * `ReactNodeViewRenderer(TranscriptSegmentView)`). TipTap's default `NodeView.stopEvent` already hands INPUT events to\n * the speaker field, not ProseMirror.\n */\nexport function transcriptSegment(nodeViews: TranscriptUi['nodeViews']) {\n return TranscriptSegmentNode.extend({\n // Explicit return type: keeps the declaration independent of the framework view's inferred types.\n addNodeView(): NodeViewRenderer {\n return nodeViews.transcriptSegment\n },\n })\n}\n\n/**\n * Speaker segments: the node with its speaker field, the „Sprecherblock“ toolbar button (Mod-Shift-S), the conversion\n * into speaker lines and a built-in `speakers` list (speakers already in the document, no backend). Contributes the\n * `segment` stage: `**Name:** text` lines of imported or AI-written Markdown become segments. The only framework part is\n * the node view (`ui.nodeViews`), so the descriptor carries no component slot.\n */\nexport function transcriptFeatureCore(ui: TranscriptUi): EditorFeature<never> {\n const TranscriptSegment = transcriptSegment(ui.nodeViews)\n return {\n id: 'transcript',\n extensions: () => [TranscriptSegment],\n toolbar: ctx => [{\n id: 'inserts',\n order: 50,\n items: [\n commandItem({\n id: 'speaker',\n order: 10,\n icon: 'i-lucide-speech',\n label: ctx.t('transcript.toolbar.speaker'),\n kbds: ['meta', 'shift', 's'],\n ability: ABILITY.transcript,\n command: c => c.toggleTranscriptSegment(),\n isActive: e => e.isActive('transcriptSegment'),\n }),\n ],\n }],\n metadataDefaults: () => ({\n speakers: ({ query, editor }) => filterMetadataItems(speakersIn(editor.state.doc).map(s => ({ id: s, label: s })), query),\n }),\n conversions: [speakerConversions],\n blocks: { segment: segmentSpeakerLines },\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAqBA,SAAgB,kBAAkB,WAAsC;CACtE,OAAO,sBAAsB,OAAO,EAElC,cAAgC;EAC9B,OAAO,UAAU;CACnB,EACF,CAAC;AACH;;;;;;;AAQA,SAAgB,sBAAsB,IAAwC;CAC5E,MAAM,oBAAoB,kBAAkB,GAAG,SAAS;CACxD,OAAO;EACL,IAAI;EACJ,kBAAkB,CAAC,iBAAiB;EACpC,UAAS,QAAO,CAAC;GACf,IAAI;GACJ,OAAO;GACP,OAAO,CACL,YAAY;IACV,IAAI;IACJ,OAAO;IACP,MAAM;IACN,OAAO,IAAI,EAAE,4BAA4B;IACzC,MAAM;KAAC;KAAQ;KAAS;IAAG;IAC3B,SAAS,QAAQ;IACjB,UAAS,MAAK,EAAE,wBAAwB;IACxC,WAAU,MAAK,EAAE,SAAS,mBAAmB;GAC/C,CAAC,CACH;EACF,CAAC;EACD,yBAAyB,EACvB,WAAW,EAAE,OAAO,aAAa,oBAAoB,WAAW,OAAO,MAAM,GAAG,CAAC,CAAC,KAAI,OAAM;GAAE,IAAI;GAAG,OAAO;EAAE,EAAE,GAAG,KAAK,EAC1H;EACA,aAAa,CAAC,kBAAkB;EAChC,QAAQ,EAAE,SAAS,oBAAoB;CACzC;AACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { speakerConversions } from "./convert.js";
|
|
2
|
+
import { TranscriptUi, transcriptFeatureCore, transcriptSegment } from "./feature.js";
|
|
3
|
+
import { segmentSpeakerLines } from "./segment.js";
|
|
4
|
+
import { TranscriptSegmentNode, speakerParagraphsToSegments } from "./segment-node.js";
|
|
5
|
+
import { lastSpeaker, speakersIn } from "./speakers.js";
|
|
6
|
+
import { transcriptSchemaExtensions } from "./schema.js";
|
|
7
|
+
export { TranscriptSegmentNode, type TranscriptUi, lastSpeaker, segmentSpeakerLines, speakerConversions, speakerParagraphsToSegments, speakersIn, transcriptFeatureCore, transcriptSchemaExtensions, transcriptSegment };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { lastSpeaker, speakersIn } from "./speakers.js";
|
|
2
|
+
import { speakerConversions } from "./convert.js";
|
|
3
|
+
import { TranscriptSegmentNode, speakerParagraphsToSegments } from "./segment-node.js";
|
|
4
|
+
import { segmentSpeakerLines } from "./segment.js";
|
|
5
|
+
import { transcriptFeatureCore, transcriptSegment } from "./feature.js";
|
|
6
|
+
import { transcriptSchemaExtensions } from "./schema.js";
|
|
7
|
+
export { TranscriptSegmentNode, lastSpeaker, segmentSpeakerLines, speakerConversions, speakerParagraphsToSegments, speakersIn, transcriptFeatureCore, transcriptSchemaExtensions, transcriptSegment };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NodeViewProps } from "@tiptap/react";
|
|
2
|
+
//#region src/features/transcript/react/TranscriptSegmentView.d.ts
|
|
3
|
+
/** The speaker segment: the speaker field (with a suggestion list of the `speakers` metadata) beside the editable text. */
|
|
4
|
+
export declare function TranscriptSegmentView({ node, editor, selected, updateAttributes, getPos }: NodeViewProps): import("react").JSX.Element;
|
|
5
|
+
//#endregion
|
|
6
|
+
//# sourceMappingURL=TranscriptSegmentView.d.ts.map
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { metadataOf } from "../../../core/metadata.js";
|
|
2
|
+
import { METADATA_LIST } from "../../../core/metadata-types.js";
|
|
3
|
+
import { useEditorI18n } from "../../../react/use-editor-i18n.js";
|
|
4
|
+
import { cn } from "../../../react/ui/utils.js";
|
|
5
|
+
import { SuggestionList } from "../../../react/suggestion-renderer.js";
|
|
6
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { NodeViewContent, NodeViewWrapper } from "@tiptap/react";
|
|
9
|
+
//#region src/features/transcript/react/TranscriptSegmentView.tsx
|
|
10
|
+
const displayItem = (item) => ({ label: item.label });
|
|
11
|
+
/** The speaker segment: the speaker field (with a suggestion list of the `speakers` metadata) beside the editable text. */
|
|
12
|
+
function TranscriptSegmentView({ node, editor, selected, updateAttributes, getPos }) {
|
|
13
|
+
const { t } = useEditorI18n();
|
|
14
|
+
const speaker = String(node.attrs.speaker ?? "");
|
|
15
|
+
const [draft, setDraft] = useState(speaker);
|
|
16
|
+
const focused = useRef(false);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!focused.current) setDraft(speaker);
|
|
19
|
+
}, [speaker]);
|
|
20
|
+
const [readonly, setReadonly] = useState(false);
|
|
21
|
+
const [open, setOpen] = useState(false);
|
|
22
|
+
const [items, setItems] = useState([]);
|
|
23
|
+
const list = useRef(null);
|
|
24
|
+
const timer = useRef(void 0);
|
|
25
|
+
const pending = useRef(void 0);
|
|
26
|
+
const scheduleSearch = (query) => {
|
|
27
|
+
clearTimeout(timer.current);
|
|
28
|
+
timer.current = setTimeout(async () => {
|
|
29
|
+
pending.current?.abort();
|
|
30
|
+
const controller = pending.current = new AbortController();
|
|
31
|
+
try {
|
|
32
|
+
const found = await metadataOf(editor).search(METADATA_LIST.speakers, {
|
|
33
|
+
query,
|
|
34
|
+
editor,
|
|
35
|
+
signal: controller.signal
|
|
36
|
+
});
|
|
37
|
+
if (!controller.signal.aborted) setItems(found.filter((item) => item.label.trim()));
|
|
38
|
+
} catch (error) {
|
|
39
|
+
if (!controller.signal.aborted) console.warn("Sprecher-Vorschläge konnten nicht geladen werden", error);
|
|
40
|
+
}
|
|
41
|
+
}, 150);
|
|
42
|
+
};
|
|
43
|
+
useEffect(() => () => {
|
|
44
|
+
clearTimeout(timer.current);
|
|
45
|
+
pending.current?.abort();
|
|
46
|
+
}, []);
|
|
47
|
+
const openList = (query) => {
|
|
48
|
+
if (!editor.isEditable) return;
|
|
49
|
+
setOpen(true);
|
|
50
|
+
scheduleSearch(query);
|
|
51
|
+
};
|
|
52
|
+
const closeList = useCallback(() => {
|
|
53
|
+
setOpen(false);
|
|
54
|
+
clearTimeout(timer.current);
|
|
55
|
+
pending.current?.abort();
|
|
56
|
+
}, []);
|
|
57
|
+
/** Writes the draft to the node; a name the speaker list does not know yet is added to it (reported via `metadataCreate`). */
|
|
58
|
+
const commit = async (name = draft.trim()) => {
|
|
59
|
+
setDraft(name);
|
|
60
|
+
if (readonly || name === speaker) return;
|
|
61
|
+
const found = name ? metadataOf(editor).search(METADATA_LIST.speakers, {
|
|
62
|
+
query: name,
|
|
63
|
+
editor
|
|
64
|
+
}) : null;
|
|
65
|
+
updateAttributes({ speaker: name });
|
|
66
|
+
if (!found) return;
|
|
67
|
+
if (!(await found).some((item) => item.label.toLowerCase() === name.toLowerCase())) metadataOf(editor).create(METADATA_LIST.speakers, {
|
|
68
|
+
id: name,
|
|
69
|
+
label: name
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const pick = (item) => {
|
|
73
|
+
closeList();
|
|
74
|
+
commit(item.label);
|
|
75
|
+
};
|
|
76
|
+
/** The speaker field of the segment `step` places before/after this one (document order), if any. */
|
|
77
|
+
const neighbourField = (input, step) => {
|
|
78
|
+
const fields = [...editor.view.dom.querySelectorAll(".transcript-segment__speaker input")];
|
|
79
|
+
return fields[fields.indexOf(input) + step];
|
|
80
|
+
};
|
|
81
|
+
const onKeyDown = (e) => {
|
|
82
|
+
if (open && items.length && list.current?.onKeyDown(e.nativeEvent)) {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const input = e.currentTarget;
|
|
87
|
+
if (e.key === "Escape" && open) {
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
closeList();
|
|
90
|
+
} else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
|
|
91
|
+
const next = neighbourField(input, e.key === "ArrowUp" ? -1 : 1);
|
|
92
|
+
if (!next) return;
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
next.focus();
|
|
95
|
+
next.setSelectionRange(next.value.length, next.value.length);
|
|
96
|
+
} else if (e.key === "Enter") {
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
input.blur();
|
|
99
|
+
editor.commands.focus(getPos() + node.nodeSize - 1);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
return /* @__PURE__ */ jsx(NodeViewWrapper, {
|
|
103
|
+
className: cn("transcript-segment my-2", selected && "is-selected rounded-md ring-1 ring-primary"),
|
|
104
|
+
"data-type": "transcript-segment",
|
|
105
|
+
"data-id": node.attrs.id || void 0,
|
|
106
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
107
|
+
className: "grid grid-cols-[5.5rem_1fr] items-start gap-2",
|
|
108
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
109
|
+
className: "transcript-segment__speaker relative pt-0.5",
|
|
110
|
+
contentEditable: false,
|
|
111
|
+
children: [/* @__PURE__ */ jsx("input", {
|
|
112
|
+
value: draft,
|
|
113
|
+
title: draft || void 0,
|
|
114
|
+
placeholder: t("transcript.speaker"),
|
|
115
|
+
"aria-label": t("transcript.speaker"),
|
|
116
|
+
autoComplete: "off",
|
|
117
|
+
role: "combobox",
|
|
118
|
+
"aria-expanded": open && items.length > 0,
|
|
119
|
+
readOnly: readonly,
|
|
120
|
+
className: "w-full truncate rounded bg-transparent px-1 text-sm text-muted-foreground outline-none placeholder:text-muted-foreground/60 focus:bg-muted focus:text-foreground",
|
|
121
|
+
onFocus: () => {
|
|
122
|
+
focused.current = true;
|
|
123
|
+
setReadonly(!editor.isEditable);
|
|
124
|
+
},
|
|
125
|
+
onBlur: () => {
|
|
126
|
+
focused.current = false;
|
|
127
|
+
closeList();
|
|
128
|
+
commit();
|
|
129
|
+
},
|
|
130
|
+
onMouseDown: () => openList(""),
|
|
131
|
+
onChange: (e) => {
|
|
132
|
+
setDraft(e.target.value);
|
|
133
|
+
openList(e.target.value);
|
|
134
|
+
},
|
|
135
|
+
onKeyDown
|
|
136
|
+
}), open && items.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
137
|
+
className: "absolute top-full left-0 z-50 mt-1",
|
|
138
|
+
children: /* @__PURE__ */ jsx(SuggestionList, {
|
|
139
|
+
ref: list,
|
|
140
|
+
items,
|
|
141
|
+
display: displayItem,
|
|
142
|
+
command: pick,
|
|
143
|
+
loading: false,
|
|
144
|
+
loadingText: "",
|
|
145
|
+
emptyText: ""
|
|
146
|
+
})
|
|
147
|
+
})]
|
|
148
|
+
}), /* @__PURE__ */ jsx(NodeViewContent, { className: "transcript-segment__text" })]
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//#endregion
|
|
153
|
+
export { TranscriptSegmentView };
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=TranscriptSegmentView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TranscriptSegmentView.js","names":[],"sources":["../../../../src/features/transcript/react/TranscriptSegmentView.tsx"],"sourcesContent":["import { NodeViewContent, NodeViewWrapper, type NodeViewProps } from '@tiptap/react'\nimport { type KeyboardEvent as ReactKeyboardEvent, useCallback, useEffect, useRef, useState } from 'react'\nimport { METADATA_LIST, type MetadataItem, metadataOf } from '../../../core'\nimport { SuggestionList, type SuggestionListHandle } from '../../../react/suggestion-renderer'\nimport { cn } from '../../../react/ui/utils'\nimport { useEditorI18n } from '../../../react/use-editor-i18n'\n\n// Module-level so the list's memoised rows keep their identity across renders.\nconst displayItem = (item: unknown) => ({ label: (item as MetadataItem).label })\n\n/** The speaker segment: the speaker field (with a suggestion list of the `speakers` metadata) beside the editable text. */\nexport function TranscriptSegmentView({ node, editor, selected, updateAttributes, getPos }: NodeViewProps) {\n const { t } = useEditorI18n()\n const speaker = String(node.attrs.speaker ?? '')\n // Typed text is a draft until committed (blur, Enter, picking a suggestion): one undo step per name, and the\n // speaker list is only extended with whole names, not with every prefix typed on the way.\n const [draft, setDraft] = useState(speaker)\n const focused = useRef(false)\n useEffect(() => {\n if (!focused.current) setDraft(speaker)\n }, [speaker])\n // `editor.isEditable` is not reactive, so a read-only editor is detected when the input gets focus.\n const [readonly, setReadonly] = useState(false)\n\n const [open, setOpen] = useState(false)\n const [items, setItems] = useState<MetadataItem[]>([])\n const list = useRef<SuggestionListHandle>(null)\n\n // Same loading as the composite tags: 150 ms after typing pauses, a newer search aborts the older one (sources may be remote).\n const timer = useRef<ReturnType<typeof setTimeout>>(undefined)\n const pending = useRef<AbortController>(undefined)\n const scheduleSearch = (query: string) => {\n clearTimeout(timer.current)\n timer.current = setTimeout(async () => {\n pending.current?.abort()\n const controller = pending.current = new AbortController()\n try {\n const found = await metadataOf(editor).search(METADATA_LIST.speakers, { query, editor, signal: controller.signal })\n if (!controller.signal.aborted) setItems(found.filter(item => item.label.trim()))\n }\n catch (error) {\n if (!controller.signal.aborted) console.warn('Sprecher-Vorschläge konnten nicht geladen werden', error)\n }\n }, 150)\n }\n useEffect(() => () => {\n clearTimeout(timer.current)\n pending.current?.abort()\n }, [])\n\n const openList = (query: string) => {\n if (!editor.isEditable) return\n setOpen(true)\n scheduleSearch(query)\n }\n\n const closeList = useCallback(() => {\n setOpen(false)\n clearTimeout(timer.current)\n pending.current?.abort()\n }, [])\n\n /** Writes the draft to the node; a name the speaker list does not know yet is added to it (reported via `metadataCreate`). */\n const commit = async (name = draft.trim()) => {\n setDraft(name)\n if (readonly || name === speaker) return\n // Searched before the node changes: `search` calls the source synchronously, so a list derived from the document\n // (the default `speakers`) does not already contain the name just typed here.\n const found = name ? metadataOf(editor).search(METADATA_LIST.speakers, { query: name, editor }) : null\n updateAttributes({ speaker: name })\n if (!found) return\n if (!(await found).some(item => item.label.toLowerCase() === name.toLowerCase())) {\n metadataOf(editor).create(METADATA_LIST.speakers, { id: name, label: name })\n }\n }\n\n const pick = (item: unknown) => {\n closeList()\n void commit((item as MetadataItem).label)\n }\n\n /** The speaker field of the segment `step` places before/after this one (document order), if any. */\n const neighbourField = (input: HTMLInputElement, step: -1 | 1): HTMLInputElement | undefined => {\n const fields = [...editor.view.dom.querySelectorAll<HTMLInputElement>('.transcript-segment__speaker input')]\n return fields[fields.indexOf(input) + step]\n }\n\n // An open list takes ArrowUp/ArrowDown/Enter/Tab; otherwise ArrowUp/ArrowDown move to the neighbouring segment's\n // speaker and Enter continues in this segment's text.\n const onKeyDown = (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (open && items.length && list.current?.onKeyDown(e.nativeEvent)) {\n e.preventDefault()\n return\n }\n const input = e.currentTarget\n if (e.key === 'Escape' && open) {\n e.preventDefault()\n closeList()\n }\n else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n const next = neighbourField(input, e.key === 'ArrowUp' ? -1 : 1)\n if (!next) return\n e.preventDefault()\n next.focus()\n next.setSelectionRange(next.value.length, next.value.length)\n }\n else if (e.key === 'Enter') {\n e.preventDefault()\n input.blur()\n editor.commands.focus(getPos()! + node.nodeSize - 1)\n }\n }\n\n return (\n <NodeViewWrapper\n className={cn('transcript-segment my-2', selected && 'is-selected rounded-md ring-1 ring-primary')}\n data-type=\"transcript-segment\"\n data-id={node.attrs.id || undefined}\n >\n <div className=\"grid grid-cols-[5.5rem_1fr] items-start gap-2\">\n <div className=\"transcript-segment__speaker relative pt-0.5\" contentEditable={false}>\n <input\n value={draft}\n title={draft || undefined}\n placeholder={t('transcript.speaker')}\n aria-label={t('transcript.speaker')}\n autoComplete=\"off\"\n role=\"combobox\"\n aria-expanded={open && items.length > 0}\n readOnly={readonly}\n className=\"w-full truncate rounded bg-transparent px-1 text-sm text-muted-foreground outline-none placeholder:text-muted-foreground/60 focus:bg-muted focus:text-foreground\"\n onFocus={() => {\n focused.current = true\n setReadonly(!editor.isEditable)\n }}\n onBlur={() => {\n focused.current = false\n closeList()\n void commit()\n }}\n onMouseDown={() => openList('')}\n onChange={(e) => {\n setDraft(e.target.value)\n openList(e.target.value)\n }}\n onKeyDown={onKeyDown}\n />\n {open && items.length > 0 && (\n <div className=\"absolute top-full left-0 z-50 mt-1\">\n <SuggestionList ref={list} items={items} display={displayItem} command={pick} loading={false} loadingText=\"\" emptyText=\"\" />\n </div>\n )}\n </div>\n <NodeViewContent className=\"transcript-segment__text\" />\n </div>\n </NodeViewWrapper>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactFeature } from "../../react/EditorSurface.js";
|
|
2
|
+
import "../../react/index.js";
|
|
3
|
+
import { TranscriptSegmentView } from "./react/TranscriptSegmentView.js";
|
|
4
|
+
//#region src/features/transcript/react.d.ts
|
|
5
|
+
/** The React transcript feature: the speaker segment with its React node view (speaker field and suggestion list). */
|
|
6
|
+
export declare function transcriptFeature(): ReactFeature;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { TranscriptSegmentView };
|
|
9
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { transcriptFeatureCore } from "./feature.js";
|
|
2
|
+
import { TranscriptSegmentView } from "./react/TranscriptSegmentView.js";
|
|
3
|
+
import { ReactNodeViewRenderer } from "@tiptap/react";
|
|
4
|
+
//#region src/features/transcript/react.ts
|
|
5
|
+
/** The React transcript feature: the speaker segment with its React node view (speaker field and suggestion list). */
|
|
6
|
+
function transcriptFeature() {
|
|
7
|
+
return transcriptFeatureCore({ nodeViews: { transcriptSegment: ReactNodeViewRenderer(TranscriptSegmentView) } });
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { TranscriptSegmentView, transcriptFeature };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","names":[],"sources":["../../../src/features/transcript/react.ts"],"sourcesContent":["import { ReactNodeViewRenderer } from '@tiptap/react'\nimport type { ReactFeature } from '../../react'\nimport { transcriptFeatureCore } from './feature'\nimport { TranscriptSegmentView } from './react/TranscriptSegmentView'\n\nexport { TranscriptSegmentView } from './react/TranscriptSegmentView'\n\n/** The React transcript feature: the speaker segment with its React node view (speaker field and suggestion list). */\nexport function transcriptFeature(): ReactFeature {\n return transcriptFeatureCore({ nodeViews: { transcriptSegment: ReactNodeViewRenderer(TranscriptSegmentView) } })\n}\n"],"mappings":";;;;;AAQA,SAAgB,oBAAkC;CAChD,OAAO,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,sBAAsB,qBAAqB,EAAE,EAAE,CAAC;AACjH"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TranscriptSegmentNode, speakerParagraphsToSegments } from "./segment-node.js";
|
|
2
|
+
import { lastSpeaker, speakersIn } from "./speakers.js";
|
|
3
|
+
import { AnyExtension } from "@tiptap/core";
|
|
4
|
+
//#region src/features/transcript/schema.d.ts
|
|
5
|
+
/** The speaker segment node of the document schema. */
|
|
6
|
+
export declare const transcriptSchemaExtensions: () => AnyExtension[];
|
|
7
|
+
//#endregion
|
|
8
|
+
export { TranscriptSegmentNode, lastSpeaker, speakerParagraphsToSegments, speakersIn };
|
|
9
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { lastSpeaker, speakersIn } from "./speakers.js";
|
|
2
|
+
import { TranscriptSegmentNode, speakerParagraphsToSegments } from "./segment-node.js";
|
|
3
|
+
//#region src/features/transcript/schema.ts
|
|
4
|
+
/** The speaker segment node of the document schema. */
|
|
5
|
+
const transcriptSchemaExtensions = () => [TranscriptSegmentNode];
|
|
6
|
+
//#endregion
|
|
7
|
+
export { TranscriptSegmentNode, lastSpeaker, speakerParagraphsToSegments, speakersIn, transcriptSchemaExtensions };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../../src/features/transcript/schema.ts"],"sourcesContent":["import type { AnyExtension } from '@tiptap/core'\nimport { TranscriptSegmentNode } from './segment-node'\n\n// Vue-free and server-importable (`@ecsplico/editor/transcript/schema`): the speaker segment node and the helpers\n// around it. The node view lives in the feature.\n\nexport { speakerParagraphsToSegments, TranscriptSegmentNode } from './segment-node'\nexport { lastSpeaker, speakersIn } from './speakers'\n\n/** The speaker segment node of the document schema. */\nexport const transcriptSchemaExtensions = (): AnyExtension[] => [TranscriptSegmentNode]\n"],"mappings":";;;;AAUA,MAAa,mCAAmD,CAAC,qBAAqB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { JSONContent, Node } from "@tiptap/core";
|
|
2
|
+
//#region src/features/transcript/segment-node.d.ts
|
|
3
|
+
declare module '@tiptap/core' {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
|
+
transcriptSegment: {
|
|
6
|
+
/** Turn the current block into a speaker segment (or back into a paragraph when it already is one). */
|
|
7
|
+
toggleTranscriptSegment: (attrs?: {
|
|
8
|
+
speaker?: string;
|
|
9
|
+
}) => ReturnType;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare const TranscriptSegmentNode: Node<any, any>;
|
|
14
|
+
/**
|
|
15
|
+
* Turns top-level speaker-line paragraphs of parsed Markdown into transcriptSegment nodes (the inverse of
|
|
16
|
+
* renderMarkdown above); every other block is returned unchanged. Applied to AI results on both apply paths.
|
|
17
|
+
* A label without text (`**Aufgaben:**` above a list) is a bold pseudo-heading, not an empty turn, and stays a paragraph.
|
|
18
|
+
*/
|
|
19
|
+
export declare function speakerParagraphsToSegments(doc: JSONContent): JSONContent;
|
|
20
|
+
//#endregion
|
|
21
|
+
//# sourceMappingURL=segment-node.d.ts.map
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ABILITY } from "../../core/schema/abilities.js";
|
|
2
|
+
import { lastSpeaker } from "./speakers.js";
|
|
3
|
+
import { Node, mergeAttributes } from "@tiptap/core";
|
|
4
|
+
import { canSplit } from "@tiptap/pm/transform";
|
|
5
|
+
//#region src/features/transcript/segment-node.ts
|
|
6
|
+
/** Markdown label for a segment without speaker; read back as an empty speaker so export → import round-trips. */
|
|
7
|
+
const UNNAMED_SPEAKER = "Sprecher";
|
|
8
|
+
/** Longer bold paragraph openers („**Bitte beachten Sie Folgendes:** …“) are not treated as speaker labels. */
|
|
9
|
+
const MAX_SPEAKER_LENGTH = 80;
|
|
10
|
+
const TranscriptSegmentNode = Node.create({
|
|
11
|
+
name: "transcriptSegment",
|
|
12
|
+
priority: 101,
|
|
13
|
+
group: "block",
|
|
14
|
+
content: "inline*",
|
|
15
|
+
abilities: { revokes: [
|
|
16
|
+
ABILITY.headings,
|
|
17
|
+
ABILITY.lists,
|
|
18
|
+
ABILITY.blockquote,
|
|
19
|
+
ABILITY.codeBlock,
|
|
20
|
+
ABILITY.blockContent,
|
|
21
|
+
ABILITY.composite,
|
|
22
|
+
ABILITY.media,
|
|
23
|
+
ABILITY.record
|
|
24
|
+
] },
|
|
25
|
+
defining: true,
|
|
26
|
+
addAttributes: () => ({ speaker: {
|
|
27
|
+
default: "",
|
|
28
|
+
parseHTML: (el) => el.getAttribute("data-speaker") ?? "",
|
|
29
|
+
renderHTML: (attrs) => ({ "data-speaker": attrs.speaker })
|
|
30
|
+
} }),
|
|
31
|
+
parseHTML: () => [{ tag: "div[data-type=\"transcript-segment\"]" }],
|
|
32
|
+
renderHTML: ({ HTMLAttributes }) => [
|
|
33
|
+
"div",
|
|
34
|
+
mergeAttributes(HTMLAttributes, { "data-type": "transcript-segment" }),
|
|
35
|
+
0
|
|
36
|
+
],
|
|
37
|
+
renderMarkdown: (node, h) => `**${String(node.attrs?.speaker || UNNAMED_SPEAKER).replace(/[\\*_`[\]<>~]/g, "\\$&")}:** ${h.renderChildren(node.content ?? [])}`,
|
|
38
|
+
addCommands() {
|
|
39
|
+
return { toggleTranscriptSegment: (attrs = {}) => ({ editor, commands }) => editor.isActive(this.name) ? commands.setNode("paragraph") : commands.setNode(this.name, { speaker: attrs.speaker ?? lastSpeaker(editor.state.doc) }) };
|
|
40
|
+
},
|
|
41
|
+
addKeyboardShortcuts() {
|
|
42
|
+
return {
|
|
43
|
+
Enter: () => {
|
|
44
|
+
const { $from } = this.editor.state.selection;
|
|
45
|
+
if ($from.parent.type.name !== this.name) return false;
|
|
46
|
+
const type = $from.parent.type;
|
|
47
|
+
const speaker = String($from.parent.attrs.speaker ?? "");
|
|
48
|
+
return this.editor.commands.command(({ tr, state, dispatch }) => {
|
|
49
|
+
const marks = state.storedMarks ?? ($from.parentOffset ? $from.marks() : null);
|
|
50
|
+
const after = [{
|
|
51
|
+
type,
|
|
52
|
+
attrs: { speaker }
|
|
53
|
+
}];
|
|
54
|
+
if (!canSplit(state.doc, state.selection.from, 1, after)) return false;
|
|
55
|
+
if (dispatch) {
|
|
56
|
+
if (!tr.selection.empty) tr.deleteSelection();
|
|
57
|
+
tr.split(tr.selection.from, 1, after);
|
|
58
|
+
if (marks) tr.ensureMarks(marks);
|
|
59
|
+
tr.scrollIntoView();
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
"Mod-Shift-s": () => this.editor.commands.toggleTranscriptSegment()
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Speaker name of a speaker line, i.e. a paragraph whose first inline node is bold-only text `Name:`
|
|
70
|
+
* (Markdown `**Name:** text`), or null. Bold elsewhere in the paragraph does not count.
|
|
71
|
+
*/
|
|
72
|
+
function speakerOf(block) {
|
|
73
|
+
const first = block.content?.[0];
|
|
74
|
+
if (block.type !== "paragraph" || first?.type !== "text" || !first.text?.endsWith(":")) return null;
|
|
75
|
+
if (first.marks?.length !== 1 || first.marks[0].type !== "bold") return null;
|
|
76
|
+
const name = first.text.slice(0, -1).trim();
|
|
77
|
+
if (!name || name.length > MAX_SPEAKER_LENGTH || name.includes("\n")) return null;
|
|
78
|
+
return name;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Turns top-level speaker-line paragraphs of parsed Markdown into transcriptSegment nodes (the inverse of
|
|
82
|
+
* renderMarkdown above); every other block is returned unchanged. Applied to AI results on both apply paths.
|
|
83
|
+
* A label without text (`**Aufgaben:**` above a list) is a bold pseudo-heading, not an empty turn, and stays a paragraph.
|
|
84
|
+
*/
|
|
85
|
+
function speakerParagraphsToSegments(doc) {
|
|
86
|
+
if (!doc.content) return doc;
|
|
87
|
+
return {
|
|
88
|
+
...doc,
|
|
89
|
+
content: doc.content.map((block) => {
|
|
90
|
+
const name = speakerOf(block);
|
|
91
|
+
if (name === null) return block;
|
|
92
|
+
const content = block.content.slice(1);
|
|
93
|
+
if (content.every((node) => node.type === "text" && !node.text?.trim())) return block;
|
|
94
|
+
const next = content[0];
|
|
95
|
+
if (next?.type === "text" && next.text && /^\s/.test(next.text)) {
|
|
96
|
+
if (next.text.length === 1) content.shift();
|
|
97
|
+
else content[0] = {
|
|
98
|
+
...next,
|
|
99
|
+
text: next.text.slice(1)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
type: "transcriptSegment",
|
|
104
|
+
attrs: { speaker: name === UNNAMED_SPEAKER ? "" : name },
|
|
105
|
+
content
|
|
106
|
+
};
|
|
107
|
+
})
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
export { TranscriptSegmentNode, speakerParagraphsToSegments };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=segment-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-node.js","names":[],"sources":["../../../src/features/transcript/segment-node.ts"],"sourcesContent":["import { type JSONContent, mergeAttributes, Node } from '@tiptap/core'\nimport { canSplit } from '@tiptap/pm/transform'\nimport { ABILITY } from '../../core/schema'\nimport { lastSpeaker } from './speakers'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n transcriptSegment: {\n /** Turn the current block into a speaker segment (or back into a paragraph when it already is one). */\n toggleTranscriptSegment: (attrs?: { speaker?: string }) => ReturnType\n }\n }\n}\n\n/** Markdown label for a segment without speaker; read back as an empty speaker so export → import round-trips. */\nconst UNNAMED_SPEAKER = 'Sprecher'\n/** Longer bold paragraph openers („**Bitte beachten Sie Folgendes:** …“) are not treated as speaker labels. */\nconst MAX_SPEAKER_LENGTH = 80\n\n// Schema-only node (no node view): shared by the client editor and the server-side Yjs seeding.\n// The client adds its node view in node-view.ts.\nexport const TranscriptSegmentNode = Node.create({\n name: 'transcriptSegment',\n // Above StarterKit's default (100) so this Enter / Mod-Shift-s keymap runs first,\n // below Paragraph (1000) so the paragraph stays the schema's default block.\n priority: 101,\n group: 'block',\n content: 'inline*',\n // A speaker turn is plain running text: no structural blocks or media inside it.\n abilities: {\n revokes: [ABILITY.headings, ABILITY.lists, ABILITY.blockquote, ABILITY.codeBlock, ABILITY.blockContent, ABILITY.composite, ABILITY.media, ABILITY.record],\n },\n defining: true,\n addAttributes: () => ({\n speaker: {\n default: '',\n parseHTML: (el) => el.getAttribute('data-speaker') ?? '',\n renderHTML: (attrs) => ({ 'data-speaker': attrs.speaker }),\n },\n }),\n parseHTML: () => [{ tag: 'div[data-type=\"transcript-segment\"]' }],\n renderHTML: ({ HTMLAttributes }) => ['div', mergeAttributes(HTMLAttributes, { 'data-type': 'transcript-segment' }), 0],\n // Markdown export (editor.getMarkdown(), AI context/selection) keeps the speaker visible to the model as\n // `**Name:** text`. Import goes through speakerParagraphsToSegments() below, not parseMarkdown: marked yields\n // an ordinary paragraph token, and Paragraph (priority 1000) would always win that token over this node.\n // Backslash-escaped ASCII punctuation parses back to the literal character, so odd names survive the round-trip.\n // No trailing newline: the serializer separates blocks itself; extra blank lines re-import as empty paragraphs.\n renderMarkdown: (node, h) => `**${String(node.attrs?.speaker || UNNAMED_SPEAKER).replace(/[\\\\*_`[\\]<>~]/g, '\\\\$&')}:** ${h.renderChildren(node.content ?? [])}`,\n addCommands() {\n return {\n toggleTranscriptSegment: (attrs = {}) => ({ editor, commands }) =>\n editor.isActive(this.name)\n ? commands.setNode('paragraph')\n : commands.setNode(this.name, { speaker: attrs.speaker ?? lastSpeaker(editor.state.doc) }),\n }\n },\n addKeyboardShortcuts() {\n return {\n // Enter inside a segment splits it into two segments with the same speaker — at the start, middle\n // or end alike. `splitBlock` is not used: it creates the default block (paragraph) at the end and\n // re-types the first half at the start. Shift-Enter keeps StarterKit's hard break.\n Enter: () => {\n const { $from } = this.editor.state.selection\n if ($from.parent.type.name !== this.name) return false\n const type = $from.parent.type\n const speaker = String($from.parent.attrs.speaker ?? '')\n return this.editor.commands.command(({ tr, state, dispatch }) => {\n const marks = state.storedMarks ?? ($from.parentOffset ? $from.marks() : null)\n const after = [{ type, attrs: { speaker } }]\n if (!canSplit(state.doc, state.selection.from, 1, after)) return false\n if (dispatch) {\n if (!tr.selection.empty) tr.deleteSelection()\n tr.split(tr.selection.from, 1, after)\n if (marks) tr.ensureMarks(marks)\n tr.scrollIntoView()\n }\n return true\n })\n },\n 'Mod-Shift-s': () => this.editor.commands.toggleTranscriptSegment(),\n }\n },\n})\n\n/**\n * Speaker name of a speaker line, i.e. a paragraph whose first inline node is bold-only text `Name:`\n * (Markdown `**Name:** text`), or null. Bold elsewhere in the paragraph does not count.\n */\nfunction speakerOf(block: JSONContent): string | null {\n const first = block.content?.[0]\n if (block.type !== 'paragraph' || first?.type !== 'text' || !first.text?.endsWith(':')) return null\n if (first.marks?.length !== 1 || first.marks[0]!.type !== 'bold') return null\n const name = first.text.slice(0, -1).trim()\n if (!name || name.length > MAX_SPEAKER_LENGTH || name.includes('\\n')) return null\n return name\n}\n\n/**\n * Turns top-level speaker-line paragraphs of parsed Markdown into transcriptSegment nodes (the inverse of\n * renderMarkdown above); every other block is returned unchanged. Applied to AI results on both apply paths.\n * A label without text (`**Aufgaben:**` above a list) is a bold pseudo-heading, not an empty turn, and stays a paragraph.\n */\nexport function speakerParagraphsToSegments(doc: JSONContent): JSONContent {\n if (!doc.content) return doc\n return {\n ...doc,\n content: doc.content.map((block) => {\n const name = speakerOf(block)\n if (name === null) return block\n const content = block.content!.slice(1)\n if (content.every(node => node.type === 'text' && !node.text?.trim())) return block\n const next = content[0]\n // renderMarkdown puts exactly one space between label and text; drop only that one.\n if (next?.type === 'text' && next.text && /^\\s/.test(next.text)) {\n if (next.text.length === 1) content.shift()\n else content[0] = { ...next, text: next.text.slice(1) }\n }\n return { type: 'transcriptSegment', attrs: { speaker: name === UNNAMED_SPEAKER ? '' : name }, content }\n }),\n }\n}\n"],"mappings":";;;;;;AAeA,MAAM,kBAAkB;;AAExB,MAAM,qBAAqB;AAI3B,MAAa,wBAAwB,KAAK,OAAO;CAC/C,MAAM;CAGN,UAAU;CACV,OAAO;CACP,SAAS;CAET,WAAW,EACT,SAAS;EAAC,QAAQ;EAAU,QAAQ;EAAO,QAAQ;EAAY,QAAQ;EAAW,QAAQ;EAAc,QAAQ;EAAW,QAAQ;EAAO,QAAQ;CAAM,EAC1J;CACA,UAAU;CACV,sBAAsB,EACpB,SAAS;EACP,SAAS;EACT,YAAY,OAAO,GAAG,aAAa,cAAc,KAAK;EACtD,aAAa,WAAW,EAAE,gBAAgB,MAAM,QAAQ;CAC1D,EACF;CACA,iBAAiB,CAAC,EAAE,KAAK,wCAAsC,CAAC;CAChE,aAAa,EAAE,qBAAqB;EAAC;EAAO,gBAAgB,gBAAgB,EAAE,aAAa,qBAAqB,CAAC;EAAG;CAAC;CAMrH,iBAAiB,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO,WAAW,eAAe,CAAC,CAAC,QAAQ,kBAAkB,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,WAAW,CAAC,CAAC;CAC5J,cAAc;EACZ,OAAO,EACL,0BAA0B,QAAQ,CAAC,OAAO,EAAE,QAAQ,eAClD,OAAO,SAAS,KAAK,IAAI,IACrB,SAAS,QAAQ,WAAW,IAC5B,SAAS,QAAQ,KAAK,MAAM,EAAE,SAAS,MAAM,WAAW,YAAY,OAAO,MAAM,GAAG,EAAE,CAAC,EAC/F;CACF;CACA,uBAAuB;EACrB,OAAO;GAIL,aAAa;IACX,MAAM,EAAE,UAAU,KAAK,OAAO,MAAM;IACpC,IAAI,MAAM,OAAO,KAAK,SAAS,KAAK,MAAM,OAAO;IACjD,MAAM,OAAO,MAAM,OAAO;IAC1B,MAAM,UAAU,OAAO,MAAM,OAAO,MAAM,WAAW,EAAE;IACvD,OAAO,KAAK,OAAO,SAAS,SAAS,EAAE,IAAI,OAAO,eAAe;KAC/D,MAAM,QAAQ,MAAM,gBAAgB,MAAM,eAAe,MAAM,MAAM,IAAI;KACzE,MAAM,QAAQ,CAAC;MAAE;MAAM,OAAO,EAAE,QAAQ;KAAE,CAAC;KAC3C,IAAI,CAAC,SAAS,MAAM,KAAK,MAAM,UAAU,MAAM,GAAG,KAAK,GAAG,OAAO;KACjE,IAAI,UAAU;MACZ,IAAI,CAAC,GAAG,UAAU,OAAO,GAAG,gBAAgB;MAC5C,GAAG,MAAM,GAAG,UAAU,MAAM,GAAG,KAAK;MACpC,IAAI,OAAO,GAAG,YAAY,KAAK;MAC/B,GAAG,eAAe;KACpB;KACA,OAAO;IACT,CAAC;GACH;GACA,qBAAqB,KAAK,OAAO,SAAS,wBAAwB;EACpE;CACF;AACF,CAAC;;;;;AAMD,SAAS,UAAU,OAAmC;CACpD,MAAM,QAAQ,MAAM,UAAU;CAC9B,IAAI,MAAM,SAAS,eAAe,OAAO,SAAS,UAAU,CAAC,MAAM,MAAM,SAAS,GAAG,GAAG,OAAO;CAC/F,IAAI,MAAM,OAAO,WAAW,KAAK,MAAM,MAAM,EAAE,CAAE,SAAS,QAAQ,OAAO;CACzE,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK;CAC1C,IAAI,CAAC,QAAQ,KAAK,SAAS,sBAAsB,KAAK,SAAS,IAAI,GAAG,OAAO;CAC7E,OAAO;AACT;;;;;;AAOA,SAAgB,4BAA4B,KAA+B;CACzE,IAAI,CAAC,IAAI,SAAS,OAAO;CACzB,OAAO;EACL,GAAG;EACH,SAAS,IAAI,QAAQ,KAAK,UAAU;GAClC,MAAM,OAAO,UAAU,KAAK;GAC5B,IAAI,SAAS,MAAM,OAAO;GAC1B,MAAM,UAAU,MAAM,QAAS,MAAM,CAAC;GACtC,IAAI,QAAQ,OAAM,SAAQ,KAAK,SAAS,UAAU,CAAC,KAAK,MAAM,KAAK,CAAC,GAAG,OAAO;GAC9E,MAAM,OAAO,QAAQ;GAErB,IAAI,MAAM,SAAS,UAAU,KAAK,QAAQ,MAAM,KAAK,KAAK,IAAI,GAAG;IAC/D,IAAI,KAAK,KAAK,WAAW,GAAG,QAAQ,MAAM;SACrC,QAAQ,KAAK;KAAE,GAAG;KAAM,MAAM,KAAK,KAAK,MAAM,CAAC;IAAE;GACxD;GACA,OAAO;IAAE,MAAM;IAAqB,OAAO,EAAE,SAAS,SAAS,kBAAkB,KAAK,KAAK;IAAG;GAAQ;EACxG,CAAC;CACH;AACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Editor, JSONContent } from "@tiptap/core";
|
|
2
|
+
//#region src/features/transcript/segment.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The `segment` stage of the transcript feature: `**Name:** text` paragraphs become speaker segments, at the top level
|
|
5
|
+
* and inside every installed block container (the nodes declaring `editorBlockContainer`, e.g. composite bodies).
|
|
6
|
+
* Never changes its input.
|
|
7
|
+
*/
|
|
8
|
+
export declare function segmentSpeakerLines(editor: Editor, blocks: JSONContent[]): JSONContent[];
|
|
9
|
+
//#endregion
|
|
10
|
+
//# sourceMappingURL=segment.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { speakerParagraphsToSegments } from "./segment-node.js";
|
|
2
|
+
//#region src/features/transcript/segment.ts
|
|
3
|
+
/**
|
|
4
|
+
* The `segment` stage of the transcript feature: `**Name:** text` paragraphs become speaker segments, at the top level
|
|
5
|
+
* and inside every installed block container (the nodes declaring `editorBlockContainer`, e.g. composite bodies).
|
|
6
|
+
* Never changes its input.
|
|
7
|
+
*/
|
|
8
|
+
function segmentSpeakerLines(editor, blocks) {
|
|
9
|
+
const { nodes } = editor.schema;
|
|
10
|
+
const walk = (node) => {
|
|
11
|
+
const next = speakerParagraphsToSegments(node);
|
|
12
|
+
if (!next.content) return next;
|
|
13
|
+
return {
|
|
14
|
+
...next,
|
|
15
|
+
content: next.content.map((child) => nodes[child.type ?? ""]?.spec.editorBlockContainer === true ? walk(child) : child)
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
return walk({
|
|
19
|
+
type: "doc",
|
|
20
|
+
content: blocks
|
|
21
|
+
}).content ?? [];
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { segmentSpeakerLines };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=segment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment.js","names":[],"sources":["../../../src/features/transcript/segment.ts"],"sourcesContent":["import type { Editor, JSONContent } from '@tiptap/core'\nimport { speakerParagraphsToSegments } from './segment-node'\n\n/**\n * The `segment` stage of the transcript feature: `**Name:** text` paragraphs become speaker segments, at the top level\n * and inside every installed block container (the nodes declaring `editorBlockContainer`, e.g. composite bodies).\n * Never changes its input.\n */\nexport function segmentSpeakerLines(editor: Editor, blocks: JSONContent[]): JSONContent[] {\n const { nodes } = editor.schema\n const walk = (node: JSONContent): JSONContent => {\n const next = speakerParagraphsToSegments(node)\n if (!next.content) return next\n return { ...next, content: next.content.map(child => nodes[child.type ?? '']?.spec.editorBlockContainer === true ? walk(child) : child) }\n }\n return walk({ type: 'doc', content: blocks }).content ?? []\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,oBAAoB,QAAgB,QAAsC;CACxF,MAAM,EAAE,UAAU,OAAO;CACzB,MAAM,QAAQ,SAAmC;EAC/C,MAAM,OAAO,4BAA4B,IAAI;EAC7C,IAAI,CAAC,KAAK,SAAS,OAAO;EAC1B,OAAO;GAAE,GAAG;GAAM,SAAS,KAAK,QAAQ,KAAI,UAAS,MAAM,MAAM,QAAQ,GAAG,EAAE,KAAK,yBAAyB,OAAO,KAAK,KAAK,IAAI,KAAK;EAAE;CAC1I;CACA,OAAO,KAAK;EAAE,MAAM;EAAO,SAAS;CAAO,CAAC,CAAC,CAAC,WAAW,CAAC;AAC5D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Node } from "@tiptap/pm/model";
|
|
2
|
+
//#region src/features/transcript/speakers.d.ts
|
|
3
|
+
/** Speaker of the last `transcriptSegment` in the document, '' when there is none — the best default for a new block. */
|
|
4
|
+
export declare function lastSpeaker(doc: Node): string;
|
|
5
|
+
/** Distinct speaker names in document order (for the speaker quick-pick). */
|
|
6
|
+
export declare function speakersIn(doc: Node): string[];
|
|
7
|
+
//#endregion
|
|
8
|
+
//# sourceMappingURL=speakers.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/features/transcript/speakers.ts
|
|
2
|
+
/** Speaker of the last `transcriptSegment` in the document, '' when there is none — the best default for a new block. */
|
|
3
|
+
function lastSpeaker(doc) {
|
|
4
|
+
let speaker = "";
|
|
5
|
+
doc.descendants((node) => {
|
|
6
|
+
if (node.type.name === "transcriptSegment") speaker = String(node.attrs.speaker ?? "");
|
|
7
|
+
});
|
|
8
|
+
return speaker;
|
|
9
|
+
}
|
|
10
|
+
/** Distinct speaker names in document order (for the speaker quick-pick). */
|
|
11
|
+
function speakersIn(doc) {
|
|
12
|
+
const names = [];
|
|
13
|
+
doc.descendants((node) => {
|
|
14
|
+
const s = node.type.name === "transcriptSegment" ? String(node.attrs.speaker ?? "").trim() : "";
|
|
15
|
+
if (s && !names.includes(s)) names.push(s);
|
|
16
|
+
});
|
|
17
|
+
return names;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { lastSpeaker, speakersIn };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=speakers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speakers.js","names":[],"sources":["../../../src/features/transcript/speakers.ts"],"sourcesContent":["import type { Node as PMNode } from '@tiptap/pm/model'\n\n// Kept free of Vue/node-view imports so the node view and the node can both use it without an import cycle.\n\n/** Speaker of the last `transcriptSegment` in the document, '' when there is none — the best default for a new block. */\nexport function lastSpeaker(doc: PMNode): string {\n let speaker = ''\n doc.descendants((node) => {\n if (node.type.name === 'transcriptSegment') speaker = String(node.attrs.speaker ?? '')\n })\n return speaker\n}\n\n/** Distinct speaker names in document order (for the speaker quick-pick). */\nexport function speakersIn(doc: PMNode): string[] {\n const names: string[] = []\n doc.descendants((node) => {\n const s = node.type.name === 'transcriptSegment' ? String(node.attrs.speaker ?? '').trim() : ''\n if (s && !names.includes(s)) names.push(s)\n })\n return names\n}\n"],"mappings":";;AAKA,SAAgB,YAAY,KAAqB;CAC/C,IAAI,UAAU;CACd,IAAI,aAAa,SAAS;EACxB,IAAI,KAAK,KAAK,SAAS,qBAAqB,UAAU,OAAO,KAAK,MAAM,WAAW,EAAE;CACvF,CAAC;CACD,OAAO;AACT;;AAGA,SAAgB,WAAW,KAAuB;CAChD,MAAM,QAAkB,CAAC;CACzB,IAAI,aAAa,SAAS;EACxB,MAAM,IAAI,KAAK,KAAK,SAAS,sBAAsB,OAAO,KAAK,MAAM,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI;EAC7F,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC;CAC3C,CAAC;CACD,OAAO;AACT"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { VueFeature } from "../../vue/index.js";
|
|
2
|
+
import _default from "./TranscriptSegmentView.vue.js";
|
|
3
|
+
//#region src/features/transcript/vue.d.ts
|
|
4
|
+
/** The Vue transcript feature: the speaker segment with its Vue node view (speaker field and suggestion list). */
|
|
5
|
+
export declare function transcriptFeature(): VueFeature;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { _default as TranscriptSegmentView };
|
|
8
|
+
//# sourceMappingURL=vue.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { transcriptFeatureCore } from "./feature.js";
|
|
2
|
+
import _sfc_main from "./TranscriptSegmentView.js";
|
|
3
|
+
import { VueNodeViewRenderer } from "@tiptap/vue-3";
|
|
4
|
+
//#region src/features/transcript/vue.ts
|
|
5
|
+
/** The Vue transcript feature: the speaker segment with its Vue node view (speaker field and suggestion list). */
|
|
6
|
+
function transcriptFeature() {
|
|
7
|
+
return transcriptFeatureCore({ nodeViews: { transcriptSegment: VueNodeViewRenderer(_sfc_main) } });
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { _sfc_main as TranscriptSegmentView, transcriptFeature };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.js","names":["TranscriptSegmentView"],"sources":["../../../src/features/transcript/vue.ts"],"sourcesContent":["import { VueNodeViewRenderer } from '@tiptap/vue-3'\nimport type { VueFeature } from '../../vue'\nimport { transcriptFeatureCore } from './feature'\nimport TranscriptSegmentView from './TranscriptSegmentView.vue'\n\nexport { default as TranscriptSegmentView } from './TranscriptSegmentView.vue'\n\n/** The Vue transcript feature: the speaker segment with its Vue node view (speaker field and suggestion list). */\nexport function transcriptFeature(): VueFeature {\n return transcriptFeatureCore({ nodeViews: { transcriptSegment: VueNodeViewRenderer(TranscriptSegmentView) } })\n}\n"],"mappings":";;;;;AAQA,SAAgB,oBAAgC;CAC9C,OAAO,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,oBAAoBA,SAAqB,EAAE,EAAE,CAAC;AAC/G"}
|