@ai-matrx/office 0.8.8 → 0.8.10

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 (79) hide show
  1. package/CHANGELOG.md +31 -2
  2. package/dist/{chunk-5JAZ32SX.js → chunk-2X3KR6Y4.js} +2 -2
  3. package/dist/{chunk-5T2M6LSI.js → chunk-455FSVQN.js} +1 -1
  4. package/dist/chunk-455FSVQN.js.map +1 -0
  5. package/dist/{chunk-47MIGBMH.js → chunk-DY5TGHBI.js} +2 -2
  6. package/dist/{chunk-47MIGBMH.js.map → chunk-DY5TGHBI.js.map} +1 -1
  7. package/dist/{chunk-556EUPET.cjs → chunk-HX5TXQIX.cjs} +7 -7
  8. package/dist/{chunk-556EUPET.cjs.map → chunk-HX5TXQIX.cjs.map} +1 -1
  9. package/dist/{chunk-MQB2ZK2F.cjs → chunk-NSU6EVJK.cjs} +6 -6
  10. package/dist/{chunk-MQB2ZK2F.cjs.map → chunk-NSU6EVJK.cjs.map} +1 -1
  11. package/dist/{chunk-QZE7HBZB.cjs → chunk-O6F2NGLW.cjs} +1 -1
  12. package/dist/{chunk-QZE7HBZB.cjs.map → chunk-O6F2NGLW.cjs.map} +1 -1
  13. package/dist/{chunk-UBLEFLES.cjs → chunk-XAIKXHHJ.cjs} +1 -1
  14. package/dist/{chunk-UBLEFLES.cjs.map → chunk-XAIKXHHJ.cjs.map} +1 -1
  15. package/dist/{chunk-Z247F527.js → chunk-Y24EYKSD.js} +1 -1
  16. package/dist/{chunk-Z247F527.js.map → chunk-Y24EYKSD.js.map} +1 -1
  17. package/dist/collab-sheets-transform.cjs.map +1 -1
  18. package/dist/collab-sheets-transform.d.cts +2 -2
  19. package/dist/collab-sheets-transform.d.ts +2 -2
  20. package/dist/collab-sheets-transform.js.map +1 -1
  21. package/dist/core-page-setup-apply.cjs.map +1 -1
  22. package/dist/core-page-setup-apply.d.cts +1 -1
  23. package/dist/core-page-setup-apply.d.ts +1 -1
  24. package/dist/core-page-setup-apply.js.map +1 -1
  25. package/dist/core.cjs.map +1 -1
  26. package/dist/core.d.cts +1 -1
  27. package/dist/core.d.ts +1 -1
  28. package/dist/core.js.map +1 -1
  29. package/dist/docs-io.cjs +9 -9
  30. package/dist/docs-io.js +2 -2
  31. package/dist/docs-tools.cjs +7 -7
  32. package/dist/docs-tools.cjs.map +1 -1
  33. package/dist/docs-tools.d.cts +2 -2
  34. package/dist/docs-tools.d.ts +2 -2
  35. package/dist/docs-tools.js +2 -2
  36. package/dist/docs-tools.js.map +1 -1
  37. package/dist/docs.cjs +47 -21
  38. package/dist/docs.cjs.map +1 -1
  39. package/dist/docs.d.cts +28 -2
  40. package/dist/docs.d.ts +28 -2
  41. package/dist/docs.js +29 -3
  42. package/dist/docs.js.map +1 -1
  43. package/dist/{document-page-style-BFLrgdLI.d.cts → document-page-style-6yKEDjHE.d.cts} +2 -2
  44. package/dist/{document-page-style-BFLrgdLI.d.ts → document-page-style-6yKEDjHE.d.ts} +2 -2
  45. package/dist/{matrxImagePorts-JDFYE4QI.cjs → matrxImagePorts-46SGQTLN.cjs} +1 -1
  46. package/dist/matrxImagePorts-46SGQTLN.cjs.map +1 -0
  47. package/dist/{matrxImagePorts-VPBBUADM.js → matrxImagePorts-P6SSF25Q.js} +1 -1
  48. package/dist/matrxImagePorts-P6SSF25Q.js.map +1 -0
  49. package/dist/sheets-xlsx.cjs +27 -27
  50. package/dist/sheets-xlsx.cjs.map +1 -1
  51. package/dist/sheets-xlsx.d.cts +3 -3
  52. package/dist/sheets-xlsx.d.ts +3 -3
  53. package/dist/sheets-xlsx.js +3 -3
  54. package/dist/sheets-xlsx.js.map +1 -1
  55. package/dist/sheets.cjs.map +1 -1
  56. package/dist/sheets.d.cts +1 -1
  57. package/dist/sheets.d.ts +1 -1
  58. package/dist/sheets.js.map +1 -1
  59. package/dist/univer-collab.cjs.map +1 -1
  60. package/dist/univer-collab.d.cts +2 -2
  61. package/dist/univer-collab.d.ts +2 -2
  62. package/dist/univer-collab.js.map +1 -1
  63. package/dist/univer-realtime.cjs.map +1 -1
  64. package/dist/univer-realtime.js.map +1 -1
  65. package/dist/univer.cjs.map +1 -1
  66. package/dist/univer.d.cts +6 -6
  67. package/dist/univer.d.ts +6 -6
  68. package/dist/univer.js.map +1 -1
  69. package/dist/xlsx-to-univer-NWCHAWJC.cjs +7 -0
  70. package/dist/{xlsx-to-univer-AQAXU3TC.cjs.map → xlsx-to-univer-NWCHAWJC.cjs.map} +1 -1
  71. package/dist/xlsx-to-univer-YEYX47EE.js +7 -0
  72. package/package.json +3 -3
  73. package/dist/chunk-5T2M6LSI.js.map +0 -1
  74. package/dist/matrxImagePorts-JDFYE4QI.cjs.map +0 -1
  75. package/dist/matrxImagePorts-VPBBUADM.js.map +0 -1
  76. package/dist/xlsx-to-univer-AQAXU3TC.cjs +0 -7
  77. package/dist/xlsx-to-univer-OPMMBWEW.js +0 -7
  78. /package/dist/{chunk-5JAZ32SX.js.map → chunk-2X3KR6Y4.js.map} +0 -0
  79. /package/dist/{xlsx-to-univer-OPMMBWEW.js.map → xlsx-to-univer-YEYX47EE.js.map} +0 -0
@@ -15,8 +15,8 @@
15
15
 
16
16
 
17
17
 
18
- var _chunkMQB2ZK2Fcjs = require('./chunk-MQB2ZK2F.cjs');
19
- require('./chunk-UBLEFLES.cjs');
18
+ var _chunkNSU6EVJKcjs = require('./chunk-NSU6EVJK.cjs');
19
+ require('./chunk-XAIKXHHJ.cjs');
20
20
 
21
21
  // src/docs/doc-edit-ops.ts
22
22
  function createDocEditOps(deps) {
@@ -33,7 +33,7 @@ function createDocEditOps(deps) {
33
33
  const r = await range();
34
34
  const stream = _optionalChain([snapshot, 'call', _18 => _18(), 'optionalAccess', _19 => _19.body, 'optionalAccess', _20 => _20.dataStream]);
35
35
  if (!d || !r || typeof stream !== "string") return false;
36
- const plan = _chunkMQB2ZK2Fcjs.blockInsertPlan.call(void 0, stream, r.startOffset);
36
+ const plan = _chunkNSU6EVJKcjs.blockInsertPlan.call(void 0, stream, r.startOffset);
37
37
  if (plan.breakAt === null) {
38
38
  _optionalChain([d, 'access', _21 => _21.setSelection, 'optionalCall', _22 => _22(plan.at, plan.at)]);
39
39
  return true;
@@ -51,16 +51,16 @@ function createDocEditOps(deps) {
51
51
  async insertMarkdown(markdown) {
52
52
  const d = doc();
53
53
  if (!d || !await toBlockStart()) return false;
54
- return exec("doc.command.inner-paste", { unitId: d.getId(), doc: _chunkMQB2ZK2Fcjs.markdownFragment.call(void 0, markdown) });
54
+ return exec("doc.command.inner-paste", { unitId: d.getId(), doc: _chunkNSU6EVJKcjs.markdownFragment.call(void 0, markdown) });
55
55
  },
56
- bookmarks: () => _chunkMQB2ZK2Fcjs.collectBookmarks.call(void 0, snapshot()),
56
+ bookmarks: () => _chunkNSU6EVJKcjs.collectBookmarks.call(void 0, snapshot()),
57
57
  async addBookmark(name) {
58
58
  const d = doc();
59
59
  const r = await range();
60
60
  if (!d || !r) return false;
61
61
  _optionalChain([d, 'access', _25 => _25.setSelection, 'optionalCall', _26 => _26(r.startOffset, r.startOffset)]);
62
62
  const id = `bm_${Math.random().toString(36).slice(2, 10)}`;
63
- return exec("doc.command.replace-selection", { unitId: d.getId(), body: _chunkMQB2ZK2Fcjs.bookmarkBody.call(void 0, id, name) });
63
+ return exec("doc.command.replace-selection", { unitId: d.getId(), body: _chunkNSU6EVJKcjs.bookmarkBody.call(void 0, id, name) });
64
64
  },
65
65
  async deleteBookmark(b) {
66
66
  const d = doc();
@@ -124,5 +124,5 @@ async function writeDocumentStyleKey(api, key, value) {
124
124
 
125
125
 
126
126
 
127
- exports.BOOKMARK_ANCHOR = _chunkMQB2ZK2Fcjs.BOOKMARK_ANCHOR; exports.BOOKMARK_RANGE_TYPE = _chunkMQB2ZK2Fcjs.BOOKMARK_RANGE_TYPE; exports.BUILDING_BLOCKS = _chunkMQB2ZK2Fcjs.BUILDING_BLOCKS; exports.DOCUMENT_LANGUAGES = _chunkMQB2ZK2Fcjs.DOCUMENT_LANGUAGES; exports.DOCUMENT_LANGUAGE_KEY = _chunkMQB2ZK2Fcjs.DOCUMENT_LANGUAGE_KEY; exports.blockInsertPlan = _chunkMQB2ZK2Fcjs.blockInsertPlan; exports.bookmarkBody = _chunkMQB2ZK2Fcjs.bookmarkBody; exports.bookmarkFromHash = _chunkMQB2ZK2Fcjs.bookmarkFromHash; exports.bookmarkHash = _chunkMQB2ZK2Fcjs.bookmarkHash; exports.cleanBookmarkName = _chunkMQB2ZK2Fcjs.cleanBookmarkName; exports.collectBookmarks = _chunkMQB2ZK2Fcjs.collectBookmarks; exports.createDocEditOps = createDocEditOps; exports.looksLikeMarkdown = _chunkMQB2ZK2Fcjs.looksLikeMarkdown; exports.markdownFragment = _chunkMQB2ZK2Fcjs.markdownFragment; exports.paragraphBorderParams = _chunkMQB2ZK2Fcjs.paragraphBorderParams; exports.readDocumentLanguage = _chunkMQB2ZK2Fcjs.readDocumentLanguage; exports.rulerGeometry = _chunkMQB2ZK2Fcjs.rulerGeometry; exports.writeDocumentStyleKey = writeDocumentStyleKey;
127
+ exports.BOOKMARK_ANCHOR = _chunkNSU6EVJKcjs.BOOKMARK_ANCHOR; exports.BOOKMARK_RANGE_TYPE = _chunkNSU6EVJKcjs.BOOKMARK_RANGE_TYPE; exports.BUILDING_BLOCKS = _chunkNSU6EVJKcjs.BUILDING_BLOCKS; exports.DOCUMENT_LANGUAGES = _chunkNSU6EVJKcjs.DOCUMENT_LANGUAGES; exports.DOCUMENT_LANGUAGE_KEY = _chunkNSU6EVJKcjs.DOCUMENT_LANGUAGE_KEY; exports.blockInsertPlan = _chunkNSU6EVJKcjs.blockInsertPlan; exports.bookmarkBody = _chunkNSU6EVJKcjs.bookmarkBody; exports.bookmarkFromHash = _chunkNSU6EVJKcjs.bookmarkFromHash; exports.bookmarkHash = _chunkNSU6EVJKcjs.bookmarkHash; exports.cleanBookmarkName = _chunkNSU6EVJKcjs.cleanBookmarkName; exports.collectBookmarks = _chunkNSU6EVJKcjs.collectBookmarks; exports.createDocEditOps = createDocEditOps; exports.looksLikeMarkdown = _chunkNSU6EVJKcjs.looksLikeMarkdown; exports.markdownFragment = _chunkNSU6EVJKcjs.markdownFragment; exports.paragraphBorderParams = _chunkNSU6EVJKcjs.paragraphBorderParams; exports.readDocumentLanguage = _chunkNSU6EVJKcjs.readDocumentLanguage; exports.rulerGeometry = _chunkNSU6EVJKcjs.rulerGeometry; exports.writeDocumentStyleKey = writeDocumentStyleKey;
128
128
  //# sourceMappingURL=docs-tools.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/aidream/aidream/apps/shared/office/dist/docs-tools.cjs","../src/docs/doc-edit-ops.ts"],"names":[],"mappings":"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","file":"/home/runner/work/aidream/aidream/apps/shared/office/dist/docs-tools.cjs","sourcesContent":[null,"/**\n * The Univer-facing half of the Docs tools: insert text, markdown and bookmarks at the caret, move\n * the selection, read the live snapshot, set view-only. Every operation is a real Univer command.\n */\n\nimport { blockInsertPlan, bookmarkBody, collectBookmarks, markdownFragment, type Bookmark } from \"./doc-tools-core\";\n\ninterface ApiLike {\n executeCommand(id: string, params?: object): Promise<unknown> | unknown;\n getActiveDocument?(): {\n getId(): string;\n save?(): unknown;\n setSelection?(a: number, b: number): void;\n getPermission?(): { setReadOnly(): Promise<void>; setEditable(editable?: boolean): Promise<void> };\n } | null;\n}\ninterface InjectorLike {\n get<T>(token: unknown): T | undefined;\n}\ninterface TextRangeLike {\n startOffset: number;\n endOffset: number;\n}\n\nexport interface DocEditOps {\n insertText(text: string): Promise<boolean>;\n /** A block (building block) at a new paragraph, never mid-line. */\n insertMarkdown(markdown: string): Promise<boolean>;\n /** Move the caret to where a block goes (`blockInsertPlan`); false when there is no caret. */\n toBlockStart(): Promise<boolean>;\n bookmarks(): Bookmark[];\n addBookmark(name: string): Promise<boolean>;\n deleteBookmark(b: Bookmark): Promise<boolean>;\n goTo(offset: number): void;\n snapshot(): unknown;\n setViewOnly(viewOnly: boolean): Promise<void>;\n /** Calls back when Univer refuses an edit (Viewing mode); returns the unsubscribe. */\n onEditDenied(cb: () => void): Promise<() => void>;\n openImagePanel(): Promise<boolean>;\n}\n\nexport function createDocEditOps(deps: { api: () => ApiLike | null; injector: () => InjectorLike | null }): DocEditOps {\n const doc = () => deps.api()?.getActiveDocument?.() ?? null;\n const snapshot = () => doc()?.save?.() ?? null;\n const range = async (): Promise<TextRangeLike | null> => {\n const { DocSelectionManagerService } = await import(\"@univerjs/docs\");\n const live = deps.injector()?.get<{ getActiveTextRange?(): TextRangeLike | null | undefined }>(DocSelectionManagerService)?.getActiveTextRange?.();\n return live ?? null;\n };\n const exec = async (id: string, params: object) => (await deps.api()?.executeCommand(id, params)) !== false;\n const toBlockStart = async (): Promise<boolean> => {\n const d = doc();\n const r = await range();\n const stream = (snapshot() as { body?: { dataStream?: string } } | null)?.body?.dataStream;\n if (!d || !r || typeof stream !== \"string\") return false;\n const plan = blockInsertPlan(stream, r.startOffset);\n if (plan.breakAt === null) {\n d.setSelection?.(plan.at, plan.at);\n return true;\n }\n d.setSelection?.(plan.breakAt, plan.breakAt);\n return exec(\"doc.command.break-line\", { unitId: d.getId() });\n };\n\n return {\n snapshot,\n async insertText(text) {\n if (!text || !(await range())) return false;\n return exec(\"doc.command.insert-special-character\", { value: text });\n },\n toBlockStart,\n async insertMarkdown(markdown) {\n const d = doc();\n if (!d || !(await toBlockStart())) return false;\n return exec(\"doc.command.inner-paste\", { unitId: d.getId(), doc: markdownFragment(markdown) });\n },\n bookmarks: () => collectBookmarks(snapshot()),\n async addBookmark(name) {\n const d = doc();\n const r = await range();\n if (!d || !r) return false;\n d.setSelection?.(r.startOffset, r.startOffset);\n const id = `bm_${Math.random().toString(36).slice(2, 10)}`;\n return exec(\"doc.command.replace-selection\", { unitId: d.getId(), body: bookmarkBody(id, name) });\n },\n async deleteBookmark(b) {\n const d = doc();\n if (!d) return false;\n d.setSelection?.(b.offset + 1, b.offset + 1);\n return exec(\"doc.command.delete-left\", { unitId: d.getId() });\n },\n async setViewOnly(viewOnly) {\n const perm = doc()?.getPermission?.();\n if (!perm) return;\n if (viewOnly) await perm.setReadOnly();\n else await perm.setEditable(true);\n // Univer's own refusal notice (\"This content is protected…\") stays off while viewing; the\n // editor shows ours through onEditDenied.\n const { IPermissionService } = await import(\"@univerjs/core\");\n deps.injector()?.get<{ setShowComponents?(show: boolean): void }>(IPermissionService)?.setShowComponents?.(!viewOnly);\n },\n async onEditDenied(cb) {\n const { ErrorService } = await import(\"@univerjs/core\");\n const errors = deps.injector()?.get<{ error$?: { subscribe(fn: (e: { code?: string }) => void): { unsubscribe(): void } } }>(ErrorService);\n const sub = errors?.error$?.subscribe((e) => {\n if (e.code === \"PERMISSION_DENIED\") cb();\n });\n return () => sub?.unsubscribe();\n },\n async openImagePanel() {\n return exec(\"sidebar.operation.doc-image\", { value: \"doc-image\" });\n },\n goTo(offset) {\n doc()?.setSelection?.(offset, offset);\n },\n };\n}\n\n/** Write one plain key onto the document style (it rides the snapshot like the paper colour does). */\nexport async function writeDocumentStyleKey(api: ApiLike, key: string, value: string): Promise<void> {\n const doc = api.getActiveDocument?.();\n if (!doc) return;\n const style = (doc as unknown as { getDocumentDataModel?(): { getSnapshot(): { documentStyle?: Record<string, unknown> } } }).getDocumentDataModel?.()?.getSnapshot().documentStyle ?? {};\n const old = style[key];\n if (old === value) return;\n const { JSONX } = await import(\"@univerjs/core\");\n const jsonX = JSONX.getInstance();\n const path = [\"documentStyle\", key];\n const action = old === undefined ? jsonX.insertOp(path, value) : jsonX.replaceOp(path, old, value);\n if (!action) return;\n await api.executeCommand(\"doc.mutation.rich-text-editing\", { unitId: doc.getId(), actions: action, textRanges: undefined });\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/aidream/aidream/apps/shared/office/dist/docs-tools.cjs","../src/docs/doc-edit-ops.ts"],"names":[],"mappings":"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","file":"/home/runner/work/aidream/aidream/apps/shared/office/dist/docs-tools.cjs","sourcesContent":[null,"/**\n * The Univer-facing half of the Docs tools: insert text, markdown and bookmarks at the caret, move\n * the selection, read the live snapshot, set view-only. Every operation is a real Univer command.\n */\n\nimport { blockInsertPlan, bookmarkBody, collectBookmarks, markdownFragment, type Bookmark } from \"./doc-tools-core\";\n\ninterface ApiLike {\n executeCommand(id: string, params?: object): Promise<unknown> | unknown;\n getActiveDocument?(): {\n getId(): string;\n save?(): unknown;\n setSelection?(a: number, b: number): void;\n getPermission?(): { setReadOnly(): Promise<void>; setEditable(editable?: boolean): Promise<void> };\n } | null;\n}\ninterface InjectorLike {\n get<T>(token: unknown): T | undefined;\n}\ninterface TextRangeLike {\n startOffset: number;\n endOffset: number;\n}\n\nexport interface DocEditOps {\n insertText(text: string): Promise<boolean>;\n /** A block (building block) at a new paragraph, never mid-line. */\n insertMarkdown(markdown: string): Promise<boolean>;\n /** Move the caret to where a block goes (`blockInsertPlan`); false when there is no caret. */\n toBlockStart(): Promise<boolean>;\n bookmarks(): Bookmark[];\n addBookmark(name: string): Promise<boolean>;\n deleteBookmark(b: Bookmark): Promise<boolean>;\n goTo(offset: number): void;\n snapshot(): unknown;\n setViewOnly(viewOnly: boolean): Promise<void>;\n /** Calls back when Univer refuses an edit (Viewing mode); returns the unsubscribe. */\n onEditDenied(cb: () => void): Promise<() => void>;\n openImagePanel(): Promise<boolean>;\n}\n\nexport function createDocEditOps(deps: { api: () => ApiLike | null; injector: () => InjectorLike | null }): DocEditOps {\n const doc = () => deps.api()?.getActiveDocument?.() ?? null;\n const snapshot = () => doc()?.save?.() ?? null;\n const range = async (): Promise<TextRangeLike | null> => {\n const { DocSelectionManagerService } = await import(\"@univerjs/docs\");\n const live = deps.injector()?.get<{ getActiveTextRange?(): TextRangeLike | null | undefined }>(DocSelectionManagerService)?.getActiveTextRange?.();\n return live ?? null;\n };\n const exec = async (id: string, params: object) => (await deps.api()?.executeCommand(id, params)) !== false;\n const toBlockStart = async (): Promise<boolean> => {\n const d = doc();\n const r = await range();\n const stream = (snapshot() as { body?: { dataStream?: string } } | null)?.body?.dataStream;\n if (!d || !r || typeof stream !== \"string\") return false;\n const plan = blockInsertPlan(stream, r.startOffset);\n if (plan.breakAt === null) {\n d.setSelection?.(plan.at, plan.at);\n return true;\n }\n d.setSelection?.(plan.breakAt, plan.breakAt);\n return exec(\"doc.command.break-line\", { unitId: d.getId() });\n };\n\n return {\n snapshot,\n async insertText(text) {\n if (!text || !(await range())) return false;\n return exec(\"doc.command.insert-special-character\", { value: text });\n },\n toBlockStart,\n async insertMarkdown(markdown) {\n const d = doc();\n if (!d || !(await toBlockStart())) return false;\n return exec(\"doc.command.inner-paste\", { unitId: d.getId(), doc: markdownFragment(markdown) });\n },\n bookmarks: () => collectBookmarks(snapshot()),\n async addBookmark(name) {\n const d = doc();\n const r = await range();\n if (!d || !r) return false;\n d.setSelection?.(r.startOffset, r.startOffset);\n const id = `bm_${Math.random().toString(36).slice(2, 10)}`;\n return exec(\"doc.command.replace-selection\", { unitId: d.getId(), body: bookmarkBody(id, name) });\n },\n async deleteBookmark(b) {\n const d = doc();\n if (!d) return false;\n d.setSelection?.(b.offset + 1, b.offset + 1);\n return exec(\"doc.command.delete-left\", { unitId: d.getId() });\n },\n async setViewOnly(viewOnly) {\n const perm = doc()?.getPermission?.();\n if (!perm) return;\n if (viewOnly) await perm.setReadOnly();\n else await perm.setEditable(true);\n // Univer's own refusal notice (\"This content is protected…\") stays off while viewing; the\n // editor shows ours through onEditDenied.\n const { IPermissionService } = await import(\"@univerjs/core\");\n deps.injector()?.get<{ setShowComponents?(show: boolean): void }>(IPermissionService)?.setShowComponents?.(!viewOnly);\n },\n async onEditDenied(cb) {\n const { ErrorService } = await import(\"@univerjs/core\");\n const errors = deps.injector()?.get<{ error$?: { subscribe(fn: (e: { code?: string }) => void): { unsubscribe(): void } } }>(ErrorService);\n const sub = errors?.error$?.subscribe((e) => {\n if (e.code === \"PERMISSION_DENIED\") cb();\n });\n return () => sub?.unsubscribe();\n },\n async openImagePanel() {\n return exec(\"sidebar.operation.doc-image\", { value: \"doc-image\" });\n },\n goTo(offset) {\n doc()?.setSelection?.(offset, offset);\n },\n };\n}\n\n/** Write one plain key onto the document style (it rides the snapshot like the paper color does). */\nexport async function writeDocumentStyleKey(api: ApiLike, key: string, value: string): Promise<void> {\n const doc = api.getActiveDocument?.();\n if (!doc) return;\n const style = (doc as unknown as { getDocumentDataModel?(): { getSnapshot(): { documentStyle?: Record<string, unknown> } } }).getDocumentDataModel?.()?.getSnapshot().documentStyle ?? {};\n const old = style[key];\n if (old === value) return;\n const { JSONX } = await import(\"@univerjs/core\");\n const jsonX = JSONX.getInstance();\n const path = [\"documentStyle\", key];\n const action = old === undefined ? jsonX.insertOp(path, value) : jsonX.replaceOp(path, old, value);\n if (!action) return;\n await api.executeCommand(\"doc.mutation.rich-text-editing\", { unitId: doc.getId(), actions: action, textRanges: undefined });\n}\n"]}
@@ -103,7 +103,7 @@ declare function rulerGeometry(a: {
103
103
  marginLeftPx: number;
104
104
  marginRightPx: number;
105
105
  }): RulerGeometry;
106
- /** The key on the document style that carries the language (the slot the paper colour also uses). */
106
+ /** The key on the document style that carries the language (the slot the paper color also uses). */
107
107
  declare const DOCUMENT_LANGUAGE_KEY = "matrxLanguage";
108
108
  declare const DOCUMENT_LANGUAGES: Array<{
109
109
  code: string;
@@ -151,7 +151,7 @@ declare function createDocEditOps(deps: {
151
151
  api: () => ApiLike | null;
152
152
  injector: () => InjectorLike | null;
153
153
  }): DocEditOps;
154
- /** Write one plain key onto the document style (it rides the snapshot like the paper colour does). */
154
+ /** Write one plain key onto the document style (it rides the snapshot like the paper color does). */
155
155
  declare function writeDocumentStyleKey(api: ApiLike, key: string, value: string): Promise<void>;
156
156
 
157
157
  export { BOOKMARK_ANCHOR, BOOKMARK_RANGE_TYPE, BUILDING_BLOCKS, type Bookmark, type BorderChoice, type BorderDash, type BorderSide, type BuildingBlock, DOCUMENT_LANGUAGES, DOCUMENT_LANGUAGE_KEY, type DocEditOps, type MarkdownFragment, type RulerGeometry, blockInsertPlan, bookmarkBody, bookmarkFromHash, bookmarkHash, cleanBookmarkName, collectBookmarks, createDocEditOps, looksLikeMarkdown, markdownFragment, paragraphBorderParams, readDocumentLanguage, rulerGeometry, writeDocumentStyleKey };
@@ -103,7 +103,7 @@ declare function rulerGeometry(a: {
103
103
  marginLeftPx: number;
104
104
  marginRightPx: number;
105
105
  }): RulerGeometry;
106
- /** The key on the document style that carries the language (the slot the paper colour also uses). */
106
+ /** The key on the document style that carries the language (the slot the paper color also uses). */
107
107
  declare const DOCUMENT_LANGUAGE_KEY = "matrxLanguage";
108
108
  declare const DOCUMENT_LANGUAGES: Array<{
109
109
  code: string;
@@ -151,7 +151,7 @@ declare function createDocEditOps(deps: {
151
151
  api: () => ApiLike | null;
152
152
  injector: () => InjectorLike | null;
153
153
  }): DocEditOps;
154
- /** Write one plain key onto the document style (it rides the snapshot like the paper colour does). */
154
+ /** Write one plain key onto the document style (it rides the snapshot like the paper color does). */
155
155
  declare function writeDocumentStyleKey(api: ApiLike, key: string, value: string): Promise<void>;
156
156
 
157
157
  export { BOOKMARK_ANCHOR, BOOKMARK_RANGE_TYPE, BUILDING_BLOCKS, type Bookmark, type BorderChoice, type BorderDash, type BorderSide, type BuildingBlock, DOCUMENT_LANGUAGES, DOCUMENT_LANGUAGE_KEY, type DocEditOps, type MarkdownFragment, type RulerGeometry, blockInsertPlan, bookmarkBody, bookmarkFromHash, bookmarkHash, cleanBookmarkName, collectBookmarks, createDocEditOps, looksLikeMarkdown, markdownFragment, paragraphBorderParams, readDocumentLanguage, rulerGeometry, writeDocumentStyleKey };
@@ -15,8 +15,8 @@ import {
15
15
  paragraphBorderParams,
16
16
  readDocumentLanguage,
17
17
  rulerGeometry
18
- } from "./chunk-47MIGBMH.js";
19
- import "./chunk-Z247F527.js";
18
+ } from "./chunk-DY5TGHBI.js";
19
+ import "./chunk-Y24EYKSD.js";
20
20
 
21
21
  // src/docs/doc-edit-ops.ts
22
22
  function createDocEditOps(deps) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/docs/doc-edit-ops.ts"],"sourcesContent":["/**\n * The Univer-facing half of the Docs tools: insert text, markdown and bookmarks at the caret, move\n * the selection, read the live snapshot, set view-only. Every operation is a real Univer command.\n */\n\nimport { blockInsertPlan, bookmarkBody, collectBookmarks, markdownFragment, type Bookmark } from \"./doc-tools-core\";\n\ninterface ApiLike {\n executeCommand(id: string, params?: object): Promise<unknown> | unknown;\n getActiveDocument?(): {\n getId(): string;\n save?(): unknown;\n setSelection?(a: number, b: number): void;\n getPermission?(): { setReadOnly(): Promise<void>; setEditable(editable?: boolean): Promise<void> };\n } | null;\n}\ninterface InjectorLike {\n get<T>(token: unknown): T | undefined;\n}\ninterface TextRangeLike {\n startOffset: number;\n endOffset: number;\n}\n\nexport interface DocEditOps {\n insertText(text: string): Promise<boolean>;\n /** A block (building block) at a new paragraph, never mid-line. */\n insertMarkdown(markdown: string): Promise<boolean>;\n /** Move the caret to where a block goes (`blockInsertPlan`); false when there is no caret. */\n toBlockStart(): Promise<boolean>;\n bookmarks(): Bookmark[];\n addBookmark(name: string): Promise<boolean>;\n deleteBookmark(b: Bookmark): Promise<boolean>;\n goTo(offset: number): void;\n snapshot(): unknown;\n setViewOnly(viewOnly: boolean): Promise<void>;\n /** Calls back when Univer refuses an edit (Viewing mode); returns the unsubscribe. */\n onEditDenied(cb: () => void): Promise<() => void>;\n openImagePanel(): Promise<boolean>;\n}\n\nexport function createDocEditOps(deps: { api: () => ApiLike | null; injector: () => InjectorLike | null }): DocEditOps {\n const doc = () => deps.api()?.getActiveDocument?.() ?? null;\n const snapshot = () => doc()?.save?.() ?? null;\n const range = async (): Promise<TextRangeLike | null> => {\n const { DocSelectionManagerService } = await import(\"@univerjs/docs\");\n const live = deps.injector()?.get<{ getActiveTextRange?(): TextRangeLike | null | undefined }>(DocSelectionManagerService)?.getActiveTextRange?.();\n return live ?? null;\n };\n const exec = async (id: string, params: object) => (await deps.api()?.executeCommand(id, params)) !== false;\n const toBlockStart = async (): Promise<boolean> => {\n const d = doc();\n const r = await range();\n const stream = (snapshot() as { body?: { dataStream?: string } } | null)?.body?.dataStream;\n if (!d || !r || typeof stream !== \"string\") return false;\n const plan = blockInsertPlan(stream, r.startOffset);\n if (plan.breakAt === null) {\n d.setSelection?.(plan.at, plan.at);\n return true;\n }\n d.setSelection?.(plan.breakAt, plan.breakAt);\n return exec(\"doc.command.break-line\", { unitId: d.getId() });\n };\n\n return {\n snapshot,\n async insertText(text) {\n if (!text || !(await range())) return false;\n return exec(\"doc.command.insert-special-character\", { value: text });\n },\n toBlockStart,\n async insertMarkdown(markdown) {\n const d = doc();\n if (!d || !(await toBlockStart())) return false;\n return exec(\"doc.command.inner-paste\", { unitId: d.getId(), doc: markdownFragment(markdown) });\n },\n bookmarks: () => collectBookmarks(snapshot()),\n async addBookmark(name) {\n const d = doc();\n const r = await range();\n if (!d || !r) return false;\n d.setSelection?.(r.startOffset, r.startOffset);\n const id = `bm_${Math.random().toString(36).slice(2, 10)}`;\n return exec(\"doc.command.replace-selection\", { unitId: d.getId(), body: bookmarkBody(id, name) });\n },\n async deleteBookmark(b) {\n const d = doc();\n if (!d) return false;\n d.setSelection?.(b.offset + 1, b.offset + 1);\n return exec(\"doc.command.delete-left\", { unitId: d.getId() });\n },\n async setViewOnly(viewOnly) {\n const perm = doc()?.getPermission?.();\n if (!perm) return;\n if (viewOnly) await perm.setReadOnly();\n else await perm.setEditable(true);\n // Univer's own refusal notice (\"This content is protected…\") stays off while viewing; the\n // editor shows ours through onEditDenied.\n const { IPermissionService } = await import(\"@univerjs/core\");\n deps.injector()?.get<{ setShowComponents?(show: boolean): void }>(IPermissionService)?.setShowComponents?.(!viewOnly);\n },\n async onEditDenied(cb) {\n const { ErrorService } = await import(\"@univerjs/core\");\n const errors = deps.injector()?.get<{ error$?: { subscribe(fn: (e: { code?: string }) => void): { unsubscribe(): void } } }>(ErrorService);\n const sub = errors?.error$?.subscribe((e) => {\n if (e.code === \"PERMISSION_DENIED\") cb();\n });\n return () => sub?.unsubscribe();\n },\n async openImagePanel() {\n return exec(\"sidebar.operation.doc-image\", { value: \"doc-image\" });\n },\n goTo(offset) {\n doc()?.setSelection?.(offset, offset);\n },\n };\n}\n\n/** Write one plain key onto the document style (it rides the snapshot like the paper colour does). */\nexport async function writeDocumentStyleKey(api: ApiLike, key: string, value: string): Promise<void> {\n const doc = api.getActiveDocument?.();\n if (!doc) return;\n const style = (doc as unknown as { getDocumentDataModel?(): { getSnapshot(): { documentStyle?: Record<string, unknown> } } }).getDocumentDataModel?.()?.getSnapshot().documentStyle ?? {};\n const old = style[key];\n if (old === value) return;\n const { JSONX } = await import(\"@univerjs/core\");\n const jsonX = JSONX.getInstance();\n const path = [\"documentStyle\", key];\n const action = old === undefined ? jsonX.insertOp(path, value) : jsonX.replaceOp(path, old, value);\n if (!action) return;\n await api.executeCommand(\"doc.mutation.rich-text-editing\", { unitId: doc.getId(), actions: action, textRanges: undefined });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyCO,SAAS,iBAAiB,MAAsF;AACrH,QAAM,MAAM,MAAM,KAAK,IAAI,GAAG,oBAAoB,KAAK;AACvD,QAAM,WAAW,MAAM,IAAI,GAAG,OAAO,KAAK;AAC1C,QAAM,QAAQ,YAA2C;AACvD,UAAM,EAAE,2BAA2B,IAAI,MAAM,OAAO,gBAAgB;AACpE,UAAM,OAAO,KAAK,SAAS,GAAG,IAAiE,0BAA0B,GAAG,qBAAqB;AACjJ,WAAO,QAAQ;AAAA,EACjB;AACA,QAAM,OAAO,OAAO,IAAY,WAAoB,MAAM,KAAK,IAAI,GAAG,eAAe,IAAI,MAAM,MAAO;AACtG,QAAM,eAAe,YAA8B;AACjD,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,MAAM,MAAM;AACtB,UAAM,SAAU,SAAS,GAAiD,MAAM;AAChF,QAAI,CAAC,KAAK,CAAC,KAAK,OAAO,WAAW,SAAU,QAAO;AACnD,UAAM,OAAO,gBAAgB,QAAQ,EAAE,WAAW;AAClD,QAAI,KAAK,YAAY,MAAM;AACzB,QAAE,eAAe,KAAK,IAAI,KAAK,EAAE;AACjC,aAAO;AAAA,IACT;AACA,MAAE,eAAe,KAAK,SAAS,KAAK,OAAO;AAC3C,WAAO,KAAK,0BAA0B,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL;AAAA,IACA,MAAM,WAAW,MAAM;AACrB,UAAI,CAAC,QAAQ,CAAE,MAAM,MAAM,EAAI,QAAO;AACtC,aAAO,KAAK,wCAAwC,EAAE,OAAO,KAAK,CAAC;AAAA,IACrE;AAAA,IACA;AAAA,IACA,MAAM,eAAe,UAAU;AAC7B,YAAM,IAAI,IAAI;AACd,UAAI,CAAC,KAAK,CAAE,MAAM,aAAa,EAAI,QAAO;AAC1C,aAAO,KAAK,2BAA2B,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,iBAAiB,QAAQ,EAAE,CAAC;AAAA,IAC/F;AAAA,IACA,WAAW,MAAM,iBAAiB,SAAS,CAAC;AAAA,IAC5C,MAAM,YAAY,MAAM;AACtB,YAAM,IAAI,IAAI;AACd,YAAM,IAAI,MAAM,MAAM;AACtB,UAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AACrB,QAAE,eAAe,EAAE,aAAa,EAAE,WAAW;AAC7C,YAAM,KAAK,MAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;AACxD,aAAO,KAAK,iCAAiC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,aAAa,IAAI,IAAI,EAAE,CAAC;AAAA,IAClG;AAAA,IACA,MAAM,eAAe,GAAG;AACtB,YAAM,IAAI,IAAI;AACd,UAAI,CAAC,EAAG,QAAO;AACf,QAAE,eAAe,EAAE,SAAS,GAAG,EAAE,SAAS,CAAC;AAC3C,aAAO,KAAK,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAAA,IAC9D;AAAA,IACA,MAAM,YAAY,UAAU;AAC1B,YAAM,OAAO,IAAI,GAAG,gBAAgB;AACpC,UAAI,CAAC,KAAM;AACX,UAAI,SAAU,OAAM,KAAK,YAAY;AAAA,UAChC,OAAM,KAAK,YAAY,IAAI;AAGhC,YAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,gBAAgB;AAC5D,WAAK,SAAS,GAAG,IAAiD,kBAAkB,GAAG,oBAAoB,CAAC,QAAQ;AAAA,IACtH;AAAA,IACA,MAAM,aAAa,IAAI;AACrB,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gBAAgB;AACtD,YAAM,SAAS,KAAK,SAAS,GAAG,IAA6F,YAAY;AACzI,YAAM,MAAM,QAAQ,QAAQ,UAAU,CAAC,MAAM;AAC3C,YAAI,EAAE,SAAS,oBAAqB,IAAG;AAAA,MACzC,CAAC;AACD,aAAO,MAAM,KAAK,YAAY;AAAA,IAChC;AAAA,IACA,MAAM,iBAAiB;AACrB,aAAO,KAAK,+BAA+B,EAAE,OAAO,YAAY,CAAC;AAAA,IACnE;AAAA,IACA,KAAK,QAAQ;AACX,UAAI,GAAG,eAAe,QAAQ,MAAM;AAAA,IACtC;AAAA,EACF;AACF;AAGA,eAAsB,sBAAsB,KAAc,KAAa,OAA8B;AACnG,QAAM,MAAM,IAAI,oBAAoB;AACpC,MAAI,CAAC,IAAK;AACV,QAAM,QAAS,IAA+G,uBAAuB,GAAG,YAAY,EAAE,iBAAiB,CAAC;AACxL,QAAM,MAAM,MAAM,GAAG;AACrB,MAAI,QAAQ,MAAO;AACnB,QAAM,EAAE,MAAM,IAAI,MAAM,OAAO,gBAAgB;AAC/C,QAAM,QAAQ,MAAM,YAAY;AAChC,QAAM,OAAO,CAAC,iBAAiB,GAAG;AAClC,QAAM,SAAS,QAAQ,SAAY,MAAM,SAAS,MAAM,KAAK,IAAI,MAAM,UAAU,MAAM,KAAK,KAAK;AACjG,MAAI,CAAC,OAAQ;AACb,QAAM,IAAI,eAAe,kCAAkC,EAAE,QAAQ,IAAI,MAAM,GAAG,SAAS,QAAQ,YAAY,OAAU,CAAC;AAC5H;","names":[]}
1
+ {"version":3,"sources":["../src/docs/doc-edit-ops.ts"],"sourcesContent":["/**\n * The Univer-facing half of the Docs tools: insert text, markdown and bookmarks at the caret, move\n * the selection, read the live snapshot, set view-only. Every operation is a real Univer command.\n */\n\nimport { blockInsertPlan, bookmarkBody, collectBookmarks, markdownFragment, type Bookmark } from \"./doc-tools-core\";\n\ninterface ApiLike {\n executeCommand(id: string, params?: object): Promise<unknown> | unknown;\n getActiveDocument?(): {\n getId(): string;\n save?(): unknown;\n setSelection?(a: number, b: number): void;\n getPermission?(): { setReadOnly(): Promise<void>; setEditable(editable?: boolean): Promise<void> };\n } | null;\n}\ninterface InjectorLike {\n get<T>(token: unknown): T | undefined;\n}\ninterface TextRangeLike {\n startOffset: number;\n endOffset: number;\n}\n\nexport interface DocEditOps {\n insertText(text: string): Promise<boolean>;\n /** A block (building block) at a new paragraph, never mid-line. */\n insertMarkdown(markdown: string): Promise<boolean>;\n /** Move the caret to where a block goes (`blockInsertPlan`); false when there is no caret. */\n toBlockStart(): Promise<boolean>;\n bookmarks(): Bookmark[];\n addBookmark(name: string): Promise<boolean>;\n deleteBookmark(b: Bookmark): Promise<boolean>;\n goTo(offset: number): void;\n snapshot(): unknown;\n setViewOnly(viewOnly: boolean): Promise<void>;\n /** Calls back when Univer refuses an edit (Viewing mode); returns the unsubscribe. */\n onEditDenied(cb: () => void): Promise<() => void>;\n openImagePanel(): Promise<boolean>;\n}\n\nexport function createDocEditOps(deps: { api: () => ApiLike | null; injector: () => InjectorLike | null }): DocEditOps {\n const doc = () => deps.api()?.getActiveDocument?.() ?? null;\n const snapshot = () => doc()?.save?.() ?? null;\n const range = async (): Promise<TextRangeLike | null> => {\n const { DocSelectionManagerService } = await import(\"@univerjs/docs\");\n const live = deps.injector()?.get<{ getActiveTextRange?(): TextRangeLike | null | undefined }>(DocSelectionManagerService)?.getActiveTextRange?.();\n return live ?? null;\n };\n const exec = async (id: string, params: object) => (await deps.api()?.executeCommand(id, params)) !== false;\n const toBlockStart = async (): Promise<boolean> => {\n const d = doc();\n const r = await range();\n const stream = (snapshot() as { body?: { dataStream?: string } } | null)?.body?.dataStream;\n if (!d || !r || typeof stream !== \"string\") return false;\n const plan = blockInsertPlan(stream, r.startOffset);\n if (plan.breakAt === null) {\n d.setSelection?.(plan.at, plan.at);\n return true;\n }\n d.setSelection?.(plan.breakAt, plan.breakAt);\n return exec(\"doc.command.break-line\", { unitId: d.getId() });\n };\n\n return {\n snapshot,\n async insertText(text) {\n if (!text || !(await range())) return false;\n return exec(\"doc.command.insert-special-character\", { value: text });\n },\n toBlockStart,\n async insertMarkdown(markdown) {\n const d = doc();\n if (!d || !(await toBlockStart())) return false;\n return exec(\"doc.command.inner-paste\", { unitId: d.getId(), doc: markdownFragment(markdown) });\n },\n bookmarks: () => collectBookmarks(snapshot()),\n async addBookmark(name) {\n const d = doc();\n const r = await range();\n if (!d || !r) return false;\n d.setSelection?.(r.startOffset, r.startOffset);\n const id = `bm_${Math.random().toString(36).slice(2, 10)}`;\n return exec(\"doc.command.replace-selection\", { unitId: d.getId(), body: bookmarkBody(id, name) });\n },\n async deleteBookmark(b) {\n const d = doc();\n if (!d) return false;\n d.setSelection?.(b.offset + 1, b.offset + 1);\n return exec(\"doc.command.delete-left\", { unitId: d.getId() });\n },\n async setViewOnly(viewOnly) {\n const perm = doc()?.getPermission?.();\n if (!perm) return;\n if (viewOnly) await perm.setReadOnly();\n else await perm.setEditable(true);\n // Univer's own refusal notice (\"This content is protected…\") stays off while viewing; the\n // editor shows ours through onEditDenied.\n const { IPermissionService } = await import(\"@univerjs/core\");\n deps.injector()?.get<{ setShowComponents?(show: boolean): void }>(IPermissionService)?.setShowComponents?.(!viewOnly);\n },\n async onEditDenied(cb) {\n const { ErrorService } = await import(\"@univerjs/core\");\n const errors = deps.injector()?.get<{ error$?: { subscribe(fn: (e: { code?: string }) => void): { unsubscribe(): void } } }>(ErrorService);\n const sub = errors?.error$?.subscribe((e) => {\n if (e.code === \"PERMISSION_DENIED\") cb();\n });\n return () => sub?.unsubscribe();\n },\n async openImagePanel() {\n return exec(\"sidebar.operation.doc-image\", { value: \"doc-image\" });\n },\n goTo(offset) {\n doc()?.setSelection?.(offset, offset);\n },\n };\n}\n\n/** Write one plain key onto the document style (it rides the snapshot like the paper color does). */\nexport async function writeDocumentStyleKey(api: ApiLike, key: string, value: string): Promise<void> {\n const doc = api.getActiveDocument?.();\n if (!doc) return;\n const style = (doc as unknown as { getDocumentDataModel?(): { getSnapshot(): { documentStyle?: Record<string, unknown> } } }).getDocumentDataModel?.()?.getSnapshot().documentStyle ?? {};\n const old = style[key];\n if (old === value) return;\n const { JSONX } = await import(\"@univerjs/core\");\n const jsonX = JSONX.getInstance();\n const path = [\"documentStyle\", key];\n const action = old === undefined ? jsonX.insertOp(path, value) : jsonX.replaceOp(path, old, value);\n if (!action) return;\n await api.executeCommand(\"doc.mutation.rich-text-editing\", { unitId: doc.getId(), actions: action, textRanges: undefined });\n}\n"],"mappings":"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","names":[]}
package/dist/docs.cjs CHANGED
@@ -16,11 +16,14 @@
16
16
 
17
17
 
18
18
 
19
- var _chunk556EUPETcjs = require('./chunk-556EUPET.cjs');
19
+ var _chunkHX5TXQIXcjs = require('./chunk-HX5TXQIX.cjs');
20
20
 
21
21
 
22
- var _chunkMQB2ZK2Fcjs = require('./chunk-MQB2ZK2F.cjs');
23
- require('./chunk-UBLEFLES.cjs');
22
+ var _chunkNSU6EVJKcjs = require('./chunk-NSU6EVJK.cjs');
23
+ require('./chunk-XAIKXHHJ.cjs');
24
+
25
+ // src/docs/document-model.ts
26
+ var _core = require('@univerjs/core');
24
27
 
25
28
  // src/univer/isSnapshotMutation.ts
26
29
  var MUTATION = 2;
@@ -188,13 +191,13 @@ var DocumentModel = (_class = class {
188
191
  return editor;
189
192
  }
190
193
  onViewMutation(viewId, info, options) {
191
- if (this.relaying || _optionalChain([options, 'optionalAccess', _7 => _7.fromCollab]) || _optionalChain([options, 'optionalAccess', _8 => _8.fromChangeset])) return;
194
+ if (this.relaying || _optionalChain([options, 'optionalAccess', _15 => _15.fromCollab]) || _optionalChain([options, 'optionalAccess', _16 => _16.fromChangeset])) return;
192
195
  const view = this.views.get(viewId);
193
196
  if (!view || !view.port.editable()) return;
194
197
  this.lastEditedView = viewId;
195
198
  this.relay(info, viewId);
196
199
  for (const listener of this.collabListeners) listener(info, options);
197
- if (this.otListeners.size && !_optionalChain([options, 'optionalAccess', _9 => _9.onlyLocal])) {
200
+ if (this.otListeners.size && !_optionalChain([options, 'optionalAccess', _17 => _17.onlyLocal])) {
198
201
  const m = {
199
202
  id: info.id,
200
203
  params: info.params,
@@ -223,7 +226,7 @@ var DocumentModel = (_class = class {
223
226
  try {
224
227
  const snap = view.port.snapshot();
225
228
  view.pre = snap ? structuredClone(snap) : null;
226
- } catch (e3) {
229
+ } catch (e4) {
227
230
  view.pre = null;
228
231
  }
229
232
  }
@@ -254,8 +257,8 @@ var DocumentModel = (_class = class {
254
257
  /** The unit id a view's document has (what a replayed mutation must be addressed to). */
255
258
  unitIdOf(view) {
256
259
  try {
257
- return _nullishCoalesce(_nullishCoalesce(_optionalChain([view, 'access', _10 => _10.port, 'access', _11 => _11.unitId, 'optionalCall', _12 => _12()]), () => ( _optionalChain([view, 'access', _13 => _13.port, 'access', _14 => _14.snapshot, 'call', _15 => _15(), 'optionalAccess', _16 => _16.id]))), () => ( null));
258
- } catch (e4) {
260
+ return _nullishCoalesce(_nullishCoalesce(_optionalChain([view, 'access', _18 => _18.port, 'access', _19 => _19.unitId, 'optionalCall', _20 => _20()]), () => ( _optionalChain([view, 'access', _21 => _21.port, 'access', _22 => _22.snapshot, 'call', _23 => _23(), 'optionalAccess', _24 => _24.id]))), () => ( null));
261
+ } catch (e5) {
259
262
  return null;
260
263
  }
261
264
  }
@@ -288,7 +291,7 @@ var DocumentModel = (_class = class {
288
291
  /** A view could not follow an edit: say so, then show the saved version (unless this tab has unsaved edits of its own). */
289
292
  applyFailed(mutationId, error) {
290
293
  try {
291
- _optionalChain([this, 'access', _17 => _17.deps, 'access', _18 => _18.onApplyFailed, 'optionalCall', _19 => _19(this.documentId, mutationId, error)]);
294
+ _optionalChain([this, 'access', _25 => _25.deps, 'access', _26 => _26.onApplyFailed, 'optionalCall', _27 => _27(this.documentId, mutationId, error)]);
292
295
  } catch (notifyError) {
293
296
  console.warn(`[document-model] the notice for ${this.documentId}'s failed apply also failed`, notifyError);
294
297
  }
@@ -316,7 +319,7 @@ var DocumentModel = (_class = class {
316
319
  async write(reason) {
317
320
  if (this.ot) {
318
321
  const wrote = await this.ot.write(reason);
319
- if (wrote) _optionalChain([this, 'access', _20 => _20.deps, 'access', _21 => _21.onSaved, 'optionalCall', _22 => _22(this.documentId, reason === "manual" ? "manual" : "autosave")]);
322
+ if (wrote) _optionalChain([this, 'access', _28 => _28.deps, 'access', _29 => _29.onSaved, 'optionalCall', _30 => _30(this.documentId, reason === "manual" ? "manual" : "autosave")]);
320
323
  return wrote;
321
324
  }
322
325
  const snapshot = this.latest();
@@ -341,7 +344,7 @@ var DocumentModel = (_class = class {
341
344
  this.saving = false;
342
345
  }
343
346
  if (this.views.size === 0) this.stored = snapshot;
344
- _optionalChain([this, 'access', _23 => _23.deps, 'access', _24 => _24.onSaved, 'optionalCall', _25 => _25(this.documentId, origin)]);
347
+ _optionalChain([this, 'access', _31 => _31.deps, 'access', _32 => _32.onSaved, 'optionalCall', _33 => _33(this.documentId, origin)]);
345
348
  return true;
346
349
  }
347
350
  hasUnsaved() {
@@ -384,7 +387,7 @@ var DocumentModel = (_class = class {
384
387
  replaceContent(row) {
385
388
  if (this.ot) return this.ot.replace(row.snapshot);
386
389
  this.show(row);
387
- _optionalChain([this, 'access', _26 => _26.collab, 'optionalAccess', _27 => _27.announceReplaced, 'call', _28 => _28(row.id)]);
390
+ _optionalChain([this, 'access', _34 => _34.collab, 'optionalAccess', _35 => _35.announceReplaced, 'call', _36 => _36(row.id)]);
388
391
  }
389
392
  /** A peer replaced the document: show the newest save (once). */
390
393
  async onPeerReplaced() {
@@ -407,7 +410,7 @@ var DocumentModel = (_class = class {
407
410
  this.relaying = true;
408
411
  try {
409
412
  for (const view of this.views.values()) view.port.remount(snapshot);
410
- _optionalChain([this, 'access', _29 => _29.parked, 'optionalAccess', _30 => _30.remount, 'call', _31 => _31(snapshot)]);
413
+ _optionalChain([this, 'access', _37 => _37.parked, 'optionalAccess', _38 => _38.remount, 'call', _39 => _39(snapshot)]);
411
414
  } finally {
412
415
  this.relaying = false;
413
416
  }
@@ -479,10 +482,24 @@ var DocumentModel = (_class = class {
479
482
  for (const view of this.views.values()) {
480
483
  const unitId = this.unitIdOf(view);
481
484
  const input = Array.isArray(params.actions) ? params.actions.length : 0;
485
+ let sel = null;
486
+ try {
487
+ sel = _nullishCoalesce(_optionalChain([view, 'access', _40 => _40.port, 'access', _41 => _41.selection, 'optionalAccess', _42 => _42.get, 'call', _43 => _43()]), () => ( null));
488
+ } catch (e6) {
489
+ sel = null;
490
+ }
482
491
  const p = { ...params, ...unitId ? { unitId } : {}, textRanges: null, noNeedSetTextRange: true };
483
492
  const ok = view.port.commandService.syncExecuteCommand(id, p, { onlyLocal: true, fromCollab: true });
484
493
  if (ok === false) throw new Error(`"${id}" was refused by the editor`);
485
494
  if (input > 0 && Array.isArray(p.actions) && p.actions.length === 0) throw new Error(`"${id}" was emptied by the editor`);
495
+ const moved = sel && sel.length && sel.every((r) => !r.segmentId) ? moveRangesThroughBodyEdit(sel, params.actions) : null;
496
+ if (moved) {
497
+ try {
498
+ _optionalChain([view, 'access', _44 => _44.port, 'access', _45 => _45.selection, 'optionalAccess', _46 => _46.set, 'call', _47 => _47(moved)]);
499
+ } catch (error) {
500
+ console.warn(`[document-model] could not move this view's caret past a collaborator's edit`, error);
501
+ }
502
+ }
486
503
  }
487
504
  } finally {
488
505
  this.relaying = false;
@@ -497,7 +514,7 @@ var DocumentModel = (_class = class {
497
514
  this.relaying = true;
498
515
  try {
499
516
  for (const view of this.views.values()) view.port.remount(s2);
500
- _optionalChain([this, 'access', _32 => _32.parked, 'optionalAccess', _33 => _33.remount, 'call', _34 => _34(s2)]);
517
+ _optionalChain([this, 'access', _48 => _48.parked, 'optionalAccess', _49 => _49.remount, 'call', _50 => _50(s2)]);
501
518
  } finally {
502
519
  this.relaying = false;
503
520
  }
@@ -506,7 +523,7 @@ var DocumentModel = (_class = class {
506
523
  const out = [];
507
524
  for (const view of this.views.values()) {
508
525
  const unitId = this.unitIdOf(view);
509
- const service = _optionalChain([view, 'access', _35 => _35.port, 'access', _36 => _36.undoRedo, 'optionalCall', _37 => _37()]);
526
+ const service = _optionalChain([view, 'access', _51 => _51.port, 'access', _52 => _52.undoRedo, 'optionalCall', _53 => _53()]);
510
527
  if (unitId && service) out.push({ service, unitId });
511
528
  }
512
529
  return out;
@@ -564,9 +581,9 @@ var DocumentModel = (_class = class {
564
581
  * so a collaborator's save still reaches the body a returning view boots from.
565
582
  */
566
583
  rest() {
567
- _optionalChain([this, 'access', _38 => _38.collab, 'optionalAccess', _39 => _39.stop, 'call', _40 => _40()]);
584
+ _optionalChain([this, 'access', _54 => _54.collab, 'optionalAccess', _55 => _55.stop, 'call', _56 => _56()]);
568
585
  this.collab = null;
569
- _optionalChain([this, 'access', _41 => _41.ot, 'optionalAccess', _42 => _42.stop, 'call', _43 => _43()]);
586
+ _optionalChain([this, 'access', _57 => _57.ot, 'optionalAccess', _58 => _58.stop, 'call', _59 => _59()]);
570
587
  this.ot = null;
571
588
  this.awareness = null;
572
589
  }
@@ -582,12 +599,20 @@ var DocumentModel = (_class = class {
582
599
  console.warn(`[document-model] could not dispose ${this.documentId}'s kept editor`, error);
583
600
  }
584
601
  }
585
- _optionalChain([this, 'access', _44 => _44.realtimeClose, 'optionalCall', _45 => _45()]);
602
+ _optionalChain([this, 'access', _60 => _60.realtimeClose, 'optionalCall', _61 => _61()]);
586
603
  this.realtimeClose = null;
587
- _optionalChain([this, 'access', _46 => _46.pageClose, 'optionalCall', _47 => _47()]);
604
+ _optionalChain([this, 'access', _62 => _62.pageClose, 'optionalCall', _63 => _63()]);
588
605
  this.pageClose = null;
589
606
  }
590
607
  }, _class);
608
+ function moveRangesThroughBodyEdit(ranges, actions) {
609
+ const a = actions;
610
+ if (!Array.isArray(a) || a[0] !== "body") return null;
611
+ const sub = a[1];
612
+ if (!sub || sub.et !== "text-x" || !Array.isArray(sub.e)) return null;
613
+ const e2 = sub.e;
614
+ return ranges.map((r) => ({ startOffset: _core.TextX.transformPosition(e2, r.startOffset, false), endOffset: _core.TextX.transformPosition(e2, r.endOffset, false) }));
615
+ }
591
616
  function contentFingerprint(snapshot) {
592
617
  const { id: _id, rev: _rev, ...content } = snapshot;
593
618
  return JSON.stringify(content);
@@ -747,7 +772,7 @@ function planBodyEdit(current, next) {
747
772
  };
748
773
  }
749
774
  function insertSpan(port, _current, edit) {
750
- if (port.insertMarkdown && _chunkMQB2ZK2Fcjs.looksLikeMarkdown.call(void 0, edit.insert)) {
775
+ if (port.insertMarkdown && _chunkNSU6EVJKcjs.looksLikeMarkdown.call(void 0, edit.insert)) {
751
776
  const stream = port.getDataStream();
752
777
  let at = edit.start;
753
778
  if (at > 0 && stream[at - 1] !== PARAGRAPH) {
@@ -860,5 +885,6 @@ function documentBodyWriteHandler(deps) {
860
885
 
861
886
 
862
887
 
863
- exports.DOCUMENT_BODY_MAX_LENGTH = DOCUMENT_BODY_MAX_LENGTH; exports.DOCUMENT_DESCRIPTION_MAX_LENGTH = DOCUMENT_DESCRIPTION_MAX_LENGTH; exports.DOCUMENT_NAME_MAX_LENGTH = DOCUMENT_NAME_MAX_LENGTH; exports.DOCUMENT_SAVE_DELAY_MS = DOCUMENT_SAVE_DELAY_MS; exports.DocumentModel = DocumentModel; exports.EMOJI_GROUPS = EMOJI_GROUPS; exports.MIN_FIT_ZOOM = MIN_FIT_ZOOM; exports.SPECIAL_GROUPS = SPECIAL_GROUPS; exports.bodyTextOf = bodyTextOf; exports.configureDocsHost = _chunk556EUPETcjs.configureDocsHost; exports.copyDocument = _chunk556EUPETcjs.copyDocument; exports.createDocument = _chunk556EUPETcjs.createDocument; exports.deleteDocument = _chunk556EUPETcjs.deleteDocument; exports.discardFailedDocument = _chunk556EUPETcjs.discardFailedDocument; exports.documentBodyWriteHandler = documentBodyWriteHandler; exports.documentSourceLabel = documentSourceLabel; exports.fitZoomRatio = fitZoomRatio; exports.getDocsHost = _chunk556EUPETcjs.getDocsHost; exports.getDocument = _chunk556EUPETcjs.getDocument; exports.getLatestDocumentSnapshot = _chunk556EUPETcjs.getLatestDocumentSnapshot; exports.listAccessibleDocuments = _chunk556EUPETcjs.listAccessibleDocuments; exports.listDocumentSnapshots = _chunk556EUPETcjs.listDocumentSnapshots; exports.listTrashedDocuments = _chunk556EUPETcjs.listTrashedDocuments; exports.moveDocument = _chunk556EUPETcjs.moveDocument; exports.planBodyEdit = planBodyEdit; exports.renameDocument = _chunk556EUPETcjs.renameDocument; exports.restoreDocument = _chunk556EUPETcjs.restoreDocument; exports.sanitizeUniverDocSnapshot = _chunk556EUPETcjs.sanitizeUniverDocSnapshot; exports.saveDocumentSnapshot = _chunk556EUPETcjs.saveDocumentSnapshot; exports.searchSymbols = searchSymbols; exports.updateDocumentDescription = _chunk556EUPETcjs.updateDocumentDescription; exports.validateDocumentBody = validateDocumentBody; exports.validateDocumentDescription = validateDocumentDescription; exports.validateDocumentName = validateDocumentName; exports.writeBodyText = writeBodyText;
888
+
889
+ exports.DOCUMENT_BODY_MAX_LENGTH = DOCUMENT_BODY_MAX_LENGTH; exports.DOCUMENT_DESCRIPTION_MAX_LENGTH = DOCUMENT_DESCRIPTION_MAX_LENGTH; exports.DOCUMENT_NAME_MAX_LENGTH = DOCUMENT_NAME_MAX_LENGTH; exports.DOCUMENT_SAVE_DELAY_MS = DOCUMENT_SAVE_DELAY_MS; exports.DocumentModel = DocumentModel; exports.EMOJI_GROUPS = EMOJI_GROUPS; exports.MIN_FIT_ZOOM = MIN_FIT_ZOOM; exports.SPECIAL_GROUPS = SPECIAL_GROUPS; exports.bodyTextOf = bodyTextOf; exports.configureDocsHost = _chunkHX5TXQIXcjs.configureDocsHost; exports.copyDocument = _chunkHX5TXQIXcjs.copyDocument; exports.createDocument = _chunkHX5TXQIXcjs.createDocument; exports.deleteDocument = _chunkHX5TXQIXcjs.deleteDocument; exports.discardFailedDocument = _chunkHX5TXQIXcjs.discardFailedDocument; exports.documentBodyWriteHandler = documentBodyWriteHandler; exports.documentSourceLabel = documentSourceLabel; exports.fitZoomRatio = fitZoomRatio; exports.getDocsHost = _chunkHX5TXQIXcjs.getDocsHost; exports.getDocument = _chunkHX5TXQIXcjs.getDocument; exports.getLatestDocumentSnapshot = _chunkHX5TXQIXcjs.getLatestDocumentSnapshot; exports.listAccessibleDocuments = _chunkHX5TXQIXcjs.listAccessibleDocuments; exports.listDocumentSnapshots = _chunkHX5TXQIXcjs.listDocumentSnapshots; exports.listTrashedDocuments = _chunkHX5TXQIXcjs.listTrashedDocuments; exports.moveDocument = _chunkHX5TXQIXcjs.moveDocument; exports.moveRangesThroughBodyEdit = moveRangesThroughBodyEdit; exports.planBodyEdit = planBodyEdit; exports.renameDocument = _chunkHX5TXQIXcjs.renameDocument; exports.restoreDocument = _chunkHX5TXQIXcjs.restoreDocument; exports.sanitizeUniverDocSnapshot = _chunkHX5TXQIXcjs.sanitizeUniverDocSnapshot; exports.saveDocumentSnapshot = _chunkHX5TXQIXcjs.saveDocumentSnapshot; exports.searchSymbols = searchSymbols; exports.updateDocumentDescription = _chunkHX5TXQIXcjs.updateDocumentDescription; exports.validateDocumentBody = validateDocumentBody; exports.validateDocumentDescription = validateDocumentDescription; exports.validateDocumentName = validateDocumentName; exports.writeBodyText = writeBodyText;
864
890
  //# sourceMappingURL=docs.cjs.map