@harbour-enterprises/superdoc 0.6.6 → 0.6.8

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 (34) hide show
  1. package/dist/chunks/{super-editor.es-BL0SUzqA.js → super-editor.es-C2Mpe7zw.js} +371 -223
  2. package/dist/chunks/{super-editor.es-BL0SUzqA.js.map → super-editor.es-C2Mpe7zw.js.map} +1 -1
  3. package/dist/style.css +63 -52
  4. package/dist/super-editor/chunks/{converter-Db6kOZVK.js → converter-D38BagOs.js} +54 -7
  5. package/dist/super-editor/chunks/{converter-Db6kOZVK.js.map → converter-D38BagOs.js.map} +1 -1
  6. package/dist/super-editor/chunks/{docx-zipper-CU9-L2k_.js → docx-zipper-OU0T3wnQ.js} +2 -2
  7. package/dist/super-editor/chunks/{docx-zipper-CU9-L2k_.js.map → docx-zipper-OU0T3wnQ.js.map} +1 -1
  8. package/dist/super-editor/chunks/{editor-DDFPZgN6.js → editor-DFibABN8.js} +5 -5
  9. package/dist/super-editor/chunks/{editor-DDFPZgN6.js.map → editor-DFibABN8.js.map} +1 -1
  10. package/dist/super-editor/chunks/{toolbar-B1D1-QVR.js → toolbar-D5mDT387.js} +12 -6
  11. package/dist/super-editor/chunks/toolbar-D5mDT387.js.map +1 -0
  12. package/dist/super-editor/components/toolbar/color-dropdown-helpers.d.ts +15 -0
  13. package/dist/super-editor/components/toolbar/color-dropdown-helpers.d.ts.map +1 -0
  14. package/dist/super-editor/components/toolbar/defaultItems.d.ts.map +1 -1
  15. package/dist/super-editor/components/toolbar/super-toolbar.d.ts +1 -0
  16. package/dist/super-editor/components/toolbar/super-toolbar.d.ts.map +1 -1
  17. package/dist/super-editor/components/toolbar/toolbarIcons.d.ts +1 -0
  18. package/dist/super-editor/converter.es.js +1 -1
  19. package/dist/super-editor/core/super-converter/SuperConverter.d.ts +1 -0
  20. package/dist/super-editor/core/super-converter/SuperConverter.d.ts.map +1 -1
  21. package/dist/super-editor/core/super-converter/exporter.d.ts.map +1 -1
  22. package/dist/super-editor/core/super-converter/helpers.d.ts +2 -0
  23. package/dist/super-editor/core/super-converter/helpers.d.ts.map +1 -1
  24. package/dist/super-editor/docx-zipper.es.js +2 -2
  25. package/dist/super-editor/editor.es.js +3 -3
  26. package/dist/super-editor/file-zipper.es.js +1 -1
  27. package/dist/super-editor/style.css +63 -52
  28. package/dist/super-editor/super-editor.es.js +303 -208
  29. package/dist/super-editor/super-editor.es.js.map +1 -1
  30. package/dist/super-editor/toolbar.es.js +2 -2
  31. package/dist/super-editor.es.js +1 -1
  32. package/dist/superdoc.es.js +3 -3
  33. package/package.json +1 -1
  34. package/dist/super-editor/chunks/toolbar-B1D1-QVR.js.map +0 -1
@@ -8,14 +8,14 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
8
8
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
9
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
10
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
11
- var _interceptedCommands, _SuperToolbar_instances, makeToolbarItems_fn, initDefaultFonts_fn, deactivateAll_fn, updateToolbarHistory_fn, runCommandWithArgumentOnly_fn;
12
- import { _ as _export_sfc, a as getQuickFormatList, b as generateLinkedStyleString, I as ImagePlaceholderPluginKey, f as findPlaceholder, c as findParentNode, d as getActiveFormatting, u as undoDepth, r as redoDepth, E as Editor, e as getStarterExtensions, P as Placeholder, h as getRichTextExtensions } from "./chunks/editor-DDFPZgN6.js";
13
- import { j, l, i, k } from "./chunks/editor-DDFPZgN6.js";
14
- import { J as getDefaultExportFromCjs, v as v4, T as TextSelection, L as vClickOutside } from "./chunks/converter-Db6kOZVK.js";
15
- import { B } from "./chunks/converter-Db6kOZVK.js";
16
- import { ref, computed, onMounted, createElementBlock, openBlock, Fragment, renderList, withModifiers, createElementVNode, createCommentVNode, normalizeStyle, unref, getCurrentInstance, watch, withDirectives, withKeys, normalizeClass, vModelText, createTextVNode, toDisplayString, h, createApp, reactive, onUnmounted, shallowRef, onBeforeUnmount, createBlock, createVNode } from "vue";
17
- import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, N as NSkeleton } from "./chunks/toolbar-B1D1-QVR.js";
18
- import { D } from "./chunks/docx-zipper-CU9-L2k_.js";
11
+ var _interceptedCommands, _SuperToolbar_instances, makeToolbarItems_fn, initDefaultFonts_fn, updateHighlightColors_fn, deactivateAll_fn, updateToolbarHistory_fn, runCommandWithArgumentOnly_fn;
12
+ import { _ as _export_sfc, a as getQuickFormatList, b as generateLinkedStyleString, I as ImagePlaceholderPluginKey, f as findPlaceholder, c as findParentNode, d as getActiveFormatting, u as undoDepth, r as redoDepth, E as Editor, e as getStarterExtensions, P as Placeholder, h as getRichTextExtensions } from "./chunks/editor-DFibABN8.js";
13
+ import { j, l, i, k } from "./chunks/editor-DFibABN8.js";
14
+ import { J as getDefaultExportFromCjs, v as v4, T as TextSelection, L as vClickOutside } from "./chunks/converter-D38BagOs.js";
15
+ import { B } from "./chunks/converter-D38BagOs.js";
16
+ import { ref, createElementBlock, openBlock, createElementVNode, unref, getCurrentInstance, computed, watch, onMounted, createCommentVNode, withDirectives, withKeys, normalizeClass, withModifiers, vModelText, createTextVNode, toDisplayString, Fragment, renderList, normalizeStyle, createVNode, h, createApp, reactive, onUnmounted, shallowRef, onBeforeUnmount, createBlock } from "vue";
17
+ import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, N as NSkeleton } from "./chunks/toolbar-D5mDT387.js";
18
+ import { D } from "./chunks/docx-zipper-OU0T3wnQ.js";
19
19
  import { createZip } from "./file-zipper.es.js";
20
20
  var eventemitter3 = { exports: {} };
21
21
  (function(module) {
@@ -316,81 +316,12 @@ const useToolbarItem = (options) => {
316
316
  onDeactivate
317
317
  };
318
318
  };
319
- const _hoisted_1$7 = { class: "option-grid-ctn" };
320
- const _hoisted_2$5 = ["onClick"];
319
+ const _hoisted_1$8 = { class: "alignment-buttons" };
320
+ const _hoisted_2$5 = ["innerHTML"];
321
321
  const _hoisted_3$4 = ["innerHTML"];
322
- const _hoisted_4$3 = ["innerHTML"];
323
- const _sfc_main$8 = {
324
- __name: "IconGrid",
325
- props: {
326
- icons: {
327
- type: Array,
328
- required: true
329
- },
330
- activeColor: {
331
- type: Object,
332
- required: false
333
- }
334
- },
335
- emits: ["select", "clickoutside"],
336
- setup(__props, { emit: __emit }) {
337
- const emit = __emit;
338
- const props = __props;
339
- const handleClick = (option) => {
340
- emit("select", option.value);
341
- };
342
- const isActive = computed(() => (option) => {
343
- if (!props.activeColor.value) return false;
344
- return props.activeColor.value === option.value;
345
- });
346
- const getCheckStyle = (color, optionIndex) => {
347
- const lightColors = ["#FFFFFF", "#FAFF09"];
348
- if (optionIndex === 5 || lightColors.includes(color)) return { color: "#000" };
349
- return { color: "#FFF" };
350
- };
351
- onMounted(() => {
352
- const isMatrix = props.icons.every((row) => Array.isArray(row));
353
- if (!isMatrix) throw new Error("icon props must be 2d array");
354
- });
355
- return (_ctx, _cache) => {
356
- return openBlock(), createElementBlock("div", _hoisted_1$7, [
357
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.icons, (row, rowIndex) => {
358
- return openBlock(), createElementBlock("div", {
359
- class: "option-row",
360
- key: rowIndex
361
- }, [
362
- (openBlock(true), createElementBlock(Fragment, null, renderList(row, (option, optionIndex) => {
363
- return openBlock(), createElementBlock("div", {
364
- class: "option",
365
- key: optionIndex,
366
- onClick: withModifiers(($event) => handleClick(option), ["stop", "prevent"])
367
- }, [
368
- createElementVNode("div", {
369
- class: "option__icon",
370
- innerHTML: option.icon,
371
- style: normalizeStyle(option.style)
372
- }, null, 12, _hoisted_3$4),
373
- isActive.value(option) ? (openBlock(), createElementBlock("div", {
374
- key: 0,
375
- class: "option__check",
376
- innerHTML: unref(toolbarIcons).colorOptionCheck,
377
- style: normalizeStyle(getCheckStyle(option.value, optionIndex))
378
- }, null, 12, _hoisted_4$3)) : createCommentVNode("", true)
379
- ], 8, _hoisted_2$5);
380
- }), 128))
381
- ]);
382
- }), 128))
383
- ]);
384
- };
385
- }
386
- };
387
- const IconGrid = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-c5c5fefc"]]);
388
- const _hoisted_1$6 = { class: "alignment-buttons" };
389
- const _hoisted_2$4 = ["innerHTML"];
390
- const _hoisted_3$3 = ["innerHTML"];
391
322
  const _hoisted_4$2 = ["innerHTML"];
392
323
  const _hoisted_5$2 = ["innerHTML"];
393
- const _sfc_main$7 = {
324
+ const _sfc_main$9 = {
394
325
  __name: "AlignmentButtons",
395
326
  emits: ["select"],
396
327
  setup(__props, { emit: __emit }) {
@@ -399,17 +330,17 @@ const _sfc_main$7 = {
399
330
  emit("select", alignment2);
400
331
  };
401
332
  return (_ctx, _cache) => {
402
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
333
+ return openBlock(), createElementBlock("div", _hoisted_1$8, [
403
334
  createElementVNode("div", {
404
335
  class: "button-icon",
405
336
  onClick: _cache[0] || (_cache[0] = ($event) => select("left")),
406
337
  innerHTML: unref(toolbarIcons).alignLeft
407
- }, null, 8, _hoisted_2$4),
338
+ }, null, 8, _hoisted_2$5),
408
339
  createElementVNode("div", {
409
340
  class: "button-icon",
410
341
  onClick: _cache[1] || (_cache[1] = ($event) => select("center")),
411
342
  innerHTML: unref(toolbarIcons).alignCenter
412
- }, null, 8, _hoisted_3$3),
343
+ }, null, 8, _hoisted_3$4),
413
344
  createElementVNode("div", {
414
345
  class: "button-icon",
415
346
  onClick: _cache[2] || (_cache[2] = ($event) => select("right")),
@@ -424,13 +355,13 @@ const _sfc_main$7 = {
424
355
  };
425
356
  }
426
357
  };
427
- const AlignmentButtons = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-d6fae878"]]);
428
- const _hoisted_1$5 = { class: "link-input-ctn" };
429
- const _hoisted_2$3 = {
358
+ const AlignmentButtons = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-d6fae878"]]);
359
+ const _hoisted_1$7 = { class: "link-input-ctn" };
360
+ const _hoisted_2$4 = {
430
361
  key: 0,
431
362
  class: "link-title"
432
363
  };
433
- const _hoisted_3$2 = {
364
+ const _hoisted_3$3 = {
434
365
  key: 1,
435
366
  class: "link-title"
436
367
  };
@@ -449,7 +380,7 @@ const _hoisted_12 = {
449
380
  key: 4,
450
381
  class: "input-row go-to-anchor clickable"
451
382
  };
452
- const _sfc_main$6 = {
383
+ const _sfc_main$8 = {
453
384
  __name: "LinkInput",
454
385
  props: {
455
386
  initialText: {
@@ -528,8 +459,8 @@ const _sfc_main$6 = {
528
459
  if (props.showInput) focusInput();
529
460
  });
530
461
  return (_ctx, _cache) => {
531
- return openBlock(), createElementBlock("div", _hoisted_1$5, [
532
- !__props.href ? (openBlock(), createElementBlock("div", _hoisted_2$3, "Add link")) : isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_3$2, "Page anchor")) : (openBlock(), createElementBlock("div", _hoisted_4$1, "Edit link")),
462
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [
463
+ !__props.href ? (openBlock(), createElementBlock("div", _hoisted_2$4, "Add link")) : isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_3$3, "Page anchor")) : (openBlock(), createElementBlock("div", _hoisted_4$1, "Edit link")),
533
464
  __props.showInput && !isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_5$1, [
534
465
  createElementVNode("div", _hoisted_6$1, [
535
466
  createElementVNode("div", {
@@ -581,15 +512,15 @@ const _sfc_main$6 = {
581
512
  };
582
513
  }
583
514
  };
584
- const LinkInput = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-6990d5b2"]]);
585
- const _hoisted_1$4 = { class: "document-mode" };
586
- const _hoisted_2$2 = ["onClick"];
587
- const _hoisted_3$1 = { class: "document-mode-column icon-column" };
515
+ const LinkInput = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-6990d5b2"]]);
516
+ const _hoisted_1$6 = { class: "document-mode" };
517
+ const _hoisted_2$3 = ["onClick"];
518
+ const _hoisted_3$2 = { class: "document-mode-column icon-column" };
588
519
  const _hoisted_4 = ["innerHTML"];
589
520
  const _hoisted_5 = { class: "document-mode-column text-column" };
590
521
  const _hoisted_6 = { class: "document-mode-type" };
591
522
  const _hoisted_7 = { class: "document-mode-description" };
592
- const _sfc_main$5 = {
523
+ const _sfc_main$7 = {
593
524
  __name: "DocumentMode",
594
525
  props: {
595
526
  options: {
@@ -603,13 +534,13 @@ const _sfc_main$5 = {
603
534
  emit("select", item);
604
535
  };
605
536
  return (_ctx, _cache) => {
606
- return openBlock(), createElementBlock("div", _hoisted_1$4, [
537
+ return openBlock(), createElementBlock("div", _hoisted_1$6, [
607
538
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
608
539
  return openBlock(), createElementBlock("div", {
609
540
  class: normalizeClass(["option-item", { disabled: option.disabled }]),
610
541
  onClick: ($event) => handleClick(option)
611
542
  }, [
612
- createElementVNode("div", _hoisted_3$1, [
543
+ createElementVNode("div", _hoisted_3$2, [
613
544
  createElementVNode("div", {
614
545
  class: "icon-column__icon",
615
546
  innerHTML: option.icon
@@ -619,19 +550,19 @@ const _sfc_main$5 = {
619
550
  createElementVNode("div", _hoisted_6, toDisplayString(option.label), 1),
620
551
  createElementVNode("div", _hoisted_7, toDisplayString(option.description), 1)
621
552
  ])
622
- ], 10, _hoisted_2$2);
553
+ ], 10, _hoisted_2$3);
623
554
  }), 256))
624
555
  ]);
625
556
  };
626
557
  }
627
558
  };
628
- const DocumentMode = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-f86e1477"]]);
629
- const _hoisted_1$3 = {
559
+ const DocumentMode = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-f86e1477"]]);
560
+ const _hoisted_1$5 = {
630
561
  key: 0,
631
562
  class: "linked-style-buttons"
632
563
  };
633
- const _hoisted_2$1 = ["onClick"];
634
- const _sfc_main$4 = {
564
+ const _hoisted_2$2 = ["onClick"];
565
+ const _sfc_main$6 = {
635
566
  __name: "LinkedStyle",
636
567
  props: {
637
568
  editor: {
@@ -647,7 +578,7 @@ const _sfc_main$4 = {
647
578
  emit("select", style);
648
579
  };
649
580
  return (_ctx, _cache) => {
650
- return props.editor ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
581
+ return props.editor ? (openBlock(), createElementBlock("div", _hoisted_1$5, [
651
582
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getQuickFormatList)(__props.editor), (style) => {
652
583
  return openBlock(), createElementBlock("div", {
653
584
  class: "style-item",
@@ -657,13 +588,229 @@ const _sfc_main$4 = {
657
588
  class: "style-name",
658
589
  style: normalizeStyle(unref(generateLinkedStyleString)(style, null, false))
659
590
  }, toDisplayString(style.definition.attrs.name), 5)
660
- ], 8, _hoisted_2$1);
591
+ ], 8, _hoisted_2$2);
661
592
  }), 256))
662
593
  ])) : createCommentVNode("", true);
663
594
  };
664
595
  }
665
596
  };
666
- const LinkedStyle = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-97e3296a"]]);
597
+ const LinkedStyle = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-97e3296a"]]);
598
+ const _hoisted_1$4 = ["onClick"];
599
+ const _hoisted_2$1 = ["innerHTML"];
600
+ const _hoisted_3$1 = ["innerHTML"];
601
+ const _sfc_main$5 = {
602
+ __name: "IconGridRow",
603
+ props: {
604
+ icons: {
605
+ type: Array,
606
+ required: true
607
+ },
608
+ activeColor: {
609
+ type: Object,
610
+ required: false
611
+ }
612
+ },
613
+ emits: ["select"],
614
+ setup(__props, { emit: __emit }) {
615
+ const emit = __emit;
616
+ const props = __props;
617
+ const isActive = computed(() => (option) => {
618
+ if (!props.activeColor.value) return false;
619
+ return props.activeColor.value.toUpperCase() === option.value;
620
+ });
621
+ const getCheckStyle = (color, optionIndex) => {
622
+ const lightColors = ["#FFFFFF", "#FAFF09"];
623
+ if (optionIndex === 5 || lightColors.includes(color)) return { color: "#000" };
624
+ return { color: "#FFF" };
625
+ };
626
+ const handleClick = (option) => {
627
+ emit("select", option.value);
628
+ };
629
+ onMounted(() => {
630
+ const isMatrix = props.icons.every((row) => Array.isArray(row));
631
+ if (!isMatrix) throw new Error("icon props must be 2d array");
632
+ });
633
+ return (_ctx, _cache) => {
634
+ return openBlock(true), createElementBlock(Fragment, null, renderList(__props.icons, (row, rowIndex) => {
635
+ return openBlock(), createElementBlock("div", {
636
+ class: "option-row",
637
+ key: rowIndex
638
+ }, [
639
+ (openBlock(true), createElementBlock(Fragment, null, renderList(row, (option, optionIndex) => {
640
+ return openBlock(), createElementBlock("div", {
641
+ class: "option",
642
+ key: optionIndex,
643
+ onClick: withModifiers(($event) => handleClick(option), ["stop", "prevent"])
644
+ }, [
645
+ createElementVNode("div", {
646
+ class: "option__icon",
647
+ innerHTML: option.icon,
648
+ style: normalizeStyle(option.style)
649
+ }, null, 12, _hoisted_2$1),
650
+ isActive.value(option) ? (openBlock(), createElementBlock("div", {
651
+ key: 0,
652
+ class: "option__check",
653
+ innerHTML: unref(toolbarIcons).colorOptionCheck,
654
+ style: normalizeStyle(getCheckStyle(option.value, optionIndex))
655
+ }, null, 12, _hoisted_3$1)) : createCommentVNode("", true)
656
+ ], 8, _hoisted_1$4);
657
+ }), 128))
658
+ ]);
659
+ }), 128);
660
+ };
661
+ }
662
+ };
663
+ const IconGridRow = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-6a2a9a40"]]);
664
+ const _hoisted_1$3 = { class: "option-grid-ctn" };
665
+ const _sfc_main$4 = {
666
+ __name: "IconGrid",
667
+ props: {
668
+ icons: {
669
+ type: Array,
670
+ required: true
671
+ },
672
+ customIcons: {
673
+ type: Array,
674
+ required: false
675
+ },
676
+ activeColor: {
677
+ type: Object,
678
+ required: false
679
+ }
680
+ },
681
+ emits: ["select", "clickoutside"],
682
+ setup(__props, { emit: __emit }) {
683
+ const emit = __emit;
684
+ const handleSelect = (option) => {
685
+ emit("select", option);
686
+ };
687
+ return (_ctx, _cache) => {
688
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
689
+ createVNode(IconGridRow, {
690
+ icons: __props.icons,
691
+ "active-color": __props.activeColor,
692
+ onSelect: handleSelect
693
+ }, null, 8, ["icons", "active-color"]),
694
+ __props.customIcons.flat().length ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
695
+ _cache[0] || (_cache[0] = createElementVNode("span", { class: "option-grid-ctn__subtitle" }, "Custom colors", -1)),
696
+ createVNode(IconGridRow, {
697
+ icons: __props.customIcons,
698
+ "active-color": __props.activeColor,
699
+ onSelect: handleSelect
700
+ }, null, 8, ["icons", "active-color"])
701
+ ], 64)) : createCommentVNode("", true)
702
+ ]);
703
+ };
704
+ }
705
+ };
706
+ const IconGrid = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-fa2949d8"]]);
707
+ const closeDropdown$1 = (dropdown) => {
708
+ dropdown.expand.value = false;
709
+ };
710
+ const makeColorOption = (color, label = null) => {
711
+ return {
712
+ label,
713
+ icon: toolbarIcons.colorOption,
714
+ value: color,
715
+ style: {
716
+ color,
717
+ boxShadow: "0 0 5px 1px rgba(0, 0, 0, 0.1)",
718
+ borderRadius: "50%"
719
+ }
720
+ };
721
+ };
722
+ const renderColorOptions = (superToolbar, button, customIcons = []) => {
723
+ const handleSelect = (e) => {
724
+ button.iconColor.value = e;
725
+ superToolbar.emitCommand({ item: button, argument: e });
726
+ closeDropdown$1(button);
727
+ };
728
+ return h("div", {}, [
729
+ h(IconGrid, {
730
+ icons,
731
+ customIcons,
732
+ activeColor: button.iconColor,
733
+ onSelect: handleSelect
734
+ })
735
+ ]);
736
+ };
737
+ const icons = [
738
+ [
739
+ makeColorOption("#111111"),
740
+ makeColorOption("#333333"),
741
+ makeColorOption("#5C5C5C"),
742
+ makeColorOption("#858585"),
743
+ makeColorOption("#ADADAD"),
744
+ makeColorOption("#D6D6D6"),
745
+ makeColorOption("#FFFFFF")
746
+ ],
747
+ [
748
+ makeColorOption("#860028"),
749
+ makeColorOption("#D2003F"),
750
+ makeColorOption("#DB3365"),
751
+ makeColorOption("#E4668C"),
752
+ makeColorOption("#ED99B2"),
753
+ makeColorOption("#F6CCD9"),
754
+ makeColorOption("#FF004D")
755
+ ],
756
+ [
757
+ makeColorOption("#83015E"),
758
+ makeColorOption("#CD0194"),
759
+ makeColorOption("#D734A9"),
760
+ makeColorOption("#E167BF"),
761
+ makeColorOption("#EB99D4"),
762
+ makeColorOption("#F5CCEA"),
763
+ makeColorOption("#FF00A8")
764
+ ],
765
+ [
766
+ makeColorOption("#8E220A"),
767
+ makeColorOption("#DD340F"),
768
+ makeColorOption("#E45C3F"),
769
+ makeColorOption("#EB856F"),
770
+ makeColorOption("#F1AE9F"),
771
+ makeColorOption("#F8D6CF"),
772
+ makeColorOption("#FF7A00")
773
+ ],
774
+ [
775
+ makeColorOption("#947D02"),
776
+ makeColorOption("#E7C302"),
777
+ makeColorOption("#ECCF35"),
778
+ makeColorOption("#F1DB67"),
779
+ makeColorOption("#F5E79A"),
780
+ makeColorOption("#FAF3CC"),
781
+ makeColorOption("#FAFF09")
782
+ ],
783
+ [
784
+ makeColorOption("#055432"),
785
+ makeColorOption("#07834F"),
786
+ makeColorOption("#399C72"),
787
+ makeColorOption("#6AB595"),
788
+ makeColorOption("#9CCDB9"),
789
+ makeColorOption("#CDE6DC"),
790
+ makeColorOption("#05F38F")
791
+ ],
792
+ [
793
+ makeColorOption("#063E7E"),
794
+ makeColorOption("#0A60C5"),
795
+ makeColorOption("#3B80D1"),
796
+ makeColorOption("#6CA0DC"),
797
+ makeColorOption("#9DBFE8"),
798
+ makeColorOption("#CEDFF3"),
799
+ makeColorOption("#00E0FF")
800
+ ],
801
+ [
802
+ makeColorOption("#3E027A"),
803
+ makeColorOption("#6103BF"),
804
+ makeColorOption("#8136CC"),
805
+ makeColorOption("#A068D9"),
806
+ makeColorOption("#C09AE6"),
807
+ makeColorOption("#DFCDF2"),
808
+ makeColorOption("#A91DFF")
809
+ ]
810
+ ];
811
+ const getAvailableColorOptions = () => {
812
+ return icons.flat().map((item) => item.value);
813
+ };
667
814
  const closeDropdown = (dropdown) => {
668
815
  dropdown.expand.value = false;
669
816
  };
@@ -787,6 +934,28 @@ const makeDefaultItems = (superToolbar, isDev = false, windowWidth, role, toolba
787
934
  icon: toolbarIcons2.underline,
788
935
  tooltip: "Underline"
789
936
  });
937
+ const highlight = useToolbarItem({
938
+ type: "dropdown",
939
+ name: "highlight",
940
+ icon: toolbarIcons2.highlight,
941
+ hideLabel: true,
942
+ markName: "highlight",
943
+ labelAttr: "color",
944
+ tooltip: "Highlight color",
945
+ command: "setHighlight",
946
+ suppressActiveHighlight: true,
947
+ options: [
948
+ {
949
+ key: "color",
950
+ type: "render",
951
+ render: () => renderColorOptions(superToolbar, highlight)
952
+ }
953
+ ],
954
+ onActivate: ({ color }) => {
955
+ highlight.iconColor.value = color || "";
956
+ },
957
+ onDeactivate: () => highlight.iconColor.value = ""
958
+ });
790
959
  const colorButton = useToolbarItem({
791
960
  type: "dropdown",
792
961
  name: "color",
@@ -801,7 +970,7 @@ const makeDefaultItems = (superToolbar, isDev = false, windowWidth, role, toolba
801
970
  {
802
971
  key: "color",
803
972
  type: "render",
804
- render: () => renderColorOptions(colorButton)
973
+ render: () => renderColorOptions(superToolbar, colorButton)
805
974
  }
806
975
  ],
807
976
  onActivate: ({ color }) => {
@@ -809,106 +978,6 @@ const makeDefaultItems = (superToolbar, isDev = false, windowWidth, role, toolba
809
978
  },
810
979
  onDeactivate: () => colorButton.iconColor.value = "#000"
811
980
  });
812
- const makeColorOption = (color, label = null) => {
813
- return {
814
- label,
815
- icon: toolbarIcons2.colorOption,
816
- value: color,
817
- style: {
818
- color,
819
- boxShadow: "0 0 5px 1px rgba(0, 0, 0, 0.1)",
820
- borderRadius: "50%"
821
- }
822
- };
823
- };
824
- const icons = [
825
- [
826
- makeColorOption("#111111"),
827
- makeColorOption("#333333"),
828
- makeColorOption("##5C5C5C"),
829
- makeColorOption("#858585"),
830
- makeColorOption("#ADADAD"),
831
- makeColorOption("#D6D6D6"),
832
- makeColorOption("#FFFFFF")
833
- ],
834
- [
835
- makeColorOption("#860028"),
836
- makeColorOption("#D2003F"),
837
- makeColorOption("#DB3365"),
838
- makeColorOption("#E4668C"),
839
- makeColorOption("#ED99B2"),
840
- makeColorOption("#F6CCD9"),
841
- makeColorOption("#FF004D")
842
- ],
843
- [
844
- makeColorOption("#83015E"),
845
- makeColorOption("#CD0194"),
846
- makeColorOption("#D734A9"),
847
- makeColorOption("#E167BF"),
848
- makeColorOption("#EB99D4"),
849
- makeColorOption("#F5CCEA"),
850
- makeColorOption("#FF00A8")
851
- ],
852
- [
853
- makeColorOption("#8E220A"),
854
- makeColorOption("#DD340F"),
855
- makeColorOption("#E45C3F"),
856
- makeColorOption("#EB856F"),
857
- makeColorOption("#F1AE9F"),
858
- makeColorOption("#F8D6CF"),
859
- makeColorOption("#FF7A00")
860
- ],
861
- [
862
- makeColorOption("#947D02"),
863
- makeColorOption("#E7C302"),
864
- makeColorOption("#ECCF35"),
865
- makeColorOption("#F1DB67"),
866
- makeColorOption("#F5E79A"),
867
- makeColorOption("#FAF3CC"),
868
- makeColorOption("#FAFF09")
869
- ],
870
- [
871
- makeColorOption("#055432"),
872
- makeColorOption("#07834F"),
873
- makeColorOption("#399C72"),
874
- makeColorOption("#6AB595"),
875
- makeColorOption("#9CCDB9"),
876
- makeColorOption("#CDE6DC"),
877
- makeColorOption("#05F38F")
878
- ],
879
- [
880
- makeColorOption("#063E7E"),
881
- makeColorOption("#0A60C5"),
882
- makeColorOption("#3B80D1"),
883
- makeColorOption("#6CA0DC"),
884
- makeColorOption("#9DBFE8"),
885
- makeColorOption("#CEDFF3"),
886
- makeColorOption("#00E0FF")
887
- ],
888
- [
889
- makeColorOption("#3E027A"),
890
- makeColorOption("#6103BF"),
891
- makeColorOption("#8136CC"),
892
- makeColorOption("#A068D9"),
893
- makeColorOption("#C09AE6"),
894
- makeColorOption("#DFCDF2"),
895
- makeColorOption("#A91DFF")
896
- ]
897
- ];
898
- function renderColorOptions(colorButton2) {
899
- const handleSelect = (e) => {
900
- colorButton2.iconColor.value = e;
901
- superToolbar.emitCommand({ item: colorButton2, argument: e });
902
- closeDropdown(colorButton2);
903
- };
904
- return h("div", {}, [
905
- h(IconGrid, {
906
- icons,
907
- activeColor: colorButton2.iconColor,
908
- onSelect: handleSelect
909
- })
910
- ]);
911
- }
912
981
  const link = useToolbarItem({
913
982
  type: "dropdown",
914
983
  name: "link",
@@ -1323,6 +1392,7 @@ const makeDefaultItems = (superToolbar, isDev = false, windowWidth, role, toolba
1323
1392
  italic,
1324
1393
  underline,
1325
1394
  colorButton,
1395
+ highlight,
1326
1396
  separator,
1327
1397
  link,
1328
1398
  image,
@@ -1568,6 +1638,9 @@ class SuperToolbar extends EventEmitter {
1568
1638
  setColor: ({ item, argument }) => {
1569
1639
  __privateMethod(this, _SuperToolbar_instances, runCommandWithArgumentOnly_fn).call(this, { item, argument });
1570
1640
  },
1641
+ setHighlight: ({ item, argument }) => {
1642
+ __privateMethod(this, _SuperToolbar_instances, runCommandWithArgumentOnly_fn).call(this, { item, argument });
1643
+ },
1571
1644
  toggleRuler: ({ item, argument }) => {
1572
1645
  this.superdoc.toggleRuler();
1573
1646
  },
@@ -1703,6 +1776,7 @@ class SuperToolbar extends EventEmitter {
1703
1776
  updateToolbarState() {
1704
1777
  __privateMethod(this, _SuperToolbar_instances, updateToolbarHistory_fn).call(this);
1705
1778
  __privateMethod(this, _SuperToolbar_instances, initDefaultFonts_fn).call(this);
1779
+ __privateMethod(this, _SuperToolbar_instances, updateHighlightColors_fn).call(this);
1706
1780
  if (!this.activeEditor || this.documentMode === "viewing") {
1707
1781
  __privateMethod(this, _SuperToolbar_instances, deactivateAll_fn).call(this);
1708
1782
  return;
@@ -1757,8 +1831,8 @@ class SuperToolbar extends EventEmitter {
1757
1831
  }
1758
1832
  _interceptedCommands = new WeakMap();
1759
1833
  _SuperToolbar_instances = new WeakSet();
1760
- makeToolbarItems_fn = function(superToolbar, icons, isDev = false) {
1761
- const { defaultItems, overflowItems } = makeDefaultItems(superToolbar, isDev, window.innerWidth, this.role, icons);
1834
+ makeToolbarItems_fn = function(superToolbar, icons2, isDev = false) {
1835
+ const { defaultItems, overflowItems } = makeDefaultItems(superToolbar, isDev, window.innerWidth, this.role, icons2);
1762
1836
  this.toolbarItems = defaultItems;
1763
1837
  this.overflowItems = overflowItems;
1764
1838
  };
@@ -1770,6 +1844,27 @@ initDefaultFonts_fn = function() {
1770
1844
  const fontFamilyItem = this.toolbarItems.find((item) => item.name.value === "fontFamily");
1771
1845
  if (fontFamilyItem) fontFamilyItem.defaultLabel.value = typeface;
1772
1846
  };
1847
+ updateHighlightColors_fn = function() {
1848
+ if (!this.activeEditor || !this.activeEditor.converter) return;
1849
+ if (!this.activeEditor.converter.docHiglightColors.size) return;
1850
+ const highlightItem = this.toolbarItems.find((item) => item.name.value === "highlight");
1851
+ const pickerColorOptions = getAvailableColorOptions();
1852
+ const perChunk = 7;
1853
+ const result = Array.from(this.activeEditor.converter.docHiglightColors).reduce((resultArray, item, index) => {
1854
+ const chunkIndex = Math.floor(index / perChunk);
1855
+ if (!resultArray[chunkIndex]) {
1856
+ resultArray[chunkIndex] = [];
1857
+ }
1858
+ if (!pickerColorOptions.includes(item)) resultArray[chunkIndex].push(makeColorOption(item));
1859
+ return resultArray;
1860
+ }, []);
1861
+ const option = {
1862
+ key: "color",
1863
+ type: "render",
1864
+ render: () => renderColorOptions(this, highlightItem, result)
1865
+ };
1866
+ highlightItem.nestedOptions.value = [option];
1867
+ };
1773
1868
  deactivateAll_fn = function() {
1774
1869
  this.activeEditor = null;
1775
1870
  this.toolbarItems.forEach((item) => {