@dxos/plugin-markdown 0.6.10-staging.df1ee5d → 0.6.11-staging.a542fc9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{DocumentEditor-ZBSGRJRH.mjs → DocumentEditor-HOQEHRNG.mjs} +3 -3
- package/dist/lib/browser/{chunk-RETREORA.mjs → chunk-CQJL4G4X.mjs} +1 -1
- package/dist/lib/browser/{chunk-RETREORA.mjs.map → chunk-CQJL4G4X.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-KWE52M7F.mjs → chunk-NSVC456H.mjs} +2 -2
- package/dist/lib/browser/index.mjs +29 -4
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/{DocumentEditor-INTWSBO5.cjs → DocumentEditor-MV3S4FKT.cjs} +7 -7
- package/dist/lib/node/{DocumentEditor-INTWSBO5.cjs.map → DocumentEditor-MV3S4FKT.cjs.map} +2 -2
- package/dist/lib/node/{chunk-MFMEH5GP.cjs → chunk-CIIALZRA.cjs} +7 -7
- package/dist/lib/node/{chunk-VYLYUDDI.cjs → chunk-VWQH4WC2.cjs} +4 -4
- package/dist/lib/node/{chunk-VYLYUDDI.cjs.map → chunk-VWQH4WC2.cjs.map} +1 -1
- package/dist/lib/node/index.cjs +53 -28
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +4 -4
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +7 -1
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +28 -28
- package/src/MarkdownPlugin.tsx +31 -2
- package/src/types/types.ts +11 -1
- /package/dist/lib/browser/{DocumentEditor-ZBSGRJRH.mjs.map → DocumentEditor-HOQEHRNG.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-KWE52M7F.mjs.map → chunk-NSVC456H.mjs.map} +0 -0
- /package/dist/lib/node/{chunk-MFMEH5GP.cjs.map → chunk-CIIALZRA.cjs.map} +0 -0
|
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_VWQH4WC2_exports = {};
|
|
20
|
+
__export(chunk_VWQH4WC2_exports, {
|
|
21
21
|
DocumentType: () => DocumentType,
|
|
22
22
|
MarkdownAction: () => MarkdownAction,
|
|
23
23
|
TextType: () => TextType
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(chunk_VWQH4WC2_exports);
|
|
26
26
|
var import_chunk_TGMR2CKU = require("./chunk-TGMR2CKU.cjs");
|
|
27
27
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
28
28
|
var import_types = require("@dxos/plugin-space/types");
|
|
@@ -55,4 +55,4 @@ var MarkdownAction;
|
|
|
55
55
|
MarkdownAction,
|
|
56
56
|
TextType
|
|
57
57
|
});
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-VWQH4WC2.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/document.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { ref, S, TypedObject } from '@dxos/echo-schema';\nimport { ThreadType } from '@dxos/plugin-space/types';\n\nexport class TextType extends TypedObject({ typename: 'dxos.org/type/Text', version: '0.1.0' })({\n content: S.String,\n}) {}\n\nexport class DocumentType extends TypedObject({ typename: 'dxos.org/type/Document', version: '0.1.0' })({\n name: S.optional(S.String),\n fallbackName: S.optional(S.String),\n content: ref(TextType),\n threads: S.mutable(S.Array(ref(ThreadType))),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n GraphSerializerProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SettingsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { type Extension, type EditorInputMode, type EditorViewMode } from '@dxos/react-ui-editor';\n\nimport { type DocumentType } from './document';\nimport { MARKDOWN_PLUGIN } from '../meta';\n\nconst MARKDOWN_ACTION = `${MARKDOWN_PLUGIN}/action`;\n\nexport enum MarkdownAction {\n CREATE = `${MARKDOWN_ACTION}/create`,\n SET_VIEW_MODE = `${MARKDOWN_ACTION}/set-view-mode`,\n}\n\nexport type MarkdownProperties = Record<string, any>;\n\nexport type ExtensionsProvider = (props: { document?: DocumentType }) => Extension[];\n\nexport type OnChange = (text: string) => void;\n\nexport type MarkdownExtensionProvides = {\n markdown: {\n extensions: ExtensionsProvider;\n };\n};\n\n// TODO(wittjosiah): Factor out to graph plugin?\ntype StackProvides = {\n stack: {\n creators?: Record<string, any>[];\n };\n};\n\nexport type MarkdownPluginState = {\n // Codemirror extensions provided by other plugins.\n extensionProviders: NonNullable<ExtensionsProvider>[];\n\n // TODO(burdon): Extend view mode per document to include scroll position, etc.\n // View mode per document.\n viewMode: { [key: string]: EditorViewMode };\n};\n\nexport type MarkdownSettingsProps = {\n defaultViewMode: EditorViewMode;\n editorInputMode?: EditorInputMode;\n experimental?: boolean;\n debug?: boolean;\n toolbar?: boolean;\n typewriter?: string;\n // TODO(burdon): Per document settings.\n numberedHeadings?: boolean;\n folding?: boolean;\n};\n\nexport type MarkdownPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n GraphSerializerProvides &\n MetadataRecordsProvides &\n SettingsProvides<MarkdownSettingsProps> &\n TranslationsProvides &\n SchemaProvides &\n StackProvides
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { ref, S, TypedObject } from '@dxos/echo-schema';\nimport { ThreadType } from '@dxos/plugin-space/types';\n\nexport class TextType extends TypedObject({ typename: 'dxos.org/type/Text', version: '0.1.0' })({\n content: S.String,\n}) {}\n\nexport class DocumentType extends TypedObject({ typename: 'dxos.org/type/Document', version: '0.1.0' })({\n name: S.optional(S.String),\n fallbackName: S.optional(S.String),\n content: ref(TextType),\n threads: S.mutable(S.Array(ref(ThreadType))),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n GraphSerializerProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SettingsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { type Extension, type EditorInputMode, type EditorViewMode } from '@dxos/react-ui-editor';\n\nimport { type DocumentType } from './document';\nimport { MARKDOWN_PLUGIN } from '../meta';\n\nconst MARKDOWN_ACTION = `${MARKDOWN_PLUGIN}/action`;\n\nexport enum MarkdownAction {\n CREATE = `${MARKDOWN_ACTION}/create`,\n SET_VIEW_MODE = `${MARKDOWN_ACTION}/set-view-mode`,\n}\n\nexport type MarkdownProperties = Record<string, any>;\n\nexport type ExtensionsProvider = (props: { document?: DocumentType }) => Extension[];\n\nexport type OnChange = (text: string) => void;\n\nexport type MarkdownExtensionProvides = {\n markdown: {\n extensions: ExtensionsProvider;\n };\n};\n\n// TODO(wittjosiah): Factor out to graph plugin?\ntype StackProvides = {\n stack: {\n creators?: Record<string, any>[];\n };\n};\n\nexport type MarkdownPluginState = {\n // Codemirror extensions provided by other plugins.\n extensionProviders: NonNullable<ExtensionsProvider>[];\n\n // TODO(burdon): Extend view mode per document to include scroll position, etc.\n // View mode per document.\n viewMode: { [key: string]: EditorViewMode };\n};\n\nexport type MarkdownSettingsProps = {\n defaultViewMode: EditorViewMode;\n editorInputMode?: EditorInputMode;\n experimental?: boolean;\n debug?: boolean;\n toolbar?: boolean;\n typewriter?: string;\n // TODO(burdon): Per document settings.\n numberedHeadings?: boolean;\n folding?: boolean;\n};\n\n// TODO(Zan): Move this to the plugin-space plugin or another common location\n// when we implement comments in sheets.\ntype ThreadProvides<T> = {\n thread: {\n predicate: (obj: any) => obj is T;\n createSort: (obj: T) => (anchorA: string, anchorB: string) => number;\n };\n};\n\nexport type MarkdownPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n GraphSerializerProvides &\n MetadataRecordsProvides &\n SettingsProvides<MarkdownSettingsProps> &\n TranslationsProvides &\n SchemaProvides &\n StackProvides &\n ThreadProvides<DocumentType>;\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAoC;AACpC,mBAA2B;AAEpB,IAAMA,WAAN,kBAAuBC,gCAAY;EAAEC,UAAU;EAAsBC,SAAS;AAAQ,CAAA,EAAG;EAC9FC,SAASC,qBAAEC;AACb,CAAA,EAAA;AAAI;AAEG,IAAMC,eAAN,kBAA2BN,gCAAY;EAAEC,UAAU;EAA0BC,SAAS;AAAQ,CAAA,EAAG;EACtGK,MAAMH,qBAAEI,SAASJ,qBAAEC,MAAM;EACzBI,cAAcL,qBAAEI,SAASJ,qBAAEC,MAAM;EACjCF,aAASO,wBAAIX,QAAAA;EACbY,SAASP,qBAAEQ,QAAQR,qBAAES,UAAMH,wBAAII,uBAAAA,CAAAA,CAAAA;AACjC,CAAA,EAAA;AAAI;ACGJ,IAAMC,kBAAkB,GAAGC,qCAAAA;;UAEfC,iBAAAA;8CACD,GAAGF,eAAAA,SAAwB,IAAA;qDACpB,GAAGA,eAAAA,gBAA+B,IAAA;GAFxCE,mBAAAA,iBAAAA,CAAAA,EAAAA;",
|
|
6
6
|
"names": ["TextType", "TypedObject", "typename", "version", "content", "S", "String", "DocumentType", "name", "optional", "fallbackName", "ref", "threads", "mutable", "Array", "ThreadType", "MARKDOWN_ACTION", "MARKDOWN_PLUGIN", "MarkdownAction"]
|
|
7
7
|
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -28,21 +28,21 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var node_exports = {};
|
|
30
30
|
__export(node_exports, {
|
|
31
|
-
DocumentType: () =>
|
|
32
|
-
MarkdownAction: () =>
|
|
31
|
+
DocumentType: () => import_chunk_VWQH4WC2.DocumentType,
|
|
32
|
+
MarkdownAction: () => import_chunk_VWQH4WC2.MarkdownAction,
|
|
33
33
|
MarkdownPlugin: () => MarkdownPlugin,
|
|
34
|
-
TextType: () =>
|
|
34
|
+
TextType: () => import_chunk_VWQH4WC2.TextType,
|
|
35
35
|
default: () => src_default,
|
|
36
|
-
getFallbackName: () =>
|
|
37
|
-
isMarkdownProperties: () =>
|
|
38
|
-
markdownExtensionPlugins: () =>
|
|
39
|
-
serializer: () =>
|
|
40
|
-
setFallbackName: () =>
|
|
36
|
+
getFallbackName: () => import_chunk_CIIALZRA.getFallbackName,
|
|
37
|
+
isMarkdownProperties: () => import_chunk_CIIALZRA.isMarkdownProperties,
|
|
38
|
+
markdownExtensionPlugins: () => import_chunk_CIIALZRA.markdownExtensionPlugins,
|
|
39
|
+
serializer: () => import_chunk_CIIALZRA.serializer,
|
|
40
|
+
setFallbackName: () => import_chunk_CIIALZRA.setFallbackName
|
|
41
41
|
});
|
|
42
42
|
module.exports = __toCommonJS(node_exports);
|
|
43
43
|
var import_chunk_Q4ZSCBQE = require("./chunk-Q4ZSCBQE.cjs");
|
|
44
|
-
var
|
|
45
|
-
var
|
|
44
|
+
var import_chunk_CIIALZRA = require("./chunk-CIIALZRA.cjs");
|
|
45
|
+
var import_chunk_VWQH4WC2 = require("./chunk-VWQH4WC2.cjs");
|
|
46
46
|
var import_chunk_KTYIOXL5 = require("./chunk-KTYIOXL5.cjs");
|
|
47
47
|
var import_chunk_MMYLEP2V = require("./chunk-MMYLEP2V.cjs");
|
|
48
48
|
var import_chunk_TGMR2CKU = require("./chunk-TGMR2CKU.cjs");
|
|
@@ -51,6 +51,7 @@ var import_react2 = __toESM(require("react"));
|
|
|
51
51
|
var import_app_framework = require("@dxos/app-framework");
|
|
52
52
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
53
53
|
var import_local_storage = require("@dxos/local-storage");
|
|
54
|
+
var import_log = require("@dxos/log");
|
|
54
55
|
var import_plugin_client = require("@dxos/plugin-client");
|
|
55
56
|
var import_plugin_graph = require("@dxos/plugin-graph");
|
|
56
57
|
var import_plugin_space = require("@dxos/plugin-space");
|
|
@@ -132,7 +133,7 @@ var MarkdownSettings = ({ settings }) => {
|
|
|
132
133
|
})));
|
|
133
134
|
};
|
|
134
135
|
var DocumentCard = import_react3.default.lazy(() => import("./DocumentCard-EHJDDSRY.cjs"));
|
|
135
|
-
var DocumentEditor = import_react3.default.lazy(() => import("./DocumentEditor-
|
|
136
|
+
var DocumentEditor = import_react3.default.lazy(() => import("./DocumentEditor-MV3S4FKT.cjs"));
|
|
136
137
|
var MarkdownEditor = import_react3.default.lazy(() => import("./MarkdownEditor-X3U7B4FU.cjs"));
|
|
137
138
|
var translations_default = [
|
|
138
139
|
{
|
|
@@ -164,6 +165,7 @@ var translations_default = [
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
];
|
|
168
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/MarkdownPlugin.tsx";
|
|
167
169
|
var isEditorModel = (data) => {
|
|
168
170
|
return data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
|
|
169
171
|
};
|
|
@@ -232,7 +234,7 @@ var MarkdownPlugin = () => {
|
|
|
232
234
|
storageKey: "view-mode",
|
|
233
235
|
type: import_local_storage.LocalStorageStore.json()
|
|
234
236
|
});
|
|
235
|
-
(0,
|
|
237
|
+
(0, import_chunk_CIIALZRA.markdownExtensionPlugins)(plugins).forEach((plugin) => {
|
|
236
238
|
const { extensions } = plugin.provides.markdown;
|
|
237
239
|
state.values.extensionProviders.push(extensions);
|
|
238
240
|
});
|
|
@@ -241,8 +243,8 @@ var MarkdownPlugin = () => {
|
|
|
241
243
|
settings: settings.values,
|
|
242
244
|
metadata: {
|
|
243
245
|
records: {
|
|
244
|
-
[
|
|
245
|
-
label: (object) => object instanceof
|
|
246
|
+
[import_chunk_VWQH4WC2.DocumentType.typename]: {
|
|
247
|
+
label: (object) => object instanceof import_chunk_VWQH4WC2.DocumentType ? object.name ?? object.fallbackName : void 0,
|
|
246
248
|
placeholder: [
|
|
247
249
|
"document title placeholder",
|
|
248
250
|
{
|
|
@@ -259,7 +261,7 @@ var MarkdownPlugin = () => {
|
|
|
259
261
|
doc2.content,
|
|
260
262
|
...doc2.threads
|
|
261
263
|
]),
|
|
262
|
-
serializer:
|
|
264
|
+
serializer: import_chunk_CIIALZRA.serializer
|
|
263
265
|
}
|
|
264
266
|
}
|
|
265
267
|
},
|
|
@@ -269,8 +271,8 @@ var MarkdownPlugin = () => {
|
|
|
269
271
|
],
|
|
270
272
|
echo: {
|
|
271
273
|
schema: [
|
|
272
|
-
|
|
273
|
-
|
|
274
|
+
import_chunk_VWQH4WC2.DocumentType,
|
|
275
|
+
import_chunk_VWQH4WC2.TextType
|
|
274
276
|
]
|
|
275
277
|
},
|
|
276
278
|
graph: {
|
|
@@ -281,7 +283,7 @@ var MarkdownPlugin = () => {
|
|
|
281
283
|
return [];
|
|
282
284
|
}
|
|
283
285
|
return (0, import_plugin_graph.createExtension)({
|
|
284
|
-
id:
|
|
286
|
+
id: import_chunk_VWQH4WC2.MarkdownAction.CREATE,
|
|
285
287
|
filter: (node) => (0, import_plugin_graph.isActionGroup)(node) && node.id.startsWith(import_plugin_space.SpaceAction.ADD_OBJECT),
|
|
286
288
|
actions: ({ node }) => {
|
|
287
289
|
const id = node.id.split("/").at(-1);
|
|
@@ -299,7 +301,7 @@ var MarkdownPlugin = () => {
|
|
|
299
301
|
await dispatch([
|
|
300
302
|
{
|
|
301
303
|
plugin: import_chunk_TGMR2CKU.MARKDOWN_PLUGIN,
|
|
302
|
-
action:
|
|
304
|
+
action: import_chunk_VWQH4WC2.MarkdownAction.CREATE
|
|
303
305
|
},
|
|
304
306
|
{
|
|
305
307
|
action: import_plugin_space.SpaceAction.ADD_OBJECT,
|
|
@@ -335,7 +337,7 @@ var MarkdownPlugin = () => {
|
|
|
335
337
|
}
|
|
336
338
|
return [
|
|
337
339
|
{
|
|
338
|
-
inputType:
|
|
340
|
+
inputType: import_chunk_VWQH4WC2.DocumentType.typename,
|
|
339
341
|
outputType: "text/markdown",
|
|
340
342
|
// Reconcile with metadata serializers.
|
|
341
343
|
serialize: async (node) => {
|
|
@@ -356,7 +358,7 @@ var MarkdownPlugin = () => {
|
|
|
356
358
|
const result = await dispatch([
|
|
357
359
|
{
|
|
358
360
|
plugin: import_chunk_TGMR2CKU.MARKDOWN_PLUGIN,
|
|
359
|
-
action:
|
|
361
|
+
action: import_chunk_VWQH4WC2.MarkdownAction.CREATE,
|
|
360
362
|
data: {
|
|
361
363
|
name: data.name,
|
|
362
364
|
content: data.data
|
|
@@ -395,14 +397,37 @@ var MarkdownPlugin = () => {
|
|
|
395
397
|
icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.TextAa, props),
|
|
396
398
|
intent: {
|
|
397
399
|
plugin: import_chunk_TGMR2CKU.MARKDOWN_PLUGIN,
|
|
398
|
-
action:
|
|
400
|
+
action: import_chunk_VWQH4WC2.MarkdownAction.CREATE
|
|
399
401
|
}
|
|
400
402
|
}
|
|
401
403
|
]
|
|
402
404
|
},
|
|
405
|
+
thread: {
|
|
406
|
+
// TODO(Zan): How to better handle the type predicate?
|
|
407
|
+
predicate: (obj) => obj instanceof import_chunk_VWQH4WC2.DocumentType,
|
|
408
|
+
createSort: (doc) => {
|
|
409
|
+
const accessor = doc.content ? (0, import_echo.createDocAccessor)(doc.content, [
|
|
410
|
+
"content"
|
|
411
|
+
]) : void 0;
|
|
412
|
+
if (!accessor) {
|
|
413
|
+
import_log.log.warn("No accessor found for document content.", void 0, {
|
|
414
|
+
F: __dxlog_file,
|
|
415
|
+
L: 249,
|
|
416
|
+
S: void 0,
|
|
417
|
+
C: (f, a) => f(...a)
|
|
418
|
+
});
|
|
419
|
+
return (_) => 0;
|
|
420
|
+
}
|
|
421
|
+
const getStartPosition = (cursor) => {
|
|
422
|
+
const range = cursor ? (0, import_echo.getRangeFromCursor)(accessor, cursor) : void 0;
|
|
423
|
+
return range?.start ?? Number.MAX_SAFE_INTEGER;
|
|
424
|
+
};
|
|
425
|
+
return (anchorA, anchorB) => getStartPosition(anchorA) - getStartPosition(anchorB);
|
|
426
|
+
}
|
|
427
|
+
},
|
|
403
428
|
surface: {
|
|
404
429
|
component: ({ data, role, ...props }, forwardedRef) => {
|
|
405
|
-
const doc = data.active instanceof
|
|
430
|
+
const doc = data.active instanceof import_chunk_VWQH4WC2.DocumentType ? data.active : data.object instanceof import_chunk_VWQH4WC2.DocumentType ? data.object : void 0;
|
|
406
431
|
switch (role) {
|
|
407
432
|
case "section":
|
|
408
433
|
case "article": {
|
|
@@ -434,7 +459,7 @@ var MarkdownPlugin = () => {
|
|
|
434
459
|
break;
|
|
435
460
|
}
|
|
436
461
|
case "card": {
|
|
437
|
-
if ((0, import_app_framework.isObject)(data.content) && typeof data.content.id === "string" && data.content.object instanceof
|
|
462
|
+
if ((0, import_app_framework.isObject)(data.content) && typeof data.content.id === "string" && data.content.object instanceof import_chunk_VWQH4WC2.DocumentType) {
|
|
438
463
|
const cardProps = {
|
|
439
464
|
...props,
|
|
440
465
|
item: {
|
|
@@ -463,10 +488,10 @@ var MarkdownPlugin = () => {
|
|
|
463
488
|
intent: {
|
|
464
489
|
resolver: ({ action, data }) => {
|
|
465
490
|
switch (action) {
|
|
466
|
-
case
|
|
467
|
-
const doc = (0, import_echo_schema.create)(
|
|
491
|
+
case import_chunk_VWQH4WC2.MarkdownAction.CREATE: {
|
|
492
|
+
const doc = (0, import_echo_schema.create)(import_chunk_VWQH4WC2.DocumentType, {
|
|
468
493
|
name: data?.name,
|
|
469
|
-
content: (0, import_echo_schema.create)(
|
|
494
|
+
content: (0, import_echo_schema.create)(import_chunk_VWQH4WC2.TextType, {
|
|
470
495
|
content: data?.content ?? ""
|
|
471
496
|
}),
|
|
472
497
|
threads: []
|
|
@@ -485,7 +510,7 @@ var MarkdownPlugin = () => {
|
|
|
485
510
|
]
|
|
486
511
|
};
|
|
487
512
|
}
|
|
488
|
-
case
|
|
513
|
+
case import_chunk_VWQH4WC2.MarkdownAction.SET_VIEW_MODE: {
|
|
489
514
|
const { id, viewMode } = data ?? {};
|
|
490
515
|
if (typeof id === "string" && import_react_ui_editor.EditorViewModes.includes(viewMode)) {
|
|
491
516
|
state.values.viewMode[id] = viewMode;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/MarkdownPlugin.tsx", "../../../src/components/index.ts", "../../../src/components/HeadingMenu.tsx", "../../../src/components/Layout.tsx", "../../../src/components/MarkdownSettings.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type IconProps, TextAa } from '@phosphor-icons/react';\nimport React, { type Ref } from 'react';\n\nimport {\n isObject,\n parseIntentPlugin,\n resolvePlugin,\n LayoutAction,\n type LayoutCoordinate,\n NavigationAction,\n type PluginDefinition,\n} from '@dxos/app-framework';\nimport { create } from '@dxos/echo-schema';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { CollectionType } from '@dxos/plugin-space/types';\nimport { fullyQualifiedId, isSpace, loadObjectReferences } from '@dxos/react-client/echo';\nimport {\n type EditorInputMode,\n type EditorViewMode,\n EditorViewModes,\n translations as editorTranslations,\n} from '@dxos/react-ui-editor';\nimport { isTileComponentProps } from '@dxos/react-ui-mosaic';\n\nimport { type DocumentItemProps, DocumentCard, DocumentEditor, MarkdownEditor, MarkdownSettings } from './components';\nimport meta, { MARKDOWN_PLUGIN } from './meta';\nimport translations from './translations';\nimport { DocumentType, TextType } from './types';\nimport {\n type MarkdownPluginProvides,\n type MarkdownSettingsProps,\n MarkdownAction,\n type MarkdownPluginState,\n} from './types';\nimport { markdownExtensionPlugins, serializer } from './util';\n\n/**\n * Checks if an object conforms to the interface needed to render an editor.\n */\nconst isEditorModel = (data: any): data is { id: string; text: string } => {\n return (\n data &&\n typeof data === 'object' &&\n 'id' in data &&\n typeof data.id === 'string' &&\n 'text' in data &&\n typeof data.text === 'string'\n );\n};\n\nexport const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {\n const settings = new LocalStorageStore<MarkdownSettingsProps>(MARKDOWN_PLUGIN, {\n defaultViewMode: 'preview',\n toolbar: true,\n experimental: false,\n });\n\n const state = new LocalStorageStore<MarkdownPluginState>(MARKDOWN_PLUGIN, { extensionProviders: [], viewMode: {} });\n\n const getViewMode = (id?: string) => {\n return (id && state.values.viewMode[id]) || settings.values.defaultViewMode;\n };\n\n const setViewMode = (id: string, nextViewMode: EditorViewMode) => {\n state.values.viewMode[id] = nextViewMode;\n };\n\n return {\n meta,\n ready: async (plugins) => {\n settings\n .prop({\n key: 'defaultViewMode',\n storageKey: 'default-view-mode',\n type: LocalStorageStore.enum<EditorViewMode>(),\n })\n .prop({\n key: 'editorInputMode',\n storageKey: 'editor-mode',\n type: LocalStorageStore.enum<EditorInputMode>({ allowUndefined: true }),\n })\n .prop({ key: 'toolbar', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'experimental', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'debug', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'typewriter', type: LocalStorageStore.string({ allowUndefined: true }) })\n .prop({ key: 'numberedHeadings', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'folding', type: LocalStorageStore.bool({ allowUndefined: true }) });\n\n state.prop({\n key: 'viewMode',\n storageKey: 'view-mode',\n type: LocalStorageStore.json<{ [key: string]: EditorViewMode }>(),\n });\n\n markdownExtensionPlugins(plugins).forEach((plugin) => {\n const { extensions } = plugin.provides.markdown;\n state.values.extensionProviders.push(extensions);\n });\n },\n provides: {\n settings: settings.values,\n metadata: {\n records: {\n [DocumentType.typename]: {\n label: (object: any) => (object instanceof DocumentType ? object.name ?? object.fallbackName : undefined),\n placeholder: ['document title placeholder', { ns: MARKDOWN_PLUGIN }],\n icon: (props: IconProps) => <TextAa {...props} />,\n iconSymbol: 'ph--text-aa--regular',\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (doc: DocumentType) => loadObjectReferences(doc, (doc) => [doc.content, ...doc.threads]),\n serializer,\n },\n },\n },\n translations: [...translations, ...editorTranslations],\n echo: {\n schema: [DocumentType, TextType],\n },\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: MarkdownAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${MARKDOWN_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: MARKDOWN_PLUGIN, action: MarkdownAction.CREATE },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create document label', { ns: MARKDOWN_PLUGIN }],\n icon: (props: IconProps) => <TextAa {...props} />,\n iconSymbol: 'ph--text-aa--regular',\n testId: 'markdownPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n serializer: (plugins) => {\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!dispatch) {\n return [];\n }\n return [\n {\n inputType: DocumentType.typename,\n outputType: 'text/markdown',\n // Reconcile with metadata serializers.\n serialize: async (node) => {\n const doc = node.data;\n const content = await loadObjectReferences(doc, (doc) => doc.content);\n return {\n name:\n doc.name ||\n doc.fallbackName ||\n translations[0]['en-US'][MARKDOWN_PLUGIN]['document title placeholder'],\n data: content.content,\n type: 'text/markdown',\n };\n },\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const target =\n ancestors.findLast((ancestor) => ancestor instanceof CollectionType) ??\n space?.properties[CollectionType.typename];\n if (!space || !target) {\n return;\n }\n\n const result = await dispatch([\n {\n plugin: MARKDOWN_PLUGIN,\n action: MarkdownAction.CREATE,\n data: { name: data.name, content: data.data },\n },\n {\n action: SpaceAction.ADD_OBJECT,\n data: { target },\n },\n ]);\n\n return result?.data.object;\n },\n },\n ];\n },\n },\n stack: {\n creators: [\n {\n id: 'create-stack-section-doc',\n testId: 'markdownPlugin.createSection',\n type: ['plugin name', { ns: MARKDOWN_PLUGIN }],\n label: ['create stack section label', { ns: MARKDOWN_PLUGIN }],\n icon: (props: any) => <TextAa {...props} />,\n intent: { plugin: MARKDOWN_PLUGIN, action: MarkdownAction.CREATE },\n },\n ],\n },\n surface: {\n component: ({ data, role, ...props }, forwardedRef) => {\n const doc =\n data.active instanceof DocumentType\n ? data.active\n : data.object instanceof DocumentType\n ? data.object\n : undefined;\n\n switch (role) {\n case 'section':\n case 'article': {\n if (doc && doc.content) {\n return (\n <DocumentEditor\n role={role}\n coordinate={data.coordinate as LayoutCoordinate}\n document={doc}\n extensionProviders={state.values.extensionProviders}\n settings={settings.values}\n scrollPastEnd\n viewMode={getViewMode(fullyQualifiedId(doc))}\n onViewModeChange={setViewMode}\n />\n );\n } else if (isEditorModel(data.object)) {\n return (\n <MarkdownEditor\n id={data.object.id}\n role={role}\n coordinate={data.coordinate as LayoutCoordinate}\n initialValue={data.object.text}\n extensionProviders={state.values.extensionProviders}\n inputMode={settings.values.editorInputMode}\n toolbar={settings.values.toolbar}\n scrollPastEnd\n viewMode={getViewMode(data.object.id)}\n onViewModeChange={setViewMode}\n />\n );\n }\n break;\n }\n\n case 'card': {\n if (\n isObject(data.content) &&\n typeof data.content.id === 'string' &&\n data.content.object instanceof DocumentType\n ) {\n // isTileComponentProps is a type guard for these props.\n // `props` will not pass this guard without transforming `data` into `item`.\n const cardProps = {\n ...props,\n item: {\n id: data.content.id,\n object: data.content.object,\n color: typeof data.content.color === 'string' ? data.content.color : undefined,\n } as DocumentItemProps,\n };\n\n return isTileComponentProps(cardProps) ? (\n <DocumentCard {...cardProps} settings={settings.values} ref={forwardedRef as Ref<HTMLDivElement>} />\n ) : null;\n }\n break;\n }\n\n case 'settings': {\n return data.plugin === meta.id ? <MarkdownSettings settings={settings.values} /> : null;\n }\n }\n\n return null;\n },\n },\n intent: {\n resolver: ({ action, data }) => {\n switch (action) {\n case MarkdownAction.CREATE: {\n const doc = create(DocumentType, {\n name: data?.name,\n content: create(TextType, { content: data?.content ?? '' }),\n threads: [],\n });\n\n return {\n data: doc,\n intents: [[{ action: LayoutAction.SCROLL_INTO_VIEW, data: { id: fullyQualifiedId(doc) } }]],\n };\n }\n\n case MarkdownAction.SET_VIEW_MODE: {\n const { id, viewMode } = data ?? {};\n if (typeof id === 'string' && EditorViewModes.includes(viewMode)) {\n state.values.viewMode[id] = viewMode;\n return { data: true };\n }\n\n break;\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type LazyExoticComponent } from 'react';\n\nimport { type DocumentEditor as DocumentEditorType } from './DocumentEditor';\n\nexport { type DocumentCardProps, type DocumentItemProps } from './DocumentCard';\n\nexport * from './DocumentCard';\nexport * from './DocumentEditor';\nexport * from './MarkdownEditor';\nexport * from './HeadingMenu';\nexport * from './Layout';\nexport * from './MarkdownSettings';\n\n// Lazily load components for content surfaces.\nexport const DocumentCard = React.lazy(() => import('./DocumentCard'));\nexport const DocumentEditor: LazyExoticComponent<DocumentEditorType> = React.lazy(() => import('./DocumentEditor'));\nexport const MarkdownEditor = React.lazy(() => import('./MarkdownEditor'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DotsThreeVertical } from '@phosphor-icons/react';\nimport React, { type PropsWithChildren, type FC } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Button, DropdownMenu } from '@dxos/react-ui';\nimport { fineButtonDimensions, getSize } from '@dxos/react-ui-theme';\n\nimport { type DocumentType, type MarkdownProperties } from '../types';\n\n// TODO(thure): This needs to be refactored into a graph node action.\nexport const DocumentHeadingMenu: FC<{ document: DocumentType }> = ({ document }) => {\n return <HeadingMenu properties={document} content={document.content?.content} />;\n};\n\n/**\n * Menu for the layout heading.\n */\nexport const HeadingMenu = ({\n content,\n properties,\n}: PropsWithChildren<{\n content: string | undefined;\n properties: MarkdownProperties;\n}>) => {\n return (\n <DropdownMenu.Root modal={false}>\n <DropdownMenu.Trigger asChild>\n <Button variant='ghost' classNames={fineButtonDimensions}>\n <DotsThreeVertical className={getSize(4)} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content sideOffset={8} classNames='z-10'>\n <DropdownMenu.Viewport>\n <Surface data={{ content, properties }} role='menuitem' />\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Main } from '@dxos/react-ui';\nimport { editorWithToolbarLayout } from '@dxos/react-ui-editor';\nimport { topbarBlockPaddingStart } from '@dxos/react-ui-theme';\n\nexport const MainLayout = ({ children, toolbar }: PropsWithChildren<{ toolbar?: boolean }>) => {\n return (\n <Main.Content\n bounce\n data-toolbar={toolbar ? 'enabled' : 'disabled'}\n classNames={[topbarBlockPaddingStart, editorWithToolbarLayout]}\n >\n {children}\n </Main.Content>\n );\n};\n\n// Used when the editor is embedded in another context (e.g., iframe) and has no topbar/sidebar/etc.\n// TODO(wittjosiah): What's the difference between this and Section/Card?\nexport const EmbeddedLayout = ({ children }: PropsWithChildren) => {\n return <Main.Content classNames='min-bs-[100dvh] grid p-0.5'>{children}</Main.Content>;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { SettingsValue } from '@dxos/plugin-settings';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/react-ui-editor';\n\nimport { MARKDOWN_PLUGIN } from '../meta';\nimport { type MarkdownSettingsProps } from '../types';\n\nexport const MarkdownSettings = ({ settings }: { settings: MarkdownSettingsProps }) => {\n const { t } = useTranslation(MARKDOWN_PLUGIN);\n\n // TODO(wittjosiah): Add skill test confirmation for entering vim mode.\n return (\n <>\n <SettingsValue label={t('default view mode label')}>\n <Select.Root\n value={settings.defaultViewMode}\n onValueChange={(value) => {\n settings.defaultViewMode = value as EditorViewMode;\n }}\n >\n <Select.TriggerButton />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorViewModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`${mode} mode label`, { ns: 'react-ui-editor' })}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsValue>\n\n <SettingsValue label={t('editor input mode label')}>\n <Select.Root\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n settings.editorInputMode = value as EditorInputMode;\n }}\n >\n <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings editor input mode ${mode} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsValue>\n\n <SettingsValue label={t('settings toolbar label')}>\n <Input.Switch checked={settings.toolbar} onCheckedChange={(checked) => (settings.toolbar = !!checked)} />\n </SettingsValue>\n\n <SettingsValue label={t('settings numbered headings label')}>\n <Input.Switch\n checked={settings.numberedHeadings}\n onCheckedChange={(checked) => (settings.numberedHeadings = !!checked)}\n />\n </SettingsValue>\n\n <SettingsValue label={t('settings folding label')}>\n <Input.Switch checked={settings.folding} onCheckedChange={(checked) => (settings.folding = !!checked)} />\n </SettingsValue>\n\n <SettingsValue label={t('settings experimental label')}>\n <Input.Switch\n checked={settings.experimental}\n onCheckedChange={(checked) => (settings.experimental = !!checked)}\n />\n </SettingsValue>\n\n <SettingsValue\n label={t('settings debug label')}\n secondary={\n settings.debug ? (\n <Input.Root>\n <Input.TextArea\n rows={5}\n value={settings.typewriter}\n onChange={({ target: { value } }) => (settings.typewriter = value)}\n placeholder={t('settings debug placeholder')}\n />\n </Input.Root>\n ) : undefined\n }\n >\n <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />\n </SettingsValue>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MARKDOWN_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [MARKDOWN_PLUGIN]: {\n 'plugin name': 'Editor',\n 'create stack section label': 'Create document',\n 'document title placeholder': 'New document',\n 'choose markdown from space dialog title': 'Choose one or more documents to add',\n // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)\n 'empty choose markdown from space message': 'None available; try creating a new one instead?',\n 'chooser done label': 'Add selected',\n 'create document label': 'Create document',\n 'editor placeholder': 'New document',\n 'editor input mode label': 'Editor input mode',\n 'select editor input mode placeholder': 'Select editor input mode…',\n 'settings editor input mode default label': 'Default',\n 'settings editor input mode vim label': 'Vim',\n 'settings editor input mode vscode label': 'VS Code',\n 'settings toolbar label': 'Show toolbar',\n 'settings numbered headings label': 'Numbered headings',\n 'settings folding label': 'Folding',\n 'settings experimental label': 'Enable experimental features',\n 'settings debug label': 'Enable debugging features',\n 'settings debug placeholder': 'Typewriter script...',\n 'toggle view mode label': 'Toggle read-only',\n 'default view mode label': 'Default view mode',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MarkdownPlugin } from './MarkdownPlugin';\n\nexport default MarkdownPlugin;\n\nexport * from './MarkdownPlugin';\nexport * from './types';\nexport * from './util';\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAuC;AACvC,IAAAA,gBAAgC;AAEhC,2BAQO;AACP,yBAAuB;AACvB,2BAAkC;AAClC,2BAAkC;AAClC,0BAAiE;AACjE,0BAA4B;AAC5B,mBAA+B;AAC/B,
|
|
6
|
-
"names": ["import_react", "import_app_framework", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "MarkdownSettings", "settings", "t", "useTranslation", "MARKDOWN_PLUGIN", "React", "SettingsValue", "label", "Select", "Root", "value", "defaultViewMode", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "EditorViewModes", "map", "mode", "Option", "key", "ns", "editorInputMode", "placeholder", "EditorInputModes", "Input", "Switch", "checked", "toolbar", "onCheckedChange", "numberedHeadings", "folding", "experimental", "secondary", "debug", "TextArea", "rows", "typewriter", "onChange", "target", "undefined", "DocumentCard", "lazy", "DocumentEditor", "MarkdownEditor", "isEditorModel", "data", "id", "text", "MarkdownPlugin", "LocalStorageStore", "state", "extensionProviders", "viewMode", "getViewMode", "values", "setViewMode", "nextViewMode", "meta", "ready", "plugins", "prop", "storageKey", "type", "enum", "allowUndefined", "bool", "string", "json", "markdownExtensionPlugins", "forEach", "plugin", "extensions", "provides", "markdown", "push", "metadata", "records", "DocumentType", "typename", "object", "name", "fallbackName", "icon", "props", "TextAa", "iconSymbol", "graphProps", "managesAutofocus", "loadReferences", "doc", "loadObjectReferences", "content", "threads", "serializer", "translations", "editorTranslations", "echo", "schema", "TextType", "graph", "builder", "client", "resolvePlugin", "parseClientPlugin", "dispatch", "parseIntentPlugin", "intent", "createExtension", "MarkdownAction", "CREATE", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "space", "spaces", "get", "find", "db", "getObjectById", "action", "NavigationAction", "OPEN", "properties", "testId", "inputType", "outputType", "serialize", "deserialize", "ancestors", "isSpace", "findLast", "ancestor", "CollectionType", "result", "stack", "creators", "surface", "component", "role", "forwardedRef", "active", "coordinate", "document", "scrollPastEnd", "fullyQualifiedId", "onViewModeChange", "initialValue", "inputMode", "isObject", "cardProps", "item", "color", "isTileComponentProps", "ref", "resolver", "create", "intents", "LayoutAction", "SCROLL_INTO_VIEW", "SET_VIEW_MODE", "includes"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type IconProps, TextAa } from '@phosphor-icons/react';\nimport React, { type Ref } from 'react';\n\nimport {\n isObject,\n parseIntentPlugin,\n resolvePlugin,\n LayoutAction,\n type LayoutCoordinate,\n NavigationAction,\n type PluginDefinition,\n} from '@dxos/app-framework';\nimport { create } from '@dxos/echo-schema';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { log } from '@dxos/log';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { CollectionType } from '@dxos/plugin-space/types';\nimport {\n createDocAccessor,\n fullyQualifiedId,\n getRangeFromCursor,\n isSpace,\n loadObjectReferences,\n} from '@dxos/react-client/echo';\nimport {\n type EditorInputMode,\n type EditorViewMode,\n EditorViewModes,\n translations as editorTranslations,\n} from '@dxos/react-ui-editor';\nimport { isTileComponentProps } from '@dxos/react-ui-mosaic';\n\nimport { type DocumentItemProps, DocumentCard, DocumentEditor, MarkdownEditor, MarkdownSettings } from './components';\nimport meta, { MARKDOWN_PLUGIN } from './meta';\nimport translations from './translations';\nimport { DocumentType, TextType } from './types';\nimport {\n type MarkdownPluginProvides,\n type MarkdownSettingsProps,\n MarkdownAction,\n type MarkdownPluginState,\n} from './types';\nimport { markdownExtensionPlugins, serializer } from './util';\n\n/**\n * Checks if an object conforms to the interface needed to render an editor.\n */\nconst isEditorModel = (data: any): data is { id: string; text: string } => {\n return (\n data &&\n typeof data === 'object' &&\n 'id' in data &&\n typeof data.id === 'string' &&\n 'text' in data &&\n typeof data.text === 'string'\n );\n};\n\nexport const MarkdownPlugin = (): PluginDefinition<MarkdownPluginProvides> => {\n const settings = new LocalStorageStore<MarkdownSettingsProps>(MARKDOWN_PLUGIN, {\n defaultViewMode: 'preview',\n toolbar: true,\n experimental: false,\n });\n\n const state = new LocalStorageStore<MarkdownPluginState>(MARKDOWN_PLUGIN, { extensionProviders: [], viewMode: {} });\n\n const getViewMode = (id?: string) => {\n return (id && state.values.viewMode[id]) || settings.values.defaultViewMode;\n };\n\n const setViewMode = (id: string, nextViewMode: EditorViewMode) => {\n state.values.viewMode[id] = nextViewMode;\n };\n\n return {\n meta,\n ready: async (plugins) => {\n settings\n .prop({\n key: 'defaultViewMode',\n storageKey: 'default-view-mode',\n type: LocalStorageStore.enum<EditorViewMode>(),\n })\n .prop({\n key: 'editorInputMode',\n storageKey: 'editor-mode',\n type: LocalStorageStore.enum<EditorInputMode>({ allowUndefined: true }),\n })\n .prop({ key: 'toolbar', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'experimental', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'debug', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'typewriter', type: LocalStorageStore.string({ allowUndefined: true }) })\n .prop({ key: 'numberedHeadings', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'folding', type: LocalStorageStore.bool({ allowUndefined: true }) });\n\n state.prop({\n key: 'viewMode',\n storageKey: 'view-mode',\n type: LocalStorageStore.json<{ [key: string]: EditorViewMode }>(),\n });\n\n markdownExtensionPlugins(plugins).forEach((plugin) => {\n const { extensions } = plugin.provides.markdown;\n state.values.extensionProviders.push(extensions);\n });\n },\n provides: {\n settings: settings.values,\n metadata: {\n records: {\n [DocumentType.typename]: {\n label: (object: any) => (object instanceof DocumentType ? object.name ?? object.fallbackName : undefined),\n placeholder: ['document title placeholder', { ns: MARKDOWN_PLUGIN }],\n icon: (props: IconProps) => <TextAa {...props} />,\n iconSymbol: 'ph--text-aa--regular',\n graphProps: {\n managesAutofocus: true,\n },\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (doc: DocumentType) => loadObjectReferences(doc, (doc) => [doc.content, ...doc.threads]),\n serializer,\n },\n },\n },\n translations: [...translations, ...editorTranslations],\n echo: {\n schema: [DocumentType, TextType],\n },\n graph: {\n builder: (plugins) => {\n const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!client || !dispatch) {\n return [];\n }\n\n return createExtension({\n id: MarkdownAction.CREATE,\n filter: (node): node is ActionGroup => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),\n actions: ({ node }) => {\n const id = node.id.split('/').at(-1);\n const [spaceId, objectId] = id?.split(':') ?? [];\n const space = client.spaces.get().find((space) => space.id === spaceId);\n const object = objectId && space?.db.getObjectById(objectId);\n const target = objectId ? object : space;\n if (!target) {\n return;\n }\n\n return [\n {\n id: `${MARKDOWN_PLUGIN}/create/${node.id}`,\n data: async () => {\n await dispatch([\n { plugin: MARKDOWN_PLUGIN, action: MarkdownAction.CREATE },\n { action: SpaceAction.ADD_OBJECT, data: { target } },\n { action: NavigationAction.OPEN },\n ]);\n },\n properties: {\n label: ['create document label', { ns: MARKDOWN_PLUGIN }],\n icon: (props: IconProps) => <TextAa {...props} />,\n iconSymbol: 'ph--text-aa--regular',\n testId: 'markdownPlugin.createObject',\n },\n },\n ];\n },\n });\n },\n serializer: (plugins) => {\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n if (!dispatch) {\n return [];\n }\n return [\n {\n inputType: DocumentType.typename,\n outputType: 'text/markdown',\n // Reconcile with metadata serializers.\n serialize: async (node) => {\n const doc = node.data;\n const content = await loadObjectReferences(doc, (doc) => doc.content);\n return {\n name:\n doc.name ||\n doc.fallbackName ||\n translations[0]['en-US'][MARKDOWN_PLUGIN]['document title placeholder'],\n data: content.content,\n type: 'text/markdown',\n };\n },\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const target =\n ancestors.findLast((ancestor) => ancestor instanceof CollectionType) ??\n space?.properties[CollectionType.typename];\n if (!space || !target) {\n return;\n }\n\n const result = await dispatch([\n {\n plugin: MARKDOWN_PLUGIN,\n action: MarkdownAction.CREATE,\n data: { name: data.name, content: data.data },\n },\n {\n action: SpaceAction.ADD_OBJECT,\n data: { target },\n },\n ]);\n\n return result?.data.object;\n },\n },\n ];\n },\n },\n stack: {\n creators: [\n {\n id: 'create-stack-section-doc',\n testId: 'markdownPlugin.createSection',\n type: ['plugin name', { ns: MARKDOWN_PLUGIN }],\n label: ['create stack section label', { ns: MARKDOWN_PLUGIN }],\n icon: (props: any) => <TextAa {...props} />,\n intent: {\n plugin: MARKDOWN_PLUGIN,\n action: MarkdownAction.CREATE,\n },\n },\n ],\n },\n thread: {\n // TODO(Zan): How to better handle the type predicate?\n predicate: (obj) => obj instanceof DocumentType,\n createSort: (doc: DocumentType) => {\n const accessor = doc.content ? createDocAccessor(doc.content, ['content']) : undefined;\n\n if (!accessor) {\n log.warn('No accessor found for document content.');\n return (_) => 0;\n }\n\n const getStartPosition = (cursor: string | undefined) => {\n const range = cursor ? getRangeFromCursor(accessor, cursor) : undefined;\n return range?.start ?? Number.MAX_SAFE_INTEGER;\n };\n\n return (anchorA: string, anchorB: string) => getStartPosition(anchorA) - getStartPosition(anchorB);\n },\n },\n surface: {\n component: ({ data, role, ...props }, forwardedRef) => {\n const doc =\n data.active instanceof DocumentType\n ? data.active\n : data.object instanceof DocumentType\n ? data.object\n : undefined;\n\n switch (role) {\n case 'section':\n case 'article': {\n if (doc && doc.content) {\n return (\n <DocumentEditor\n role={role}\n coordinate={data.coordinate as LayoutCoordinate}\n document={doc}\n extensionProviders={state.values.extensionProviders}\n settings={settings.values}\n scrollPastEnd\n viewMode={getViewMode(fullyQualifiedId(doc))}\n onViewModeChange={setViewMode}\n />\n );\n } else if (isEditorModel(data.object)) {\n return (\n <MarkdownEditor\n id={data.object.id}\n role={role}\n coordinate={data.coordinate as LayoutCoordinate}\n initialValue={data.object.text}\n extensionProviders={state.values.extensionProviders}\n inputMode={settings.values.editorInputMode}\n toolbar={settings.values.toolbar}\n scrollPastEnd\n viewMode={getViewMode(data.object.id)}\n onViewModeChange={setViewMode}\n />\n );\n }\n break;\n }\n\n case 'card': {\n if (\n isObject(data.content) &&\n typeof data.content.id === 'string' &&\n data.content.object instanceof DocumentType\n ) {\n // isTileComponentProps is a type guard for these props.\n // `props` will not pass this guard without transforming `data` into `item`.\n const cardProps = {\n ...props,\n item: {\n id: data.content.id,\n object: data.content.object,\n color: typeof data.content.color === 'string' ? data.content.color : undefined,\n } as DocumentItemProps,\n };\n\n return isTileComponentProps(cardProps) ? (\n <DocumentCard {...cardProps} settings={settings.values} ref={forwardedRef as Ref<HTMLDivElement>} />\n ) : null;\n }\n break;\n }\n\n case 'settings': {\n return data.plugin === meta.id ? <MarkdownSettings settings={settings.values} /> : null;\n }\n }\n\n return null;\n },\n },\n intent: {\n resolver: ({ action, data }) => {\n switch (action) {\n case MarkdownAction.CREATE: {\n const doc = create(DocumentType, {\n name: data?.name,\n content: create(TextType, { content: data?.content ?? '' }),\n threads: [],\n });\n\n return {\n data: doc,\n intents: [[{ action: LayoutAction.SCROLL_INTO_VIEW, data: { id: fullyQualifiedId(doc) } }]],\n };\n }\n\n case MarkdownAction.SET_VIEW_MODE: {\n const { id, viewMode } = data ?? {};\n if (typeof id === 'string' && EditorViewModes.includes(viewMode)) {\n state.values.viewMode[id] = viewMode;\n return { data: true };\n }\n\n break;\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type LazyExoticComponent } from 'react';\n\nimport { type DocumentEditor as DocumentEditorType } from './DocumentEditor';\n\nexport { type DocumentCardProps, type DocumentItemProps } from './DocumentCard';\n\nexport * from './DocumentCard';\nexport * from './DocumentEditor';\nexport * from './MarkdownEditor';\nexport * from './HeadingMenu';\nexport * from './Layout';\nexport * from './MarkdownSettings';\n\n// Lazily load components for content surfaces.\nexport const DocumentCard = React.lazy(() => import('./DocumentCard'));\nexport const DocumentEditor: LazyExoticComponent<DocumentEditorType> = React.lazy(() => import('./DocumentEditor'));\nexport const MarkdownEditor = React.lazy(() => import('./MarkdownEditor'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DotsThreeVertical } from '@phosphor-icons/react';\nimport React, { type PropsWithChildren, type FC } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Button, DropdownMenu } from '@dxos/react-ui';\nimport { fineButtonDimensions, getSize } from '@dxos/react-ui-theme';\n\nimport { type DocumentType, type MarkdownProperties } from '../types';\n\n// TODO(thure): This needs to be refactored into a graph node action.\nexport const DocumentHeadingMenu: FC<{ document: DocumentType }> = ({ document }) => {\n return <HeadingMenu properties={document} content={document.content?.content} />;\n};\n\n/**\n * Menu for the layout heading.\n */\nexport const HeadingMenu = ({\n content,\n properties,\n}: PropsWithChildren<{\n content: string | undefined;\n properties: MarkdownProperties;\n}>) => {\n return (\n <DropdownMenu.Root modal={false}>\n <DropdownMenu.Trigger asChild>\n <Button variant='ghost' classNames={fineButtonDimensions}>\n <DotsThreeVertical className={getSize(4)} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content sideOffset={8} classNames='z-10'>\n <DropdownMenu.Viewport>\n <Surface data={{ content, properties }} role='menuitem' />\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Main } from '@dxos/react-ui';\nimport { editorWithToolbarLayout } from '@dxos/react-ui-editor';\nimport { topbarBlockPaddingStart } from '@dxos/react-ui-theme';\n\nexport const MainLayout = ({ children, toolbar }: PropsWithChildren<{ toolbar?: boolean }>) => {\n return (\n <Main.Content\n bounce\n data-toolbar={toolbar ? 'enabled' : 'disabled'}\n classNames={[topbarBlockPaddingStart, editorWithToolbarLayout]}\n >\n {children}\n </Main.Content>\n );\n};\n\n// Used when the editor is embedded in another context (e.g., iframe) and has no topbar/sidebar/etc.\n// TODO(wittjosiah): What's the difference between this and Section/Card?\nexport const EmbeddedLayout = ({ children }: PropsWithChildren) => {\n return <Main.Content classNames='min-bs-[100dvh] grid p-0.5'>{children}</Main.Content>;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { SettingsValue } from '@dxos/plugin-settings';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/react-ui-editor';\n\nimport { MARKDOWN_PLUGIN } from '../meta';\nimport { type MarkdownSettingsProps } from '../types';\n\nexport const MarkdownSettings = ({ settings }: { settings: MarkdownSettingsProps }) => {\n const { t } = useTranslation(MARKDOWN_PLUGIN);\n\n // TODO(wittjosiah): Add skill test confirmation for entering vim mode.\n return (\n <>\n <SettingsValue label={t('default view mode label')}>\n <Select.Root\n value={settings.defaultViewMode}\n onValueChange={(value) => {\n settings.defaultViewMode = value as EditorViewMode;\n }}\n >\n <Select.TriggerButton />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorViewModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`${mode} mode label`, { ns: 'react-ui-editor' })}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsValue>\n\n <SettingsValue label={t('editor input mode label')}>\n <Select.Root\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n settings.editorInputMode = value as EditorInputMode;\n }}\n >\n <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings editor input mode ${mode} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsValue>\n\n <SettingsValue label={t('settings toolbar label')}>\n <Input.Switch checked={settings.toolbar} onCheckedChange={(checked) => (settings.toolbar = !!checked)} />\n </SettingsValue>\n\n <SettingsValue label={t('settings numbered headings label')}>\n <Input.Switch\n checked={settings.numberedHeadings}\n onCheckedChange={(checked) => (settings.numberedHeadings = !!checked)}\n />\n </SettingsValue>\n\n <SettingsValue label={t('settings folding label')}>\n <Input.Switch checked={settings.folding} onCheckedChange={(checked) => (settings.folding = !!checked)} />\n </SettingsValue>\n\n <SettingsValue label={t('settings experimental label')}>\n <Input.Switch\n checked={settings.experimental}\n onCheckedChange={(checked) => (settings.experimental = !!checked)}\n />\n </SettingsValue>\n\n <SettingsValue\n label={t('settings debug label')}\n secondary={\n settings.debug ? (\n <Input.Root>\n <Input.TextArea\n rows={5}\n value={settings.typewriter}\n onChange={({ target: { value } }) => (settings.typewriter = value)}\n placeholder={t('settings debug placeholder')}\n />\n </Input.Root>\n ) : undefined\n }\n >\n <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />\n </SettingsValue>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MARKDOWN_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [MARKDOWN_PLUGIN]: {\n 'plugin name': 'Editor',\n 'create stack section label': 'Create document',\n 'document title placeholder': 'New document',\n 'choose markdown from space dialog title': 'Choose one or more documents to add',\n // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)\n 'empty choose markdown from space message': 'None available; try creating a new one instead?',\n 'chooser done label': 'Add selected',\n 'create document label': 'Create document',\n 'editor placeholder': 'New document',\n 'editor input mode label': 'Editor input mode',\n 'select editor input mode placeholder': 'Select editor input mode…',\n 'settings editor input mode default label': 'Default',\n 'settings editor input mode vim label': 'Vim',\n 'settings editor input mode vscode label': 'VS Code',\n 'settings toolbar label': 'Show toolbar',\n 'settings numbered headings label': 'Numbered headings',\n 'settings folding label': 'Folding',\n 'settings experimental label': 'Enable experimental features',\n 'settings debug label': 'Enable debugging features',\n 'settings debug placeholder': 'Typewriter script...',\n 'toggle view mode label': 'Toggle read-only',\n 'default view mode label': 'Default view mode',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MarkdownPlugin } from './MarkdownPlugin';\n\nexport default MarkdownPlugin;\n\nexport * from './MarkdownPlugin';\nexport * from './types';\nexport * from './util';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAuC;AACvC,IAAAA,gBAAgC;AAEhC,2BAQO;AACP,yBAAuB;AACvB,2BAAkC;AAClC,iBAAoB;AACpB,2BAAkC;AAClC,0BAAiE;AACjE,0BAA4B;AAC5B,mBAA+B;AAC/B,kBAMO;AACP,6BAKO;AACP,6BAAqC;AChCrC,IAAAA,gBAAgD;ACAhD,IAAAA,gBAAkC;AAClC,IAAAA,gBAAuD;AAEvD,IAAAC,wBAAwB;AACxB,sBAAqC;AACrC,4BAA8C;ACL9C,IAAAD,gBAA8C;AAE9C,IAAAE,mBAAqB;AACrB,IAAAC,0BAAwC;AACxC,IAAAC,yBAAwC;ACJxC,IAAAJ,gBAAkB;AAElB,6BAA8B;AAC9B,IAAAE,mBAA8C;AAC9C,IAAAC,0BAA6F;AAKtF,IAAME,mBAAmB,CAAC,EAAEC,SAAQ,MAAuC;AAChF,QAAM,EAAEC,EAAC,QAAKC,iCAAeC,qCAAAA;AAG7B,SACEC,8BAAAA,QAAA,cAAAA,cAAAA,QAAA,UAAA,MACEA,8BAAAA,QAAA,cAACC,sCAAAA;IAAcC,OAAOL,EAAE,yBAAA;KACtBG,8BAAAA,QAAA,cAACG,wBAAOC,MAAI;IACVC,OAAOT,SAASU;IAChBC,eAAe,CAACF,UAAAA;AACdT,eAASU,kBAAkBD;IAC7B;KAEAL,8BAAAA,QAAA,cAACG,wBAAOK,eAAa,IAAA,GACrBR,8BAAAA,QAAA,cAACG,wBAAOM,QAAM,MACZT,8BAAAA,QAAA,cAACG,wBAAOO,SAAO,MACbV,8BAAAA,QAAA,cAACG,wBAAOQ,UAAQ,MACbC,wCAAgBC,IAAI,CAACC,SACpBd,8BAAAA,QAAA,cAACG,wBAAOY,QAAM;IAACC,KAAKF;IAAMT,OAAOS;KAC9BjB,EAAE,GAAGiB,IAAAA,eAAmB;IAAEG,IAAI;EAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAS/DjB,8BAAAA,QAAA,cAACC,sCAAAA;IAAcC,OAAOL,EAAE,yBAAA;KACtBG,8BAAAA,QAAA,cAACG,wBAAOC,MAAI;IACVC,OAAOT,SAASsB,mBAAmB;IACnCX,eAAe,CAACF,UAAAA;AACdT,eAASsB,kBAAkBb;IAC7B;KAEAL,8BAAAA,QAAA,cAACG,wBAAOK,eAAa;IAACW,aAAatB,EAAE,sCAAA;MACrCG,8BAAAA,QAAA,cAACG,wBAAOM,QAAM,MACZT,8BAAAA,QAAA,cAACG,wBAAOO,SAAO,MACbV,8BAAAA,QAAA,cAACG,wBAAOQ,UAAQ,MACbS,yCAAiBP,IAAI,CAACC,SACrBd,8BAAAA,QAAA,cAACG,wBAAOY,QAAM;IAACC,KAAKF;IAAMT,OAAOS;KAC9BjB,EAAE,8BAA8BiB,IAAAA,QAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAS3Dd,8BAAAA,QAAA,cAACC,sCAAAA;IAAcC,OAAOL,EAAE,wBAAA;KACtBG,8BAAAA,QAAA,cAACqB,uBAAMC,QAAM;IAACC,SAAS3B,SAAS4B;IAASC,iBAAiB,CAACF,YAAa3B,SAAS4B,UAAU,CAAC,CAACD;OAG/FvB,8BAAAA,QAAA,cAACC,sCAAAA;IAAcC,OAAOL,EAAE,kCAAA;KACtBG,8BAAAA,QAAA,cAACqB,uBAAMC,QAAM;IACXC,SAAS3B,SAAS8B;IAClBD,iBAAiB,CAACF,YAAa3B,SAAS8B,mBAAmB,CAAC,CAACH;OAIjEvB,8BAAAA,QAAA,cAACC,sCAAAA;IAAcC,OAAOL,EAAE,wBAAA;KACtBG,8BAAAA,QAAA,cAACqB,uBAAMC,QAAM;IAACC,SAAS3B,SAAS+B;IAASF,iBAAiB,CAACF,YAAa3B,SAAS+B,UAAU,CAAC,CAACJ;OAG/FvB,8BAAAA,QAAA,cAACC,sCAAAA;IAAcC,OAAOL,EAAE,6BAAA;KACtBG,8BAAAA,QAAA,cAACqB,uBAAMC,QAAM;IACXC,SAAS3B,SAASgC;IAClBH,iBAAiB,CAACF,YAAa3B,SAASgC,eAAe,CAAC,CAACL;OAI7DvB,8BAAAA,QAAA,cAACC,sCAAAA;IACCC,OAAOL,EAAE,sBAAA;IACTgC,WACEjC,SAASkC,QACP9B,8BAAAA,QAAA,cAACqB,uBAAMjB,MAAI,MACTJ,8BAAAA,QAAA,cAACqB,uBAAMU,UAAQ;MACbC,MAAM;MACN3B,OAAOT,SAASqC;MAChBC,UAAU,CAAC,EAAEC,QAAQ,EAAE9B,MAAK,EAAE,MAAQT,SAASqC,aAAa5B;MAC5Dc,aAAatB,EAAE,4BAAA;UAGjBuC;KAGNpC,8BAAAA,QAAA,cAACqB,uBAAMC,QAAM;IAACC,SAAS3B,SAASkC;IAAOL,iBAAiB,CAACF,YAAa3B,SAASkC,QAAQ,CAAC,CAACP;;AAIjG;AHtFO,IAAMc,eAAerC,cAAAA,QAAMsC,KAAK,MAAM,OAAO,6BAAA,CAAA;AAC7C,IAAMC,iBAA0DvC,cAAAA,QAAMsC,KAAK,MAAM,OAAO,+BAAA,CAAA;AACxF,IAAME,iBAAiBxC,cAAAA,QAAMsC,KAAK,MAAM,OAAO,+BAAA,CAAA;AIdtD,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACvC,qCAAAA,GAAkB;QACjB,eAAe;QACf,8BAA8B;QAC9B,8BAA8B;QAC9B,2CAA2C;;QAE3C,4CAA4C;QAC5C,sBAAsB;QACtB,yBAAyB;QACzB,sBAAsB;QACtB,2BAA2B;QAC3B,wCAAwC;QACxC,4CAA4C;QAC5C,wCAAwC;QACxC,2CAA2C;QAC3C,0BAA0B;QAC1B,oCAAoC;QACpC,0BAA0B;QAC1B,+BAA+B;QAC/B,wBAAwB;QACxB,8BAA8B;QAC9B,0BAA0B;QAC1B,2BAA2B;MAC7B;IACF;EACF;;;ALmBF,IAAM0C,gBAAgB,CAACC,SAAAA;AACrB,SACEA,QACA,OAAOA,SAAS,YAChB,QAAQA,QACR,OAAOA,KAAKC,OAAO,YACnB,UAAUD,QACV,OAAOA,KAAKE,SAAS;AAEzB;AAEO,IAAMC,iBAAiB,MAAA;AAC5B,QAAMjD,WAAW,IAAIkD,uCAAyC/C,uCAAiB;IAC7EO,iBAAiB;IACjBkB,SAAS;IACTI,cAAc;EAChB,CAAA;AAEA,QAAMmB,QAAQ,IAAID,uCAAuC/C,uCAAiB;IAAEiD,oBAAoB,CAAA;IAAIC,UAAU,CAAC;EAAE,CAAA;AAEjH,QAAMC,cAAc,CAACP,OAAAA;AACnB,WAAQA,MAAMI,MAAMI,OAAOF,SAASN,EAAAA,KAAQ/C,SAASuD,OAAO7C;EAC9D;AAEA,QAAM8C,cAAc,CAACT,IAAYU,iBAAAA;AAC/BN,UAAMI,OAAOF,SAASN,EAAAA,IAAMU;EAC9B;AAEA,SAAO;IACLC,MAAAA;IACAC,OAAO,OAAOC,YAAAA;AACZ5D,eACG6D,KAAK;QACJzC,KAAK;QACL0C,YAAY;QACZC,MAAMb,uCAAkBc,KAAI;MAC9B,CAAA,EACCH,KAAK;QACJzC,KAAK;QACL0C,YAAY;QACZC,MAAMb,uCAAkBc,KAAsB;UAAEC,gBAAgB;QAAK,CAAA;MACvE,CAAA,EACCJ,KAAK;QAAEzC,KAAK;QAAW2C,MAAMb,uCAAkBgB,KAAK;UAAED,gBAAgB;QAAK,CAAA;MAAG,CAAA,EAC9EJ,KAAK;QAAEzC,KAAK;QAAgB2C,MAAMb,uCAAkBgB,KAAK;UAAED,gBAAgB;QAAK,CAAA;MAAG,CAAA,EACnFJ,KAAK;QAAEzC,KAAK;QAAS2C,MAAMb,uCAAkBgB,KAAK;UAAED,gBAAgB;QAAK,CAAA;MAAG,CAAA,EAC5EJ,KAAK;QAAEzC,KAAK;QAAc2C,MAAMb,uCAAkBiB,OAAO;UAAEF,gBAAgB;QAAK,CAAA;MAAG,CAAA,EACnFJ,KAAK;QAAEzC,KAAK;QAAoB2C,MAAMb,uCAAkBgB,KAAK;UAAED,gBAAgB;QAAK,CAAA;MAAG,CAAA,EACvFJ,KAAK;QAAEzC,KAAK;QAAW2C,MAAMb,uCAAkBgB,KAAK;UAAED,gBAAgB;QAAK,CAAA;MAAG,CAAA;AAEjFd,YAAMU,KAAK;QACTzC,KAAK;QACL0C,YAAY;QACZC,MAAMb,uCAAkBkB,KAAI;MAC9B,CAAA;AAEAC,0DAAyBT,OAAAA,EAASU,QAAQ,CAACC,WAAAA;AACzC,cAAM,EAAEC,WAAU,IAAKD,OAAOE,SAASC;AACvCvB,cAAMI,OAAOH,mBAAmBuB,KAAKH,UAAAA;MACvC,CAAA;IACF;IACAC,UAAU;MACRzE,UAAUA,SAASuD;MACnBqB,UAAU;QACRC,SAAS;UACP,CAACC,mCAAaC,QAAQ,GAAG;YACvBzE,OAAO,CAAC0E,WAAiBA,kBAAkBF,qCAAeE,OAAOC,QAAQD,OAAOE,eAAe1C;YAC/FjB,aAAa;cAAC;cAA8B;gBAAEF,IAAIlB;cAAgB;;YAClEgF,MAAM,CAACC,UAAqBhF,8BAAAA,QAAA,cAACiF,qBAAWD,KAAAA;YACxCE,YAAY;YACZC,YAAY;cACVC,kBAAkB;YACpB;;YAEAC,gBAAgB,CAACC,YAAsBC,kCAAqBD,KAAK,CAACA,SAAQ;cAACA,KAAIE;iBAAYF,KAAIG;aAAQ;YACvGC;UACF;QACF;MACF;MACAC,cAAc;WAAIA;WAAiBC,uBAAAA;;MACnCC,MAAM;QACJC,QAAQ;UAACpB;UAAcqB;;MACzB;MACAC,OAAO;QACLC,SAAS,CAACzC,YAAAA;AACR,gBAAM0C,aAASC,oCAAc3C,SAAS4C,sCAAAA,GAAoB/B,SAAS6B;AACnE,gBAAMG,eAAWF,oCAAc3C,SAAS8C,sCAAAA,GAAoBjC,SAASkC,OAAOF;AAC5E,cAAI,CAACH,UAAU,CAACG,UAAU;AACxB,mBAAO,CAAA;UACT;AAEA,qBAAOG,qCAAgB;YACrB7D,IAAI8D,qCAAeC;YACnBC,QAAQ,CAACC,aAA8BC,mCAAcD,IAAAA,KAASA,KAAKjE,GAAGmE,WAAWC,gCAAYC,UAAU;YACvGC,SAAS,CAAC,EAAEL,KAAI,MAAE;AAChB,oBAAMjE,KAAKiE,KAAKjE,GAAGuE,MAAM,GAAA,EAAKC,GAAG,EAAC;AAClC,oBAAM,CAACC,SAASC,QAAAA,IAAY1E,IAAIuE,MAAM,GAAA,KAAQ,CAAA;AAC9C,oBAAMI,QAAQpB,OAAOqB,OAAOC,IAAG,EAAGC,KAAK,CAACH,WAAUA,OAAM3E,OAAOyE,OAAAA;AAC/D,oBAAMxC,SAASyC,YAAYC,OAAOI,GAAGC,cAAcN,QAAAA;AACnD,oBAAMlF,SAASkF,WAAWzC,SAAS0C;AACnC,kBAAI,CAACnF,QAAQ;AACX;cACF;AAEA,qBAAO;gBACL;kBACEQ,IAAI,GAAG5C,qCAAAA,WAA0B6G,KAAKjE,EAAE;kBACxCD,MAAM,YAAA;AACJ,0BAAM2D,SAAS;sBACb;wBAAElC,QAAQpE;wBAAiB6H,QAAQnB,qCAAeC;sBAAO;sBACzD;wBAAEkB,QAAQb,gCAAYC;wBAAYtE,MAAM;0BAAEP;wBAAO;sBAAE;sBACnD;wBAAEyF,QAAQC,sCAAiBC;sBAAK;qBACjC;kBACH;kBACAC,YAAY;oBACV7H,OAAO;sBAAC;sBAAyB;wBAAEe,IAAIlB;sBAAgB;;oBACvDgF,MAAM,CAACC,UAAqBhF,8BAAAA,QAAA,cAACiF,qBAAWD,KAAAA;oBACxCE,YAAY;oBACZ8C,QAAQ;kBACV;gBACF;;YAEJ;UACF,CAAA;QACF;QACAtC,YAAY,CAAClC,YAAAA;AACX,gBAAM6C,eAAWF,oCAAc3C,SAAS8C,sCAAAA,GAAoBjC,SAASkC,OAAOF;AAC5E,cAAI,CAACA,UAAU;AACb,mBAAO,CAAA;UACT;AACA,iBAAO;YACL;cACE4B,WAAWvD,mCAAaC;cACxBuD,YAAY;;cAEZC,WAAW,OAAOvB,SAAAA;AAChB,sBAAMtB,MAAMsB,KAAKlE;AACjB,sBAAM8C,UAAU,UAAMD,kCAAqBD,KAAK,CAACA,SAAQA,KAAIE,OAAO;AACpE,uBAAO;kBACLX,MACES,IAAIT,QACJS,IAAIR,gBACJa,qBAAa,CAAA,EAAG,OAAA,EAAS5F,qCAAAA,EAAiB,4BAAA;kBAC5C2C,MAAM8C,QAAQA;kBACd7B,MAAM;gBACR;cACF;cACAyE,aAAa,OAAO1F,MAAM2F,cAAAA;AACxB,sBAAMf,QAAQe,UAAUZ,KAAKa,mBAAAA;AAC7B,sBAAMnG,SACJkG,UAAUE,SAAS,CAACC,aAAaA,oBAAoBC,2BAAAA,KACrDnB,OAAOS,WAAWU,4BAAe9D,QAAQ;AAC3C,oBAAI,CAAC2C,SAAS,CAACnF,QAAQ;AACrB;gBACF;AAEA,sBAAMuG,SAAS,MAAMrC,SAAS;kBAC5B;oBACElC,QAAQpE;oBACR6H,QAAQnB,qCAAeC;oBACvBhE,MAAM;sBAAEmC,MAAMnC,KAAKmC;sBAAMW,SAAS9C,KAAKA;oBAAK;kBAC9C;kBACA;oBACEkF,QAAQb,gCAAYC;oBACpBtE,MAAM;sBAAEP;oBAAO;kBACjB;iBACD;AAED,uBAAOuG,QAAQhG,KAAKkC;cACtB;YACF;;QAEJ;MACF;MACA+D,OAAO;QACLC,UAAU;UACR;YACEjG,IAAI;YACJqF,QAAQ;YACRrE,MAAM;cAAC;cAAe;gBAAE1C,IAAIlB;cAAgB;;YAC5CG,OAAO;cAAC;cAA8B;gBAAEe,IAAIlB;cAAgB;;YAC5DgF,MAAM,CAACC,UAAehF,8BAAAA,QAAA,cAACiF,qBAAWD,KAAAA;YAClCuB,QAAQ;cACNpC,QAAQpE;cACR6H,QAAQnB,qCAAeC;YACzB;UACF;;MAEJ;MACAmC,QAAQ;;QAENC,WAAW,CAACC,QAAQA,eAAerE;QACnCsE,YAAY,CAAC1D,QAAAA;AACX,gBAAM2D,WAAW3D,IAAIE,cAAU0D,+BAAkB5D,IAAIE,SAAS;YAAC;WAAU,IAAIpD;AAE7E,cAAI,CAAC6G,UAAU;AACbE,2BAAIC,KAAK,2CAAA,QAAA;;;;;;AACT,mBAAO,CAACC,MAAM;UAChB;AAEA,gBAAMC,mBAAmB,CAACC,WAAAA;AACxB,kBAAMC,QAAQD,aAASE,gCAAmBR,UAAUM,MAAAA,IAAUnH;AAC9D,mBAAOoH,OAAOE,SAASC,OAAOC;UAChC;AAEA,iBAAO,CAACC,SAAiBC,YAAoBR,iBAAiBO,OAAAA,IAAWP,iBAAiBQ,OAAAA;QAC5F;MACF;MACAC,SAAS;QACPC,WAAW,CAAC,EAAEtH,MAAMuH,MAAM,GAAGjF,MAAAA,GAASkF,iBAAAA;AACpC,gBAAM5E,MACJ5C,KAAKyH,kBAAkBzF,qCACnBhC,KAAKyH,SACLzH,KAAKkC,kBAAkBF,qCACrBhC,KAAKkC,SACLxC;AAER,kBAAQ6H,MAAAA;YACN,KAAK;YACL,KAAK,WAAW;AACd,kBAAI3E,OAAOA,IAAIE,SAAS;AACtB,uBACExF,8BAAAA,QAAA,cAACuC,gBAAAA;kBACC0H;kBACAG,YAAY1H,KAAK0H;kBACjBC,UAAU/E;kBACVtC,oBAAoBD,MAAMI,OAAOH;kBACjCpD,UAAUA,SAASuD;kBACnBmH,eAAAA;kBACArH,UAAUC,gBAAYqH,8BAAiBjF,GAAAA,CAAAA;kBACvCkF,kBAAkBpH;;cAGxB,WAAWX,cAAcC,KAAKkC,MAAM,GAAG;AACrC,uBACE5E,8BAAAA,QAAA,cAACwC,gBAAAA;kBACCG,IAAID,KAAKkC,OAAOjC;kBAChBsH;kBACAG,YAAY1H,KAAK0H;kBACjBK,cAAc/H,KAAKkC,OAAOhC;kBAC1BI,oBAAoBD,MAAMI,OAAOH;kBACjC0H,WAAW9K,SAASuD,OAAOjC;kBAC3BM,SAAS5B,SAASuD,OAAO3B;kBACzB8I,eAAAA;kBACArH,UAAUC,YAAYR,KAAKkC,OAAOjC,EAAE;kBACpC6H,kBAAkBpH;;cAGxB;AACA;YACF;YAEA,KAAK,QAAQ;AACX,sBACEuH,+BAASjI,KAAK8C,OAAO,KACrB,OAAO9C,KAAK8C,QAAQ7C,OAAO,YAC3BD,KAAK8C,QAAQZ,kBAAkBF,oCAC/B;AAGA,sBAAMkG,YAAY;kBAChB,GAAG5F;kBACH6F,MAAM;oBACJlI,IAAID,KAAK8C,QAAQ7C;oBACjBiC,QAAQlC,KAAK8C,QAAQZ;oBACrBkG,OAAO,OAAOpI,KAAK8C,QAAQsF,UAAU,WAAWpI,KAAK8C,QAAQsF,QAAQ1I;kBACvE;gBACF;AAEA,2BAAO2I,6CAAqBH,SAAAA,IAC1B5K,8BAAAA,QAAA,cAACqC,cAAAA;kBAAc,GAAGuI;kBAAWhL,UAAUA,SAASuD;kBAAQ6H,KAAKd;qBAC3D;cACN;AACA;YACF;YAEA,KAAK,YAAY;AACf,qBAAOxH,KAAKyB,WAAWb,mCAAKX,KAAK3C,8BAAAA,QAAA,cAACL,kBAAAA;gBAAiBC,UAAUA,SAASuD;mBAAa;YACrF;UACF;AAEA,iBAAO;QACT;MACF;MACAoD,QAAQ;QACN0E,UAAU,CAAC,EAAErD,QAAQlF,KAAI,MAAE;AACzB,kBAAQkF,QAAAA;YACN,KAAKnB,qCAAeC,QAAQ;AAC1B,oBAAMpB,UAAM4F,2BAAOxG,oCAAc;gBAC/BG,MAAMnC,MAAMmC;gBACZW,aAAS0F,2BAAOnF,gCAAU;kBAAEP,SAAS9C,MAAM8C,WAAW;gBAAG,CAAA;gBACzDC,SAAS,CAAA;cACX,CAAA;AAEA,qBAAO;gBACL/C,MAAM4C;gBACN6F,SAAS;kBAAC;oBAAC;sBAAEvD,QAAQwD,kCAAaC;sBAAkB3I,MAAM;wBAAEC,QAAI4H,8BAAiBjF,GAAAA;sBAAK;oBAAE;;;cAC1F;YACF;YAEA,KAAKmB,qCAAe6E,eAAe;AACjC,oBAAM,EAAE3I,IAAIM,SAAQ,IAAKP,QAAQ,CAAC;AAClC,kBAAI,OAAOC,OAAO,YAAY/B,uBAAAA,gBAAgB2K,SAAStI,QAAAA,GAAW;AAChEF,sBAAMI,OAAOF,SAASN,EAAAA,IAAMM;AAC5B,uBAAO;kBAAEP,MAAM;gBAAK;cACtB;AAEA;YACF;UACF;QACF;MACF;IACF;EACF;AACF;AMxWA,IAAA,cAAeG;",
|
|
6
|
+
"names": ["import_react", "import_app_framework", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "MarkdownSettings", "settings", "t", "useTranslation", "MARKDOWN_PLUGIN", "React", "SettingsValue", "label", "Select", "Root", "value", "defaultViewMode", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "EditorViewModes", "map", "mode", "Option", "key", "ns", "editorInputMode", "placeholder", "EditorInputModes", "Input", "Switch", "checked", "toolbar", "onCheckedChange", "numberedHeadings", "folding", "experimental", "secondary", "debug", "TextArea", "rows", "typewriter", "onChange", "target", "undefined", "DocumentCard", "lazy", "DocumentEditor", "MarkdownEditor", "isEditorModel", "data", "id", "text", "MarkdownPlugin", "LocalStorageStore", "state", "extensionProviders", "viewMode", "getViewMode", "values", "setViewMode", "nextViewMode", "meta", "ready", "plugins", "prop", "storageKey", "type", "enum", "allowUndefined", "bool", "string", "json", "markdownExtensionPlugins", "forEach", "plugin", "extensions", "provides", "markdown", "push", "metadata", "records", "DocumentType", "typename", "object", "name", "fallbackName", "icon", "props", "TextAa", "iconSymbol", "graphProps", "managesAutofocus", "loadReferences", "doc", "loadObjectReferences", "content", "threads", "serializer", "translations", "editorTranslations", "echo", "schema", "TextType", "graph", "builder", "client", "resolvePlugin", "parseClientPlugin", "dispatch", "parseIntentPlugin", "intent", "createExtension", "MarkdownAction", "CREATE", "filter", "node", "isActionGroup", "startsWith", "SpaceAction", "ADD_OBJECT", "actions", "split", "at", "spaceId", "objectId", "space", "spaces", "get", "find", "db", "getObjectById", "action", "NavigationAction", "OPEN", "properties", "testId", "inputType", "outputType", "serialize", "deserialize", "ancestors", "isSpace", "findLast", "ancestor", "CollectionType", "result", "stack", "creators", "thread", "predicate", "obj", "createSort", "accessor", "createDocAccessor", "log", "warn", "_", "getStartPosition", "cursor", "range", "getRangeFromCursor", "start", "Number", "MAX_SAFE_INTEGER", "anchorA", "anchorB", "surface", "component", "role", "forwardedRef", "active", "coordinate", "document", "scrollPastEnd", "fullyQualifiedId", "onViewModeChange", "initialValue", "inputMode", "isObject", "cardProps", "item", "color", "isTileComponentProps", "ref", "resolver", "create", "intents", "LayoutAction", "SCROLL_INTO_VIEW", "SET_VIEW_MODE", "includes"]
|
|
7
7
|
}
|