@harbour-enterprises/superdoc 0.12.31 → 0.12.33

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 (66) hide show
  1. package/dist/chunks/{super-editor.es-CYH3KblY.es.js → super-editor.es-CBLVWdKq.es.js} +613 -283
  2. package/dist/chunks/{super-editor.es-BxaiA9ut.cjs → super-editor.es-CYLlFqVM.cjs} +599 -269
  3. package/dist/composables/use-high-contrast-mode.d.ts +5 -0
  4. package/dist/composables/use-high-contrast-mode.d.ts.map +1 -0
  5. package/dist/core/SuperDoc.d.ts +7 -0
  6. package/dist/core/SuperDoc.d.ts.map +1 -1
  7. package/dist/core/create-app.d.ts.map +1 -1
  8. package/dist/index.d.ts +2 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/style.css +299 -245
  11. package/dist/super-editor/ai-writer.es.js +2 -2
  12. package/dist/super-editor/chunks/{converter-Dm2_Htrh.js → converter-Dy-BSTkN.js} +2 -2
  13. package/dist/super-editor/chunks/{docx-zipper-CU11jH41.js → docx-zipper-DU8JCtV_.js} +7 -3
  14. package/dist/super-editor/chunks/{editor-CISWiQkg.js → editor-WlPEO0Uc.js} +190 -67
  15. package/dist/super-editor/chunks/{toolbar-Dgo3wQvN.js → toolbar-DX8uzwtc.js} +80 -36
  16. package/dist/super-editor/components/toolbar/defaultItems.d.ts.map +1 -1
  17. package/dist/super-editor/composables/use-high-contrast-mode.d.ts +5 -0
  18. package/dist/super-editor/composables/use-high-contrast-mode.d.ts.map +1 -0
  19. package/dist/super-editor/converter.es.js +1 -1
  20. package/dist/super-editor/core/DocxZipper.d.ts +1 -1
  21. package/dist/super-editor/core/DocxZipper.d.ts.map +1 -1
  22. package/dist/super-editor/core/Editor.d.ts +2 -1
  23. package/dist/super-editor/core/Editor.d.ts.map +1 -1
  24. package/dist/super-editor/core/InputRule.d.ts.map +1 -1
  25. package/dist/super-editor/core/helpers/annotator.d.ts +17 -3
  26. package/dist/super-editor/core/helpers/annotator.d.ts.map +1 -1
  27. package/dist/super-editor/docx-zipper.es.js +2 -2
  28. package/dist/super-editor/editor.es.js +3 -3
  29. package/dist/super-editor/extensions/ai/ai-nodes.d.ts.map +1 -1
  30. package/dist/super-editor/extensions/bookmarks/bookmarks.d.ts.map +1 -1
  31. package/dist/super-editor/extensions/bullet-list/bullet-list.d.ts.map +1 -1
  32. package/dist/super-editor/extensions/collaboration/collaboration-helpers.d.ts.map +1 -1
  33. package/dist/super-editor/extensions/comment/comment.d.ts.map +1 -1
  34. package/dist/super-editor/extensions/document/document.d.ts.map +1 -1
  35. package/dist/super-editor/extensions/field-annotation/field-annotation.d.ts.map +1 -1
  36. package/dist/super-editor/extensions/field-annotation/fieldAnnotationHelpers/getHeaderFooterAnnotations.d.ts +2 -0
  37. package/dist/super-editor/extensions/field-annotation/fieldAnnotationHelpers/getHeaderFooterAnnotations.d.ts.map +1 -0
  38. package/dist/super-editor/extensions/field-annotation/fieldAnnotationHelpers/index.d.ts +1 -0
  39. package/dist/super-editor/extensions/heading/heading.d.ts.map +1 -1
  40. package/dist/super-editor/extensions/image/image.d.ts.map +1 -1
  41. package/dist/super-editor/extensions/line-break/line-break.d.ts.map +1 -1
  42. package/dist/super-editor/extensions/list-item/list-item.d.ts.map +1 -1
  43. package/dist/super-editor/extensions/mention/mention.d.ts.map +1 -1
  44. package/dist/super-editor/extensions/ordered-list/ordered-list.d.ts.map +1 -1
  45. package/dist/super-editor/extensions/page-number/page-number.d.ts.map +1 -1
  46. package/dist/super-editor/extensions/pagination/pagination-helpers.d.ts.map +1 -1
  47. package/dist/super-editor/extensions/run-item/run-item.d.ts.map +1 -1
  48. package/dist/super-editor/extensions/shape-container/shape-container.d.ts.map +1 -1
  49. package/dist/super-editor/extensions/shape-textbox/shape-textbox.d.ts.map +1 -1
  50. package/dist/super-editor/extensions/structured-content/structured-content.d.ts.map +1 -1
  51. package/dist/super-editor/extensions/table/table.d.ts.map +1 -1
  52. package/dist/super-editor/extensions/table-cell/table-cell.d.ts.map +1 -1
  53. package/dist/super-editor/extensions/table-header/table-header.d.ts.map +1 -1
  54. package/dist/super-editor/extensions/table-row/table-row.d.ts.map +1 -1
  55. package/dist/super-editor/file-zipper.es.js +1 -1
  56. package/dist/super-editor/index.d.ts +1 -1
  57. package/dist/super-editor/style.css +243 -196
  58. package/dist/super-editor/super-editor.es.js +335 -174
  59. package/dist/super-editor/toolbar.es.js +2 -2
  60. package/dist/super-editor.cjs +2 -1
  61. package/dist/super-editor.es.js +15 -14
  62. package/dist/superdoc.cjs +35 -9
  63. package/dist/superdoc.es.js +233 -207
  64. package/dist/superdoc.umd.js +636 -281
  65. package/dist/superdoc.umd.js.map +1 -1
  66. package/package.json +2 -2
@@ -30667,7 +30667,7 @@
30667
30667
  return;
30668
30668
  }
30669
30669
  }
30670
- static updateDocumentVersion(docx = this.convertedXml, version2 = "0.12.31") {
30670
+ static updateDocumentVersion(docx = this.convertedXml, version2 = "0.12.33") {
30671
30671
  const customLocation = "docProps/custom.xml";
30672
30672
  if (!docx[customLocation]) {
30673
30673
  docx[customLocation] = generateCustomXml();
@@ -31133,7 +31133,7 @@
31133
31133
  function generateCustomXml() {
31134
31134
  return DEFAULT_CUSTOM_XML;
31135
31135
  }
31136
- function generateSuperdocVersion(pid = 2, version2 = "0.12.31") {
31136
+ function generateSuperdocVersion(pid = 2, version2 = "0.12.33") {
31137
31137
  return {
31138
31138
  type: "element",
31139
31139
  name: "property",
@@ -33533,12 +33533,15 @@
33533
33533
  /**
33534
33534
  * Update [Content_Types].xml with extensions of new Image annotations
33535
33535
  */
33536
- async updateContentTypes(docx, media) {
33536
+ async updateContentTypes(docx, media, fromJson) {
33537
33537
  const newMediaTypes = Object.keys(media).map((name) => {
33538
33538
  return this.getFileExtension(name);
33539
33539
  });
33540
33540
  const contentTypesPath = "[Content_Types].xml";
33541
- const contentTypesXml = await docx.file(contentTypesPath).async("string");
33541
+ let contentTypesXml;
33542
+ if (fromJson) {
33543
+ contentTypesXml = docx.files.find((file) => file.name === contentTypesPath)?.content || "";
33544
+ } else contentTypesXml = await docx.file(contentTypesPath).async("string");
33542
33545
  let typesString = "";
33543
33546
  const defaultMediaTypes = getContentTypesFromXml(contentTypesXml);
33544
33547
  const seenTypes = /* @__PURE__ */ new Set();
@@ -33582,6 +33585,7 @@
33582
33585
  });
33583
33586
  const beginningString = '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">';
33584
33587
  const updatedContentTypesXml = contentTypesXml.replace(beginningString, `${beginningString}${typesString}`);
33588
+ if (fromJson) return updatedContentTypesXml;
33585
33589
  docx.file(contentTypesPath, updatedContentTypesXml);
33586
33590
  }
33587
33591
  async unzip(file) {
@@ -45581,6 +45585,10 @@
45581
45585
  const clipboard = event.clipboardData;
45582
45586
  const html = clipboard.getData("text/html");
45583
45587
  clipboard.getData("text/plain");
45588
+ const fieldAnnotationContent = slice2.content.content.filter((item) => item.type.name === "fieldAnnotation");
45589
+ if (fieldAnnotationContent.length) {
45590
+ return false;
45591
+ }
45584
45592
  let source;
45585
45593
  if (!html) {
45586
45594
  source = "plain-text";
@@ -46359,16 +46367,14 @@
46359
46367
  const docx = [...metaMap.get("docx")];
46360
46368
  const newXml = await editor.exportDocx({ getUpdatedDocs: true });
46361
46369
  Object.keys(newXml).forEach((key) => {
46362
- if (key.includes("header") || key.includes("footer")) {
46363
- const fileIndex = docx.findIndex((item) => item.name === key);
46364
- if (fileIndex > -1) {
46365
- docx.splice(fileIndex, 1);
46366
- }
46367
- docx.push({
46368
- name: key,
46369
- content: newXml[key]
46370
- });
46370
+ const fileIndex = docx.findIndex((item) => item.name === key);
46371
+ if (fileIndex > -1) {
46372
+ docx.splice(fileIndex, 1);
46371
46373
  }
46374
+ docx.push({
46375
+ name: key,
46376
+ content: newXml[key]
46377
+ });
46372
46378
  });
46373
46379
  editor.options.ydoc.transact(() => {
46374
46380
  metaMap.set("docx", docx);
@@ -46478,6 +46484,9 @@
46478
46484
  pm.style.minHeight = "100%";
46479
46485
  pm.style.outline = "none";
46480
46486
  pm.style.border = "none";
46487
+ pm.setAttribute("role", "textbox");
46488
+ pm.setAttribute("aria-multiline", true);
46489
+ pm.setAttribute("aria-label", `${type2} content area. Double click to start typing.`);
46481
46490
  return headerFooterEditor;
46482
46491
  };
46483
46492
  const broadcastEditorEvents = (editor, sectionEditor) => {
@@ -46499,13 +46508,16 @@
46499
46508
  const toggleHeaderFooterEditMode = (editor, focusedSectionEditor, isEditMode) => {
46500
46509
  editor.converter.headerEditors.forEach((item) => {
46501
46510
  item.editor.setEditable(isEditMode, false);
46511
+ item.editor.view.dom.setAttribute("aria-readonly", !isEditMode);
46502
46512
  });
46503
46513
  editor.converter.footerEditors.forEach((item) => {
46504
46514
  item.editor.setEditable(isEditMode, false);
46515
+ item.editor.view.dom.setAttribute("aria-readonly", !isEditMode);
46505
46516
  });
46506
46517
  if (isEditMode) {
46507
46518
  const pm = document.querySelector(".ProseMirror");
46508
46519
  pm.classList.add("header-footer-edit");
46520
+ pm.setAttribute("aria-readonly", true);
46509
46521
  }
46510
46522
  if (focusedSectionEditor) {
46511
46523
  focusedSectionEditor.view.focus();
@@ -47424,11 +47436,12 @@
47424
47436
  const getAnnotationValue = (id, annotationValues) => {
47425
47437
  return annotationValues.find((value) => value.input_id === id)?.input_value || null;
47426
47438
  };
47427
- const annotateHeadersAndFooters = ({ editor, annotationValues = [], hiddenFieldIds = [] }) => {
47439
+ const getAllHeaderFooterEditors = (editor) => {
47428
47440
  const sections = {
47429
47441
  header: editor.converter.headers || {},
47430
47442
  footer: editor.converter.footers || {}
47431
47443
  };
47444
+ const allEditors = [];
47432
47445
  Object.entries(sections).forEach(([type2, items]) => {
47433
47446
  const editorsKey = `${type2}Editors`;
47434
47447
  Object.entries(items).forEach(([sectionId, data]) => {
@@ -47446,25 +47459,38 @@
47446
47459
  })
47447
47460
  };
47448
47461
  editor.converter[editorsKey].push(sectionEditor);
47462
+ allEditors.push({
47463
+ ...sectionEditor,
47464
+ key: editorsKey,
47465
+ type: type2,
47466
+ sectionId
47467
+ });
47449
47468
  }
47450
- sectionEditor.editor.annotate(annotationValues, hiddenFieldIds);
47451
- onHeaderFooterDataUpdate(
47452
- { editor: sectionEditor.editor },
47453
- editor,
47454
- sectionId,
47455
- type2
47456
- );
47457
47469
  });
47458
47470
  });
47471
+ return allEditors;
47472
+ };
47473
+ const annotateHeadersAndFooters = ({ editor, annotationValues = [], hiddenFieldIds = [], removeEmptyFields = false }) => {
47474
+ const allEditors = getAllHeaderFooterEditors(editor);
47475
+ allEditors.forEach(({ sectionId, editor: sectionEditor, type: type2 }) => {
47476
+ sectionEditor.annotate(annotationValues, hiddenFieldIds, removeEmptyFields);
47477
+ onHeaderFooterDataUpdate(
47478
+ { editor: sectionEditor },
47479
+ editor,
47480
+ sectionId,
47481
+ type2
47482
+ );
47483
+ });
47459
47484
  };
47460
47485
  const annotateDocument = ({
47461
47486
  annotationValues = [],
47462
47487
  hiddenFieldIds = [],
47488
+ removeEmptyFields = false,
47463
47489
  schema,
47464
47490
  tr,
47465
47491
  editor
47466
47492
  }) => {
47467
- annotateHeadersAndFooters({ editor, annotationValues, hiddenFieldIds });
47493
+ annotateHeadersAndFooters({ editor, annotationValues, hiddenFieldIds, removeEmptyFields });
47468
47494
  const annotations = [];
47469
47495
  const FieldType = schema.nodes.fieldAnnotation;
47470
47496
  tr.doc.descendants((node2, pos) => {
@@ -47517,11 +47543,13 @@
47517
47543
  });
47518
47544
  }
47519
47545
  }
47520
- Array.from(toDelete).sort((a, b) => b - a).forEach((pos) => {
47521
- const ann = annotations.find((a) => a.pos === pos);
47522
- if (!ann) return;
47523
- tr = tr.delete(pos, pos + ann.node.nodeSize);
47524
- });
47546
+ if (removeEmptyFields) {
47547
+ Array.from(toDelete).sort((a, b) => b - a).forEach((pos) => {
47548
+ const ann = annotations.find((a) => a.pos === pos);
47549
+ if (!ann) return;
47550
+ tr = tr.delete(pos, pos + ann.node.nodeSize);
47551
+ });
47552
+ }
47525
47553
  return tr;
47526
47554
  };
47527
47555
  const getFormattedDate = (input = null, format = "") => {
@@ -47539,11 +47567,40 @@
47539
47567
  // e.g. “2025”
47540
47568
  });
47541
47569
  };
47542
- const AnnotatorServices = {
47570
+ const updateHeaderFooterFieldAnnotations = ({ editor, fieldIdOrArray, attrs = {} }) => {
47571
+ if (!editor) return;
47572
+ const sectionEditors = getAllHeaderFooterEditors(editor);
47573
+ sectionEditors.forEach(({ editor: sectionEditor, sectionId, type: type2 }) => {
47574
+ sectionEditor.commands.updateFieldAnnotations(fieldIdOrArray, attrs);
47575
+ onHeaderFooterDataUpdate(
47576
+ { editor: sectionEditor },
47577
+ editor,
47578
+ sectionId,
47579
+ type2
47580
+ );
47581
+ });
47582
+ };
47583
+ const deleteHeaderFooterFieldAnnotations = ({ editor, fieldIdOrArray }) => {
47584
+ if (!editor) return;
47585
+ const sectionEditors = getAllHeaderFooterEditors(editor);
47586
+ sectionEditors.forEach(({ editor: sectionEditor, sectionId, type: type2 }) => {
47587
+ sectionEditor.commands.deleteFieldAnnotations(fieldIdOrArray);
47588
+ onHeaderFooterDataUpdate(
47589
+ { editor: sectionEditor },
47590
+ editor,
47591
+ sectionId,
47592
+ type2
47593
+ );
47594
+ });
47595
+ };
47596
+ const AnnotatorHelpers = {
47543
47597
  getFieldAttrs,
47544
47598
  processTables,
47545
47599
  annotateDocument,
47546
- annotateHeadersAndFooters
47600
+ annotateHeadersAndFooters,
47601
+ getAllHeaderFooterEditors,
47602
+ updateHeaderFooterFieldAnnotations,
47603
+ deleteHeaderFooterFieldAnnotations
47547
47604
  };
47548
47605
  const CollaborationPluginKey = new PluginKey("collaboration");
47549
47606
  const Collaboration = Extension.create({
@@ -47693,6 +47750,16 @@
47693
47750
  initializeMetaMap(ydoc, editor);
47694
47751
  return Y.encodeStateAsUpdate(ydoc);
47695
47752
  };
47753
+ const isHighContrastMode$1 = ref$1(false);
47754
+ function useHighContrastMode$1() {
47755
+ const setHighContrastMode = (value) => {
47756
+ isHighContrastMode$1.value = value;
47757
+ };
47758
+ return {
47759
+ isHighContrastMode: isHighContrastMode$1,
47760
+ setHighContrastMode
47761
+ };
47762
+ }
47696
47763
  const _Editor = class _Editor2 extends EventEmitter$2 {
47697
47764
  /**
47698
47765
  * Create a new Editor instance
@@ -47785,6 +47852,8 @@
47785
47852
  }
47786
47853
  };
47787
47854
  let initMode = modes[this.options.mode] ?? modes.default;
47855
+ const { setHighContrastMode } = useHighContrastMode$1();
47856
+ this.setHighContrastMode = setHighContrastMode;
47788
47857
  initMode();
47789
47858
  }
47790
47859
  /**
@@ -48081,6 +48150,10 @@
48081
48150
  if (!proseMirror || !pageSize || !pageMargins) {
48082
48151
  return;
48083
48152
  }
48153
+ proseMirror.setAttribute("role", "document");
48154
+ proseMirror.setAttribute("aria-multiline", true);
48155
+ proseMirror.setAttribute("aria-label", "Main content area, start typing to enter text.");
48156
+ proseMirror.setAttribute("aria-description", "");
48084
48157
  element.style.width = pageSize.width + "in";
48085
48158
  element.style.minWidth = pageSize.width + "in";
48086
48159
  element.style.minHeight = pageSize.height + "in";
@@ -48289,8 +48362,13 @@
48289
48362
  updatedDocs["word/commentsExtensible.xml"] = String(commentsExtensibleXml);
48290
48363
  updatedDocs["word/commentsIds.xml"] = String(commentsIdsXml);
48291
48364
  }
48292
- if (getUpdatedDocs) return updatedDocs;
48293
48365
  const zipper = new DocxZipper();
48366
+ if (getUpdatedDocs) {
48367
+ updatedDocs["[Content_Types].xml"] = await zipper.updateContentTypes({
48368
+ files: this.options.content
48369
+ }, media, true);
48370
+ return updatedDocs;
48371
+ }
48294
48372
  const result = await zipper.updateZip({
48295
48373
  docx: this.options.content,
48296
48374
  updatedDocs,
@@ -48332,7 +48410,7 @@
48332
48410
  * @returns {Object | void} Migration results
48333
48411
  */
48334
48412
  processCollaborationMigrations() {
48335
- console.debug("[checkVersionMigrations] Current editor version", "0.12.31");
48413
+ console.debug("[checkVersionMigrations] Current editor version", "0.12.33");
48336
48414
  if (!this.options.ydoc) return;
48337
48415
  const metaMap = this.options.ydoc.getMap("meta");
48338
48416
  let docVersion = metaMap.get("version");
@@ -48421,10 +48499,8 @@
48421
48499
  */
48422
48500
  prepareForAnnotations(annotationValues = []) {
48423
48501
  const { tr } = this.state;
48424
- const { dispatch } = this.view;
48425
- const newTr = AnnotatorServices.processTables({ state: this.state, tr, annotationValues });
48502
+ const newTr = AnnotatorHelpers.processTables({ state: this.state, tr, annotationValues });
48426
48503
  this.view.dispatch(newTr);
48427
- AnnotatorServices.annotateHeadersAndFooters({ editor: this, annotationValues });
48428
48504
  }
48429
48505
  /**
48430
48506
  * Annotate the document with the given annotation values.
@@ -48433,15 +48509,16 @@
48433
48509
  * @param {String[]} hiddenIds List of field ids to remove from the document.
48434
48510
  * @returns {void}
48435
48511
  */
48436
- annotate(annotationValues = [], hiddenIds = []) {
48512
+ annotate(annotationValues = [], hiddenIds = [], removeEmptyFields = false) {
48437
48513
  const { state: state2, view, schema } = this;
48438
48514
  let tr = state2.tr;
48439
- tr = AnnotatorServices.processTables({ state: this.state, tr, annotationValues });
48440
- tr = AnnotatorServices.annotateDocument({
48515
+ tr = AnnotatorHelpers.processTables({ state: this.state, tr, annotationValues });
48516
+ tr = AnnotatorHelpers.annotateDocument({
48441
48517
  tr,
48442
48518
  schema,
48443
48519
  annotationValues,
48444
48520
  hiddenFieldIds: hiddenIds,
48521
+ removeEmptyFields,
48445
48522
  editor: this
48446
48523
  });
48447
48524
  if (tr.docChanged) view.dispatch(tr.scrollIntoView());
@@ -48696,6 +48773,7 @@
48696
48773
  toggleHeaderFooterEditMode(this, null, false);
48697
48774
  const pm = document.querySelector(".ProseMirror");
48698
48775
  pm.classList.remove("header-footer-edit");
48776
+ pm.setAttribute("aria-readonly", false);
48699
48777
  }
48700
48778
  }
48701
48779
  });
@@ -49668,7 +49746,8 @@
49668
49746
  return {
49669
49747
  htmlAttributes: {
49670
49748
  class: "sd-ai-loader",
49671
- contentEditable: "false"
49749
+ contentEditable: "false",
49750
+ "aria-label": "AI loader node"
49672
49751
  }
49673
49752
  };
49674
49753
  },
@@ -49864,7 +49943,8 @@
49864
49943
  addAttributes() {
49865
49944
  return {
49866
49945
  attributes: {
49867
- rendered: false
49946
+ rendered: false,
49947
+ "aria-label": "Document node"
49868
49948
  }
49869
49949
  };
49870
49950
  }
@@ -49888,7 +49968,8 @@
49888
49968
  addAttributes() {
49889
49969
  return {
49890
49970
  attributes: {
49891
- rendered: false
49971
+ rendered: false,
49972
+ "aria-label": "Run node"
49892
49973
  }
49893
49974
  };
49894
49975
  }
@@ -49941,7 +50022,9 @@
49941
50022
  addOptions() {
49942
50023
  return {
49943
50024
  itemTypeName: "listItem",
49944
- htmlAttributes: {},
50025
+ htmlAttributes: {
50026
+ "aria-label": "Bullet list node"
50027
+ },
49945
50028
  keepMarks: true,
49946
50029
  keepAttributes: false
49947
50030
  };
@@ -50232,7 +50315,9 @@
50232
50315
  addOptions() {
50233
50316
  return {
50234
50317
  itemTypeName: "listItem",
50235
- htmlAttributes: {},
50318
+ htmlAttributes: {
50319
+ "aria-label": "Ordered list node"
50320
+ },
50236
50321
  keepMarks: true,
50237
50322
  keepAttributes: false,
50238
50323
  listStyleTypes: ["decimal", "lowerAlpha", "lowerRoman"]
@@ -50632,7 +50717,9 @@
50632
50717
  // to run listItem commands first
50633
50718
  addOptions() {
50634
50719
  return {
50635
- htmlAttributes: {},
50720
+ htmlAttributes: {
50721
+ "aria-label": "List item node"
50722
+ },
50636
50723
  bulletListTypeName: "bulletList",
50637
50724
  orderedListTypeName: "orderedList"
50638
50725
  };
@@ -51154,7 +51241,9 @@
51154
51241
  addOptions() {
51155
51242
  return {
51156
51243
  levels: [1, 2, 3, 4, 5, 6],
51157
- htmlAttributes: {}
51244
+ htmlAttributes: {
51245
+ "aria-label": "Heading node"
51246
+ }
51158
51247
  };
51159
51248
  },
51160
51249
  addAttributes() {
@@ -51215,7 +51304,8 @@
51215
51304
  addOptions() {
51216
51305
  return {
51217
51306
  htmlAttributes: {
51218
- contentEditable: "false"
51307
+ contentEditable: "false",
51308
+ "aria-label": "Comment range start node"
51219
51309
  }
51220
51310
  };
51221
51311
  },
@@ -51244,7 +51334,8 @@
51244
51334
  addOptions() {
51245
51335
  return {
51246
51336
  htmlAttributes: {
51247
- contentEditable: "false"
51337
+ contentEditable: "false",
51338
+ "aria-label": "Comment range end node"
51248
51339
  }
51249
51340
  };
51250
51341
  },
@@ -51272,7 +51363,8 @@
51272
51363
  addOptions() {
51273
51364
  return {
51274
51365
  htmlAttributes: {
51275
- contentEditable: "false"
51366
+ contentEditable: "false",
51367
+ "aria-label": "Comment reference node"
51276
51368
  }
51277
51369
  };
51278
51370
  },
@@ -51447,7 +51539,9 @@
51447
51539
  return {
51448
51540
  htmlAttributes: {
51449
51541
  contentEditable: "false",
51450
- lineBreakType: "page"
51542
+ lineBreakType: "page",
51543
+ "aria-hidden": "true",
51544
+ "aria-label": "Hard break node"
51451
51545
  }
51452
51546
  };
51453
51547
  },
@@ -53805,7 +53899,9 @@
53805
53899
  tableRole: "table",
53806
53900
  addOptions() {
53807
53901
  return {
53808
- htmlAttributes: {},
53902
+ htmlAttributes: {
53903
+ "aria-label": "Table node"
53904
+ },
53809
53905
  resizable: true,
53810
53906
  handleWidth: 5,
53811
53907
  cellMinWidth: 25,
@@ -54055,7 +54151,9 @@
54055
54151
  isolating: true,
54056
54152
  addOptions() {
54057
54153
  return {
54058
- htmlAttributes: {}
54154
+ htmlAttributes: {
54155
+ "aria-label": "Table head node"
54156
+ }
54059
54157
  };
54060
54158
  },
54061
54159
  addAttributes() {
@@ -54095,7 +54193,9 @@
54095
54193
  tableRole: "row",
54096
54194
  addOptions() {
54097
54195
  return {
54098
- htmlAttributes: {}
54196
+ htmlAttributes: {
54197
+ "aria-label": "Table row node"
54198
+ }
54099
54199
  };
54100
54200
  },
54101
54201
  addAttributes() {
@@ -54123,7 +54223,9 @@
54123
54223
  isolating: true,
54124
54224
  addOptions() {
54125
54225
  return {
54126
- htmlAttributes: {}
54226
+ htmlAttributes: {
54227
+ "aria-label": "Table cell node"
54228
+ }
54127
54229
  };
54128
54230
  },
54129
54231
  addAttributes() {
@@ -54665,6 +54767,15 @@
54665
54767
  });
54666
54768
  return fieldAnnotations;
54667
54769
  }
54770
+ const getHeaderFooterAnnotations = (editor) => {
54771
+ const editors = getAllHeaderFooterEditors(editor);
54772
+ const allAnnotations = [];
54773
+ editors.forEach(({ id, editor: editor2 }) => {
54774
+ const annotations = getAllFieldAnnotations(editor2.state);
54775
+ allAnnotations.push(...annotations);
54776
+ });
54777
+ return allAnnotations;
54778
+ };
54668
54779
  const index$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
54669
54780
  __proto__: null,
54670
54781
  findFieldAnnotations,
@@ -54674,6 +54785,7 @@
54674
54785
  findRemovedFieldAnnotations,
54675
54786
  getAllFieldAnnotations,
54676
54787
  getAllFieldAnnotationsWithRect,
54788
+ getHeaderFooterAnnotations,
54677
54789
  trackFieldAnnotationsDeletion
54678
54790
  }, Symbol.toStringTag, { value: "Module" }));
54679
54791
  function guard(low, high, value) {
@@ -54804,7 +54916,8 @@
54804
54916
  addOptions() {
54805
54917
  return {
54806
54918
  htmlAttributes: {
54807
- class: annotationClass
54919
+ class: annotationClass,
54920
+ "aria-label": "Field annotation node"
54808
54921
  },
54809
54922
  annotationClass,
54810
54923
  annotationContentClass,
@@ -55746,7 +55859,8 @@
55746
55859
  return {
55747
55860
  allowBase64: true,
55748
55861
  htmlAttributes: {
55749
- style: "display: inline-block;"
55862
+ style: "display: inline-block;",
55863
+ "aria-label": "Image node"
55750
55864
  }
55751
55865
  };
55752
55866
  },
@@ -55862,7 +55976,11 @@
55862
55976
  inline: true,
55863
55977
  addOptions() {
55864
55978
  return {
55865
- htmlAttributes: { style: "height: 0; width: 0;" }
55979
+ htmlAttributes: {
55980
+ style: "height: 0; width: 0;",
55981
+ "aria-label": "Bookmark start node",
55982
+ role: "link"
55983
+ }
55866
55984
  };
55867
55985
  },
55868
55986
  addAttributes() {
@@ -55896,7 +56014,8 @@
55896
56014
  addOptions() {
55897
56015
  return {
55898
56016
  htmlAttributes: {
55899
- class: "sd-editor-mention"
56017
+ class: "sd-editor-mention",
56018
+ "aria-label": "Mention node"
55900
56019
  }
55901
56020
  };
55902
56021
  },
@@ -55934,7 +56053,8 @@
55934
56053
  addOptions() {
55935
56054
  return {
55936
56055
  htmlAttributes: {
55937
- "data-id": "auto-page-number"
56056
+ "data-id": "auto-page-number",
56057
+ "aria-label": "Page number node"
55938
56058
  }
55939
56059
  };
55940
56060
  },
@@ -55953,7 +56073,8 @@
55953
56073
  addOptions() {
55954
56074
  return {
55955
56075
  htmlAttributes: {
55956
- "data-id": "auto-total-pages"
56076
+ "data-id": "auto-total-pages",
56077
+ "aria-label": "Total page count node"
55957
56078
  }
55958
56079
  };
55959
56080
  },
@@ -55972,7 +56093,8 @@
55972
56093
  addOptions() {
55973
56094
  return {
55974
56095
  htmlAttributes: {
55975
- class: "sd-editor-shape-container"
56096
+ class: "sd-editor-shape-container",
56097
+ "aria-label": "Shape container node"
55976
56098
  }
55977
56099
  };
55978
56100
  },
@@ -56025,7 +56147,8 @@
56025
56147
  addOptions() {
56026
56148
  return {
56027
56149
  htmlAttributes: {
56028
- class: "sd-editor-shape-textbox"
56150
+ class: "sd-editor-shape-textbox",
56151
+ "aria-label": "Shape textbox node"
56029
56152
  }
56030
56153
  };
56031
56154
  },
@@ -56117,7 +56240,9 @@
56117
56240
  addOptions() {
56118
56241
  return {
56119
56242
  annotationClass: "sd-structured-content-tag",
56120
- htmlAttributes: {}
56243
+ htmlAttributes: {
56244
+ "aria-label": "Structured content node"
56245
+ }
56121
56246
  };
56122
56247
  },
56123
56248
  parseDOM() {
@@ -59577,9 +59702,9 @@
59577
59702
  };
59578
59703
  const _hoisted_1$k = ["onClick", "onMouseenter"];
59579
59704
  const _hoisted_2$e = { key: 0 };
59580
- const _hoisted_3$c = { key: 0 };
59705
+ const _hoisted_3$b = { key: 0 };
59581
59706
  const _hoisted_4$8 = { key: 1 };
59582
- const _hoisted_5$7 = { key: 1 };
59707
+ const _hoisted_5$6 = { key: 1 };
59583
59708
  const _sfc_main$l = {
59584
59709
  __name: "Mentions",
59585
59710
  props: {
@@ -59652,9 +59777,9 @@
59652
59777
  class: normalizeClass(["user-row", { selected: activeUserIndex.value === index2 }])
59653
59778
  }, [
59654
59779
  user.name ? (openBlock(), createElementBlock("div", _hoisted_2$e, [
59655
- user.name ? (openBlock(), createElementBlock("span", _hoisted_3$c, toDisplayString(user.name), 1)) : createCommentVNode("", true),
59780
+ user.name ? (openBlock(), createElementBlock("span", _hoisted_3$b, toDisplayString(user.name), 1)) : createCommentVNode("", true),
59656
59781
  user.name && user.email ? (openBlock(), createElementBlock("span", _hoisted_4$8, " (" + toDisplayString(user.email) + ")", 1)) : createCommentVNode("", true)
59657
- ])) : (openBlock(), createElementBlock("div", _hoisted_5$7, [
59782
+ ])) : (openBlock(), createElementBlock("div", _hoisted_5$6, [
59658
59783
  createBaseVNode("span", null, toDisplayString(user.email), 1)
59659
59784
  ]))
59660
59785
  ], 42, _hoisted_1$k);
@@ -60965,15 +61090,16 @@
60965
61090
  }
60966
61091
  };
60967
61092
  const ToolbarButtonIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$5$2, [["__scopeId", "data-v-6d7523ab"]]);
60968
- const _hoisted_1$3$2 = ["data-item"];
60969
- const _hoisted_2$2$2 = {
61093
+ const _hoisted_1$3$2 = ["role"];
61094
+ const _hoisted_2$2$2 = ["data-item", "aria-label"];
61095
+ const _hoisted_3$2$2 = {
60970
61096
  key: 1,
60971
61097
  class: "button-label"
60972
61098
  };
60973
- const _hoisted_3$2$2 = { key: 2 };
60974
- const _hoisted_4$7 = ["placeholder", "onKeydown", "id"];
60975
- const _hoisted_5$6 = ["placeholder", "onKeydown", "id"];
60976
- const _hoisted_6$3 = ["innerHTML"];
61099
+ const _hoisted_4$7 = { key: 2 };
61100
+ const _hoisted_5$5 = ["placeholder", "onKeydown", "id"];
61101
+ const _hoisted_6$3 = ["placeholder", "onKeydown", "id"];
61102
+ const _hoisted_7$3 = ["innerHTML"];
60977
61103
  const _sfc_main$4$2 = {
60978
61104
  __name: "ToolbarButton",
60979
61105
  props: {
@@ -61000,6 +61126,10 @@
61000
61126
  defaultLabel: {
61001
61127
  type: String,
61002
61128
  default: null
61129
+ },
61130
+ isOverflowItem: {
61131
+ type: Boolean,
61132
+ default: false
61003
61133
  }
61004
61134
  },
61005
61135
  emits: ["buttonClick", "textSubmit"],
@@ -61023,6 +61153,7 @@
61023
61153
  } = props.toolbarItem;
61024
61154
  const inlineTextInput = ref$1(props.defaultLabel);
61025
61155
  const inlineInput = ref$1(null);
61156
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
61026
61157
  const handleClick2 = () => {
61027
61158
  if (hasInlineTextInput) {
61028
61159
  inlineInput.value?.focus();
@@ -61050,12 +61181,15 @@
61050
61181
  return (_ctx, _cache) => {
61051
61182
  return openBlock(), createElementBlock("div", {
61052
61183
  class: normalizeClass(["toolbar-item", unref(attributes).className]),
61053
- style: normalizeStyle(getStyle.value)
61184
+ style: normalizeStyle(getStyle.value),
61185
+ role: __props.isOverflowItem ? "menuitem" : ""
61054
61186
  }, [
61055
61187
  createBaseVNode("div", {
61056
61188
  onClick: handleClick2,
61057
- class: normalizeClass(["toolbar-button", { active: unref(active), disabled: unref(disabled), narrow: __props.isNarrow, wide: __props.isWide, "has-inline-text-input": unref(hasInlineTextInput) }]),
61058
- "data-item": `btn-${unref(name) || ""}`
61189
+ class: normalizeClass(["toolbar-button", { active: unref(active), disabled: unref(disabled), narrow: __props.isNarrow, wide: __props.isWide, "has-inline-text-input": unref(hasInlineTextInput), "high-contrast": unref(isHighContrastMode2) }]),
61190
+ "data-item": `btn-${unref(name) || ""}`,
61191
+ "aria-label": unref(attributes).ariaLabel,
61192
+ role: "button"
61059
61193
  }, [
61060
61194
  unref(icon) ? (openBlock(), createBlock(ToolbarButtonIcon, {
61061
61195
  key: 0,
@@ -61064,8 +61198,8 @@
61064
61198
  icon: unref(icon),
61065
61199
  name: unref(name)
61066
61200
  }, null, 8, ["color", "icon", "name"])) : createCommentVNode("", true),
61067
- unref(label) && !unref(hideLabel) && !unref(inlineTextInputVisible) ? (openBlock(), createElementBlock("div", _hoisted_2$2$2, toDisplayString(unref(label)), 1)) : createCommentVNode("", true),
61068
- unref(inlineTextInputVisible) ? (openBlock(), createElementBlock("span", _hoisted_3$2$2, [
61201
+ unref(label) && !unref(hideLabel) && !unref(inlineTextInputVisible) ? (openBlock(), createElementBlock("div", _hoisted_3$2$2, toDisplayString(unref(label)), 1)) : createCommentVNode("", true),
61202
+ unref(inlineTextInputVisible) ? (openBlock(), createElementBlock("span", _hoisted_4$7, [
61069
61203
  unref(name) === "fontSize" ? withDirectives((openBlock(), createElementBlock("input", {
61070
61204
  key: 0,
61071
61205
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => inlineTextInput.value = $event),
@@ -61073,12 +61207,12 @@
61073
61207
  placeholder: unref(label),
61074
61208
  onKeydown: withKeys(withModifiers(handleInputSubmit, ["prevent"]), ["enter"]),
61075
61209
  type: "text",
61076
- class: "button-text-input",
61210
+ class: normalizeClass(["button-text-input", { "high-contrast": unref(isHighContrastMode2) }]),
61077
61211
  id: "inlineTextInput-" + unref(name),
61078
61212
  autoccomplete: "off",
61079
61213
  ref_key: "inlineInput",
61080
61214
  ref: inlineInput
61081
- }, null, 40, _hoisted_4$7)), [
61215
+ }, null, 42, _hoisted_5$5)), [
61082
61216
  [vModelText, inlineTextInput.value]
61083
61217
  ]) : withDirectives((openBlock(), createElementBlock("input", {
61084
61218
  key: 1,
@@ -61091,7 +61225,7 @@
61091
61225
  autoccomplete: "off",
61092
61226
  ref_key: "inlineInput",
61093
61227
  ref: inlineInput
61094
- }, null, 40, _hoisted_5$6)), [
61228
+ }, null, 40, _hoisted_6$3)), [
61095
61229
  [vModelText, inlineTextInput.value]
61096
61230
  ])
61097
61231
  ])) : createCommentVNode("", true),
@@ -61100,14 +61234,18 @@
61100
61234
  class: "dropdown-caret",
61101
61235
  innerHTML: caretIcon.value,
61102
61236
  style: normalizeStyle({ opacity: unref(disabled) ? 0.6 : 1 })
61103
- }, null, 12, _hoisted_6$3)) : createCommentVNode("", true)
61104
- ], 10, _hoisted_1$3$2)
61105
- ], 6);
61237
+ }, null, 12, _hoisted_7$3)) : createCommentVNode("", true)
61238
+ ], 10, _hoisted_2$2$2)
61239
+ ], 14, _hoisted_1$3$2);
61106
61240
  };
61107
61241
  }
61108
61242
  };
61109
- const ToolbarButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$4$2, [["__scopeId", "data-v-62bb3747"]]);
61110
- const _hoisted_1$2$2 = { class: "toolbar-separator" };
61243
+ const ToolbarButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$4$2, [["__scopeId", "data-v-6eb57404"]]);
61244
+ const _hoisted_1$2$2 = {
61245
+ class: "toolbar-separator",
61246
+ role: "separator",
61247
+ "aria-label": "Toolbar separator"
61248
+ };
61111
61249
  const _sfc_main$3$2 = {
61112
61250
  __name: "ToolbarSeparator",
61113
61251
  props: {
@@ -61118,19 +61256,30 @@
61118
61256
  },
61119
61257
  emits: ["command"],
61120
61258
  setup(__props, { emit: __emit }) {
61259
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
61260
+ const getSeparatorColor = () => {
61261
+ if (isHighContrastMode2.value) {
61262
+ return "#000";
61263
+ }
61264
+ return "#dbdbdb";
61265
+ };
61121
61266
  return (_ctx, _cache) => {
61122
- return openBlock(), createElementBlock("div", _hoisted_1$2$2, _cache[0] || (_cache[0] = [
61123
- createBaseVNode("div", { class: "separator-inner" }, null, -1)
61124
- ]));
61267
+ return openBlock(), createElementBlock("div", _hoisted_1$2$2, [
61268
+ createBaseVNode("div", {
61269
+ class: "separator-inner",
61270
+ style: normalizeStyle({ backgroundColor: getSeparatorColor() })
61271
+ }, null, 4)
61272
+ ]);
61125
61273
  };
61126
61274
  }
61127
61275
  };
61128
- const ToolbarSeparator = /* @__PURE__ */ _export_sfc$1(_sfc_main$3$2, [["__scopeId", "data-v-ac2ee4f9"]]);
61276
+ const ToolbarSeparator = /* @__PURE__ */ _export_sfc$1(_sfc_main$3$2, [["__scopeId", "data-v-b240fc3a"]]);
61129
61277
  const _hoisted_1$1$2 = { class: "overflow-menu" };
61130
61278
  const _hoisted_2$1$2 = { class: "overflow-menu-trigger" };
61131
61279
  const _hoisted_3$1$2 = {
61132
61280
  key: 0,
61133
- class: "overflow-menu_items"
61281
+ class: "overflow-menu_items",
61282
+ role: "group"
61134
61283
  };
61135
61284
  const _sfc_main$2$2 = {
61136
61285
  __name: "OverflowMenu",
@@ -61168,16 +61317,17 @@
61168
61317
  ]),
61169
61318
  isDropdownOpened.value ? (openBlock(), createElementBlock("div", _hoisted_3$1$2, [
61170
61319
  createVNode(ButtonGroup, {
61320
+ class: "superdoc-toolbar-overflow",
61171
61321
  "toolbar-items": __props.overflowItems,
61172
- onCommand: handleCommand,
61173
- class: "superdoc-toolbar-overflow"
61322
+ "from-overflow": "",
61323
+ onCommand: handleCommand
61174
61324
  }, null, 8, ["toolbar-items"])
61175
61325
  ])) : createCommentVNode("", true)
61176
61326
  ]);
61177
61327
  };
61178
61328
  }
61179
61329
  };
61180
- const OverflowMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$2, [["__scopeId", "data-v-ca29bf1d"]]);
61330
+ const OverflowMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$2, [["__scopeId", "data-v-c637209b"]]);
61181
61331
  function plugin$1$1(options2) {
61182
61332
  let _bPrefix = ".";
61183
61333
  let _ePrefix = "__";
@@ -70510,7 +70660,7 @@ ${style2}
70510
70660
  });
70511
70661
  const _hoisted_1$j = { key: 0 };
70512
70662
  const _hoisted_2$d = { key: 0 };
70513
- const _hoisted_3$b = { key: 0 };
70663
+ const _hoisted_3$a = { key: 0 };
70514
70664
  const _sfc_main$1$1 = {
70515
70665
  __name: "ButtonGroup",
70516
70666
  props: {
@@ -70525,6 +70675,10 @@ ${style2}
70525
70675
  position: {
70526
70676
  type: String,
70527
70677
  default: "left"
70678
+ },
70679
+ fromOverflow: {
70680
+ type: Boolean,
70681
+ default: false
70528
70682
  }
70529
70683
  },
70530
70684
  emits: ["command"],
@@ -70532,6 +70686,7 @@ ${style2}
70532
70686
  const emit2 = __emit;
70533
70687
  const props = __props;
70534
70688
  const currentItem = ref$1(null);
70689
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
70535
70690
  const isMobile = window.matchMedia("(max-width: 768px)").matches;
70536
70691
  const styleMap = {
70537
70692
  left: {
@@ -70590,13 +70745,20 @@ ${style2}
70590
70745
  };
70591
70746
  });
70592
70747
  };
70748
+ const getDropdownAttributes = (option, item) => {
70749
+ return {
70750
+ role: "menuitem",
70751
+ ariaLabel: `${item.attributes.value.ariaLabel} - ${option.label}`
70752
+ };
70753
+ };
70593
70754
  const handleClickOutside = (e) => {
70594
70755
  closeDropdowns();
70595
70756
  };
70596
70757
  return (_ctx, _cache) => {
70597
70758
  return openBlock(), createElementBlock("div", {
70598
70759
  style: normalizeStyle(getPositionStyle.value),
70599
- class: "button-group"
70760
+ class: "button-group",
70761
+ role: "group"
70600
70762
  }, [
70601
70763
  (openBlock(true), createElementBlock(Fragment$1, null, renderList(__props.toolbarItems, (item) => {
70602
70764
  return openBlock(), createElementBlock("div", {
@@ -70617,10 +70779,14 @@ ${style2}
70617
70779
  show: item.expand.value,
70618
70780
  size: "medium",
70619
70781
  placement: "bottom-start",
70620
- class: "toolbar-button toolbar-dropdown sd-editor-toolbar-dropdown",
70782
+ class: normalizeClass(["toolbar-button toolbar-dropdown sd-editor-toolbar-dropdown", { "high-contrast": unref(isHighContrastMode2) }]),
70621
70783
  onSelect: (key, option) => handleSelect(item, option),
70622
70784
  onClickoutside: handleClickOutside,
70623
- style: normalizeStyle(item.dropdownStyles.value)
70785
+ style: normalizeStyle(item.dropdownStyles.value),
70786
+ "menu-props": () => ({
70787
+ role: "menu"
70788
+ }),
70789
+ "node-props": (option) => getDropdownAttributes(option, item)
70624
70790
  }, {
70625
70791
  default: withCtx(() => [
70626
70792
  createVNode(unref(NTooltip), {
@@ -70644,7 +70810,7 @@ ${style2}
70644
70810
  }, 1032, ["disabled"])
70645
70811
  ]),
70646
70812
  _: 2
70647
- }, 1032, ["options", "trigger", "show", "onSelect", "style"])) : isButton(item) ? (openBlock(), createBlock(unref(NTooltip), {
70813
+ }, 1032, ["options", "trigger", "show", "class", "onSelect", "style", "node-props"])) : isButton(item) ? (openBlock(), createBlock(unref(NTooltip), {
70648
70814
  key: 2,
70649
70815
  trigger: "hover",
70650
70816
  class: "sd-editor-toolbar-tooltip"
@@ -70652,14 +70818,15 @@ ${style2}
70652
70818
  trigger: withCtx(() => [
70653
70819
  createVNode(ToolbarButton, {
70654
70820
  "toolbar-item": item,
70821
+ "is-overflow-item": __props.fromOverflow,
70655
70822
  onTextSubmit: ($event) => handleToolbarButtonTextSubmit(item, $event),
70656
70823
  onButtonClick: ($event) => handleToolbarButtonClick(item)
70657
- }, null, 8, ["toolbar-item", "onTextSubmit", "onButtonClick"])
70824
+ }, null, 8, ["toolbar-item", "is-overflow-item", "onTextSubmit", "onButtonClick"])
70658
70825
  ]),
70659
70826
  default: withCtx(() => [
70660
70827
  item.tooltip ? (openBlock(), createElementBlock("div", _hoisted_2$d, [
70661
70828
  createTextVNode(toDisplayString(item.tooltip) + " ", 1),
70662
- item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_3$b, "(disabled)")) : createCommentVNode("", true)
70829
+ item.disabled.value ? (openBlock(), createElementBlock("span", _hoisted_3$a, "(disabled)")) : createCommentVNode("", true)
70663
70830
  ])) : createCommentVNode("", true)
70664
70831
  ]),
70665
70832
  _: 2
@@ -70675,7 +70842,7 @@ ${style2}
70675
70842
  };
70676
70843
  }
70677
70844
  };
70678
- const ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$1, [["__scopeId", "data-v-7751c4e5"]]);
70845
+ const ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$1, [["__scopeId", "data-v-b09e5a20"]]);
70679
70846
  const _sfc_main$k = {
70680
70847
  __name: "Toolbar",
70681
70848
  emits: ["command", "toggle", "select"],
@@ -70720,7 +70887,9 @@ ${style2}
70720
70887
  return (_ctx, _cache) => {
70721
70888
  return openBlock(), createElementBlock("div", {
70722
70889
  class: "superdoc-toolbar",
70723
- key: unref(toolbarKey)
70890
+ key: unref(toolbarKey),
70891
+ role: "toolbar",
70892
+ "aria-label": "Toolbar"
70724
70893
  }, [
70725
70894
  unref(showLeftSide) ? (openBlock(), createBlock(ButtonGroup, {
70726
70895
  key: 0,
@@ -70746,7 +70915,7 @@ ${style2}
70746
70915
  };
70747
70916
  }
70748
70917
  };
70749
- const Toolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__scopeId", "data-v-abd0fb95"]]);
70918
+ const Toolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__scopeId", "data-v-2a400574"]]);
70750
70919
  const DEFAULT_API_ENDPOINT = "https://sd-dev-express-gateway-i6xtm.ondigitalocean.app/insights";
70751
70920
  const SYSTEM_PROMPT = "You are an expert copywriter and you are immersed in a document editor. You are to provide document related text responses based on the user prompts. Only write what is asked for. Do not provide explanations. Try to keep placeholders as short as possible. Do not output your prompt. Your instructions are: ";
70752
70921
  async function baseInsightsFetch(payload, options2 = {}) {
@@ -70983,9 +71152,9 @@ ${style2}
70983
71152
  const paperPlane = '<!-- @note: includes color gradient for inline svg AI Writer -->\n<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->\n <defs>\n <linearGradient id="gradient" x1="125%" y1="50%" x2="-25%" y2="50%">\n <stop offset="-20%" stop-color="rgba(218, 215, 118, 0.5)" />\n <stop offset="30%" stop-color="rgb(191, 100, 100)" />\n <stop offset="60%" stop-color="rgb(77, 82, 217)" />\n <stop offset="150%" stop-color="rgb(255, 219, 102)" />\n </linearGradient>\n </defs>\n <path fill="url(#gradient)" d="M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"/>\n</svg>';
70984
71153
  const _hoisted_1$i = { class: "ai-user-input-field" };
70985
71154
  const _hoisted_2$c = ["innerHTML"];
70986
- const _hoisted_3$a = ["placeholder"];
71155
+ const _hoisted_3$9 = ["placeholder"];
70987
71156
  const _hoisted_4$6 = { class: "ai-loader" };
70988
- const _hoisted_5$5 = ["innerHTML"];
71157
+ const _hoisted_5$4 = ["innerHTML"];
70989
71158
  const _sfc_main$j = {
70990
71159
  __name: "AIWriter",
70991
71160
  props: {
@@ -71261,7 +71430,7 @@ ${style2}
71261
71430
  onInput: handleInput,
71262
71431
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => promptText.value = $event),
71263
71432
  rows: "4"
71264
- }, null, 40, _hoisted_3$a), [
71433
+ }, null, 40, _hoisted_3$9), [
71265
71434
  [vModelText, promptText.value]
71266
71435
  ])
71267
71436
  ]),
@@ -71271,7 +71440,7 @@ ${style2}
71271
71440
  class: "ai-textarea-icon ai-submit-button",
71272
71441
  onClick: withModifiers(handleSubmit, ["stop"]),
71273
71442
  innerHTML: unref(paperPlane)
71274
- }, null, 8, _hoisted_5$5)) : createCommentVNode("", true)
71443
+ }, null, 8, _hoisted_5$4)) : createCommentVNode("", true)
71275
71444
  ])
71276
71445
  ], 544);
71277
71446
  };
@@ -71606,71 +71775,80 @@ ${style2}
71606
71775
  onDeactivate
71607
71776
  };
71608
71777
  };
71609
- const _hoisted_1$b$1 = { class: "alignment-buttons" };
71778
+ const _hoisted_1$b$1 = ["innerHTML"];
71610
71779
  const _hoisted_2$9$1 = ["innerHTML"];
71611
- const _hoisted_3$8 = ["innerHTML"];
71780
+ const _hoisted_3$7$1 = ["innerHTML"];
71612
71781
  const _hoisted_4$3$1 = ["innerHTML"];
71613
- const _hoisted_5$3 = ["innerHTML"];
71614
71782
  const _sfc_main$c$1 = {
71615
71783
  __name: "AlignmentButtons",
71616
71784
  emits: ["select"],
71617
71785
  setup(__props, { emit: __emit }) {
71786
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
71618
71787
  const emit2 = __emit;
71619
71788
  const select = (alignment2) => {
71620
71789
  emit2("select", alignment2);
71621
71790
  };
71622
71791
  return (_ctx, _cache) => {
71623
- return openBlock(), createElementBlock("div", _hoisted_1$b$1, [
71792
+ return openBlock(), createElementBlock("div", {
71793
+ class: normalizeClass(["alignment-buttons", { "high-contrast": unref(isHighContrastMode2) }])
71794
+ }, [
71624
71795
  createBaseVNode("div", {
71625
71796
  class: "button-icon",
71626
71797
  onClick: _cache[0] || (_cache[0] = ($event) => select("left")),
71627
71798
  innerHTML: unref(toolbarIcons).alignLeft,
71628
- "data-item": "btn-textAlign-option"
71629
- }, null, 8, _hoisted_2$9$1),
71799
+ "data-item": "btn-textAlign-option",
71800
+ role: "menuitem",
71801
+ "aria-label": "Align left"
71802
+ }, null, 8, _hoisted_1$b$1),
71630
71803
  createBaseVNode("div", {
71631
71804
  class: "button-icon",
71632
71805
  onClick: _cache[1] || (_cache[1] = ($event) => select("center")),
71633
71806
  innerHTML: unref(toolbarIcons).alignCenter,
71634
- "data-item": "btn-textAlign-option"
71635
- }, null, 8, _hoisted_3$8),
71807
+ "data-item": "btn-textAlign-option",
71808
+ role: "menuitem",
71809
+ "aria-label": "Align center"
71810
+ }, null, 8, _hoisted_2$9$1),
71636
71811
  createBaseVNode("div", {
71637
71812
  class: "button-icon",
71638
71813
  onClick: _cache[2] || (_cache[2] = ($event) => select("right")),
71639
71814
  innerHTML: unref(toolbarIcons).alignRight,
71640
- "data-item": "btn-textAlign-option"
71641
- }, null, 8, _hoisted_4$3$1),
71815
+ "data-item": "btn-textAlign-option",
71816
+ role: "menuitem",
71817
+ "aria-label": "Align right"
71818
+ }, null, 8, _hoisted_3$7$1),
71642
71819
  createBaseVNode("div", {
71643
71820
  class: "button-icon",
71644
71821
  onClick: _cache[3] || (_cache[3] = ($event) => select("justify")),
71645
71822
  innerHTML: unref(toolbarIcons).alignJustify,
71646
- "data-item": "btn-textAlign-option"
71647
- }, null, 8, _hoisted_5$3)
71648
- ]);
71823
+ "data-item": "btn-textAlign-option",
71824
+ role: "menuitem",
71825
+ "aria-label": "Justify"
71826
+ }, null, 8, _hoisted_4$3$1)
71827
+ ], 2);
71649
71828
  };
71650
71829
  }
71651
71830
  };
71652
- const AlignmentButtons = /* @__PURE__ */ _export_sfc$1(_sfc_main$c$1, [["__scopeId", "data-v-932a4937"]]);
71653
- const _hoisted_1$a$1 = { class: "link-input-ctn" };
71654
- const _hoisted_2$8$1 = {
71831
+ const AlignmentButtons = /* @__PURE__ */ _export_sfc$1(_sfc_main$c$1, [["__scopeId", "data-v-58d8a9bb"]]);
71832
+ const _hoisted_1$a$1 = {
71655
71833
  key: 0,
71656
71834
  class: "link-title"
71657
71835
  };
71658
- const _hoisted_3$7$1 = {
71836
+ const _hoisted_2$8$1 = {
71659
71837
  key: 1,
71660
71838
  class: "link-title"
71661
71839
  };
71662
- const _hoisted_4$2$1 = {
71840
+ const _hoisted_3$6$1 = {
71663
71841
  key: 2,
71664
71842
  class: "link-title"
71665
71843
  };
71666
- const _hoisted_5$2$1 = { key: 3 };
71667
- const _hoisted_6$1$1 = { class: "input-row" };
71668
- const _hoisted_7$1$1 = ["innerHTML"];
71669
- const _hoisted_8$2 = ["onKeydown"];
71670
- const _hoisted_9$2 = ["innerHTML"];
71671
- const _hoisted_10$1 = { class: "input-row link-buttons" };
71672
- const _hoisted_11$1 = ["innerHTML"];
71673
- const _hoisted_12$1 = {
71844
+ const _hoisted_4$2$1 = { key: 3 };
71845
+ const _hoisted_5$2$1 = { class: "input-row" };
71846
+ const _hoisted_6$1$1 = ["innerHTML"];
71847
+ const _hoisted_7$2 = ["onKeydown"];
71848
+ const _hoisted_8$2 = ["innerHTML"];
71849
+ const _hoisted_9$2 = { class: "input-row link-buttons" };
71850
+ const _hoisted_10$1 = ["innerHTML"];
71851
+ const _hoisted_11$1 = {
71674
71852
  key: 4,
71675
71853
  class: "input-row go-to-anchor clickable"
71676
71854
  };
@@ -71703,6 +71881,7 @@ ${style2}
71703
71881
  setup(__props, { emit: __emit }) {
71704
71882
  const emit2 = __emit;
71705
71883
  const props = __props;
71884
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
71706
71885
  const { proxy } = getCurrentInstance();
71707
71886
  const handleSubmit = () => {
71708
71887
  if (proxy?.$submit instanceof Function) proxy.$submit();
@@ -71753,16 +71932,19 @@ ${style2}
71753
71932
  if (props.showInput) focusInput();
71754
71933
  });
71755
71934
  return (_ctx, _cache) => {
71756
- return openBlock(), createElementBlock("div", _hoisted_1$a$1, [
71757
- !__props.href ? (openBlock(), createElementBlock("div", _hoisted_2$8$1, "Add link")) : isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_3$7$1, "Page anchor")) : (openBlock(), createElementBlock("div", _hoisted_4$2$1, "Edit link")),
71758
- __props.showInput && !isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_5$2$1, [
71759
- createBaseVNode("div", _hoisted_6$1$1, [
71935
+ return openBlock(), createElementBlock("div", {
71936
+ class: normalizeClass(["link-input-ctn", { "high-contrast": unref(isHighContrastMode2) }])
71937
+ }, [
71938
+ !__props.href ? (openBlock(), createElementBlock("div", _hoisted_1$a$1, "Add link")) : isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_2$8$1, "Page anchor")) : (openBlock(), createElementBlock("div", _hoisted_3$6$1, "Edit link")),
71939
+ __props.showInput && !isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_4$2$1, [
71940
+ createBaseVNode("div", _hoisted_5$2$1, [
71760
71941
  createBaseVNode("div", {
71761
71942
  class: "input-icon",
71762
71943
  innerHTML: unref(toolbarIcons).linkInput
71763
- }, null, 8, _hoisted_7$1$1),
71944
+ }, null, 8, _hoisted_6$1$1),
71764
71945
  withDirectives(createBaseVNode("input", {
71765
71946
  type: "text",
71947
+ name: "link",
71766
71948
  placeholder: "Type or paste a link",
71767
71949
  class: normalizeClass({ error: urlError.value }),
71768
71950
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => rawUrl.value = $event),
@@ -71770,7 +71952,7 @@ ${style2}
71770
71952
  withKeys(withModifiers(handleSubmit, ["stop", "prevent"]), ["enter"]),
71771
71953
  _cache[1] || (_cache[1] = ($event) => urlError.value = false)
71772
71954
  ]
71773
- }, null, 42, _hoisted_8$2), [
71955
+ }, null, 42, _hoisted_7$2), [
71774
71956
  [vModelText, rawUrl.value]
71775
71957
  ]),
71776
71958
  createBaseVNode("div", {
@@ -71778,9 +71960,9 @@ ${style2}
71778
71960
  innerHTML: unref(toolbarIcons).openLink,
71779
71961
  onClick: openLink,
71780
71962
  "data-item": "btn-link-open"
71781
- }, null, 10, _hoisted_9$2)
71963
+ }, null, 10, _hoisted_8$2)
71782
71964
  ]),
71783
- createBaseVNode("div", _hoisted_10$1, [
71965
+ createBaseVNode("div", _hoisted_9$2, [
71784
71966
  __props.href ? (openBlock(), createElementBlock("button", {
71785
71967
  key: 0,
71786
71968
  class: "remove-btn",
@@ -71790,7 +71972,7 @@ ${style2}
71790
71972
  createBaseVNode("div", {
71791
71973
  class: "remove-btn__icon",
71792
71974
  innerHTML: unref(toolbarIcons).removeLink
71793
- }, null, 8, _hoisted_11$1),
71975
+ }, null, 8, _hoisted_10$1),
71794
71976
  _cache[3] || (_cache[3] = createTextVNode(" Remove "))
71795
71977
  ])) : createCommentVNode("", true),
71796
71978
  showApply.value ? (openBlock(), createElementBlock("button", {
@@ -71800,23 +71982,22 @@ ${style2}
71800
71982
  "data-item": "btn-link-apply"
71801
71983
  }, toDisplayString(getApplyText.value), 3)) : createCommentVNode("", true)
71802
71984
  ])
71803
- ])) : isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_12$1, [
71985
+ ])) : isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_11$1, [
71804
71986
  createBaseVNode("a", {
71805
71987
  onClick: _cache[2] || (_cache[2] = withModifiers((...args) => __props.goToAnchor && __props.goToAnchor(...args), ["stop", "prevent"]))
71806
71988
  }, "Go to " + toDisplayString(__props.href.startsWith("#_") ? __props.href.substring(2) : __props.href), 1)
71807
71989
  ])) : createCommentVNode("", true)
71808
- ]);
71990
+ ], 2);
71809
71991
  };
71810
71992
  }
71811
71993
  };
71812
- const LinkInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b$1, [["__scopeId", "data-v-04bac853"]]);
71813
- const _hoisted_1$9$1 = { class: "document-mode" };
71814
- const _hoisted_2$7$1 = ["onClick"];
71815
- const _hoisted_3$6$1 = { class: "document-mode-column icon-column" };
71816
- const _hoisted_4$1$1 = ["innerHTML"];
71817
- const _hoisted_5$1$1 = { class: "document-mode-column text-column" };
71818
- const _hoisted_6$2 = { class: "document-mode-type" };
71819
- const _hoisted_7$2 = { class: "document-mode-description" };
71994
+ const LinkInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b$1, [["__scopeId", "data-v-64aa14bc"]]);
71995
+ const _hoisted_1$9$1 = ["onClick"];
71996
+ const _hoisted_2$7$1 = { class: "document-mode-column icon-column" };
71997
+ const _hoisted_3$5$1 = ["innerHTML"];
71998
+ const _hoisted_4$1$1 = { class: "document-mode-column text-column" };
71999
+ const _hoisted_5$1$1 = { class: "document-mode-type" };
72000
+ const _hoisted_6$2 = { class: "document-mode-description" };
71820
72001
  const _sfc_main$a$1 = {
71821
72002
  __name: "DocumentMode",
71822
72003
  props: {
@@ -71827,34 +72008,38 @@ ${style2}
71827
72008
  emits: ["select"],
71828
72009
  setup(__props, { emit: __emit }) {
71829
72010
  const emit2 = __emit;
72011
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
71830
72012
  const handleClick2 = (item) => {
71831
72013
  emit2("select", item);
71832
72014
  };
71833
72015
  return (_ctx, _cache) => {
71834
- return openBlock(), createElementBlock("div", _hoisted_1$9$1, [
72016
+ return openBlock(), createElementBlock("div", {
72017
+ class: normalizeClass(["document-mode", { "high-contrast": unref(isHighContrastMode2) }])
72018
+ }, [
71835
72019
  (openBlock(true), createElementBlock(Fragment$1, null, renderList(__props.options, (option) => {
71836
72020
  return openBlock(), createElementBlock("div", {
71837
72021
  class: normalizeClass(["option-item", { disabled: option.disabled }]),
71838
72022
  onClick: ($event) => handleClick2(option),
71839
- "data-item": "btn-documentMode-option"
72023
+ "data-item": "btn-documentMode-option",
72024
+ role: "menuitem"
71840
72025
  }, [
71841
- createBaseVNode("div", _hoisted_3$6$1, [
72026
+ createBaseVNode("div", _hoisted_2$7$1, [
71842
72027
  createBaseVNode("div", {
71843
72028
  class: "icon-column__icon",
71844
72029
  innerHTML: option.icon
71845
- }, null, 8, _hoisted_4$1$1)
72030
+ }, null, 8, _hoisted_3$5$1)
71846
72031
  ]),
71847
- createBaseVNode("div", _hoisted_5$1$1, [
71848
- createBaseVNode("div", _hoisted_6$2, toDisplayString(option.label), 1),
71849
- createBaseVNode("div", _hoisted_7$2, toDisplayString(option.description), 1)
72032
+ createBaseVNode("div", _hoisted_4$1$1, [
72033
+ createBaseVNode("div", _hoisted_5$1$1, toDisplayString(option.label), 1),
72034
+ createBaseVNode("div", _hoisted_6$2, toDisplayString(option.description), 1)
71850
72035
  ])
71851
- ], 10, _hoisted_2$7$1);
72036
+ ], 10, _hoisted_1$9$1);
71852
72037
  }), 256))
71853
- ]);
72038
+ ], 2);
71854
72039
  };
71855
72040
  }
71856
72041
  };
71857
- const DocumentMode = /* @__PURE__ */ _export_sfc$1(_sfc_main$a$1, [["__scopeId", "data-v-8afd7fbb"]]);
72042
+ const DocumentMode = /* @__PURE__ */ _export_sfc$1(_sfc_main$a$1, [["__scopeId", "data-v-050d9d49"]]);
71858
72043
  const _hoisted_1$8$1 = {
71859
72044
  key: 0,
71860
72045
  class: "linked-style-buttons"
@@ -71897,9 +72082,9 @@ ${style2}
71897
72082
  }
71898
72083
  };
71899
72084
  const LinkedStyle = /* @__PURE__ */ _export_sfc$1(_sfc_main$9$1, [["__scopeId", "data-v-bf5a8c1e"]]);
71900
- const _hoisted_1$7$1 = ["onClick"];
72085
+ const _hoisted_1$7$1 = ["aria-label", "onClick"];
71901
72086
  const _hoisted_2$5$1 = ["innerHTML"];
71902
- const _hoisted_3$5$1 = ["innerHTML"];
72087
+ const _hoisted_3$4$1 = ["innerHTML"];
71903
72088
  const _sfc_main$8$1 = {
71904
72089
  __name: "IconGridRow",
71905
72090
  props: {
@@ -71936,12 +72121,15 @@ ${style2}
71936
72121
  return openBlock(true), createElementBlock(Fragment$1, null, renderList(__props.icons, (row, rowIndex) => {
71937
72122
  return openBlock(), createElementBlock("div", {
71938
72123
  class: "option-row",
71939
- key: rowIndex
72124
+ key: rowIndex,
72125
+ role: "group"
71940
72126
  }, [
71941
72127
  (openBlock(true), createElementBlock(Fragment$1, null, renderList(row, (option, optionIndex) => {
71942
72128
  return openBlock(), createElementBlock("div", {
71943
72129
  class: "option",
71944
72130
  key: optionIndex,
72131
+ "aria-label": option.label,
72132
+ role: "menuitem",
71945
72133
  onClick: withModifiers(($event) => handleClick2(option), ["stop", "prevent"])
71946
72134
  }, [
71947
72135
  createBaseVNode("div", {
@@ -71954,7 +72142,7 @@ ${style2}
71954
72142
  class: "option__check",
71955
72143
  innerHTML: unref(toolbarIcons).colorOptionCheck,
71956
72144
  style: normalizeStyle(getCheckStyle(option.value, optionIndex))
71957
- }, null, 12, _hoisted_3$5$1)) : createCommentVNode("", true)
72145
+ }, null, 12, _hoisted_3$4$1)) : createCommentVNode("", true)
71958
72146
  ], 8, _hoisted_1$7$1);
71959
72147
  }), 128))
71960
72148
  ]);
@@ -71962,11 +72150,11 @@ ${style2}
71962
72150
  };
71963
72151
  }
71964
72152
  };
71965
- const IconGridRow = /* @__PURE__ */ _export_sfc$1(_sfc_main$8$1, [["__scopeId", "data-v-6a2a9a40"]]);
72153
+ const IconGridRow = /* @__PURE__ */ _export_sfc$1(_sfc_main$8$1, [["__scopeId", "data-v-d96a82fa"]]);
71966
72154
  const DropIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.2 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0l-1.8 0c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z"/></svg>\n';
71967
72155
  const _hoisted_1$6$1 = { class: "options-grid-wrap" };
71968
72156
  const _hoisted_2$4$1 = ["innerHTML"];
71969
- const _hoisted_3$4$1 = { class: "option-grid-ctn" };
72157
+ const _hoisted_3$3$1 = { class: "option-grid-ctn" };
71970
72158
  const _sfc_main$7$1 = {
71971
72159
  __name: "IconGrid",
71972
72160
  props: {
@@ -71998,6 +72186,8 @@ ${style2}
71998
72186
  __props.hasNoneIcon ? (openBlock(), createElementBlock("div", {
71999
72187
  key: 0,
72000
72188
  class: "none-option",
72189
+ role: "menuitem",
72190
+ "aria-label": "Clear color selection",
72001
72191
  onClick: _cache[0] || (_cache[0] = ($event) => handleSelect("none"))
72002
72192
  }, [
72003
72193
  createBaseVNode("span", {
@@ -72006,7 +72196,7 @@ ${style2}
72006
72196
  }, null, 8, _hoisted_2$4$1),
72007
72197
  _cache[1] || (_cache[1] = createTextVNode(" None "))
72008
72198
  ])) : createCommentVNode("", true),
72009
- createBaseVNode("div", _hoisted_3$4$1, [
72199
+ createBaseVNode("div", _hoisted_3$3$1, [
72010
72200
  createVNode(IconGridRow, {
72011
72201
  icons: __props.icons,
72012
72202
  "active-color": __props.activeColor,
@@ -72025,7 +72215,7 @@ ${style2}
72025
72215
  };
72026
72216
  }
72027
72217
  };
72028
- const IconGrid = /* @__PURE__ */ _export_sfc$1(_sfc_main$7$1, [["__scopeId", "data-v-47b783db"]]);
72218
+ const IconGrid = /* @__PURE__ */ _export_sfc$1(_sfc_main$7$1, [["__scopeId", "data-v-9246bdef"]]);
72029
72219
  const closeDropdown$1 = (dropdown) => {
72030
72220
  dropdown.expand.value = false;
72031
72221
  };
@@ -72059,84 +72249,83 @@ ${style2}
72059
72249
  };
72060
72250
  const icons = [
72061
72251
  [
72062
- makeColorOption("#111111"),
72063
- makeColorOption("#333333"),
72064
- makeColorOption("#5C5C5C"),
72065
- makeColorOption("#858585"),
72066
- makeColorOption("#ADADAD"),
72067
- makeColorOption("#D6D6D6"),
72068
- makeColorOption("#FFFFFF")
72252
+ makeColorOption("#111111", "black"),
72253
+ makeColorOption("#333333", "dark gray"),
72254
+ makeColorOption("#5C5C5C", "medium gray"),
72255
+ makeColorOption("#858585", "light gray"),
72256
+ makeColorOption("#ADADAD", "very light gray"),
72257
+ makeColorOption("#D6D6D6", "transparent gray"),
72258
+ makeColorOption("#FFFFFF", "white")
72069
72259
  ],
72070
72260
  [
72071
- makeColorOption("#860028"),
72072
- makeColorOption("#D2003F"),
72073
- makeColorOption("#DB3365"),
72074
- makeColorOption("#E4668C"),
72075
- makeColorOption("#ED99B2"),
72076
- makeColorOption("#F6CCD9"),
72077
- makeColorOption("#FF004D")
72261
+ makeColorOption("#860028", "dark red"),
72262
+ makeColorOption("#D2003F", "red"),
72263
+ makeColorOption("#DB3365", "coral red"),
72264
+ makeColorOption("#E4668C", "light red"),
72265
+ makeColorOption("#ED99B2", "pale pink"),
72266
+ makeColorOption("#F6CCD9", "transparent pink"),
72267
+ makeColorOption("#FF004D", "bright pink")
72078
72268
  ],
72079
72269
  [
72080
- makeColorOption("#83015E"),
72081
- makeColorOption("#CD0194"),
72082
- makeColorOption("#D734A9"),
72083
- makeColorOption("#E167BF"),
72084
- makeColorOption("#EB99D4"),
72085
- makeColorOption("#F5CCEA"),
72086
- makeColorOption("#FF00A8")
72270
+ makeColorOption("#83015E", "dark purple"),
72271
+ makeColorOption("#CD0194", "purple"),
72272
+ makeColorOption("#D734A9", "orchid"),
72273
+ makeColorOption("#E167BF", "light purple"),
72274
+ makeColorOption("#EB99D4", "lavender"),
72275
+ makeColorOption("#F5CCEA", "transparent pink"),
72276
+ makeColorOption("#FF00A8", "neon pink")
72087
72277
  ],
72088
72278
  [
72089
- makeColorOption("#8E220A"),
72090
- makeColorOption("#DD340F"),
72091
- makeColorOption("#E45C3F"),
72092
- makeColorOption("#EB856F"),
72093
- makeColorOption("#F1AE9F"),
72094
- makeColorOption("#F8D6CF"),
72095
- makeColorOption("#FF7A00")
72279
+ makeColorOption("#8E220A", "maroon"),
72280
+ makeColorOption("#DD340F", "red-orange"),
72281
+ makeColorOption("#E45C3F", "burnt orange"),
72282
+ makeColorOption("#EB856F", "peach"),
72283
+ makeColorOption("#F1AE9F", "pale peach"),
72284
+ makeColorOption("#F8D6CF", "transparent peach"),
72285
+ makeColorOption("#FF7A00", "orange")
72096
72286
  ],
72097
72287
  [
72098
- makeColorOption("#947D02"),
72099
- makeColorOption("#E7C302"),
72100
- makeColorOption("#ECCF35"),
72101
- makeColorOption("#F1DB67"),
72102
- makeColorOption("#F5E79A"),
72103
- makeColorOption("#FAF3CC"),
72104
- makeColorOption("#FAFF09")
72288
+ makeColorOption("#947D02", "olive"),
72289
+ makeColorOption("#E7C302", "mustard yellow"),
72290
+ makeColorOption("#ECCF35", "yellow"),
72291
+ makeColorOption("#F1DB67", "light yellow"),
72292
+ makeColorOption("#F5E79A", "very pale yellow"),
72293
+ makeColorOption("#FAF3CC", "transparent yellow"),
72294
+ makeColorOption("#FAFF09", "neon yellow")
72105
72295
  ],
72106
72296
  [
72107
- makeColorOption("#055432"),
72108
- makeColorOption("#07834F"),
72109
- makeColorOption("#399C72"),
72110
- makeColorOption("#6AB595"),
72111
- makeColorOption("#9CCDB9"),
72112
- makeColorOption("#CDE6DC"),
72113
- makeColorOption("#05F38F")
72297
+ makeColorOption("#055432", "forest green"),
72298
+ makeColorOption("#07834F", "green"),
72299
+ makeColorOption("#399C72", "medium green"),
72300
+ makeColorOption("#6AB595", "light green"),
72301
+ makeColorOption("#9CCDB9", "mint"),
72302
+ makeColorOption("#CDE6DC", "transparent mint"),
72303
+ makeColorOption("#05F38F", "bright teal")
72114
72304
  ],
72115
72305
  [
72116
- makeColorOption("#063E7E"),
72117
- makeColorOption("#0A60C5"),
72118
- makeColorOption("#3B80D1"),
72119
- makeColorOption("#6CA0DC"),
72120
- makeColorOption("#9DBFE8"),
72121
- makeColorOption("#CEDFF3"),
72122
- makeColorOption("#21c8ce")
72306
+ makeColorOption("#063E7E", "navy blue"),
72307
+ makeColorOption("#0A60C5", "blue"),
72308
+ makeColorOption("#3B80D1", "sky blue"),
72309
+ makeColorOption("#6CA0DC", "cornflower blue"),
72310
+ makeColorOption("#9DBFE8", "light blue"),
72311
+ makeColorOption("#CEDFF3", "very light blue"),
72312
+ makeColorOption("#21c8ce", "cyan")
72123
72313
  ],
72124
72314
  [
72125
- makeColorOption("#3E027A"),
72126
- makeColorOption("#6103BF"),
72127
- makeColorOption("#8136CC"),
72128
- makeColorOption("#A068D9"),
72129
- makeColorOption("#C09AE6"),
72130
- makeColorOption("#DFCDF2"),
72131
- makeColorOption("#A91DFF")
72315
+ makeColorOption("#3E027A", "deep purple"),
72316
+ makeColorOption("#6103BF", "indigo"),
72317
+ makeColorOption("#8136CC", "violet"),
72318
+ makeColorOption("#A068D9", "lavender pink"),
72319
+ makeColorOption("#C09AE6", "light lilac"),
72320
+ makeColorOption("#DFCDF2", "transparent lilac"),
72321
+ makeColorOption("#A91DFF", "neon purple")
72132
72322
  ]
72133
72323
  ];
72134
72324
  const getAvailableColorOptions = () => {
72135
72325
  return icons.flat().map((item) => item.value);
72136
72326
  };
72137
- const _hoisted_1$5$1 = { class: "toolbar-table-grid-wrapper" };
72138
- const _hoisted_2$3$1 = ["data-cols", "data-rows", "onClick"];
72139
- const _hoisted_3$3$1 = { class: "toolbar-table-grid-value" };
72327
+ const _hoisted_1$5$1 = ["data-cols", "data-rows", "onClick"];
72328
+ const _hoisted_2$3$1 = ["aria-valuetext"];
72140
72329
  const _sfc_main$6$1 = {
72141
72330
  __name: "TableGrid",
72142
72331
  emits: ["select", "clickoutside"],
@@ -72144,6 +72333,7 @@ ${style2}
72144
72333
  const emit2 = __emit;
72145
72334
  const selectedRows = ref$1(0);
72146
72335
  const selectedCols = ref$1(0);
72336
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode$1();
72147
72337
  const onTableGridMouseOver = (event) => {
72148
72338
  let target = event.target;
72149
72339
  let isGrid = !!target.dataset.grid;
@@ -72171,7 +72361,9 @@ ${style2}
72171
72361
  emit2("select", { cols, rows });
72172
72362
  };
72173
72363
  return (_ctx, _cache) => {
72174
- return openBlock(), createElementBlock("div", _hoisted_1$5$1, [
72364
+ return openBlock(), createElementBlock("div", {
72365
+ class: normalizeClass(["toolbar-table-grid-wrapper", { "high-contrast": unref(isHighContrastMode2) }])
72366
+ }, [
72175
72367
  createBaseVNode("div", {
72176
72368
  class: "toolbar-table-grid",
72177
72369
  onMouseover: onTableGridMouseOver,
@@ -72187,22 +72379,25 @@ ${style2}
72187
72379
  "data-rows": i2,
72188
72380
  "data-item": "true",
72189
72381
  onClick: withModifiers(($event) => handleClick2({ cols: n2, rows: i2 }), ["stop", "prevent"])
72190
- }, null, 8, _hoisted_2$3$1);
72382
+ }, null, 8, _hoisted_1$5$1);
72191
72383
  }), 64))
72192
72384
  ], 64);
72193
72385
  }), 64))
72194
72386
  ], 32),
72195
- createBaseVNode("div", _hoisted_3$3$1, toDisplayString(selectedRows.value) + " x " + toDisplayString(selectedCols.value), 1)
72196
- ]);
72387
+ createBaseVNode("div", {
72388
+ class: "toolbar-table-grid-value",
72389
+ "aria-valuetext": `${selectedRows.value} x ${selectedCols.value}`
72390
+ }, toDisplayString(selectedRows.value) + " x " + toDisplayString(selectedCols.value), 9, _hoisted_2$3$1)
72391
+ ], 2);
72197
72392
  };
72198
72393
  }
72199
72394
  };
72200
- const TableGrid = /* @__PURE__ */ _export_sfc$1(_sfc_main$6$1, [["__scopeId", "data-v-06352ab9"]]);
72395
+ const TableGrid = /* @__PURE__ */ _export_sfc$1(_sfc_main$6$1, [["__scopeId", "data-v-617bf152"]]);
72201
72396
  const _hoisted_1$4$1 = { class: "toolbar-table-actions" };
72202
- const _hoisted_2$2$1 = ["onClick", "data-item"];
72397
+ const _hoisted_2$2$1 = ["onClick", "data-item", "ariaLabel"];
72203
72398
  const _hoisted_3$2$1 = { class: "toolbar-table-actions__icon" };
72204
72399
  const _hoisted_4$5 = ["innerHTML"];
72205
- const _hoisted_5$4 = { class: "toolbar-table-actions__label" };
72400
+ const _hoisted_5$3 = { class: "toolbar-table-actions__label" };
72206
72401
  const _sfc_main$5$1 = {
72207
72402
  __name: "TableActions",
72208
72403
  props: {
@@ -72222,7 +72417,9 @@ ${style2}
72222
72417
  return openBlock(), createElementBlock("div", {
72223
72418
  class: normalizeClass(["toolbar-table-actions__item", { "toolbar-table-actions__item--border": option.bottomBorder }]),
72224
72419
  onClick: ($event) => handleClick2(option),
72225
- "data-item": option.props?.["data-item"] || ""
72420
+ "data-item": option.props?.["data-item"] || "",
72421
+ ariaLabel: option.props?.ariaLabel,
72422
+ role: "menuitem"
72226
72423
  }, [
72227
72424
  createBaseVNode("div", _hoisted_3$2$1, [
72228
72425
  createBaseVNode("div", {
@@ -72230,14 +72427,14 @@ ${style2}
72230
72427
  innerHTML: option.icon
72231
72428
  }, null, 8, _hoisted_4$5)
72232
72429
  ]),
72233
- createBaseVNode("div", _hoisted_5$4, toDisplayString(option.label), 1)
72430
+ createBaseVNode("div", _hoisted_5$3, toDisplayString(option.label), 1)
72234
72431
  ], 10, _hoisted_2$2$1);
72235
72432
  }), 256))
72236
72433
  ]);
72237
72434
  };
72238
72435
  }
72239
72436
  };
72240
- const TableActions = /* @__PURE__ */ _export_sfc$1(_sfc_main$5$1, [["__scopeId", "data-v-fdbfb4b0"]]);
72437
+ const TableActions = /* @__PURE__ */ _export_sfc$1(_sfc_main$5$1, [["__scopeId", "data-v-f82e859a"]]);
72241
72438
  const checkIconSvg$1 = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>\n';
72242
72439
  const _hoisted_1$3$1 = { class: "search-input-ctn" };
72243
72440
  const _hoisted_2$1$1 = { class: "row" };
@@ -72338,7 +72535,10 @@ ${style2}
72338
72535
  name: "bold",
72339
72536
  command: "toggleBold",
72340
72537
  icon: toolbarIcons2.bold,
72341
- tooltip: toolbarTexts2.bold
72538
+ tooltip: toolbarTexts2.bold,
72539
+ attributes: {
72540
+ ariaLabel: "Bold"
72541
+ }
72342
72542
  });
72343
72543
  const fontButton = useToolbarItem({
72344
72544
  type: "dropdown",
@@ -72353,6 +72553,9 @@ ${style2}
72353
72553
  isWide: true,
72354
72554
  style: { width: "116px" },
72355
72555
  suppressActiveHighlight: true,
72556
+ attributes: {
72557
+ ariaLabel: "Font family"
72558
+ },
72356
72559
  options: [...toolbarFonts ? toolbarFonts : TOOLBAR_FONTS],
72357
72560
  onActivate: ({ fontFamily: fontFamily2 }) => {
72358
72561
  if (!fontFamily2) return;
@@ -72373,6 +72576,9 @@ ${style2}
72373
72576
  hasCaret: false,
72374
72577
  isWide: true,
72375
72578
  suppressActiveHighlight: true,
72579
+ attributes: {
72580
+ ariaLabel: "AI"
72581
+ },
72376
72582
  options: [
72377
72583
  {
72378
72584
  type: "render",
@@ -72420,6 +72626,9 @@ ${style2}
72420
72626
  suppressActiveHighlight: true,
72421
72627
  isWide: true,
72422
72628
  command: "setFontSize",
72629
+ attributes: {
72630
+ ariaLabel: "Font size"
72631
+ },
72423
72632
  options: [
72424
72633
  { label: "8", key: "8pt", props: { "data-item": "btn-fontSize-option" } },
72425
72634
  { label: "9", key: "9pt", props: { "data-item": "btn-fontSize-option" } },
@@ -72455,14 +72664,20 @@ ${style2}
72455
72664
  name: "italic",
72456
72665
  command: "toggleItalic",
72457
72666
  icon: toolbarIcons2.italic,
72458
- tooltip: toolbarTexts2.italic
72667
+ tooltip: toolbarTexts2.italic,
72668
+ attributes: {
72669
+ ariaLabel: "Italic"
72670
+ }
72459
72671
  });
72460
72672
  const underline = useToolbarItem({
72461
72673
  type: "button",
72462
72674
  name: "underline",
72463
72675
  command: "toggleUnderline",
72464
72676
  icon: toolbarIcons2.underline,
72465
- tooltip: toolbarTexts2.underline
72677
+ tooltip: toolbarTexts2.underline,
72678
+ attributes: {
72679
+ ariaLabel: "Underline"
72680
+ }
72466
72681
  });
72467
72682
  const highlight = useToolbarItem({
72468
72683
  type: "dropdown",
@@ -72475,6 +72690,9 @@ ${style2}
72475
72690
  command: "setHighlight",
72476
72691
  noArgumentCommand: "unsetHighlight",
72477
72692
  suppressActiveHighlight: true,
72693
+ attributes: {
72694
+ ariaLabel: "Highlight"
72695
+ },
72478
72696
  options: [
72479
72697
  {
72480
72698
  key: "color",
@@ -72497,6 +72715,9 @@ ${style2}
72497
72715
  tooltip: toolbarTexts2.color,
72498
72716
  command: "setColor",
72499
72717
  suppressActiveHighlight: true,
72718
+ attributes: {
72719
+ ariaLabel: "Color"
72720
+ },
72500
72721
  options: [
72501
72722
  {
72502
72723
  key: "color",
@@ -72517,6 +72738,9 @@ ${style2}
72517
72738
  tooltip: toolbarTexts2.search,
72518
72739
  group: "right",
72519
72740
  inputRef: searchRef,
72741
+ attributes: {
72742
+ ariaLabel: "Search"
72743
+ },
72520
72744
  options: [
72521
72745
  {
72522
72746
  type: "render",
@@ -72542,6 +72766,9 @@ ${style2}
72542
72766
  markName: "link",
72543
72767
  icon: toolbarIcons2.link,
72544
72768
  tooltip: toolbarTexts2.link,
72769
+ attributes: {
72770
+ ariaLabel: "Link dropdown"
72771
+ },
72545
72772
  options: [
72546
72773
  {
72547
72774
  type: "render",
@@ -72595,7 +72822,10 @@ ${style2}
72595
72822
  command: "startImageUpload",
72596
72823
  icon: toolbarIcons2.image,
72597
72824
  tooltip: toolbarTexts2.image,
72598
- disabled: false
72825
+ disabled: false,
72826
+ attributes: {
72827
+ ariaLabel: "Image"
72828
+ }
72599
72829
  });
72600
72830
  const tableItem = useToolbarItem({
72601
72831
  type: "dropdown",
@@ -72606,6 +72836,9 @@ ${style2}
72606
72836
  tooltip: toolbarTexts2.table,
72607
72837
  command: "insertTable",
72608
72838
  suppressActiveHighlight: true,
72839
+ attributes: {
72840
+ ariaLabel: "Table"
72841
+ },
72609
72842
  options: [
72610
72843
  {
72611
72844
  key: "table",
@@ -72632,6 +72865,9 @@ ${style2}
72632
72865
  icon: toolbarIcons2.tableActions,
72633
72866
  hideLabel: true,
72634
72867
  disabled: true,
72868
+ attributes: {
72869
+ ariaLabel: "Table actions"
72870
+ },
72635
72871
  options: [
72636
72872
  {
72637
72873
  type: "render",
@@ -72644,69 +72880,102 @@ ${style2}
72644
72880
  label: toolbarTexts2.addRowBefore,
72645
72881
  command: "addRowBefore",
72646
72882
  icon: toolbarIcons2.addRowBefore,
72647
- props: { "data-item": "btn-tableActions-option" }
72883
+ props: {
72884
+ "data-item": "btn-tableActions-option",
72885
+ ariaLabel: "Add row before"
72886
+ }
72648
72887
  },
72649
72888
  {
72650
72889
  label: toolbarTexts2.addRowAfter,
72651
72890
  command: "addRowAfter",
72652
72891
  icon: toolbarIcons2.addRowAfter,
72653
- props: { "data-item": "btn-tableActions-option" }
72892
+ props: {
72893
+ "data-item": "btn-tableActions-option",
72894
+ ariaLabel: "Add row after"
72895
+ }
72654
72896
  },
72655
72897
  {
72656
72898
  label: toolbarTexts2.addColumnBefore,
72657
72899
  command: "addColumnBefore",
72658
72900
  icon: toolbarIcons2.addColumnBefore,
72659
- props: { "data-item": "btn-tableActions-option" }
72901
+ props: {
72902
+ "data-item": "btn-tableActions-option",
72903
+ ariaLabel: "Add column before"
72904
+ }
72660
72905
  },
72661
72906
  {
72662
72907
  label: toolbarTexts2.addColumnAfter,
72663
72908
  command: "addColumnAfter",
72664
72909
  icon: toolbarIcons2.addColumnAfter,
72665
72910
  bottomBorder: true,
72666
- props: { "data-item": "btn-tableActions-option" }
72911
+ props: {
72912
+ "data-item": "btn-tableActions-option",
72913
+ ariaLabel: "Add column after"
72914
+ }
72667
72915
  },
72668
72916
  {
72669
72917
  label: toolbarTexts2.deleteRow,
72670
72918
  command: "deleteRow",
72671
72919
  icon: toolbarIcons2.deleteRow,
72672
- props: { "data-item": "btn-tableActions-option" }
72920
+ props: {
72921
+ "data-item": "btn-tableActions-option",
72922
+ ariaLabel: "Delete row"
72923
+ }
72673
72924
  },
72674
72925
  {
72675
72926
  label: toolbarTexts2.deleteColumn,
72676
72927
  command: "deleteColumn",
72677
72928
  icon: toolbarIcons2.deleteColumn,
72678
- props: { "data-item": "btn-tableActions-option" }
72929
+ props: {
72930
+ "data-item": "btn-tableActions-option",
72931
+ ariaLabel: "Delete column"
72932
+ }
72679
72933
  },
72680
72934
  {
72681
72935
  label: toolbarTexts2.deleteTable,
72682
72936
  command: "deleteTable",
72683
72937
  icon: toolbarIcons2.deleteTable,
72684
- props: { "data-item": "btn-tableActions-option" }
72938
+ props: {
72939
+ "data-item": "btn-tableActions-option",
72940
+ ariaLabel: "Delete table"
72941
+ }
72685
72942
  },
72686
72943
  {
72687
72944
  label: toolbarTexts2.transparentBorders,
72688
72945
  command: "deleteCellAndTableBorders",
72689
72946
  icon: toolbarIcons2.deleteBorders,
72690
72947
  bottomBorder: true,
72691
- props: { "data-item": "btn-tableActions-option" }
72948
+ props: {
72949
+ "data-item": "btn-tableActions-option",
72950
+ ariaLabel: "Delete cell and table borders"
72951
+ }
72692
72952
  },
72693
72953
  {
72694
72954
  label: toolbarTexts2.mergeCells,
72695
72955
  command: "mergeCells",
72696
72956
  icon: toolbarIcons2.mergeCells,
72697
- props: { "data-item": "btn-tableActions-option" }
72957
+ props: {
72958
+ "data-item": "btn-tableActions-option",
72959
+ ariaLabel: "Merge cells"
72960
+ }
72698
72961
  },
72699
72962
  {
72700
72963
  label: toolbarTexts2.splitCell,
72701
72964
  command: "splitCell",
72702
72965
  icon: toolbarIcons2.splitCell,
72703
- props: { "data-item": "btn-tableActions-option" }
72966
+ props: {
72967
+ "data-item": "btn-tableActions-option",
72968
+ ariaLabel: "Split cells"
72969
+ }
72704
72970
  },
72705
72971
  {
72706
72972
  label: toolbarTexts2.fixTables,
72707
72973
  command: "fixTables",
72708
72974
  icon: toolbarIcons2.fixTables,
72709
- props: { "data-item": "btn-tableActions-option" }
72975
+ props: {
72976
+ "data-item": "btn-tableActions-option",
72977
+ ariaLabel: "Fix tables"
72978
+ }
72710
72979
  }
72711
72980
  ];
72712
72981
  function renderTableActions(tableActionsItem2) {
@@ -72729,6 +72998,9 @@ ${style2}
72729
72998
  markName: "textAlign",
72730
72999
  labelAttr: "textAlign",
72731
73000
  suppressActiveHighlight: true,
73001
+ attributes: {
73002
+ ariaLabel: "Text align"
73003
+ },
72732
73004
  options: [
72733
73005
  {
72734
73006
  type: "render",
@@ -72772,14 +73044,20 @@ ${style2}
72772
73044
  name: "list",
72773
73045
  command: "toggleBulletList",
72774
73046
  icon: toolbarIcons2.bulletList,
72775
- tooltip: toolbarTexts2.bulletList
73047
+ tooltip: toolbarTexts2.bulletList,
73048
+ attributes: {
73049
+ ariaLabel: "Bullet list"
73050
+ }
72776
73051
  });
72777
73052
  const numberedList = useToolbarItem({
72778
73053
  type: "button",
72779
73054
  name: "numberedlist",
72780
73055
  command: "toggleOrderedList",
72781
73056
  icon: toolbarIcons2.numberedList,
72782
- tooltip: toolbarTexts2.numberedList
73057
+ tooltip: toolbarTexts2.numberedList,
73058
+ attributes: {
73059
+ ariaLabel: "Numbered list"
73060
+ }
72783
73061
  });
72784
73062
  const indentLeft = useToolbarItem({
72785
73063
  type: "button",
@@ -72787,7 +73065,10 @@ ${style2}
72787
73065
  command: "decreaseTextIndent",
72788
73066
  icon: toolbarIcons2.indentLeft,
72789
73067
  tooltip: toolbarTexts2.indentLeft,
72790
- disabled: false
73068
+ disabled: false,
73069
+ attributes: {
73070
+ ariaLabel: "Left indent"
73071
+ }
72791
73072
  });
72792
73073
  const indentRight = useToolbarItem({
72793
73074
  type: "button",
@@ -72795,14 +73076,20 @@ ${style2}
72795
73076
  command: "increaseTextIndent",
72796
73077
  icon: toolbarIcons2.indentRight,
72797
73078
  tooltip: toolbarTexts2.indentRight,
72798
- disabled: false
73079
+ disabled: false,
73080
+ attributes: {
73081
+ ariaLabel: "Right indent"
73082
+ }
72799
73083
  });
72800
73084
  const overflow = useToolbarItem({
72801
73085
  type: "overflow",
72802
73086
  name: "overflow",
72803
73087
  command: "toggleOverflow",
72804
73088
  icon: toolbarIcons2.overflow,
72805
- disabled: false
73089
+ disabled: false,
73090
+ attributes: {
73091
+ ariaLabel: "Overflow items"
73092
+ }
72806
73093
  });
72807
73094
  const zoom = useToolbarItem({
72808
73095
  type: "dropdown",
@@ -72816,6 +73103,9 @@ ${style2}
72816
73103
  isWide: true,
72817
73104
  inlineTextInputVisible: false,
72818
73105
  hasInlineTextInput: true,
73106
+ attributes: {
73107
+ ariaLabel: "Zoom"
73108
+ },
72819
73109
  options: [
72820
73110
  { label: "50%", key: 0.5, props: { "data-item": "btn-zoom-option" } },
72821
73111
  { label: "75%", key: 0.75, props: { "data-item": "btn-zoom-option" } },
@@ -72838,6 +73128,9 @@ ${style2}
72838
73128
  command: "undo",
72839
73129
  icon: toolbarIcons2.undo,
72840
73130
  group: "left",
73131
+ attributes: {
73132
+ ariaLabel: "Undo"
73133
+ },
72841
73134
  onDeactivate: () => {
72842
73135
  undo2.disabled.value = !superToolbar.undoDepth;
72843
73136
  }
@@ -72850,6 +73143,9 @@ ${style2}
72850
73143
  command: "redo",
72851
73144
  icon: toolbarIcons2.redo,
72852
73145
  group: "left",
73146
+ attributes: {
73147
+ ariaLabel: "Redo"
73148
+ },
72853
73149
  onDeactivate: () => {
72854
73150
  redo2.disabled.value = !superToolbar.redoDepth;
72855
73151
  }
@@ -72861,7 +73157,10 @@ ${style2}
72861
73157
  tooltip: toolbarTexts2.trackChanges,
72862
73158
  command: "toggleTrackChanges",
72863
73159
  icon: toolbarIcons2.trackChanges,
72864
- group: "left"
73160
+ group: "left",
73161
+ attributes: {
73162
+ ariaLabel: "Track changes"
73163
+ }
72865
73164
  });
72866
73165
  const acceptTrackedChangeBySelection = useToolbarItem({
72867
73166
  type: "button",
@@ -72870,7 +73169,10 @@ ${style2}
72870
73169
  tooltip: toolbarTexts2.trackChangesAccept,
72871
73170
  command: "acceptTrackedChangeBySelection",
72872
73171
  icon: toolbarIcons2.trackChangesAccept,
72873
- group: "left"
73172
+ group: "left",
73173
+ attributes: {
73174
+ ariaLabel: "Accept tracked changes"
73175
+ }
72874
73176
  });
72875
73177
  const rejectTrackedChangeOnSelection = useToolbarItem({
72876
73178
  type: "button",
@@ -72879,7 +73181,10 @@ ${style2}
72879
73181
  tooltip: toolbarTexts2.trackChangesReject,
72880
73182
  command: "rejectTrackedChangeOnSelection",
72881
73183
  icon: toolbarIcons2.trackChangesReject,
72882
- group: "left"
73184
+ group: "left",
73185
+ attributes: {
73186
+ ariaLabel: "Reject tracked changes"
73187
+ }
72883
73188
  });
72884
73189
  const toggleTrackChangesOriginal = useToolbarItem({
72885
73190
  type: "button",
@@ -72888,7 +73193,10 @@ ${style2}
72888
73193
  tooltip: toolbarTexts2.trackChangesOriginal,
72889
73194
  command: "toggleTrackChangesShowOriginal",
72890
73195
  icon: toolbarIcons2.trackChangesOriginal,
72891
- group: "left"
73196
+ group: "left",
73197
+ attributes: {
73198
+ ariaLabel: "Toggle tracked changes show original"
73199
+ }
72892
73200
  });
72893
73201
  const toggleTrackChangesFinal = useToolbarItem({
72894
73202
  type: "button",
@@ -72897,14 +73205,20 @@ ${style2}
72897
73205
  tooltip: toolbarTexts2.trackChangesFinal,
72898
73206
  command: "toggleTrackChangesShowFinal",
72899
73207
  icon: toolbarIcons2.trackChangesFinal,
72900
- group: "left"
73208
+ group: "left",
73209
+ attributes: {
73210
+ ariaLabel: "Toggle tracked changes show final"
73211
+ }
72901
73212
  });
72902
73213
  const clearFormatting = useToolbarItem({
72903
73214
  type: "button",
72904
73215
  name: "clearFormatting",
72905
73216
  command: "clearFormat",
72906
73217
  tooltip: toolbarTexts2.clearFormatting,
72907
- icon: toolbarIcons2.clearFormatting
73218
+ icon: toolbarIcons2.clearFormatting,
73219
+ attributes: {
73220
+ ariaLabel: "Clear formatting"
73221
+ }
72908
73222
  });
72909
73223
  [
72910
73224
  bold,
@@ -72920,7 +73234,10 @@ ${style2}
72920
73234
  name: "copyFormat",
72921
73235
  tooltip: toolbarTexts2.copyFormat,
72922
73236
  icon: toolbarIcons2.copyFormat,
72923
- command: "copyFormat"
73237
+ command: "copyFormat",
73238
+ attributes: {
73239
+ ariaLabel: "Copy formatting"
73240
+ }
72924
73241
  });
72925
73242
  const getDocumentOptionsAfterRole = (role2, documentOptions2) => {
72926
73243
  if (role2 === "editor") return documentOptions2;
@@ -72949,7 +73266,8 @@ ${style2}
72949
73266
  disabled: role !== "editor",
72950
73267
  attributes: {
72951
73268
  dropdownPosition: "right",
72952
- className: "toolbar-item--doc-mode"
73269
+ className: "toolbar-item--doc-mode",
73270
+ ariaLabel: "Document mode"
72953
73271
  },
72954
73272
  options: [
72955
73273
  {
@@ -72996,7 +73314,10 @@ ${style2}
72996
73314
  name: "pageBreakTool",
72997
73315
  command: "insertPageBreak",
72998
73316
  icon: toolbarIcons2.pageBreak,
72999
- tooltip: toolbarTexts2.pageBreak
73317
+ tooltip: toolbarTexts2.pageBreak,
73318
+ attributes: {
73319
+ ariaLabel: "Page break"
73320
+ }
73000
73321
  });
73001
73322
  const controlSizes = /* @__PURE__ */ new Map([
73002
73323
  ["separator", 20],
@@ -73014,7 +73335,10 @@ ${style2}
73014
73335
  name: "ruler",
73015
73336
  command: "toggleRuler",
73016
73337
  icon: toolbarIcons2.ruler,
73017
- tooltip: toolbarTexts2.ruler
73338
+ tooltip: toolbarTexts2.ruler,
73339
+ attributes: {
73340
+ ariaLabel: "Ruler"
73341
+ }
73018
73342
  });
73019
73343
  const selectedLinkedStyle = ref$1(null);
73020
73344
  const linkedStyles = useToolbarItem({
@@ -73030,7 +73354,8 @@ ${style2}
73030
73354
  suppressActiveHighlight: true,
73031
73355
  disabled: false,
73032
73356
  attributes: {
73033
- className: "toolbar-item--linked-styles"
73357
+ className: "toolbar-item--linked-styles",
73358
+ ariaLabel: "Linked styles"
73034
73359
  },
73035
73360
  options: [
73036
73361
  {
@@ -73077,6 +73402,9 @@ ${style2}
73077
73402
  command: "setLineHeight",
73078
73403
  dropdownValueKey: "key",
73079
73404
  selectedValue: "1",
73405
+ attributes: {
73406
+ ariaLabel: "Line height"
73407
+ },
73080
73408
  options: [
73081
73409
  { label: "1,0", key: "1", icon: () => renderIcon("1", lineHeight2.selectedValue), props: { "data-item": "btn-lineHeight-option" } },
73082
73410
  { label: "1,15", key: "1.15", icon: () => renderIcon("1.15", lineHeight2.selectedValue), props: { "data-item": "btn-lineHeight-option" } },
@@ -74230,7 +74558,7 @@ ${style2}
74230
74558
  key: 1,
74231
74559
  class: "placeholder-editor"
74232
74560
  };
74233
- const _hoisted_3$9 = { class: "placeholder-title" };
74561
+ const _hoisted_3$8 = { class: "placeholder-title" };
74234
74562
  const _sfc_main$2$1 = {
74235
74563
  __name: "SuperEditor",
74236
74564
  props: {
@@ -74394,11 +74722,12 @@ ${style2}
74394
74722
  createBaseVNode("div", {
74395
74723
  ref_key: "editorElem",
74396
74724
  ref: editorElem,
74397
- class: "editor-element super-editor__element"
74725
+ class: "editor-element super-editor__element",
74726
+ role: "presentation"
74398
74727
  }, null, 512)
74399
74728
  ], 544),
74400
74729
  !editorReady.value ? (openBlock(), createElementBlock("div", _hoisted_2$b, [
74401
- createBaseVNode("div", _hoisted_3$9, [
74730
+ createBaseVNode("div", _hoisted_3$8, [
74402
74731
  createVNode(unref(NSkeleton), {
74403
74732
  text: "",
74404
74733
  style: { "width": "60%" }
@@ -74446,7 +74775,7 @@ ${style2}
74446
74775
  };
74447
74776
  }
74448
74777
  };
74449
- const SuperEditor = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$1, [["__scopeId", "data-v-ff8f86f4"]]);
74778
+ const SuperEditor = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$1, [["__scopeId", "data-v-f27b7c30"]]);
74450
74779
  const _hoisted_1$h = ["innerHTML"];
74451
74780
  const _sfc_main$i = {
74452
74781
  __name: "SuperInput",
@@ -87631,7 +87960,8 @@ ${style2}
87631
87960
  onClick: withModifiers(setFocus, ["stop", "prevent"]),
87632
87961
  style: normalizeStyle(getSidebarCommentStyle.value),
87633
87962
  ref_key: "commentDialogElement",
87634
- ref: commentDialogElement
87963
+ ref: commentDialogElement,
87964
+ role: "dialog"
87635
87965
  }, [
87636
87966
  shouldShowInternalExternal.value ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
87637
87967
  createVNode(InternalDropdown, {
@@ -87727,7 +88057,7 @@ ${style2}
87727
88057
  };
87728
88058
  }
87729
88059
  };
87730
- const CommentDialog = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-92061859"]]);
88060
+ const CommentDialog = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-ff48cd67"]]);
87731
88061
  const _hoisted_1$b = { class: "comments-list" };
87732
88062
  const _hoisted_2$6 = { key: 0 };
87733
88063
  const _hoisted_3$3 = { class: "comment-item" };
@@ -88895,6 +89225,16 @@ ${style2}
88895
89225
  handleAiToolClick
88896
89226
  };
88897
89227
  }
89228
+ const isHighContrastMode = ref$1(false);
89229
+ function useHighContrastMode() {
89230
+ const setHighContrastMode = (value) => {
89231
+ isHighContrastMode.value = value;
89232
+ };
89233
+ return {
89234
+ isHighContrastMode,
89235
+ setHighContrastMode
89236
+ };
89237
+ }
88898
89238
  const _hoisted_1 = ["innerHTML"];
88899
89239
  const _hoisted_2 = { class: "superdoc__document document" };
88900
89240
  const _hoisted_3 = {
@@ -88936,6 +89276,7 @@ ${style2}
88936
89276
  const { showAddComment, handleEditorLocationsUpdate, handleTrackedChangeUpdate } = commentsStore;
88937
89277
  const { proxy } = getCurrentInstance();
88938
89278
  commentsStore.proxy = proxy;
89279
+ const { isHighContrastMode: isHighContrastMode2 } = useHighContrastMode();
88939
89280
  const layers = ref$1(null);
88940
89281
  const commentsLayer = ref$1(null);
88941
89282
  const toolsMenuPosition = reactive({ top: null, right: "-25px", zIndex: 101 });
@@ -89291,12 +89632,13 @@ ${style2}
89291
89632
  return (_ctx, _cache) => {
89292
89633
  const _directive_click_outside = resolveDirective("click-outside");
89293
89634
  return openBlock(), createElementBlock("div", {
89294
- class: normalizeClass(["superdoc", { "superdoc--with-sidebar": showCommentsSidebar.value }])
89635
+ class: normalizeClass(["superdoc", { "superdoc--with-sidebar": showCommentsSidebar.value, "high-contrast": unref(isHighContrastMode2) }])
89295
89636
  }, [
89296
89637
  createBaseVNode("div", {
89297
89638
  class: "superdoc__layers layers",
89298
89639
  ref_key: "layers",
89299
- ref: layers
89640
+ ref: layers,
89641
+ role: "group"
89300
89642
  }, [
89301
89643
  showToolsFloatingMenu.value ? (openBlock(), createElementBlock("div", {
89302
89644
  key: 0,
@@ -89431,7 +89773,7 @@ ${style2}
89431
89773
  };
89432
89774
  }
89433
89775
  };
89434
- const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e620aa2b"]]);
89776
+ const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fc218ba5"]]);
89435
89777
  const createSuperdocVueApp = () => {
89436
89778
  const app = createApp(App);
89437
89779
  const pinia = createPinia();
@@ -89439,7 +89781,8 @@ ${style2}
89439
89781
  app.directive("click-outside", vClickOutside);
89440
89782
  const superdocStore = useSuperdocStore();
89441
89783
  const commentsStore = useCommentsStore();
89442
- return { app, pinia, superdocStore, commentsStore };
89784
+ const highContrastModeStore = useHighContrastMode();
89785
+ return { app, pinia, superdocStore, commentsStore, highContrastModeStore };
89443
89786
  };
89444
89787
  const createDownload = (blob, name, extension) => {
89445
89788
  const url = URL.createObjectURL(blob);
@@ -89529,7 +89872,7 @@ ${style2}
89529
89872
  this.config.colors = shuffleArray(this.config.colors);
89530
89873
  this.userColorMap = /* @__PURE__ */ new Map();
89531
89874
  this.colorIndex = 0;
89532
- this.version = "0.12.31";
89875
+ this.version = "0.12.33";
89533
89876
  console.debug("🦋 [superdoc] Using SuperDoc version:", this.version);
89534
89877
  this.superdocId = config.superdocId || v4();
89535
89878
  this.colors = this.config.colors;
@@ -89606,7 +89949,7 @@ ${style2}
89606
89949
  }
89607
89950
  }
89608
89951
  #initVueApp() {
89609
- const { app, pinia, superdocStore, commentsStore } = createSuperdocVueApp();
89952
+ const { app, pinia, superdocStore, commentsStore, highContrastModeStore } = createSuperdocVueApp();
89610
89953
  this.app = app;
89611
89954
  this.pinia = pinia;
89612
89955
  this.app.config.globalProperties.$config = this.config;
@@ -89614,6 +89957,7 @@ ${style2}
89614
89957
  this.app.config.globalProperties.$superdoc = this;
89615
89958
  this.superdocStore = superdocStore;
89616
89959
  this.commentsStore = commentsStore;
89960
+ this.highContrastModeStore = highContrastModeStore;
89617
89961
  this.superdocStore.init(this.config);
89618
89962
  this.commentsStore.init(this.config.modules.comments);
89619
89963
  }
@@ -90085,7 +90429,18 @@ ${style2}
90085
90429
  });
90086
90430
  }
90087
90431
  }
90432
+ /**
90433
+ * Set the high contrast mode
90434
+ * @param {boolean} isHighContrast
90435
+ * @returns {void}
90436
+ */
90437
+ setHighContrastMode(isHighContrast) {
90438
+ if (!this.activeEditor) return;
90439
+ this.activeEditor.setHighContrastMode(isHighContrast);
90440
+ this.highContrastModeStore.setHighContrastMode(isHighContrast);
90441
+ }
90088
90442
  }
90443
+ exports2.AnnotatorHelpers = AnnotatorHelpers;
90089
90444
  exports2.BlankDOCX = BlankDOCX;
90090
90445
  exports2.DOCX = DOCX;
90091
90446
  exports2.Editor = Editor;