@dxos/plugin-markdown 0.7.4 → 0.7.5-main.9d26e3a

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.
Files changed (65) hide show
  1. package/dist/lib/browser/{MarkdownContainer-6OPC5MKP.mjs → MarkdownContainer-XY6NEUOA.mjs} +86 -86
  2. package/dist/lib/browser/MarkdownContainer-XY6NEUOA.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-CMSUKMPM.mjs → chunk-6FIHBJRV.mjs} +27 -7
  4. package/dist/lib/browser/chunk-6FIHBJRV.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-TZN5FGB2.mjs → chunk-R4MG2DP2.mjs} +6 -6
  6. package/dist/lib/browser/chunk-R4MG2DP2.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +88 -174
  8. package/dist/lib/browser/index.mjs.map +3 -3
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/types/index.mjs +1 -1
  11. package/dist/lib/node/{MarkdownContainer-6OKJOHTZ.cjs → MarkdownContainer-EX6YDF6J.cjs} +78 -78
  12. package/dist/lib/node/MarkdownContainer-EX6YDF6J.cjs.map +7 -0
  13. package/dist/lib/node/{chunk-YGMWZIIJ.cjs → chunk-CQMXZ54Z.cjs} +28 -8
  14. package/dist/lib/node/chunk-CQMXZ54Z.cjs.map +7 -0
  15. package/dist/lib/node/{chunk-KEPAM4JP.cjs → chunk-SXQAPZZU.cjs} +9 -9
  16. package/dist/lib/node/chunk-SXQAPZZU.cjs.map +7 -0
  17. package/dist/lib/node/index.cjs +123 -209
  18. package/dist/lib/node/index.cjs.map +3 -3
  19. package/dist/lib/node/meta.json +1 -1
  20. package/dist/lib/node/types/index.cjs +5 -5
  21. package/dist/lib/node/types/index.cjs.map +1 -1
  22. package/dist/lib/node-esm/{MarkdownContainer-GBNSGROQ.mjs → MarkdownContainer-E7W623A7.mjs} +86 -86
  23. package/dist/lib/node-esm/MarkdownContainer-E7W623A7.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-NUMUUCYF.mjs → chunk-Y76MM22C.mjs} +6 -6
  25. package/dist/lib/node-esm/chunk-Y76MM22C.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-ERJ52KN2.mjs → chunk-ZVFBKBSA.mjs} +27 -7
  27. package/dist/lib/node-esm/chunk-ZVFBKBSA.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +88 -174
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/types/index.mjs +1 -1
  32. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  33. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  34. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
  35. package/dist/types/src/extensions.d.ts +2 -2
  36. package/dist/types/src/extensions.d.ts.map +1 -1
  37. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  38. package/dist/types/src/types/index.d.ts +1 -1
  39. package/dist/types/src/types/index.d.ts.map +1 -1
  40. package/dist/types/src/types/schema.d.ts +82 -0
  41. package/dist/types/src/types/schema.d.ts.map +1 -0
  42. package/dist/types/src/types/types.d.ts +31 -12
  43. package/dist/types/src/types/types.d.ts.map +1 -1
  44. package/dist/types/tsconfig.tsbuildinfo +1 -0
  45. package/package.json +30 -29
  46. package/src/MarkdownPlugin.tsx +84 -149
  47. package/src/components/MarkdownContainer.tsx +8 -3
  48. package/src/components/MarkdownEditor.tsx +5 -13
  49. package/src/extensions.tsx +9 -10
  50. package/src/hooks/useSelectCurrentThread.tsx +17 -14
  51. package/src/types/index.ts +1 -1
  52. package/src/types/{document.ts → schema.ts} +4 -3
  53. package/src/types/types.ts +21 -15
  54. package/src/util.tsx +3 -3
  55. package/dist/lib/browser/MarkdownContainer-6OPC5MKP.mjs.map +0 -7
  56. package/dist/lib/browser/chunk-CMSUKMPM.mjs.map +0 -7
  57. package/dist/lib/browser/chunk-TZN5FGB2.mjs.map +0 -7
  58. package/dist/lib/node/MarkdownContainer-6OKJOHTZ.cjs.map +0 -7
  59. package/dist/lib/node/chunk-KEPAM4JP.cjs.map +0 -7
  60. package/dist/lib/node/chunk-YGMWZIIJ.cjs.map +0 -7
  61. package/dist/lib/node-esm/MarkdownContainer-GBNSGROQ.mjs.map +0 -7
  62. package/dist/lib/node-esm/chunk-ERJ52KN2.mjs.map +0 -7
  63. package/dist/lib/node-esm/chunk-NUMUUCYF.mjs.map +0 -7
  64. package/dist/types/src/types/document.d.ts +0 -106
  65. package/dist/types/src/types/document.d.ts.map +0 -1
@@ -16,16 +16,16 @@ 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 chunk_KEPAM4JP_exports = {};
20
- __export(chunk_KEPAM4JP_exports, {
19
+ var chunk_SXQAPZZU_exports = {};
20
+ __export(chunk_SXQAPZZU_exports, {
21
21
  getFallbackName: () => getFallbackName,
22
22
  isMarkdownProperties: () => isMarkdownProperties,
23
23
  markdownExtensionPlugins: () => markdownExtensionPlugins,
24
24
  serializer: () => serializer,
25
25
  setFallbackName: () => setFallbackName
26
26
  });
27
- module.exports = __toCommonJS(chunk_KEPAM4JP_exports);
28
- var import_chunk_YGMWZIIJ = require("./chunk-YGMWZIIJ.cjs");
27
+ module.exports = __toCommonJS(chunk_SXQAPZZU_exports);
28
+ var import_chunk_CQMXZ54Z = require("./chunk-CQMXZ54Z.cjs");
29
29
  var import_async = require("@dxos/async");
30
30
  var import_echo = require("@dxos/react-client/echo");
31
31
  var isMarkdownProperties = (data) => (0, import_echo.isEchoObject)(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
@@ -48,17 +48,17 @@ var serializer = {
48
48
  return JSON.stringify({
49
49
  name: object.name,
50
50
  fallbackName: object.fallbackName,
51
- content: content.content
51
+ content: content.target?.content
52
52
  });
53
53
  },
54
54
  deserialize: async ({ content: serialized }) => {
55
55
  const { name, fallbackName, content } = JSON.parse(serialized);
56
- return (0, import_echo.createObject)((0, import_echo.create)(import_chunk_YGMWZIIJ.DocumentType, {
56
+ return (0, import_echo.createObject)((0, import_echo.create)(import_chunk_CQMXZ54Z.DocumentType, {
57
57
  name,
58
58
  fallbackName,
59
- content: (0, import_echo.create)(import_chunk_YGMWZIIJ.TextType, {
59
+ content: (0, import_echo.makeRef)((0, import_echo.create)(import_chunk_CQMXZ54Z.TextType, {
60
60
  content
61
- }),
61
+ })),
62
62
  threads: []
63
63
  }));
64
64
  }
@@ -71,4 +71,4 @@ var serializer = {
71
71
  serializer,
72
72
  setFallbackName
73
73
  });
74
- //# sourceMappingURL=chunk-KEPAM4JP.cjs.map
74
+ //# sourceMappingURL=chunk-SXQAPZZU.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space/types';\nimport { create, createObject, isEchoObject, loadObjectReferences, makeRef } from '@dxos/react-client/echo';\n\nimport { DocumentType, type MarkdownProperties, type MarkdownExtensionProvides, TextType } from './types';\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n isEchoObject(data)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\ntype MarkdownExtensionPlugin = Plugin<MarkdownExtensionProvides>;\n\nexport const markdownExtensionPlugins = (plugins: Plugin[]): MarkdownExtensionPlugin[] => {\n return (plugins as MarkdownExtensionPlugin[]).filter((plugin) => Boolean(plugin.provides?.markdown));\n};\n\nconst nonTitleChars = /[^\\w ]/g;\n\nexport const getFallbackName = (content: string) => {\n return content.substring(0, 31).split('\\n')[0].replaceAll(nonTitleChars, '').trim();\n};\n\nexport const setFallbackName = debounce((doc: DocumentType, content: string) => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n doc.fallbackName = name;\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<DocumentType> = {\n serialize: async ({ object }): Promise<string> => {\n const content = await loadObjectReferences(object, (doc) => doc.content);\n return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content: content.target?.content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, fallbackName, content } = JSON.parse(serialized);\n return createObject(\n create(DocumentType, { name, fallbackName, content: makeRef(create(TextType, { content })), threads: [] }),\n );\n },\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAyB;AAEzB,kBAAkF;AAI3E,IAAMA,uBAAuB,CAACC,aACnCC,0BAAaD,IAAAA,IACT,OACAA,QAAQ,OAAOA,SAAS,WACtB,WAAWA,QAAQ,OAAOA,KAAKE,UAAU,WACzC;AAID,IAAMC,2BAA2B,CAACC,YAAAA;AACvC,SAAQA,QAAsCC,OAAO,CAACC,WAAWC,QAAQD,OAAOE,UAAUC,QAAAA,CAAAA;AAC5F;AAEA,IAAMC,gBAAgB;AAEf,IAAMC,kBAAkB,CAACC,YAAAA;AAC9B,SAAOA,QAAQC,UAAU,GAAG,EAAA,EAAIC,MAAM,IAAA,EAAM,CAAA,EAAGC,WAAWL,eAAe,EAAA,EAAIM,KAAI;AACnF;AAEO,IAAMC,sBAAkBC,uBAAS,CAACC,KAAmBP,YAAAA;AAC1D,QAAMQ,OAAOT,gBAAgBC,OAAAA;AAC7B,MAAIO,IAAIE,iBAAiBD,MAAM;AAC7BD,QAAIE,eAAeD;EACrB;AACF,GAAG,GAAA;AAEI,IAAME,aAAkD;EAC7DC,WAAW,OAAO,EAAEC,OAAM,MAAE;AAC1B,UAAMZ,UAAU,UAAMa,kCAAqBD,QAAQ,CAACL,QAAQA,IAAIP,OAAO;AACvE,WAAOc,KAAKC,UAAU;MAAEP,MAAMI,OAAOJ;MAAMC,cAAcG,OAAOH;MAAcT,SAASA,QAAQgB,QAAQhB;IAAQ,CAAA;EACjH;EAEAiB,aAAa,OAAO,EAAEjB,SAASkB,WAAU,MAAE;AACzC,UAAM,EAAEV,MAAMC,cAAcT,QAAO,IAAKc,KAAKK,MAAMD,UAAAA;AACnD,eAAOE,8BACLC,oBAAOC,oCAAc;MAAEd;MAAMC;MAAcT,aAASuB,yBAAQF,oBAAOG,gCAAU;QAAExB;MAAQ,CAAA,CAAA;MAAKyB,SAAS,CAAA;IAAG,CAAA,CAAA;EAE5G;AACF;",
6
+ "names": ["isMarkdownProperties", "data", "isEchoObject", "title", "markdownExtensionPlugins", "plugins", "filter", "plugin", "Boolean", "provides", "markdown", "nonTitleChars", "getFallbackName", "content", "substring", "split", "replaceAll", "trim", "setFallbackName", "debounce", "doc", "name", "fallbackName", "serializer", "serialize", "object", "loadObjectReferences", "JSON", "stringify", "target", "deserialize", "serialized", "parse", "createObject", "create", "DocumentType", "makeRef", "TextType", "threads"]
7
+ }
@@ -28,102 +28,100 @@ 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: () => import_chunk_YGMWZIIJ.DocumentType,
32
- MarkdownAction: () => import_chunk_YGMWZIIJ.MarkdownAction,
31
+ DocumentType: () => import_chunk_CQMXZ54Z.DocumentType,
32
+ MarkdownAction: () => import_chunk_CQMXZ54Z.MarkdownAction,
33
33
  MarkdownPlugin: () => MarkdownPlugin,
34
- TextType: () => import_chunk_YGMWZIIJ.TextType,
34
+ TextType: () => import_chunk_CQMXZ54Z.TextType,
35
35
  default: () => src_default,
36
- getFallbackName: () => import_chunk_KEPAM4JP.getFallbackName,
37
- isEditorModel: () => import_chunk_YGMWZIIJ.isEditorModel,
38
- isMarkdownProperties: () => import_chunk_KEPAM4JP.isMarkdownProperties,
39
- markdownExtensionPlugins: () => import_chunk_KEPAM4JP.markdownExtensionPlugins,
40
- serializer: () => import_chunk_KEPAM4JP.serializer,
41
- setFallbackName: () => import_chunk_KEPAM4JP.setFallbackName
36
+ getFallbackName: () => import_chunk_SXQAPZZU.getFallbackName,
37
+ isEditorModel: () => import_chunk_CQMXZ54Z.isEditorModel,
38
+ isMarkdownProperties: () => import_chunk_SXQAPZZU.isMarkdownProperties,
39
+ markdownExtensionPlugins: () => import_chunk_SXQAPZZU.markdownExtensionPlugins,
40
+ serializer: () => import_chunk_SXQAPZZU.serializer,
41
+ setFallbackName: () => import_chunk_SXQAPZZU.setFallbackName
42
42
  });
43
43
  module.exports = __toCommonJS(node_exports);
44
- var import_chunk_KEPAM4JP = require("./chunk-KEPAM4JP.cjs");
45
- var import_chunk_YGMWZIIJ = require("./chunk-YGMWZIIJ.cjs");
44
+ var import_chunk_SXQAPZZU = require("./chunk-SXQAPZZU.cjs");
45
+ var import_chunk_CQMXZ54Z = require("./chunk-CQMXZ54Z.cjs");
46
46
  var import_chunk_PHHIPRJC = require("./chunk-PHHIPRJC.cjs");
47
- var import_react = require("@phosphor-icons/react");
48
- var import_react2 = __toESM(require("react"));
47
+ var import_effect = require("effect");
48
+ var import_react = __toESM(require("react"));
49
49
  var import_app_framework = require("@dxos/app-framework");
50
50
  var import_live_object = require("@dxos/live-object");
51
51
  var import_local_storage = require("@dxos/local-storage");
52
- var import_plugin_client = require("@dxos/plugin-client");
53
- var import_plugin_graph = require("@dxos/plugin-graph");
54
52
  var import_plugin_space = require("@dxos/plugin-space");
55
53
  var import_types = require("@dxos/plugin-space/types");
56
54
  var import_echo = require("@dxos/react-client/echo");
57
55
  var import_react_ui_editor = require("@dxos/react-ui-editor");
58
- var import_react3 = require("react");
59
- var import_react4 = __toESM(require("react"));
56
+ var import_react2 = require("react");
57
+ var import_react3 = __toESM(require("react"));
60
58
  var import_react_ui = require("@dxos/react-ui");
61
59
  var import_react_ui_editor2 = require("@dxos/react-ui-editor");
62
60
  var import_react_ui_form = require("@dxos/react-ui-form");
63
61
  var MarkdownSettings = ({ settings }) => {
64
62
  const { t } = (0, import_react_ui.useTranslation)(import_chunk_PHHIPRJC.MARKDOWN_PLUGIN);
65
- return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
63
+ return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
66
64
  label: t("default view mode label")
67
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Root, {
65
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Root, {
68
66
  value: settings.defaultViewMode,
69
67
  onValueChange: (value) => {
70
68
  settings.defaultViewMode = value;
71
69
  }
72
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.TriggerButton, null), /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Viewport, null, import_react_ui_editor2.EditorViewModes.map((mode) => /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Option, {
70
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.TriggerButton, null), /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Viewport, null, import_react_ui_editor2.EditorViewModes.map((mode) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Option, {
73
71
  key: mode,
74
72
  value: mode
75
73
  }, t(`${mode} mode label`, {
76
74
  ns: "react-ui-editor"
77
- })))))))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
75
+ })))))))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
78
76
  label: t("editor input mode label")
79
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Root, {
77
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Root, {
80
78
  value: settings.editorInputMode ?? "default",
81
79
  onValueChange: (value) => {
82
80
  settings.editorInputMode = value;
83
81
  }
84
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.TriggerButton, {
82
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.TriggerButton, {
85
83
  placeholder: t("select editor input mode placeholder")
86
- }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Viewport, null, import_react_ui_editor2.EditorInputModes.map((mode) => /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Option, {
84
+ }), /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Viewport, null, import_react_ui_editor2.EditorInputModes.map((mode) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Select.Option, {
87
85
  key: mode,
88
86
  value: mode
89
- }, t(`settings editor input mode ${mode} label`)))))))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
87
+ }, t(`settings editor input mode ${mode} label`)))))))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
90
88
  label: t("settings toolbar label")
91
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.Switch, {
89
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.Switch, {
92
90
  checked: settings.toolbar,
93
91
  onCheckedChange: (checked) => settings.toolbar = !!checked
94
- })), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
92
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
95
93
  label: t("settings numbered headings label")
96
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.Switch, {
94
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.Switch, {
97
95
  checked: settings.numberedHeadings,
98
96
  onCheckedChange: (checked) => settings.numberedHeadings = !!checked
99
- })), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
97
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
100
98
  label: t("settings folding label")
101
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.Switch, {
99
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.Switch, {
102
100
  checked: settings.folding,
103
101
  onCheckedChange: (checked) => settings.folding = !!checked
104
- })), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
102
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
105
103
  label: t("settings experimental label")
106
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.Switch, {
104
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.Switch, {
107
105
  checked: settings.experimental,
108
106
  onCheckedChange: (checked) => settings.experimental = !!checked
109
- })), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_form.DeprecatedFormInput, {
107
+ })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui_form.DeprecatedFormInput, {
110
108
  label: t("settings debug label"),
111
- secondary: settings.debug ? /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.TextArea, {
109
+ secondary: settings.debug ? /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.TextArea, {
112
110
  rows: 5,
113
111
  value: settings.typewriter,
114
112
  onChange: ({ target: { value } }) => settings.typewriter = value,
115
113
  placeholder: t("settings debug placeholder")
116
114
  })) : void 0
117
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Input.Switch, {
115
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Input.Switch, {
118
116
  checked: settings.debug,
119
117
  onCheckedChange: (checked) => settings.debug = !!checked
120
118
  })));
121
119
  };
122
- var MarkdownContainer = (0, import_react3.lazy)(() => import("./MarkdownContainer-6OKJOHTZ.cjs"));
120
+ var MarkdownContainer = (0, import_react2.lazy)(() => import("./MarkdownContainer-EX6YDF6J.cjs"));
123
121
  var translations_default = [
124
122
  {
125
123
  "en-US": {
126
- [import_chunk_YGMWZIIJ.DocumentType.typename]: {
124
+ [import_chunk_CQMXZ54Z.DocumentType.typename]: {
127
125
  "typename label": "Document"
128
126
  },
129
127
  [import_chunk_PHHIPRJC.MARKDOWN_PLUGIN]: {
@@ -153,7 +151,6 @@ var translations_default = [
153
151
  }
154
152
  }
155
153
  ];
156
- var getDoc = (object) => object instanceof import_chunk_YGMWZIIJ.DocumentType ? object : void 0;
157
154
  var MarkdownPlugin = () => {
158
155
  const settings = new import_local_storage.LocalStorageStore(import_chunk_PHHIPRJC.MARKDOWN_PLUGIN, {
159
156
  defaultViewMode: "preview",
@@ -171,7 +168,7 @@ var MarkdownPlugin = () => {
171
168
  const setViewMode = (id, viewMode) => state.values.viewMode[id] = viewMode;
172
169
  return {
173
170
  meta: import_chunk_PHHIPRJC.meta_default,
174
- ready: async (plugins) => {
171
+ ready: async ({ plugins }) => {
175
172
  settings.prop({
176
173
  key: "defaultViewMode",
177
174
  type: import_local_storage.LocalStorageStore.enum()
@@ -215,7 +212,7 @@ var MarkdownPlugin = () => {
215
212
  key: "viewMode",
216
213
  type: import_local_storage.LocalStorageStore.json()
217
214
  });
218
- (0, import_chunk_KEPAM4JP.markdownExtensionPlugins)(plugins).forEach((plugin) => {
215
+ (0, import_chunk_SXQAPZZU.markdownExtensionPlugins)(plugins).forEach((plugin) => {
219
216
  const { extensions } = plugin.provides.markdown;
220
217
  state.values.extensionProviders?.push(extensions);
221
218
  });
@@ -224,9 +221,9 @@ var MarkdownPlugin = () => {
224
221
  settings: settings.values,
225
222
  metadata: {
226
223
  records: {
227
- [import_chunk_YGMWZIIJ.DocumentType.typename]: {
228
- createObject: import_chunk_YGMWZIIJ.MarkdownAction.CREATE,
229
- label: (object) => object instanceof import_chunk_YGMWZIIJ.DocumentType ? object.name || object.fallbackName : void 0,
224
+ [import_chunk_CQMXZ54Z.DocumentType.typename]: {
225
+ createObject: (props) => (0, import_app_framework.createIntent)(import_chunk_CQMXZ54Z.MarkdownAction.Create, props),
226
+ label: (object) => object instanceof import_chunk_CQMXZ54Z.DocumentType ? object.name || object.fallbackName : void 0,
230
227
  placeholder: [
231
228
  "document title placeholder",
232
229
  {
@@ -238,11 +235,11 @@ var MarkdownPlugin = () => {
238
235
  managesAutofocus: true
239
236
  },
240
237
  // TODO(wittjosiah): Move out of metadata.
241
- loadReferences: (doc) => (0, import_echo.loadObjectReferences)(doc, (doc2) => [
242
- doc2.content,
243
- ...doc2.threads
238
+ loadReferences: async (doc) => await import_live_object.RefArray.loadAll([
239
+ doc.content,
240
+ ...doc.threads
244
241
  ]),
245
- serializer: import_chunk_KEPAM4JP.serializer
242
+ serializer: import_chunk_SXQAPZZU.serializer
246
243
  }
247
244
  }
248
245
  },
@@ -252,79 +249,26 @@ var MarkdownPlugin = () => {
252
249
  ],
253
250
  echo: {
254
251
  schema: [
255
- import_chunk_YGMWZIIJ.DocumentType
252
+ import_chunk_CQMXZ54Z.DocumentType
256
253
  ],
257
254
  system: [
258
- import_chunk_YGMWZIIJ.TextType
255
+ import_chunk_CQMXZ54Z.TextType
259
256
  ]
260
257
  },
261
258
  graph: {
262
- builder: (plugins) => {
263
- const client = (0, import_app_framework.resolvePlugin)(plugins, import_plugin_client.parseClientPlugin)?.provides.client;
264
- const dispatch = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseIntentPlugin)?.provides.intent.dispatch;
265
- if (!client || !dispatch) {
266
- return [];
267
- }
268
- return (0, import_plugin_graph.createExtension)({
269
- id: import_chunk_YGMWZIIJ.MarkdownAction.CREATE,
270
- filter: (node) => (0, import_plugin_graph.isActionGroup)(node) && node.id.startsWith(import_plugin_space.SpaceAction.ADD_OBJECT),
271
- actions: ({ node }) => {
272
- const id = node.id.split("/").at(-1);
273
- const [spaceId, objectId] = id?.split(":") ?? [];
274
- const space = client.spaces.get().find((space2) => space2.id === spaceId);
275
- const object = objectId && space?.db.getObjectById(objectId);
276
- const target = objectId ? object : space;
277
- if (!target) {
278
- return;
279
- }
280
- return [
281
- {
282
- id: `${import_chunk_PHHIPRJC.MARKDOWN_PLUGIN}/create/${node.id}`,
283
- data: async () => {
284
- await dispatch([
285
- {
286
- plugin: import_chunk_PHHIPRJC.MARKDOWN_PLUGIN,
287
- action: import_chunk_YGMWZIIJ.MarkdownAction.CREATE
288
- },
289
- {
290
- action: import_plugin_space.SpaceAction.ADD_OBJECT,
291
- data: {
292
- target
293
- }
294
- },
295
- {
296
- action: import_app_framework.NavigationAction.OPEN
297
- }
298
- ]);
299
- },
300
- properties: {
301
- label: [
302
- "create document label",
303
- {
304
- ns: import_chunk_PHHIPRJC.MARKDOWN_PLUGIN
305
- }
306
- ],
307
- icon: "ph--text-aa--regular",
308
- testId: "markdownPlugin.createObject"
309
- }
310
- }
311
- ];
312
- }
313
- });
314
- },
315
259
  serializer: (plugins) => {
316
- const dispatch = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseIntentPlugin)?.provides.intent.dispatch;
260
+ const dispatch = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseIntentPlugin)?.provides.intent.dispatchPromise;
317
261
  if (!dispatch) {
318
262
  return [];
319
263
  }
320
264
  return [
321
265
  {
322
- inputType: import_chunk_YGMWZIIJ.DocumentType.typename,
266
+ inputType: import_chunk_CQMXZ54Z.DocumentType.typename,
323
267
  outputType: "text/markdown",
324
268
  // Reconcile with metadata serializers.
325
269
  serialize: async (node) => {
326
270
  const doc = node.data;
327
- const content = await (0, import_echo.loadObjectReferences)(doc, (doc2) => doc2.content);
271
+ const content = await doc.content.load();
328
272
  return {
329
273
  name: doc.name || doc.fallbackName || translations_default[0]["en-US"][import_chunk_PHHIPRJC.MARKDOWN_PLUGIN]["document title placeholder"],
330
274
  data: content.content,
@@ -333,61 +277,26 @@ var MarkdownPlugin = () => {
333
277
  },
334
278
  deserialize: async (data, ancestors) => {
335
279
  const space = ancestors.find(import_echo.isSpace);
336
- const target = ancestors.findLast((ancestor) => ancestor instanceof import_types.CollectionType) ?? space?.properties[import_types.CollectionType.typename];
280
+ const target = ancestors.findLast((ancestor) => ancestor instanceof import_types.CollectionType) ?? space?.properties[import_types.CollectionType.typename]?.target;
337
281
  if (!space || !target) {
338
282
  return;
339
283
  }
340
- const result = await dispatch([
341
- {
342
- plugin: import_chunk_PHHIPRJC.MARKDOWN_PLUGIN,
343
- action: import_chunk_YGMWZIIJ.MarkdownAction.CREATE,
344
- data: {
345
- name: data.name,
346
- content: data.data
347
- }
348
- },
349
- {
350
- action: import_plugin_space.SpaceAction.ADD_OBJECT,
351
- data: {
352
- target
353
- }
354
- }
355
- ]);
356
- return result?.data.object;
284
+ const result = await dispatch((0, import_effect.pipe)((0, import_app_framework.createIntent)(import_chunk_CQMXZ54Z.MarkdownAction.Create, {
285
+ name: data.name,
286
+ content: data.data
287
+ }), (0, import_app_framework.chain)(import_plugin_space.SpaceAction.AddObject, {
288
+ target
289
+ })));
290
+ return result.data?.object;
357
291
  }
358
292
  }
359
293
  ];
360
294
  }
361
295
  },
362
- stack: {
363
- creators: [
364
- {
365
- id: "create-stack-section-doc",
366
- testId: "markdownPlugin.createSection",
367
- type: [
368
- "plugin name",
369
- {
370
- ns: import_chunk_PHHIPRJC.MARKDOWN_PLUGIN
371
- }
372
- ],
373
- label: [
374
- "create stack section label",
375
- {
376
- ns: import_chunk_PHHIPRJC.MARKDOWN_PLUGIN
377
- }
378
- ],
379
- icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.TextAa, props),
380
- intent: {
381
- plugin: import_chunk_PHHIPRJC.MARKDOWN_PLUGIN,
382
- action: import_chunk_YGMWZIIJ.MarkdownAction.CREATE
383
- }
384
- }
385
- ]
386
- },
387
296
  thread: {
388
- predicate: (obj) => obj instanceof import_chunk_YGMWZIIJ.DocumentType,
297
+ predicate: (obj) => obj instanceof import_chunk_CQMXZ54Z.DocumentType,
389
298
  createSort: (doc) => {
390
- const accessor = doc.content ? (0, import_echo.createDocAccessor)(doc.content, [
299
+ const accessor = doc.content.target ? (0, import_echo.createDocAccessor)(doc.content.target, [
391
300
  "content"
392
301
  ]) : void 0;
393
302
  if (!accessor) {
@@ -408,68 +317,73 @@ var MarkdownPlugin = () => {
408
317
  }
409
318
  },
410
319
  surface: {
411
- component: ({ data, role }) => {
412
- switch (role) {
413
- case "section":
414
- case "article": {
415
- const doc = getDoc(data.object);
416
- const { id, object } = (0, import_chunk_YGMWZIIJ.isEditorModel)(data.object) ? {
417
- id: data.object.id,
418
- object: data.object
419
- } : doc ? {
420
- id: (0, import_echo.fullyQualifiedId)(doc),
421
- object: doc
422
- } : {};
423
- if (!id || !object) {
424
- return null;
425
- }
426
- return /* @__PURE__ */ import_react2.default.createElement(MarkdownContainer, {
427
- id,
428
- object,
429
- role,
430
- settings: settings.values,
431
- extensionProviders: state.values.extensionProviders,
432
- viewMode: getViewMode(id),
433
- editorStateStore,
434
- onViewModeChange: setViewMode
435
- });
436
- }
437
- case "settings": {
438
- return data.plugin === import_chunk_PHHIPRJC.meta_default.id ? /* @__PURE__ */ import_react2.default.createElement(MarkdownSettings, {
439
- settings: settings.values
440
- }) : null;
441
- }
442
- }
443
- return null;
444
- }
320
+ definitions: () => [
321
+ (0, import_app_framework.createSurface)({
322
+ id: `${import_chunk_PHHIPRJC.MARKDOWN_PLUGIN}/document`,
323
+ role: [
324
+ "article",
325
+ "section"
326
+ ],
327
+ filter: (data) => data.subject instanceof import_chunk_CQMXZ54Z.DocumentType,
328
+ component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(MarkdownContainer, {
329
+ id: (0, import_echo.fullyQualifiedId)(data.subject),
330
+ object: data.subject,
331
+ role,
332
+ settings: settings.values,
333
+ extensionProviders: state.values.extensionProviders,
334
+ viewMode: getViewMode((0, import_echo.fullyQualifiedId)(data.subject)),
335
+ editorStateStore,
336
+ onViewModeChange: setViewMode
337
+ })
338
+ }),
339
+ (0, import_app_framework.createSurface)({
340
+ id: `${import_chunk_PHHIPRJC.MARKDOWN_PLUGIN}/editor`,
341
+ role: [
342
+ "article",
343
+ "section"
344
+ ],
345
+ filter: (data) => (0, import_chunk_CQMXZ54Z.isEditorModel)(data.subject),
346
+ component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(MarkdownContainer, {
347
+ id: data.subject.id,
348
+ object: data.subject,
349
+ role,
350
+ settings: settings.values,
351
+ extensionProviders: state.values.extensionProviders,
352
+ viewMode: getViewMode(data.subject.id),
353
+ editorStateStore,
354
+ onViewModeChange: setViewMode
355
+ })
356
+ }),
357
+ (0, import_app_framework.createSurface)({
358
+ id: `${import_chunk_PHHIPRJC.MARKDOWN_PLUGIN}/settings`,
359
+ role: "settings",
360
+ filter: (data) => data.subject === import_chunk_PHHIPRJC.MARKDOWN_PLUGIN,
361
+ component: () => /* @__PURE__ */ import_react.default.createElement(MarkdownSettings, {
362
+ settings: settings.values
363
+ })
364
+ })
365
+ ]
445
366
  },
446
367
  intent: {
447
- resolver: ({ action, data }) => {
448
- switch (action) {
449
- case import_chunk_YGMWZIIJ.MarkdownAction.CREATE: {
450
- const doc = (0, import_live_object.create)(import_chunk_YGMWZIIJ.DocumentType, {
451
- name: data?.name,
452
- content: (0, import_live_object.create)(import_chunk_YGMWZIIJ.TextType, {
453
- content: data?.content ?? ""
454
- }),
455
- threads: []
456
- });
457
- return {
458
- data: doc
459
- };
460
- }
461
- case import_chunk_YGMWZIIJ.MarkdownAction.SET_VIEW_MODE: {
462
- const { id, viewMode } = data ?? {};
463
- if (typeof id === "string" && import_react_ui_editor.EditorViewModes.includes(viewMode)) {
464
- state.values.viewMode[id] = viewMode;
465
- return {
466
- data: true
467
- };
368
+ resolvers: () => [
369
+ (0, import_app_framework.createResolver)(import_chunk_CQMXZ54Z.MarkdownAction.Create, ({ name, content }) => {
370
+ const doc = (0, import_live_object.create)(import_chunk_CQMXZ54Z.DocumentType, {
371
+ name,
372
+ content: (0, import_live_object.makeRef)((0, import_live_object.create)(import_chunk_CQMXZ54Z.TextType, {
373
+ content: content ?? ""
374
+ })),
375
+ threads: []
376
+ });
377
+ return {
378
+ data: {
379
+ object: doc
468
380
  }
469
- break;
470
- }
471
- }
472
- }
381
+ };
382
+ }),
383
+ (0, import_app_framework.createResolver)(import_chunk_CQMXZ54Z.MarkdownAction.SetViewMode, ({ id, viewMode }) => {
384
+ state.values.viewMode[id] = viewMode;
385
+ })
386
+ ]
473
387
  }
474
388
  }
475
389
  };