@kedataindo/docflow-core 0.0.96 → 0.0.98

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.
@@ -1 +1 @@
1
- export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, a as AIDraftFn, h as AIProvider, A as AIStreamFn, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, H as HttpKeyStorageUrls, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, q as StreamEvent, r as buildAIPrompt, s as claudeProvider, t as httpKeyStorage, u as localStorageKeyStorage, v as memoryKeyStorage, w as openaiCompatibleProvider, x as sessionStorageKeyStorage, y as toAIStreamFn, z as trimContextAfter, D as trimContextBefore } from '../index-C6kKgZd_.cjs';
1
+ export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, a as AIDraftFn, h as AIProvider, A as AIStreamFn, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, H as HttpKeyStorageUrls, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, r as StreamEvent, s as buildAIPrompt, t as claudeProvider, u as httpKeyStorage, v as localStorageKeyStorage, w as memoryKeyStorage, x as openaiCompatibleProvider, y as sessionStorageKeyStorage, z as toAIStreamFn, D as trimContextAfter, E as trimContextBefore } from '../index-Br6IhSDL.cjs';
@@ -1 +1 @@
1
- export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, a as AIDraftFn, h as AIProvider, A as AIStreamFn, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, H as HttpKeyStorageUrls, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, q as StreamEvent, r as buildAIPrompt, s as claudeProvider, t as httpKeyStorage, u as localStorageKeyStorage, v as memoryKeyStorage, w as openaiCompatibleProvider, x as sessionStorageKeyStorage, y as toAIStreamFn, z as trimContextAfter, D as trimContextBefore } from '../index-C6kKgZd_.js';
1
+ export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, a as AIDraftFn, h as AIProvider, A as AIStreamFn, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, H as HttpKeyStorageUrls, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, r as StreamEvent, s as buildAIPrompt, t as claudeProvider, u as httpKeyStorage, v as localStorageKeyStorage, w as memoryKeyStorage, x as openaiCompatibleProvider, y as sessionStorageKeyStorage, z as toAIStreamFn, D as trimContextAfter, E as trimContextBefore } from '../index-Br6IhSDL.js';
@@ -156,6 +156,19 @@ interface CslItemData {
156
156
  abstract?: string;
157
157
  [k: string]: unknown;
158
158
  }
159
+ /**
160
+ * A CSL style the citation engine can render with (issue #180). The library
161
+ * bundles four; a host may inject more (an institutional or Harvard/IEEE style)
162
+ * through `CitationPort.styles` — without modifying the library.
163
+ */
164
+ interface CslStyleInfo {
165
+ id: string;
166
+ name: string;
167
+ /** 'note' styles render citations as footnotes; 'in-text' render inline. */
168
+ category: 'note' | 'in-text';
169
+ /** The CSL XML itself (the `<style>` document, as a string). */
170
+ xml: string;
171
+ }
159
172
  /**
160
173
  * Host-supplied citation port. The library never fetches sources itself — the
161
174
  * host owns the reference library and injects CSL-JSON through this port,
@@ -166,6 +179,13 @@ interface CitationPort {
166
179
  sources: CslItemData[] | (() => CslItemData[]);
167
180
  /** Active CSL style id (e.g. 'chicago-notes-bibliography'). */
168
181
  style?: string;
182
+ /**
183
+ * Extra CSL styles for this document's engine (issue #180). A style whose
184
+ * `id` matches a bundled one overrides it; every other id is added alongside
185
+ * the four defaults. Omit it and the engine behaves exactly as before — the
186
+ * bundled styles keep the editor offline-capable.
187
+ */
188
+ styles?: CslStyleInfo[];
169
189
  /**
170
190
  * Called when the user inserts a citation: the host opens its source
171
191
  * picker and resolves with the chosen source id (null = cancelled).
@@ -383,5 +403,5 @@ interface ClaudeConfig {
383
403
  }
384
404
  declare function claudeProvider(config: ClaudeConfig): AIProvider;
385
405
 
386
- export { trimContextBefore as D, LOCAL_STORAGE_KEY as L, SESSION_STORAGE_KEY as S, CONTEXT_CHAR_CAP as k, buildAIPrompt as r, claudeProvider as s, httpKeyStorage as t, localStorageKeyStorage as u, memoryKeyStorage as v, openaiCompatibleProvider as w, sessionStorageKeyStorage as x, toAIStreamFn as y, trimContextAfter as z };
387
- export type { AIStreamFn as A, BrowserKeyStorageOptions as B, CitationPort as C, HttpKeyStorageUrls as H, ImageUploadHandler as I, KeyStorage as K, OpenAICompatibleConfig as O, AIDraftFn as a, AIAction as b, AIActionRequest as c, AICompleteRequest as d, AIConfig as e, AIDraftCitation as f, AIDraftEvent as g, AIProvider as h, AIProviderFactory as i, Auth as j, ClaudeConfig as l, CslDate as m, CslItemData as n, CslName as o, ImageUploadResult as p, StreamEvent as q };
406
+ export { trimContextAfter as D, trimContextBefore as E, LOCAL_STORAGE_KEY as L, SESSION_STORAGE_KEY as S, CONTEXT_CHAR_CAP as k, buildAIPrompt as s, claudeProvider as t, httpKeyStorage as u, localStorageKeyStorage as v, memoryKeyStorage as w, openaiCompatibleProvider as x, sessionStorageKeyStorage as y, toAIStreamFn as z };
407
+ export type { AIStreamFn as A, BrowserKeyStorageOptions as B, CitationPort as C, HttpKeyStorageUrls as H, ImageUploadHandler as I, KeyStorage as K, OpenAICompatibleConfig as O, AIDraftFn as a, AIAction as b, AIActionRequest as c, AICompleteRequest as d, AIConfig as e, AIDraftCitation as f, AIDraftEvent as g, AIProvider as h, AIProviderFactory as i, Auth as j, ClaudeConfig as l, CslDate as m, CslItemData as n, CslName as o, CslStyleInfo as p, ImageUploadResult as q, StreamEvent as r };
@@ -156,6 +156,19 @@ interface CslItemData {
156
156
  abstract?: string;
157
157
  [k: string]: unknown;
158
158
  }
159
+ /**
160
+ * A CSL style the citation engine can render with (issue #180). The library
161
+ * bundles four; a host may inject more (an institutional or Harvard/IEEE style)
162
+ * through `CitationPort.styles` — without modifying the library.
163
+ */
164
+ interface CslStyleInfo {
165
+ id: string;
166
+ name: string;
167
+ /** 'note' styles render citations as footnotes; 'in-text' render inline. */
168
+ category: 'note' | 'in-text';
169
+ /** The CSL XML itself (the `<style>` document, as a string). */
170
+ xml: string;
171
+ }
159
172
  /**
160
173
  * Host-supplied citation port. The library never fetches sources itself — the
161
174
  * host owns the reference library and injects CSL-JSON through this port,
@@ -166,6 +179,13 @@ interface CitationPort {
166
179
  sources: CslItemData[] | (() => CslItemData[]);
167
180
  /** Active CSL style id (e.g. 'chicago-notes-bibliography'). */
168
181
  style?: string;
182
+ /**
183
+ * Extra CSL styles for this document's engine (issue #180). A style whose
184
+ * `id` matches a bundled one overrides it; every other id is added alongside
185
+ * the four defaults. Omit it and the engine behaves exactly as before — the
186
+ * bundled styles keep the editor offline-capable.
187
+ */
188
+ styles?: CslStyleInfo[];
169
189
  /**
170
190
  * Called when the user inserts a citation: the host opens its source
171
191
  * picker and resolves with the chosen source id (null = cancelled).
@@ -383,5 +403,5 @@ interface ClaudeConfig {
383
403
  }
384
404
  declare function claudeProvider(config: ClaudeConfig): AIProvider;
385
405
 
386
- export { trimContextBefore as D, LOCAL_STORAGE_KEY as L, SESSION_STORAGE_KEY as S, CONTEXT_CHAR_CAP as k, buildAIPrompt as r, claudeProvider as s, httpKeyStorage as t, localStorageKeyStorage as u, memoryKeyStorage as v, openaiCompatibleProvider as w, sessionStorageKeyStorage as x, toAIStreamFn as y, trimContextAfter as z };
387
- export type { AIStreamFn as A, BrowserKeyStorageOptions as B, CitationPort as C, HttpKeyStorageUrls as H, ImageUploadHandler as I, KeyStorage as K, OpenAICompatibleConfig as O, AIDraftFn as a, AIAction as b, AIActionRequest as c, AICompleteRequest as d, AIConfig as e, AIDraftCitation as f, AIDraftEvent as g, AIProvider as h, AIProviderFactory as i, Auth as j, ClaudeConfig as l, CslDate as m, CslItemData as n, CslName as o, ImageUploadResult as p, StreamEvent as q };
406
+ export { trimContextAfter as D, trimContextBefore as E, LOCAL_STORAGE_KEY as L, SESSION_STORAGE_KEY as S, CONTEXT_CHAR_CAP as k, buildAIPrompt as s, claudeProvider as t, httpKeyStorage as u, localStorageKeyStorage as v, memoryKeyStorage as w, openaiCompatibleProvider as x, sessionStorageKeyStorage as y, toAIStreamFn as z };
407
+ export type { AIStreamFn as A, BrowserKeyStorageOptions as B, CitationPort as C, HttpKeyStorageUrls as H, ImageUploadHandler as I, KeyStorage as K, OpenAICompatibleConfig as O, AIDraftFn as a, AIAction as b, AIActionRequest as c, AICompleteRequest as d, AIConfig as e, AIDraftCitation as f, AIDraftEvent as g, AIProvider as h, AIProviderFactory as i, Auth as j, ClaudeConfig as l, CslDate as m, CslItemData as n, CslName as o, CslStyleInfo as p, ImageUploadResult as q, StreamEvent as r };
package/dist/index.cjs CHANGED
@@ -85,9 +85,9 @@ __export(index_exports, {
85
85
  module.exports = __toCommonJS(index_exports);
86
86
 
87
87
  // src/Editor.ts
88
- var import_core7 = require("@tiptap/core");
89
- var import_starter_kit = __toESM(require("@tiptap/starter-kit"), 1);
90
- var import_extension_text_style = __toESM(require("@tiptap/extension-text-style"), 1);
88
+ var import_core8 = require("@tiptap/core");
89
+ var import_starter_kit = require("@tiptap/starter-kit");
90
+ var import_extension_text_style = require("@tiptap/extension-text-style");
91
91
 
92
92
  // src/PluginSystem.ts
93
93
  function definePlugin(plugin) {
@@ -137,8 +137,9 @@ function createActionMap(editor, plugins) {
137
137
  }
138
138
 
139
139
  // src/Collaboration.ts
140
+ var import_core = require("@tiptap/core");
140
141
  var import_extension_collaboration = require("@tiptap/extension-collaboration");
141
- var import_extension_collaboration_cursor = require("@tiptap/extension-collaboration-cursor");
142
+ var import_y_tiptap = require("@tiptap/y-tiptap");
142
143
  var import_awareness = require("y-protocols/awareness");
143
144
  var import_y_indexeddb = require("y-indexeddb");
144
145
  var import_y_webrtc = require("y-webrtc");
@@ -257,6 +258,17 @@ function createCollaboration(options) {
257
258
  };
258
259
  return { ydoc, provider, awareness, persistence, whenReady, destroy, setLocalCursorEnabled };
259
260
  }
261
+ var CollaborationCursor = import_core.Extension.create({
262
+ name: "collaborationCursor",
263
+ addOptions() {
264
+ return { provider: null, user: { name: "", color: "" } };
265
+ },
266
+ addProseMirrorPlugins() {
267
+ const awareness = this.options.provider?.awareness;
268
+ if (!awareness) return [];
269
+ return [(0, import_y_tiptap.yCursorPlugin)(awareness)];
270
+ }
271
+ });
260
272
  function collaborationExtensions(options) {
261
273
  const setup = "ydoc" in options ? options : createCollaboration(options);
262
274
  const extensions = [
@@ -264,7 +276,7 @@ function collaborationExtensions(options) {
264
276
  ];
265
277
  if (setup.provider) {
266
278
  extensions.push(
267
- import_extension_collaboration_cursor.CollaborationCursor.configure({
279
+ CollaborationCursor.configure({
268
280
  provider: setup.provider,
269
281
  user: setup.awareness.getLocalState()?.user ?? { name: "", color: "" }
270
282
  })
@@ -274,10 +286,10 @@ function collaborationExtensions(options) {
274
286
  }
275
287
 
276
288
  // src/BlockAttributes.ts
277
- var import_core = require("@tiptap/core");
289
+ var import_core2 = require("@tiptap/core");
278
290
  var import_state = require("@tiptap/pm/state");
279
291
  var import_view = require("@tiptap/pm/view");
280
- var BlockAttributesExtension = import_core.Extension.create({
292
+ var BlockAttributesExtension = import_core2.Extension.create({
281
293
  name: "blockAttributes",
282
294
  addOptions() {
283
295
  return {
@@ -335,8 +347,8 @@ var BlockAttributesExtension = import_core.Extension.create({
335
347
  });
336
348
 
337
349
  // src/EditorContext.ts
338
- var import_core2 = require("@tiptap/core");
339
- var EditorContextExtension = import_core2.Extension.create({
350
+ var import_core3 = require("@tiptap/core");
351
+ var EditorContextExtension = import_core3.Extension.create({
340
352
  name: "editorContext",
341
353
  addOptions() {
342
354
  return {
@@ -357,7 +369,7 @@ var EditorContextExtension = import_core2.Extension.create({
357
369
  });
358
370
 
359
371
  // src/Indent.ts
360
- var import_core3 = require("@tiptap/core");
372
+ var import_core4 = require("@tiptap/core");
361
373
  var INDENT_STEP_PX = 48;
362
374
  var INDENT_MAX_LEVEL = 8;
363
375
  var INDENT_ATTR = "indent";
@@ -471,7 +483,7 @@ function runIndent(props, delta) {
471
483
  }
472
484
  return shiftBlockIndent(props, delta);
473
485
  }
474
- var IndentExtension = import_core3.Extension.create({
486
+ var IndentExtension = import_core4.Extension.create({
475
487
  name: "indent",
476
488
  priority: 50,
477
489
  addGlobalAttributes() {
@@ -520,9 +532,9 @@ var IndentExtension = import_core3.Extension.create({
520
532
  });
521
533
 
522
534
  // src/ManualColumnResize.ts
523
- var import_core4 = require("@tiptap/core");
535
+ var import_core5 = require("@tiptap/core");
524
536
  var import_state2 = require("@tiptap/pm/state");
525
- var ManualColumnResize = import_core4.Extension.create({
537
+ var ManualColumnResize = import_core5.Extension.create({
526
538
  name: "manualColumnResize",
527
539
  addProseMirrorPlugins() {
528
540
  const key2 = new import_state2.PluginKey("manualColumnResize");
@@ -845,7 +857,7 @@ var ManualColumnResize = import_core4.Extension.create({
845
857
  });
846
858
 
847
859
  // src/SearchAndReplace.ts
848
- var import_core5 = require("@tiptap/core");
860
+ var import_core6 = require("@tiptap/core");
849
861
  var import_state3 = require("@tiptap/pm/state");
850
862
  var import_view2 = require("@tiptap/pm/view");
851
863
  var searchAndReplaceKey = new import_state3.PluginKey("searchAndReplace");
@@ -905,7 +917,7 @@ var searchPlugin = new import_state3.Plugin({
905
917
  }
906
918
  }
907
919
  });
908
- var SearchAndReplaceExtension = import_core5.Extension.create({
920
+ var SearchAndReplaceExtension = import_core6.Extension.create({
909
921
  name: "searchAndReplace",
910
922
  addProseMirrorPlugins() {
911
923
  return [searchPlugin];
@@ -962,13 +974,13 @@ function replaceAll(editor, replacement) {
962
974
  return s.matches.length;
963
975
  }
964
976
 
965
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
966
- var import_core6 = require("@tiptap/core");
977
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
978
+ var import_core7 = require("@tiptap/core");
967
979
  var import_state4 = require("@tiptap/pm/state");
968
980
  var import_transform = require("@tiptap/pm/transform");
969
981
  var import_view3 = require("@tiptap/pm/view");
970
982
 
971
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/utils.js
983
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/utils.js
972
984
  var updateCssVariables = (targetNode, config) => {
973
985
  const cssVariables = {
974
986
  "rm-page-height": `${config.pageHeight}px`,
@@ -1142,7 +1154,7 @@ var footerClickEvent = (pageNumber, onFooterClick) => {
1142
1154
  };
1143
1155
  };
1144
1156
 
1145
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
1157
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
1146
1158
  var page_count_meta_key = "PAGE_COUNT_META_KEY";
1147
1159
  var key = new import_state4.PluginKey("brDecoration");
1148
1160
  function buildDecorations(doc) {
@@ -1246,7 +1258,7 @@ var getPageConfigFromOptions = (_currentOptions) => {
1246
1258
  };
1247
1259
  };
1248
1260
  var paginationKey = new import_state4.PluginKey("pagination");
1249
- var PaginationPlus = import_core6.Extension.create({
1261
+ var PaginationPlus = import_core7.Extension.create({
1250
1262
  name: "PaginationPlus",
1251
1263
  addOptions() {
1252
1264
  return defaultOptions;
@@ -1799,7 +1811,7 @@ function createDecoration(pageOptions, headerHeightMap, footerHeightMap) {
1799
1811
  return [pageWidget, firstHeaderWidget];
1800
1812
  }
1801
1813
 
1802
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/constants.js
1814
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/constants.js
1803
1815
  var A4_PAGE_SIZE = getPageSize(1123, 794, 95, 95, 76, 76);
1804
1816
  var A3_PAGE_SIZE = getPageSize(1591, 1123, 95, 95, 76, 76);
1805
1817
  var A5_PAGE_SIZE = getPageSize(794, 419, 76, 76, 57, 57);
@@ -2242,14 +2254,15 @@ function createEditor(options = {}) {
2242
2254
  return editor;
2243
2255
  }
2244
2256
  function createTiptapEditor(options, plugins, collaborationSetup) {
2245
- const baseStarterKit = options.collaboration ? import_starter_kit.default.configure({ history: false }) : import_starter_kit.default;
2257
+ const starterKitOptions = { link: false, underline: false, trailingNode: false };
2258
+ const baseStarterKit = options.collaboration ? import_starter_kit.StarterKit.configure({ ...starterKitOptions, undoRedo: false }) : import_starter_kit.StarterKit.configure(starterKitOptions);
2246
2259
  const pluginExtensions = collectExtensions(plugins);
2247
2260
  const blockAttrs = options.getPageMap ? BlockAttributesExtension.configure({ pageMap: options.getPageMap }) : BlockAttributesExtension;
2248
2261
  const paginationExt = options.paginationOptions ? PaginationPlus.configure(options.paginationOptions) : PaginationPlus;
2249
2262
  let extensions = [
2250
2263
  ManualColumnResize,
2251
2264
  baseStarterKit,
2252
- import_extension_text_style.default,
2265
+ import_extension_text_style.TextStyle,
2253
2266
  blockAttrs,
2254
2267
  paginationExt,
2255
2268
  // Always present — carries host-injected ports (onImageUpload, citation, …)
@@ -2272,7 +2285,7 @@ function createTiptapEditor(options, plugins, collaborationSetup) {
2272
2285
  if (options.collaboration && collaborationSetup) {
2273
2286
  extensions = [...extensions, ...collaborationExtensions(collaborationSetup)];
2274
2287
  }
2275
- return new import_core7.Editor({
2288
+ return new import_core8.Editor({
2276
2289
  element: options.target,
2277
2290
  content,
2278
2291
  extensions,
@@ -2370,7 +2383,7 @@ function sanitizeInlineHTML(html) {
2370
2383
  }
2371
2384
 
2372
2385
  // src/FontSize.ts
2373
- var import_core8 = require("@tiptap/core");
2386
+ var import_core9 = require("@tiptap/core");
2374
2387
  function mergeFontSize(textStyleType, existing, fontSize) {
2375
2388
  if (fontSize === null) {
2376
2389
  const { fontSize: _removed, ...rest } = existing?.attrs ?? {};
@@ -2381,7 +2394,7 @@ function mergeFontSize(textStyleType, existing, fontSize) {
2381
2394
  function hasAttrs(mark) {
2382
2395
  return Object.values(mark.attrs).some((v) => v != null);
2383
2396
  }
2384
- var FontSizeExtension = import_core8.Extension.create({
2397
+ var FontSizeExtension = import_core9.Extension.create({
2385
2398
  name: "fontSize",
2386
2399
  addGlobalAttributes() {
2387
2400
  return [
@@ -2479,7 +2492,7 @@ var FontSizeExtension = import_core8.Extension.create({
2479
2492
  });
2480
2493
 
2481
2494
  // src/FontFamily.ts
2482
- var import_core9 = require("@tiptap/core");
2495
+ var import_core10 = require("@tiptap/core");
2483
2496
  function mergeFontFamily(textStyleType, existing, fontFamily) {
2484
2497
  if (fontFamily === null) {
2485
2498
  const { fontFamily: _removed, ...rest } = existing?.attrs ?? {};
@@ -2490,7 +2503,7 @@ function mergeFontFamily(textStyleType, existing, fontFamily) {
2490
2503
  function hasAttrs2(mark) {
2491
2504
  return Object.values(mark.attrs).some((v) => v != null);
2492
2505
  }
2493
- var FontFamilyExtension = import_core9.Extension.create({
2506
+ var FontFamilyExtension = import_core10.Extension.create({
2494
2507
  name: "fontFamily",
2495
2508
  addGlobalAttributes() {
2496
2509
  return [
package/dist/index.d.cts CHANGED
@@ -4,8 +4,8 @@ import { IndexeddbPersistence } from 'y-indexeddb';
4
4
  import { WebrtcProvider } from 'y-webrtc';
5
5
  import { WebsocketProvider } from 'y-websocket';
6
6
  import * as Y from 'yjs';
7
- import { I as ImageUploadHandler, C as CitationPort, A as AIStreamFn, a as AIDraftFn } from './index-C6kKgZd_.cjs';
8
- export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, h as AIProvider, i as AIProviderFactory, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, H as HttpKeyStorageUrls, p as ImageUploadResult, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, q as StreamEvent, r as buildAIPrompt, s as claudeProvider, t as httpKeyStorage, u as localStorageKeyStorage, v as memoryKeyStorage, w as openaiCompatibleProvider, x as sessionStorageKeyStorage, y as toAIStreamFn, z as trimContextAfter, D as trimContextBefore } from './index-C6kKgZd_.cjs';
7
+ import { I as ImageUploadHandler, C as CitationPort, A as AIStreamFn, a as AIDraftFn } from './index-Br6IhSDL.cjs';
8
+ export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, h as AIProvider, i as AIProviderFactory, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, p as CslStyleInfo, H as HttpKeyStorageUrls, q as ImageUploadResult, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, r as StreamEvent, s as buildAIPrompt, t as claudeProvider, u as httpKeyStorage, v as localStorageKeyStorage, w as memoryKeyStorage, x as openaiCompatibleProvider, y as sessionStorageKeyStorage, z as toAIStreamFn, D as trimContextAfter, E as trimContextBefore } from './index-Br6IhSDL.cjs';
9
9
  import { PaginationPlusOptions } from 'tiptap-pagination-plus';
10
10
  export { PAGE_SIZES, PageSize, PaginationPlus, PaginationPlusOptions } from 'tiptap-pagination-plus';
11
11
  import { Node } from '@tiptap/pm/model';
package/dist/index.d.ts CHANGED
@@ -4,8 +4,8 @@ import { IndexeddbPersistence } from 'y-indexeddb';
4
4
  import { WebrtcProvider } from 'y-webrtc';
5
5
  import { WebsocketProvider } from 'y-websocket';
6
6
  import * as Y from 'yjs';
7
- import { I as ImageUploadHandler, C as CitationPort, A as AIStreamFn, a as AIDraftFn } from './index-C6kKgZd_.js';
8
- export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, h as AIProvider, i as AIProviderFactory, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, H as HttpKeyStorageUrls, p as ImageUploadResult, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, q as StreamEvent, r as buildAIPrompt, s as claudeProvider, t as httpKeyStorage, u as localStorageKeyStorage, v as memoryKeyStorage, w as openaiCompatibleProvider, x as sessionStorageKeyStorage, y as toAIStreamFn, z as trimContextAfter, D as trimContextBefore } from './index-C6kKgZd_.js';
7
+ import { I as ImageUploadHandler, C as CitationPort, A as AIStreamFn, a as AIDraftFn } from './index-Br6IhSDL.js';
8
+ export { b as AIAction, c as AIActionRequest, d as AICompleteRequest, e as AIConfig, f as AIDraftCitation, g as AIDraftEvent, h as AIProvider, i as AIProviderFactory, j as Auth, B as BrowserKeyStorageOptions, k as CONTEXT_CHAR_CAP, l as ClaudeConfig, m as CslDate, n as CslItemData, o as CslName, p as CslStyleInfo, H as HttpKeyStorageUrls, q as ImageUploadResult, K as KeyStorage, L as LOCAL_STORAGE_KEY, O as OpenAICompatibleConfig, S as SESSION_STORAGE_KEY, r as StreamEvent, s as buildAIPrompt, t as claudeProvider, u as httpKeyStorage, v as localStorageKeyStorage, w as memoryKeyStorage, x as openaiCompatibleProvider, y as sessionStorageKeyStorage, z as toAIStreamFn, D as trimContextAfter, E as trimContextBefore } from './index-Br6IhSDL.js';
9
9
  import { PaginationPlusOptions } from 'tiptap-pagination-plus';
10
10
  export { PAGE_SIZES, PageSize, PaginationPlus, PaginationPlusOptions } from 'tiptap-pagination-plus';
11
11
  import { Node } from '@tiptap/pm/model';
package/dist/index.js CHANGED
@@ -16,8 +16,8 @@ import {
16
16
 
17
17
  // src/Editor.ts
18
18
  import { Editor as TiptapEditor } from "@tiptap/core";
19
- import StarterKit from "@tiptap/starter-kit";
20
- import TextStyle from "@tiptap/extension-text-style";
19
+ import { StarterKit } from "@tiptap/starter-kit";
20
+ import { TextStyle } from "@tiptap/extension-text-style";
21
21
 
22
22
  // src/PluginSystem.ts
23
23
  function definePlugin(plugin) {
@@ -67,8 +67,9 @@ function createActionMap(editor, plugins) {
67
67
  }
68
68
 
69
69
  // src/Collaboration.ts
70
+ import { Extension } from "@tiptap/core";
70
71
  import { Collaboration } from "@tiptap/extension-collaboration";
71
- import { CollaborationCursor } from "@tiptap/extension-collaboration-cursor";
72
+ import { yCursorPlugin } from "@tiptap/y-tiptap";
72
73
  import { Awareness } from "y-protocols/awareness";
73
74
  import { IndexeddbPersistence } from "y-indexeddb";
74
75
  import { WebrtcProvider } from "y-webrtc";
@@ -187,6 +188,17 @@ function createCollaboration(options) {
187
188
  };
188
189
  return { ydoc, provider, awareness, persistence, whenReady, destroy, setLocalCursorEnabled };
189
190
  }
191
+ var CollaborationCursor = Extension.create({
192
+ name: "collaborationCursor",
193
+ addOptions() {
194
+ return { provider: null, user: { name: "", color: "" } };
195
+ },
196
+ addProseMirrorPlugins() {
197
+ const awareness = this.options.provider?.awareness;
198
+ if (!awareness) return [];
199
+ return [yCursorPlugin(awareness)];
200
+ }
201
+ });
190
202
  function collaborationExtensions(options) {
191
203
  const setup = "ydoc" in options ? options : createCollaboration(options);
192
204
  const extensions = [
@@ -204,10 +216,10 @@ function collaborationExtensions(options) {
204
216
  }
205
217
 
206
218
  // src/BlockAttributes.ts
207
- import { Extension } from "@tiptap/core";
219
+ import { Extension as Extension2 } from "@tiptap/core";
208
220
  import { Plugin, PluginKey } from "@tiptap/pm/state";
209
221
  import { Decoration, DecorationSet } from "@tiptap/pm/view";
210
- var BlockAttributesExtension = Extension.create({
222
+ var BlockAttributesExtension = Extension2.create({
211
223
  name: "blockAttributes",
212
224
  addOptions() {
213
225
  return {
@@ -265,8 +277,8 @@ var BlockAttributesExtension = Extension.create({
265
277
  });
266
278
 
267
279
  // src/EditorContext.ts
268
- import { Extension as Extension2 } from "@tiptap/core";
269
- var EditorContextExtension = Extension2.create({
280
+ import { Extension as Extension3 } from "@tiptap/core";
281
+ var EditorContextExtension = Extension3.create({
270
282
  name: "editorContext",
271
283
  addOptions() {
272
284
  return {
@@ -287,7 +299,7 @@ var EditorContextExtension = Extension2.create({
287
299
  });
288
300
 
289
301
  // src/Indent.ts
290
- import { Extension as Extension3 } from "@tiptap/core";
302
+ import { Extension as Extension4 } from "@tiptap/core";
291
303
  var INDENT_STEP_PX = 48;
292
304
  var INDENT_MAX_LEVEL = 8;
293
305
  var INDENT_ATTR = "indent";
@@ -401,7 +413,7 @@ function runIndent(props, delta) {
401
413
  }
402
414
  return shiftBlockIndent(props, delta);
403
415
  }
404
- var IndentExtension = Extension3.create({
416
+ var IndentExtension = Extension4.create({
405
417
  name: "indent",
406
418
  priority: 50,
407
419
  addGlobalAttributes() {
@@ -450,9 +462,9 @@ var IndentExtension = Extension3.create({
450
462
  });
451
463
 
452
464
  // src/ManualColumnResize.ts
453
- import { Extension as Extension4 } from "@tiptap/core";
465
+ import { Extension as Extension5 } from "@tiptap/core";
454
466
  import { Plugin as Plugin2, PluginKey as PluginKey2 } from "@tiptap/pm/state";
455
- var ManualColumnResize = Extension4.create({
467
+ var ManualColumnResize = Extension5.create({
456
468
  name: "manualColumnResize",
457
469
  addProseMirrorPlugins() {
458
470
  const key2 = new PluginKey2("manualColumnResize");
@@ -775,7 +787,7 @@ var ManualColumnResize = Extension4.create({
775
787
  });
776
788
 
777
789
  // src/SearchAndReplace.ts
778
- import { Extension as Extension5 } from "@tiptap/core";
790
+ import { Extension as Extension6 } from "@tiptap/core";
779
791
  import { Plugin as Plugin3, PluginKey as PluginKey3, TextSelection } from "@tiptap/pm/state";
780
792
  import { Decoration as Decoration2, DecorationSet as DecorationSet2 } from "@tiptap/pm/view";
781
793
  var searchAndReplaceKey = new PluginKey3("searchAndReplace");
@@ -835,7 +847,7 @@ var searchPlugin = new Plugin3({
835
847
  }
836
848
  }
837
849
  });
838
- var SearchAndReplaceExtension = Extension5.create({
850
+ var SearchAndReplaceExtension = Extension6.create({
839
851
  name: "searchAndReplace",
840
852
  addProseMirrorPlugins() {
841
853
  return [searchPlugin];
@@ -892,13 +904,13 @@ function replaceAll(editor, replacement) {
892
904
  return s.matches.length;
893
905
  }
894
906
 
895
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
896
- import { Extension as Extension6 } from "@tiptap/core";
907
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
908
+ import { Extension as Extension7 } from "@tiptap/core";
897
909
  import { Plugin as Plugin4, PluginKey as PluginKey4 } from "@tiptap/pm/state";
898
910
  import { ReplaceStep, ReplaceAroundStep, AddMarkStep, RemoveMarkStep, RemoveNodeMarkStep, AttrStep } from "@tiptap/pm/transform";
899
911
  import { Decoration as Decoration3, DecorationSet as DecorationSet3 } from "@tiptap/pm/view";
900
912
 
901
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/utils.js
913
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/utils.js
902
914
  var updateCssVariables = (targetNode, config) => {
903
915
  const cssVariables = {
904
916
  "rm-page-height": `${config.pageHeight}px`,
@@ -1072,7 +1084,7 @@ var footerClickEvent = (pageNumber, onFooterClick) => {
1072
1084
  };
1073
1085
  };
1074
1086
 
1075
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
1087
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/PaginationPlus.js
1076
1088
  var page_count_meta_key = "PAGE_COUNT_META_KEY";
1077
1089
  var key = new PluginKey4("brDecoration");
1078
1090
  function buildDecorations(doc) {
@@ -1176,7 +1188,7 @@ var getPageConfigFromOptions = (_currentOptions) => {
1176
1188
  };
1177
1189
  };
1178
1190
  var paginationKey = new PluginKey4("pagination");
1179
- var PaginationPlus = Extension6.create({
1191
+ var PaginationPlus = Extension7.create({
1180
1192
  name: "PaginationPlus",
1181
1193
  addOptions() {
1182
1194
  return defaultOptions;
@@ -1729,7 +1741,7 @@ function createDecoration(pageOptions, headerHeightMap, footerHeightMap) {
1729
1741
  return [pageWidget, firstHeaderWidget];
1730
1742
  }
1731
1743
 
1732
- // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_7def91d83c4dc7f1a0f936fcac6a737a/node_modules/tiptap-pagination-plus/dist/constants.js
1744
+ // ../../node_modules/.pnpm/tiptap-pagination-plus@3.1.0_patch_hash=00858351959cd6e40e43520c066de1f40e312b64dcfd6be_0ce38b1f0401e16a43bcf4adee19b362/node_modules/tiptap-pagination-plus/dist/constants.js
1733
1745
  var A4_PAGE_SIZE = getPageSize(1123, 794, 95, 95, 76, 76);
1734
1746
  var A3_PAGE_SIZE = getPageSize(1591, 1123, 95, 95, 76, 76);
1735
1747
  var A5_PAGE_SIZE = getPageSize(794, 419, 76, 76, 57, 57);
@@ -2172,7 +2184,8 @@ function createEditor(options = {}) {
2172
2184
  return editor;
2173
2185
  }
2174
2186
  function createTiptapEditor(options, plugins, collaborationSetup) {
2175
- const baseStarterKit = options.collaboration ? StarterKit.configure({ history: false }) : StarterKit;
2187
+ const starterKitOptions = { link: false, underline: false, trailingNode: false };
2188
+ const baseStarterKit = options.collaboration ? StarterKit.configure({ ...starterKitOptions, undoRedo: false }) : StarterKit.configure(starterKitOptions);
2176
2189
  const pluginExtensions = collectExtensions(plugins);
2177
2190
  const blockAttrs = options.getPageMap ? BlockAttributesExtension.configure({ pageMap: options.getPageMap }) : BlockAttributesExtension;
2178
2191
  const paginationExt = options.paginationOptions ? PaginationPlus.configure(options.paginationOptions) : PaginationPlus;
@@ -2300,7 +2313,7 @@ function sanitizeInlineHTML(html) {
2300
2313
  }
2301
2314
 
2302
2315
  // src/FontSize.ts
2303
- import { Extension as Extension7 } from "@tiptap/core";
2316
+ import { Extension as Extension8 } from "@tiptap/core";
2304
2317
  function mergeFontSize(textStyleType, existing, fontSize) {
2305
2318
  if (fontSize === null) {
2306
2319
  const { fontSize: _removed, ...rest } = existing?.attrs ?? {};
@@ -2311,7 +2324,7 @@ function mergeFontSize(textStyleType, existing, fontSize) {
2311
2324
  function hasAttrs(mark) {
2312
2325
  return Object.values(mark.attrs).some((v) => v != null);
2313
2326
  }
2314
- var FontSizeExtension = Extension7.create({
2327
+ var FontSizeExtension = Extension8.create({
2315
2328
  name: "fontSize",
2316
2329
  addGlobalAttributes() {
2317
2330
  return [
@@ -2409,7 +2422,7 @@ var FontSizeExtension = Extension7.create({
2409
2422
  });
2410
2423
 
2411
2424
  // src/FontFamily.ts
2412
- import { Extension as Extension8 } from "@tiptap/core";
2425
+ import { Extension as Extension9 } from "@tiptap/core";
2413
2426
  function mergeFontFamily(textStyleType, existing, fontFamily) {
2414
2427
  if (fontFamily === null) {
2415
2428
  const { fontFamily: _removed, ...rest } = existing?.attrs ?? {};
@@ -2420,7 +2433,7 @@ function mergeFontFamily(textStyleType, existing, fontFamily) {
2420
2433
  function hasAttrs2(mark) {
2421
2434
  return Object.values(mark.attrs).some((v) => v != null);
2422
2435
  }
2423
- var FontFamilyExtension = Extension8.create({
2436
+ var FontFamilyExtension = Extension9.create({
2424
2437
  name: "fontFamily",
2425
2438
  addGlobalAttributes() {
2426
2439
  return [
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kedataindo/docflow-core",
3
3
  "license": "Apache-2.0",
4
- "version": "0.0.96",
4
+ "version": "0.0.98",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -27,40 +27,40 @@
27
27
  ],
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
- "@tiptap/core": "^2.27.3",
31
- "@tiptap/extension-collaboration": "^2.27.3",
32
- "@tiptap/extension-collaboration-cursor": "^2.26.2",
33
- "@tiptap/extension-text-style": "^2.27.3",
34
- "@tiptap/pm": "^2.27.3",
35
- "@tiptap/starter-kit": "^2.27.3",
30
+ "@tiptap/core": "^3.32.0",
31
+ "@tiptap/extension-collaboration": "^3.32.0",
32
+ "@tiptap/extension-text-style": "^3.32.0",
33
+ "@tiptap/pm": "^3.32.0",
34
+ "@tiptap/starter-kit": "^3.32.0",
36
35
  "tiptap-pagination-plus": "3.1.0",
37
36
  "y-indexeddb": "^9.0.12",
38
37
  "y-protocols": "^1.0.7",
39
- "yjs": "^13.6.33"
38
+ "yjs": "^13.6.33",
39
+ "@tiptap/y-tiptap": "^3.0.10"
40
40
  },
41
41
  "peerDependencies": {
42
- "@tiptap/core": "^2.27.3",
43
- "@tiptap/extension-collaboration": "^2.27.3",
44
- "@tiptap/extension-collaboration-cursor": "^2.26.2",
45
- "@tiptap/extension-text-style": "^2.27.3",
46
- "@tiptap/starter-kit": "^2.27.3",
42
+ "@tiptap/core": "^3.32.0",
43
+ "@tiptap/extension-collaboration": "^3.32.0",
44
+ "@tiptap/extension-text-style": "^3.32.0",
45
+ "@tiptap/starter-kit": "^3.32.0",
47
46
  "tiptap-pagination-plus": "3.1.0",
48
47
  "y-webrtc": "^10.3.0",
49
48
  "y-websocket": "^2.0.4",
50
- "yjs": "^13.6.33"
49
+ "yjs": "^13.6.33",
50
+ "@tiptap/y-tiptap": "^3.0.10"
51
51
  },
52
52
  "peerDependenciesMeta": {
53
53
  "@tiptap/extension-collaboration": {
54
54
  "optional": true
55
55
  },
56
- "@tiptap/extension-collaboration-cursor": {
57
- "optional": true
58
- },
59
56
  "y-webrtc": {
60
57
  "optional": true
61
58
  },
62
59
  "y-websocket": {
63
60
  "optional": true
61
+ },
62
+ "@tiptap/y-tiptap": {
63
+ "optional": true
64
64
  }
65
65
  },
66
66
  "devDependencies": {