oasis-editor 0.0.133 → 0.0.135

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 (40) hide show
  1. package/dist/{OasisEditorApp-DmXn9H33.js → OasisEditorApp-207_qEC4.js} +602 -30
  2. package/dist/app/controllers/EditorCommandsController.d.ts +5 -0
  3. package/dist/app/controllers/createCropSession.d.ts +26 -0
  4. package/dist/app/controllers/useEditorImageOperations.d.ts +7 -0
  5. package/dist/assets/{importDocxWorker-CCwhxVSR.js → importDocxWorker-B0cSSI12.js} +1 -1
  6. package/dist/core/commands/builtinCommands.d.ts +1 -1
  7. package/dist/core/commands/image.d.ts +51 -1
  8. package/dist/core/commands/publicCommandTypes.d.ts +5 -0
  9. package/dist/core/lineDash.d.ts +16 -0
  10. package/dist/core/model/index.d.ts +1 -1
  11. package/dist/core/model/types/primitives.d.ts +19 -0
  12. package/dist/core/pluginUiTypes.d.ts +1 -1
  13. package/dist/core/transactionMergeKeys.d.ts +2 -0
  14. package/dist/export/docx/docxTypes.d.ts +2 -1
  15. package/dist/export/docx/text/drawingContainerXml.d.ts +7 -1
  16. package/dist/export/pdf/draw/drawImageObject.d.ts +14 -0
  17. package/dist/export/pdf/writer/PdfContentStream.d.ts +8 -0
  18. package/dist/export/pdf/writer/pdfTypes.d.ts +12 -0
  19. package/dist/i18n/locales/en.d.ts +28 -0
  20. package/dist/i18n/locales/pt-BR.d.ts +28 -0
  21. package/dist/{index-BOj4-NlJ.js → index-CaKZARyM.js} +1217 -468
  22. package/dist/oasis-editor.css +1 -1
  23. package/dist/oasis-editor.js +49 -49
  24. package/dist/oasis-editor.umd.cjs +4 -4
  25. package/dist/plugins/internal/essentialsCapabilities.d.ts +21 -1
  26. package/dist/ui/OasisEditorEditorProps.d.ts +5 -0
  27. package/dist/ui/app/buildEditorViewProps.d.ts +2 -0
  28. package/dist/ui/app/createAppCommandsController.d.ts +8 -0
  29. package/dist/ui/app/createEditorCommandRuntime.d.ts +4 -0
  30. package/dist/ui/app/createEditorInteractionRuntime.d.ts +7 -0
  31. package/dist/ui/app/essentials/types.d.ts +5 -0
  32. package/dist/ui/canvas/paragraph/canvasInlineImage.d.ts +1 -1
  33. package/dist/ui/components/Toolbar/controls/ImageSizeControls.d.ts +16 -0
  34. package/dist/ui/components/Toolbar/pictureBorderPresets.d.ts +19 -0
  35. package/dist/ui/components/Toolbar/primitives/ColorGrids.d.ts +20 -0
  36. package/dist/ui/components/Toolbar/primitives/PictureBorderPicker.d.ts +37 -0
  37. package/dist/ui/components/Toolbar/primitives/WideMenuButton.d.ts +27 -0
  38. package/dist/ui/components/Toolbar/schema/items.d.ts +15 -1
  39. package/dist/ui/cropGeometry.d.ts +23 -0
  40. package/package.json +1 -1
@@ -1815,6 +1815,7 @@ const en = {
1815
1815
  "ribbon.tab.view": "View",
1816
1816
  "ribbon.tab.tableDesign": "Table Design",
1817
1817
  "ribbon.tab.tableLayout": "Table Layout",
1818
+ "ribbon.tab.imageFormat": "Picture Format",
1818
1819
  "ribbon.tab.plugins": "Plugins",
1819
1820
  "ribbon.tab.ai": "AI",
1820
1821
  // Ribbon groups
@@ -1838,6 +1839,34 @@ const en = {
1838
1839
  "ribbon.group.merge": "Merge",
1839
1840
  "ribbon.group.cellSize": "Cell Size",
1840
1841
  "ribbon.group.alignment": "Alignment",
1842
+ "ribbon.group.size": "Size",
1843
+ "ribbon.group.imageStyles": "Picture Styles",
1844
+ // Image format (contextual tab)
1845
+ "image.crop": "Crop",
1846
+ "image.height": "Height",
1847
+ "image.width": "Width",
1848
+ "image.cropReset": "Reset crop",
1849
+ "image.cropRatio.square": "1:1",
1850
+ "image.cropRatio.16x9": "16:9",
1851
+ "image.cropRatio.4x3": "4:3",
1852
+ "image.cropRatio.3x2": "3:2",
1853
+ "image.cropRatio.2x3": "2:3",
1854
+ "image.cropRatio.3x4": "3:4",
1855
+ "image.cropRatio.9x16": "9:16",
1856
+ "image.border": "Picture Border",
1857
+ "image.borderNone": "No Outline",
1858
+ "image.borderMoreColors": "More Outline Colors...",
1859
+ "image.borderWeight": "Weight",
1860
+ "image.borderDashes": "Dashes",
1861
+ "image.borderDash.solid": "Solid",
1862
+ "image.borderDash.sysDot": "Round Dot",
1863
+ "image.borderDash.sysDash": "Square Dot",
1864
+ "image.borderDash.dot": "Dot",
1865
+ "image.borderDash.dash": "Dash",
1866
+ "image.borderDash.dashDot": "Dash Dot",
1867
+ "image.borderDash.lgDash": "Long Dash",
1868
+ "image.borderDash.lgDashDot": "Long Dash Dot",
1869
+ "image.borderDash.lgDashDotDot": "Long Dash Dot Dot",
1841
1870
  // Export
1842
1871
  "toolbar.exportDocx": "Export DOCX",
1843
1872
  "toolbar.exportPdf": "Export PDF",
@@ -2362,6 +2391,7 @@ const ptBR = {
2362
2391
  "ribbon.tab.view": "Exibir",
2363
2392
  "ribbon.tab.tableDesign": "Design da Tabela",
2364
2393
  "ribbon.tab.tableLayout": "Layout da Tabela",
2394
+ "ribbon.tab.imageFormat": "Formato da Imagem",
2365
2395
  "ribbon.tab.plugins": "Plugins",
2366
2396
  "ribbon.tab.ai": "IA",
2367
2397
  // Ribbon groups
@@ -2385,6 +2415,34 @@ const ptBR = {
2385
2415
  "ribbon.group.merge": "Mesclar",
2386
2416
  "ribbon.group.cellSize": "Tamanho da Célula",
2387
2417
  "ribbon.group.alignment": "Alinhamento",
2418
+ "ribbon.group.size": "Tamanho",
2419
+ "ribbon.group.imageStyles": "Estilos de Imagem",
2420
+ // Image format (contextual tab)
2421
+ "image.crop": "Cortar",
2422
+ "image.height": "Altura",
2423
+ "image.width": "Largura",
2424
+ "image.cropReset": "Redefinir corte",
2425
+ "image.cropRatio.square": "1:1",
2426
+ "image.cropRatio.16x9": "16:9",
2427
+ "image.cropRatio.4x3": "4:3",
2428
+ "image.cropRatio.3x2": "3:2",
2429
+ "image.cropRatio.2x3": "2:3",
2430
+ "image.cropRatio.3x4": "3:4",
2431
+ "image.cropRatio.9x16": "9:16",
2432
+ "image.border": "Borda de Imagem",
2433
+ "image.borderNone": "Sem Contorno",
2434
+ "image.borderMoreColors": "Mais Cores de Contorno...",
2435
+ "image.borderWeight": "Espessura",
2436
+ "image.borderDashes": "Traços",
2437
+ "image.borderDash.solid": "Sólido",
2438
+ "image.borderDash.sysDot": "Ponto Redondo",
2439
+ "image.borderDash.sysDash": "Ponto Quadrado",
2440
+ "image.borderDash.dot": "Pontilhado",
2441
+ "image.borderDash.dash": "Tracejado",
2442
+ "image.borderDash.dashDot": "Traço e Ponto",
2443
+ "image.borderDash.lgDash": "Traço Longo",
2444
+ "image.borderDash.lgDashDot": "Traço Longo e Ponto",
2445
+ "image.borderDash.lgDashDotDot": "Traço Longo e Dois Pontos",
2388
2446
  // Export
2389
2447
  "toolbar.exportDocx": "Exportar DOCX",
2390
2448
  "toolbar.exportPdf": "Exportar PDF",
@@ -2562,14 +2620,14 @@ function I18nProvider(props) {
2562
2620
  });
2563
2621
  }
2564
2622
  const oasisMarkBase64 = "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";
2565
- var _tmpl$$14 = /* @__PURE__ */ template(`<img alt aria-hidden=true>`);
2623
+ var _tmpl$$18 = /* @__PURE__ */ template(`<img alt aria-hidden=true>`);
2566
2624
  const OASIS_MARK_DATA_URI = `data:image/webp;base64,${oasisMarkBase64}`;
2567
2625
  const MARK_ASPECT = 3 / 4;
2568
2626
  function OasisBrandMark(props) {
2569
2627
  const height = () => props.height ?? 64;
2570
2628
  const width = () => Math.round(height() * MARK_ASPECT);
2571
2629
  return (() => {
2572
- var _el$ = _tmpl$$14();
2630
+ var _el$ = _tmpl$$18();
2573
2631
  setAttribute(_el$, "src", OASIS_MARK_DATA_URI);
2574
2632
  setAttribute(_el$, "draggable", false);
2575
2633
  createRenderEffect((_p$) => {
@@ -2586,7 +2644,7 @@ function OasisBrandMark(props) {
2586
2644
  return _el$;
2587
2645
  })();
2588
2646
  }
2589
- var _tmpl$$13 = /* @__PURE__ */ template(`<div class=oasis-editor-import-progress-label>`), _tmpl$2$E = /* @__PURE__ */ template(`<div role=status aria-live=polite><div class=oasis-editor-import-card><div class=oasis-editor-import-title></div><div class=oasis-editor-import-progress-track><div>`), _tmpl$3$r = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>Done`);
2647
+ var _tmpl$$17 = /* @__PURE__ */ template(`<div class=oasis-editor-import-progress-label>`), _tmpl$2$I = /* @__PURE__ */ template(`<div role=status aria-live=polite><div class=oasis-editor-import-card><div class=oasis-editor-import-title></div><div class=oasis-editor-import-progress-track><div>`), _tmpl$3$u = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>Done`);
2590
2648
  function OasisEditorLoading(props) {
2591
2649
  const t = useI18n();
2592
2650
  const variant = () => props.variant ?? "overlay";
@@ -2596,7 +2654,7 @@ function OasisEditorLoading(props) {
2596
2654
  };
2597
2655
  const isDone = () => (pct() ?? 0) >= 100;
2598
2656
  return (() => {
2599
- var _el$ = _tmpl$2$E(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild;
2657
+ var _el$ = _tmpl$2$I(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild;
2600
2658
  insert(_el$2, createComponent(OasisBrandMark, {
2601
2659
  height: 40,
2602
2660
  "class": "oasis-editor-loading-mark"
@@ -2607,10 +2665,10 @@ function OasisEditorLoading(props) {
2607
2665
  return pct() != null;
2608
2666
  },
2609
2667
  get children() {
2610
- var _el$6 = _tmpl$$13();
2668
+ var _el$6 = _tmpl$$17();
2611
2669
  insert(_el$6, (() => {
2612
2670
  var _c$ = memo(() => !!isDone());
2613
- return () => _c$() ? _tmpl$3$r() : `${pct()}%`;
2671
+ return () => _c$() ? _tmpl$3$u() : `${pct()}%`;
2614
2672
  })());
2615
2673
  return _el$6;
2616
2674
  }
@@ -2661,7 +2719,7 @@ function OasisEditorAppLazy(props = {}) {
2661
2719
  onCleanup(() => {
2662
2720
  cancelled = true;
2663
2721
  });
2664
- import("./OasisEditorApp-DmXn9H33.js").then((m) => {
2722
+ import("./OasisEditorApp-207_qEC4.js").then((m) => {
2665
2723
  cancelled = true;
2666
2724
  setProgress(1);
2667
2725
  setTimeout(() => setApp(() => m.OasisEditorApp), 180);
@@ -5189,6 +5247,12 @@ const OASIS_BUILTIN_COMMANDS = [
5189
5247
  "insertImage",
5190
5248
  "editImageAlt",
5191
5249
  "insertImageCaption",
5250
+ "imageContext",
5251
+ "imageWidthCm",
5252
+ "imageHeightCm",
5253
+ "imageCrop",
5254
+ "imageCropAspect",
5255
+ "imageBorder",
5192
5256
  "outdent",
5193
5257
  "indent",
5194
5258
  "togglePageBreakBefore",
@@ -5259,10 +5323,10 @@ function mount(target, props = {}) {
5259
5323
  unmount: () => client.dispose()
5260
5324
  });
5261
5325
  }
5262
- var _tmpl$$12 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg aria-hidden=true>`), _tmpl$2$D = /* @__PURE__ */ template(`<svg><text x=2 y=18 font-family="'Segoe UI', Arial, sans-serif"font-size=14 font-weight=700 fill=currentColor>ab</svg>`, false, true, false), _tmpl$3$q = /* @__PURE__ */ template(`<svg><text x=15.5 y=11 font-family="'Segoe UI', Arial, sans-serif"font-size=10 font-weight=700 fill=#c00000>1</svg>`, false, true, false), _tmpl$4$i = /* @__PURE__ */ template(`<svg><g><path d="M3.375 4.875 L7.125 8.625 L3.375 12.375 L2.25 11.25 L4.875 8.625 L2.25 6 Z"></path><rect x=10.125 y=6 width=9 height=1.6875 rx=0.25></rect><rect x=5.625 y=10.875 width=13.5 height=1.6875 rx=0.25></rect><rect x=5.625 y=15.75 width=13.5 height=1.6875 rx=0.25></svg>`, false, true, false), _tmpl$5$b = /* @__PURE__ */ template(`<svg><polyline points="4 7 7 4 10 7"></svg>`, false, true, false), _tmpl$6$8 = /* @__PURE__ */ template(`<svg><line x1=7 y1=4 x2=7 y2=20></svg>`, false, true, false), _tmpl$7$3 = /* @__PURE__ */ template(`<svg><polyline points="4 17 7 20 10 17"></svg>`, false, true, false), _tmpl$8$2 = /* @__PURE__ */ template(`<svg><line x1=13 y1=6 x2=21 y2=6></svg>`, false, true, false), _tmpl$9$1 = /* @__PURE__ */ template(`<svg><line x1=13 y1=12 x2=21 y2=12></svg>`, false, true, false), _tmpl$0$1 = /* @__PURE__ */ template(`<svg><line x1=13 y1=18 x2=21 y2=18></svg>`, false, true, false), _tmpl$1$1 = /* @__PURE__ */ template(`<svg><polyline points="20 6 9 17 4 12"></svg>`, false, true, false), _tmpl$10 = /* @__PURE__ */ template(`<i>`);
5326
+ var _tmpl$$16 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg aria-hidden=true>`), _tmpl$2$H = /* @__PURE__ */ template(`<svg><text x=2 y=18 font-family="'Segoe UI', Arial, sans-serif"font-size=14 font-weight=700 fill=currentColor>ab</svg>`, false, true, false), _tmpl$3$t = /* @__PURE__ */ template(`<svg><text x=15.5 y=11 font-family="'Segoe UI', Arial, sans-serif"font-size=10 font-weight=700 fill=#c00000>1</svg>`, false, true, false), _tmpl$4$k = /* @__PURE__ */ template(`<svg><g><path d="M3.375 4.875 L7.125 8.625 L3.375 12.375 L2.25 11.25 L4.875 8.625 L2.25 6 Z"></path><rect x=10.125 y=6 width=9 height=1.6875 rx=0.25></rect><rect x=5.625 y=10.875 width=13.5 height=1.6875 rx=0.25></rect><rect x=5.625 y=15.75 width=13.5 height=1.6875 rx=0.25></svg>`, false, true, false), _tmpl$5$c = /* @__PURE__ */ template(`<svg><polyline points="4 7 7 4 10 7"></svg>`, false, true, false), _tmpl$6$9 = /* @__PURE__ */ template(`<svg><line x1=7 y1=4 x2=7 y2=20></svg>`, false, true, false), _tmpl$7$4 = /* @__PURE__ */ template(`<svg><polyline points="4 17 7 20 10 17"></svg>`, false, true, false), _tmpl$8$2 = /* @__PURE__ */ template(`<svg><line x1=13 y1=6 x2=21 y2=6></svg>`, false, true, false), _tmpl$9 = /* @__PURE__ */ template(`<svg><line x1=13 y1=12 x2=21 y2=12></svg>`, false, true, false), _tmpl$0 = /* @__PURE__ */ template(`<svg><line x1=13 y1=18 x2=21 y2=18></svg>`, false, true, false), _tmpl$1 = /* @__PURE__ */ template(`<svg><polyline points="20 6 9 17 4 12"></svg>`, false, true, false), _tmpl$10 = /* @__PURE__ */ template(`<i>`);
5263
5327
  function SvgIcon(props) {
5264
5328
  return (() => {
5265
- var _el$ = _tmpl$$12();
5329
+ var _el$ = _tmpl$$16();
5266
5330
  insert(_el$, () => props.children);
5267
5331
  createRenderEffect((_p$) => {
5268
5332
  var _v$ = props.width ?? 24, _v$2 = props.height ?? 24, _v$3 = props.viewBox ?? "0 0 24 24", _v$4 = props.fill ?? "none", _v$5 = props.stroke, _v$6 = props["stroke-width"], _v$7 = props["stroke-linecap"], _v$8 = props["stroke-linejoin"], _v$9 = props.class;
@@ -5293,13 +5357,13 @@ function SvgIcon(props) {
5293
5357
  const FootnoteIcon = () => createComponent(SvgIcon, {
5294
5358
  fill: "none",
5295
5359
  get children() {
5296
- return [_tmpl$2$D(), _tmpl$3$q()];
5360
+ return [_tmpl$2$H(), _tmpl$3$t()];
5297
5361
  }
5298
5362
  });
5299
5363
  const SpecialIndentFirstLineIcon = () => createComponent(SvgIcon, {
5300
5364
  fill: "currentColor",
5301
5365
  get children() {
5302
- return _tmpl$4$i();
5366
+ return _tmpl$4$k();
5303
5367
  }
5304
5368
  });
5305
5369
  const LineSpacingIcon = () => createComponent(SvgIcon, {
@@ -5310,7 +5374,7 @@ const LineSpacingIcon = () => createComponent(SvgIcon, {
5310
5374
  "stroke-linecap": "round",
5311
5375
  "stroke-linejoin": "round",
5312
5376
  get children() {
5313
- return [_tmpl$5$b(), _tmpl$6$8(), _tmpl$7$3(), _tmpl$8$2(), _tmpl$9$1(), _tmpl$0$1()];
5377
+ return [_tmpl$5$c(), _tmpl$6$9(), _tmpl$7$4(), _tmpl$8$2(), _tmpl$9(), _tmpl$0()];
5314
5378
  }
5315
5379
  });
5316
5380
  const CheckIcon = (props) => createComponent(SvgIcon, {
@@ -5327,7 +5391,7 @@ const CheckIcon = (props) => createComponent(SvgIcon, {
5327
5391
  "stroke-linecap": "round",
5328
5392
  "stroke-linejoin": "round",
5329
5393
  get children() {
5330
- return _tmpl$1$1();
5394
+ return _tmpl$1();
5331
5395
  }
5332
5396
  });
5333
5397
  const CUSTOM_ICONS = {
@@ -5353,11 +5417,11 @@ function ToolIcon(props) {
5353
5417
  children: (render2) => render2()()
5354
5418
  });
5355
5419
  }
5356
- var _tmpl$$11 = /* @__PURE__ */ template(`<button>`);
5420
+ var _tmpl$$15 = /* @__PURE__ */ template(`<button>`);
5357
5421
  function SurfaceButton(props) {
5358
5422
  const [local, others] = splitProps(props, ["type", "icon", "label", "variant", "size", "active", "class", "classList", "children"]);
5359
5423
  return (() => {
5360
- var _el$ = _tmpl$$11();
5424
+ var _el$ = _tmpl$$15();
5361
5425
  spread(_el$, mergeProps({
5362
5426
  get type() {
5363
5427
  return local.type ?? "button";
@@ -5418,7 +5482,7 @@ function Text$1(props) {
5418
5482
  }
5419
5483
  }));
5420
5484
  }
5421
- var _tmpl$$10 = /* @__PURE__ */ template(`<div class=oasis-menubar role=menubar>`), _tmpl$2$C = /* @__PURE__ */ template(`<div class=oasis-menubar-dropdown role=menu>`), _tmpl$3$p = /* @__PURE__ */ template(`<div class=oasis-menubar-menu>`), _tmpl$4$h = /* @__PURE__ */ template(`<div class=oasis-menubar-separator role=separator>`), _tmpl$5$a = /* @__PURE__ */ template(`<i class=oasis-menubar-submenu-icon data-lucide=chevron-right>`), _tmpl$6$7 = /* @__PURE__ */ template(`<div class=oasis-menubar-submenu role=menu>`);
5485
+ var _tmpl$$14 = /* @__PURE__ */ template(`<div class=oasis-menubar role=menubar>`), _tmpl$2$G = /* @__PURE__ */ template(`<div class=oasis-menubar-dropdown role=menu>`), _tmpl$3$s = /* @__PURE__ */ template(`<div class=oasis-menubar-menu>`), _tmpl$4$j = /* @__PURE__ */ template(`<div class=oasis-menubar-separator role=separator>`), _tmpl$5$b = /* @__PURE__ */ template(`<i class=oasis-menubar-submenu-icon data-lucide=chevron-right>`), _tmpl$6$8 = /* @__PURE__ */ template(`<div class=oasis-menubar-submenu role=menu>`);
5422
5486
  function Menubar(props) {
5423
5487
  const t = useI18n();
5424
5488
  const [activeMenu, setActiveMenu] = createSignal(null);
@@ -5486,13 +5550,13 @@ function Menubar(props) {
5486
5550
  });
5487
5551
  const topLevelItems = () => pruneTree(menuTree());
5488
5552
  return (() => {
5489
- var _el$ = _tmpl$$10();
5553
+ var _el$ = _tmpl$$14();
5490
5554
  insert(_el$, createComponent(For, {
5491
5555
  get each() {
5492
5556
  return topLevelItems();
5493
5557
  },
5494
5558
  children: (topLevel) => (() => {
5495
- var _el$2 = _tmpl$3$p();
5559
+ var _el$2 = _tmpl$3$s();
5496
5560
  _el$2.addEventListener("mouseenter", () => {
5497
5561
  if (activeMenu() && activeMenu() !== topLevel.id) {
5498
5562
  setActiveMenu(topLevel.id);
@@ -5527,7 +5591,7 @@ function Menubar(props) {
5527
5591
  return activeMenu() === topLevel.id;
5528
5592
  },
5529
5593
  get children() {
5530
- var _el$3 = _tmpl$2$C();
5594
+ var _el$3 = _tmpl$2$G();
5531
5595
  insert(_el$3, createComponent(For, {
5532
5596
  get each() {
5533
5597
  return topLevel.children;
@@ -5558,7 +5622,7 @@ function MenuNode(props) {
5558
5622
  } = props;
5559
5623
  const isSeparator = (_a = node.item) == null ? void 0 : _a.separator;
5560
5624
  if (isSeparator) {
5561
- return _tmpl$4$h();
5625
+ return _tmpl$4$j();
5562
5626
  }
5563
5627
  const hasChildren = node.children.length > 0;
5564
5628
  const [showSub, setShowSub] = createSignal(false);
@@ -5634,14 +5698,14 @@ function MenuNode(props) {
5634
5698
  }), createComponent(Show, {
5635
5699
  when: hasChildren,
5636
5700
  get children() {
5637
- return _tmpl$5$a();
5701
+ return _tmpl$5$b();
5638
5702
  }
5639
5703
  }), createComponent(Show, {
5640
5704
  get when() {
5641
5705
  return showSub() && hasChildren;
5642
5706
  },
5643
5707
  get children() {
5644
- var _el$6 = _tmpl$6$7();
5708
+ var _el$6 = _tmpl$6$8();
5645
5709
  insert(_el$6, createComponent(For, {
5646
5710
  get each() {
5647
5711
  return node.children;
@@ -5660,10 +5724,10 @@ function MenuNode(props) {
5660
5724
  }
5661
5725
  });
5662
5726
  }
5663
- var _tmpl$$$ = /* @__PURE__ */ template(`<div class=oasis-titlebar><div class=oasis-titlebar-left><div class=oasis-titlebar-menubar-slot>`);
5727
+ var _tmpl$$13 = /* @__PURE__ */ template(`<div class=oasis-titlebar><div class=oasis-titlebar-left><div class=oasis-titlebar-menubar-slot>`);
5664
5728
  function TitleBar(props) {
5665
5729
  return (() => {
5666
- var _el$ = _tmpl$$$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
5730
+ var _el$ = _tmpl$$13(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
5667
5731
  insert(_el$3, () => props.children);
5668
5732
  return _el$;
5669
5733
  })();
@@ -5758,7 +5822,7 @@ function getCaretRectFromSnapshot(snapshot, position2, paragraphOffset) {
5758
5822
  );
5759
5823
  return rectFromBox(slot.left, slot.top, 1, slot.height || line.height);
5760
5824
  }
5761
- var _tmpl$$_ = /* @__PURE__ */ template(`<span class=oasis-outline-title>`), _tmpl$2$B = /* @__PURE__ */ template(`<div class=oasis-outline-list>`), _tmpl$3$o = /* @__PURE__ */ template(`<div class=oasis-outline-panel><div class=oasis-outline-header><button class=oasis-outline-toggle><i>`), _tmpl$4$g = /* @__PURE__ */ template(`<div class=oasis-outline-empty>`), _tmpl$5$9 = /* @__PURE__ */ template(`<div class=oasis-outline-item>`);
5825
+ var _tmpl$$12 = /* @__PURE__ */ template(`<span class=oasis-outline-title>`), _tmpl$2$F = /* @__PURE__ */ template(`<div class=oasis-outline-list>`), _tmpl$3$r = /* @__PURE__ */ template(`<div class=oasis-outline-panel><div class=oasis-outline-header><button class=oasis-outline-toggle><i>`), _tmpl$4$i = /* @__PURE__ */ template(`<div class=oasis-outline-empty>`), _tmpl$5$a = /* @__PURE__ */ template(`<div class=oasis-outline-item>`);
5762
5826
  function OutlinePanel(props) {
5763
5827
  const t = useI18n();
5764
5828
  const [collapsed, setCollapsed] = createSignal(props.defaultCollapsed ?? false);
@@ -5829,13 +5893,13 @@ function OutlinePanel(props) {
5829
5893
  }
5830
5894
  });
5831
5895
  return (() => {
5832
- var _el$ = _tmpl$3$o(), _el$2 = _el$.firstChild, _el$4 = _el$2.firstChild, _el$5 = _el$4.firstChild;
5896
+ var _el$ = _tmpl$3$r(), _el$2 = _el$.firstChild, _el$4 = _el$2.firstChild, _el$5 = _el$4.firstChild;
5833
5897
  insert(_el$2, createComponent(Show, {
5834
5898
  get when() {
5835
5899
  return !collapsed();
5836
5900
  },
5837
5901
  get children() {
5838
- var _el$3 = _tmpl$$_();
5902
+ var _el$3 = _tmpl$$12();
5839
5903
  insert(_el$3, () => t("menu.view.outline") || "Outline");
5840
5904
  return _el$3;
5841
5905
  }
@@ -5846,14 +5910,14 @@ function OutlinePanel(props) {
5846
5910
  return !collapsed();
5847
5911
  },
5848
5912
  get children() {
5849
- var _el$6 = _tmpl$2$B();
5913
+ var _el$6 = _tmpl$2$F();
5850
5914
  insert(_el$6, createComponent(Show, {
5851
5915
  get when() {
5852
5916
  return items().length > 0;
5853
5917
  },
5854
5918
  get fallback() {
5855
5919
  return (() => {
5856
- var _el$7 = _tmpl$4$g();
5920
+ var _el$7 = _tmpl$4$i();
5857
5921
  insert(_el$7, () => t("outline.empty"));
5858
5922
  return _el$7;
5859
5923
  })();
@@ -5864,7 +5928,7 @@ function OutlinePanel(props) {
5864
5928
  return items();
5865
5929
  },
5866
5930
  children: (item) => (() => {
5867
- var _el$8 = _tmpl$5$9();
5931
+ var _el$8 = _tmpl$5$a();
5868
5932
  _el$8.$$click = () => props.onNavigate(item.anchor);
5869
5933
  insert(_el$8, () => item.text);
5870
5934
  createRenderEffect((_p$) => {
@@ -5903,7 +5967,7 @@ function OutlinePanel(props) {
5903
5967
  })();
5904
5968
  }
5905
5969
  delegateEvents(["click"]);
5906
- var _tmpl$$Z = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-overflow-manager style="display:flex;align-items:center;flex:1 1 0%;min-width:0;position:relative;margin-right:8px"><button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown oasis-editor-toolbar-more-measure"aria-hidden=true tabindex=-1 style=position:absolute;visibility:hidden;pointer-events:none;right:0><i data-lucide=ellipsis></i></button><div style="display:flex;align-items:center;gap:8px;flex:1 1 0;min-width:0;overflow:hidden"></div><div style=flex-shrink:0;padding-left:8px;padding-right:16px;align-items:center><button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"data-testid=editor-toolbar-overflow-dropdown><i data-lucide=ellipsis></i></button></div><div class="oasis-editor-toolbar-overflow-dropdown-menu oasis-editor-toolbar-overflow-menu"style="flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px;padding:8px;background:var(--oasis-paper);border:1px solid var(--oasis-toolbar-border);border-radius:var(--oasis-radius);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);max-width:calc(100vw - 16px);overflow-x:hidden;overflow-y:auto">`), _tmpl$2$A = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item-wrapper style=display:flex;align-items:center;flex-shrink:0>`);
5970
+ var _tmpl$$11 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-overflow-manager style="display:flex;align-items:center;flex:1 1 0%;min-width:0;position:relative;margin-right:8px"><button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown oasis-editor-toolbar-more-measure"aria-hidden=true tabindex=-1 style=position:absolute;visibility:hidden;pointer-events:none;right:0><i data-lucide=ellipsis></i></button><div style="display:flex;align-items:center;gap:8px;flex:1 1 0;min-width:0;overflow:hidden"></div><div style=flex-shrink:0;padding-left:8px;padding-right:16px;align-items:center><button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"data-testid=editor-toolbar-overflow-dropdown><i data-lucide=ellipsis></i></button></div><div class="oasis-editor-toolbar-overflow-dropdown-menu oasis-editor-toolbar-overflow-menu"style="flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px;padding:8px;background:var(--oasis-paper);border:1px solid var(--oasis-toolbar-border);border-radius:var(--oasis-radius);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);max-width:calc(100vw - 16px);overflow-x:hidden;overflow-y:auto">`), _tmpl$2$E = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item-wrapper style=display:flex;align-items:center;flex-shrink:0>`);
5907
5971
  function ToolbarOverflowManager(props) {
5908
5972
  const t = useI18n();
5909
5973
  const [overflowCount, setOverflowCount] = createSignal(0);
@@ -6047,7 +6111,7 @@ function ToolbarOverflowManager(props) {
6047
6111
  };
6048
6112
  };
6049
6113
  return (() => {
6050
- var _el$ = _tmpl$$Z(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild, _el$6 = _el$4.nextSibling;
6114
+ var _el$ = _tmpl$$11(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild, _el$6 = _el$4.nextSibling;
6051
6115
  var _ref$ = containerRef;
6052
6116
  typeof _ref$ === "function" ? use(_ref$, _el$) : containerRef = _el$;
6053
6117
  var _ref$2 = moreMeasureRef;
@@ -6059,7 +6123,7 @@ function ToolbarOverflowManager(props) {
6059
6123
  return items();
6060
6124
  },
6061
6125
  children: (item) => (() => {
6062
- var _el$7 = _tmpl$2$A();
6126
+ var _el$7 = _tmpl$2$E();
6063
6127
  insert(_el$7, item);
6064
6128
  return _el$7;
6065
6129
  })()
@@ -6135,12 +6199,12 @@ function resolveLabel(item, api) {
6135
6199
  if (item.labelKey) return api.t(item.labelKey);
6136
6200
  return void 0;
6137
6201
  }
6138
- var _tmpl$$Y = /* @__PURE__ */ template(`<span>`), _tmpl$2$z = /* @__PURE__ */ template(`<button type=button>`);
6202
+ var _tmpl$$10 = /* @__PURE__ */ template(`<span>`), _tmpl$2$D = /* @__PURE__ */ template(`<button type=button>`);
6139
6203
  function Button$1(props) {
6140
6204
  const [local, others] = splitProps(props, ["icon", "label", "active", "tooltip", "wide", "ribbonSize", "aria-label", "class", "classList"]);
6141
6205
  const ariaLabel = () => local["aria-label"] || local.tooltip || local.label || "";
6142
6206
  return (() => {
6143
- var _el$ = _tmpl$2$z();
6207
+ var _el$ = _tmpl$2$D();
6144
6208
  spread(_el$, mergeProps({
6145
6209
  get ["class"]() {
6146
6210
  return `oasis-editor-tool-button ${local.class || ""}`;
@@ -6177,7 +6241,7 @@ function Button$1(props) {
6177
6241
  return local.label;
6178
6242
  },
6179
6243
  get children() {
6180
- var _el$2 = _tmpl$$Y();
6244
+ var _el$2 = _tmpl$$10();
6181
6245
  insert(_el$2, () => local.label);
6182
6246
  return _el$2;
6183
6247
  }
@@ -6259,7 +6323,7 @@ function useDismiss(options) {
6259
6323
  });
6260
6324
  });
6261
6325
  }
6262
- var _tmpl$$X = /* @__PURE__ */ template(`<div>`);
6326
+ var _tmpl$$$ = /* @__PURE__ */ template(`<div>`);
6263
6327
  function Popover(props) {
6264
6328
  let anchorRef;
6265
6329
  let panelRef;
@@ -6276,7 +6340,7 @@ function Popover(props) {
6276
6340
  closeOnEscape: props.closeOnEscape
6277
6341
  });
6278
6342
  const panel = (portalled) => (() => {
6279
- var _el$ = _tmpl$$X();
6343
+ var _el$ = _tmpl$$$();
6280
6344
  addEventListener(_el$, "mouseleave", props.onPanelMouseLeave);
6281
6345
  var _ref$ = panelRef;
6282
6346
  typeof _ref$ === "function" ? use(_ref$, _el$) : panelRef = _el$;
@@ -6328,20 +6392,20 @@ function Popover(props) {
6328
6392
  }
6329
6393
  })];
6330
6394
  }
6331
- var _tmpl$$W = /* @__PURE__ */ template(`<i data-lucide=chevron-down>`);
6395
+ var _tmpl$$_ = /* @__PURE__ */ template(`<i data-lucide=chevron-down>`);
6332
6396
  function DropdownChevron(props) {
6333
6397
  return (() => {
6334
- var _el$ = _tmpl$$W();
6398
+ var _el$ = _tmpl$$_();
6335
6399
  createRenderEffect(() => className(_el$, `oasis-editor-dropdown-chevron${props.class ? ` ${props.class}` : ""}`));
6336
6400
  return _el$;
6337
6401
  })();
6338
6402
  }
6339
- var _tmpl$$V = /* @__PURE__ */ template(`<div>`), _tmpl$2$y = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$3$n = /* @__PURE__ */ template(`<span class=oasis-editor-tool-button-label>`), _tmpl$4$f = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"aria-haspopup=menu>`);
6403
+ var _tmpl$$Z = /* @__PURE__ */ template(`<div>`), _tmpl$2$C = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$3$q = /* @__PURE__ */ template(`<span class=oasis-editor-tool-button-label>`), _tmpl$4$h = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"aria-haspopup=menu>`);
6340
6404
  function Menu(props) {
6341
6405
  const [open, setOpen] = createSignal(false);
6342
6406
  const ariaLabel = () => props.tooltip || props.label || "";
6343
6407
  return (() => {
6344
- var _el$ = _tmpl$2$y();
6408
+ var _el$ = _tmpl$2$C();
6345
6409
  insert(_el$, createComponent(Popover, {
6346
6410
  get open() {
6347
6411
  return open();
@@ -6356,7 +6420,7 @@ function Menu(props) {
6356
6420
  },
6357
6421
  onPanelMouseLeave: void 0,
6358
6422
  trigger: (api) => (() => {
6359
- var _el$3 = _tmpl$4$f();
6423
+ var _el$3 = _tmpl$4$h();
6360
6424
  _el$3.$$click = () => api.toggle();
6361
6425
  use((el) => api.ref(el), _el$3);
6362
6426
  insert(_el$3, createComponent(Show, {
@@ -6376,7 +6440,7 @@ function Menu(props) {
6376
6440
  return props.label;
6377
6441
  },
6378
6442
  get children() {
6379
- var _el$4 = _tmpl$3$n();
6443
+ var _el$4 = _tmpl$3$q();
6380
6444
  insert(_el$4, () => props.label);
6381
6445
  return _el$4;
6382
6446
  }
@@ -6411,7 +6475,7 @@ function Menu(props) {
6411
6475
  return _el$3;
6412
6476
  })(),
6413
6477
  get children() {
6414
- var _el$2 = _tmpl$$V();
6478
+ var _el$2 = _tmpl$$Z();
6415
6479
  _el$2.$$click = (event) => {
6416
6480
  const el = event.target;
6417
6481
  if (el.closest("button") && !el.closest(".oasis-editor-tool-button-dropdown") && !el.closest(".oasis-editor-toolbar-list-options")) {
@@ -6426,7 +6490,7 @@ function Menu(props) {
6426
6490
  })();
6427
6491
  }
6428
6492
  delegateEvents(["click"]);
6429
- var _tmpl$$U = /* @__PURE__ */ template(`<select>`), _tmpl$2$x = /* @__PURE__ */ template(`<span class=oasis-editor-tool-select-ribbon-large-label>`), _tmpl$3$m = /* @__PURE__ */ template(`<div class=oasis-editor-tool-select-ribbon-large-wrap>`);
6493
+ var _tmpl$$Y = /* @__PURE__ */ template(`<select>`), _tmpl$2$B = /* @__PURE__ */ template(`<span class=oasis-editor-tool-select-ribbon-large-label>`), _tmpl$3$p = /* @__PURE__ */ template(`<div class=oasis-editor-tool-select-ribbon-large-wrap>`);
6430
6494
  function Select(props) {
6431
6495
  let selectRef;
6432
6496
  const [local, others] = splitProps(props, ["wide", "small", "class", "tooltip", "aria-label", "value", "label", "ribbonSize"]);
@@ -6442,7 +6506,7 @@ function Select(props) {
6442
6506
  }
6443
6507
  });
6444
6508
  const select = () => (() => {
6445
- var _el$ = _tmpl$$U();
6509
+ var _el$ = _tmpl$$Y();
6446
6510
  var _ref$ = selectRef;
6447
6511
  typeof _ref$ === "function" ? use(_ref$, _el$) : selectRef = _el$;
6448
6512
  spread(_el$, mergeProps({
@@ -6477,13 +6541,13 @@ function Select(props) {
6477
6541
  return select();
6478
6542
  },
6479
6543
  get children() {
6480
- var _el$2 = _tmpl$3$m();
6544
+ var _el$2 = _tmpl$3$p();
6481
6545
  insert(_el$2, createComponent(Show, {
6482
6546
  get when() {
6483
6547
  return local.label;
6484
6548
  },
6485
6549
  get children() {
6486
- var _el$3 = _tmpl$2$x();
6550
+ var _el$3 = _tmpl$2$B();
6487
6551
  insert(_el$3, () => local.label);
6488
6552
  return _el$3;
6489
6553
  }
@@ -6493,15 +6557,15 @@ function Select(props) {
6493
6557
  }
6494
6558
  });
6495
6559
  }
6496
- var _tmpl$$T = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-separator>`);
6560
+ var _tmpl$$X = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-separator>`);
6497
6561
  function Separator(props) {
6498
6562
  return (() => {
6499
- var _el$ = _tmpl$$T();
6563
+ var _el$ = _tmpl$$X();
6500
6564
  createRenderEffect((_$p) => setStyleProperty(_el$, "display", props.hidden ? "none" : void 0));
6501
6565
  return _el$;
6502
6566
  })();
6503
6567
  }
6504
- var _tmpl$$S = /* @__PURE__ */ template(`<div><button type=button class=oasis-editor-color-split-main></button><button type=button class=oasis-editor-color-split-menu-button aria-haspopup=menu>`);
6568
+ var _tmpl$$W = /* @__PURE__ */ template(`<div><button type=button class=oasis-editor-color-split-main></button><button type=button class=oasis-editor-color-split-menu-button aria-haspopup=menu>`);
6505
6569
  function SplitButton(props) {
6506
6570
  return createComponent(Popover, {
6507
6571
  get open() {
@@ -6520,7 +6584,7 @@ function SplitButton(props) {
6520
6584
  return props.onPanelMouseLeave;
6521
6585
  },
6522
6586
  trigger: (api) => (() => {
6523
- var _el$ = _tmpl$$S(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
6587
+ var _el$ = _tmpl$$W(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
6524
6588
  use((el) => api.ref(el), _el$);
6525
6589
  _el$2.$$click = () => props.onMain();
6526
6590
  insert(_el$2, () => props.mainContent);
@@ -6561,7 +6625,85 @@ function SplitButton(props) {
6561
6625
  });
6562
6626
  }
6563
6627
  delegateEvents(["click"]);
6564
- var _tmpl$$R = /* @__PURE__ */ template(`<i data-lucide=type>`), _tmpl$2$w = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action role=menuitem><span class=oasis-editor-color-menu-action-swatch></span><span>`), _tmpl$3$l = /* @__PURE__ */ template(`<div class=oasis-editor-color-menu-section><div class=oasis-editor-color-menu-heading></div><div class=oasis-editor-color-theme-grid>`), _tmpl$4$e = /* @__PURE__ */ template(`<div class=oasis-editor-color-menu-section><div class=oasis-editor-color-menu-heading></div><div class=oasis-editor-color-standard-grid>`), _tmpl$5$8 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action role=menuitem><span class="oasis-editor-color-menu-action-swatch oasis-editor-color-menu-more-swatch"></span><span>`), _tmpl$6$6 = /* @__PURE__ */ template(`<input type=color class=oasis-editor-color-custom-input>`), _tmpl$7$2 = /* @__PURE__ */ template(`<span class=oasis-editor-color-split-icon><i></i><span class=oasis-editor-color-split-indicator>`), _tmpl$8$1 = /* @__PURE__ */ template(`<span>`), _tmpl$9 = /* @__PURE__ */ template(`<i data-lucide=slash>`), _tmpl$0 = /* @__PURE__ */ template(`<div class=oasis-editor-color-theme-column>`), _tmpl$1 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-swatch>`);
6628
+ var _tmpl$$V = /* @__PURE__ */ template(`<div class=oasis-editor-color-menu-section><div class=oasis-editor-color-menu-heading></div><div class=oasis-editor-color-theme-grid>`), _tmpl$2$A = /* @__PURE__ */ template(`<div class=oasis-editor-color-menu-section><div class=oasis-editor-color-menu-heading></div><div class=oasis-editor-color-standard-grid>`), _tmpl$3$o = /* @__PURE__ */ template(`<div class=oasis-editor-color-theme-column>`), _tmpl$4$g = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-swatch>`);
6629
+ const normalize = (value) => value.trim().toLowerCase();
6630
+ function ColorGrids(props) {
6631
+ return [(() => {
6632
+ var _el$ = _tmpl$$V(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
6633
+ insert(_el$2, () => props.themeColorsLabel);
6634
+ insert(_el$3, createComponent(For, {
6635
+ get each() {
6636
+ return props.palette.themeColors;
6637
+ },
6638
+ children: (theme) => (() => {
6639
+ var _el$7 = _tmpl$3$o();
6640
+ insert(_el$7, createComponent(For, {
6641
+ get each() {
6642
+ return theme.values;
6643
+ },
6644
+ children: (color) => (() => {
6645
+ var _el$8 = _tmpl$4$g();
6646
+ _el$8.$$click = () => props.onPick(color);
6647
+ _el$8.addEventListener("blur", () => props.onPreview(null));
6648
+ _el$8.addEventListener("focus", () => props.onPreview(color));
6649
+ _el$8.addEventListener("mouseenter", () => props.onPreview(color));
6650
+ setStyleProperty(_el$8, "background-color", color);
6651
+ createRenderEffect((_p$) => {
6652
+ var _v$ = !!(props.activeColor === normalize(color)), _v$2 = `${theme.name} ${color}`, _v$3 = `${theme.name} ${color}`, _v$4 = `${props.testId}-theme-swatch-${color.replace("#", "")}`;
6653
+ _v$ !== _p$.e && _el$8.classList.toggle("oasis-editor-color-swatch-active", _p$.e = _v$);
6654
+ _v$2 !== _p$.t && setAttribute(_el$8, "title", _p$.t = _v$2);
6655
+ _v$3 !== _p$.a && setAttribute(_el$8, "aria-label", _p$.a = _v$3);
6656
+ _v$4 !== _p$.o && setAttribute(_el$8, "data-testid", _p$.o = _v$4);
6657
+ return _p$;
6658
+ }, {
6659
+ e: void 0,
6660
+ t: void 0,
6661
+ a: void 0,
6662
+ o: void 0
6663
+ });
6664
+ return _el$8;
6665
+ })()
6666
+ }));
6667
+ return _el$7;
6668
+ })()
6669
+ }));
6670
+ return _el$;
6671
+ })(), (() => {
6672
+ var _el$4 = _tmpl$2$A(), _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling;
6673
+ insert(_el$5, () => props.standardColorsLabel);
6674
+ insert(_el$6, createComponent(For, {
6675
+ get each() {
6676
+ return props.palette.standardColors;
6677
+ },
6678
+ children: (swatch) => (() => {
6679
+ var _el$9 = _tmpl$4$g();
6680
+ _el$9.$$click = () => props.onPick(swatch.value);
6681
+ _el$9.addEventListener("blur", () => props.onPreview(null));
6682
+ _el$9.addEventListener("focus", () => props.onPreview(swatch.value));
6683
+ _el$9.addEventListener("mouseenter", () => props.onPreview(swatch.value));
6684
+ createRenderEffect((_p$) => {
6685
+ var _v$5 = !!(props.activeColor === normalize(swatch.value)), _v$6 = swatch.value, _v$7 = swatch.name, _v$8 = swatch.name, _v$9 = `${props.testId}-standard-swatch-${swatch.value.replace("#", "")}`;
6686
+ _v$5 !== _p$.e && _el$9.classList.toggle("oasis-editor-color-swatch-active", _p$.e = _v$5);
6687
+ _v$6 !== _p$.t && setStyleProperty(_el$9, "background-color", _p$.t = _v$6);
6688
+ _v$7 !== _p$.a && setAttribute(_el$9, "title", _p$.a = _v$7);
6689
+ _v$8 !== _p$.o && setAttribute(_el$9, "aria-label", _p$.o = _v$8);
6690
+ _v$9 !== _p$.i && setAttribute(_el$9, "data-testid", _p$.i = _v$9);
6691
+ return _p$;
6692
+ }, {
6693
+ e: void 0,
6694
+ t: void 0,
6695
+ a: void 0,
6696
+ o: void 0,
6697
+ i: void 0
6698
+ });
6699
+ return _el$9;
6700
+ })()
6701
+ }));
6702
+ return _el$4;
6703
+ })()];
6704
+ }
6705
+ delegateEvents(["click"]);
6706
+ var _tmpl$$U = /* @__PURE__ */ template(`<i data-lucide=type>`), _tmpl$2$z = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action role=menuitem><span class=oasis-editor-color-menu-action-swatch></span><span>`), _tmpl$3$n = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action role=menuitem><span class="oasis-editor-color-menu-action-swatch oasis-editor-color-menu-more-swatch"></span><span>`), _tmpl$4$f = /* @__PURE__ */ template(`<input type=color class=oasis-editor-color-custom-input>`), _tmpl$5$9 = /* @__PURE__ */ template(`<span class=oasis-editor-color-split-icon><i></i><span class=oasis-editor-color-split-indicator>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span>`), _tmpl$7$3 = /* @__PURE__ */ template(`<i data-lucide=slash>`);
6565
6707
  const normalizeColor = (value) => (value == null ? void 0 : value.trim().toLowerCase()) ?? "";
6566
6708
  function ColorPicker(props) {
6567
6709
  const [isOpen, setIsOpen] = createSignal(false);
@@ -6608,27 +6750,27 @@ function ColorPicker(props) {
6608
6750
  },
6609
6751
  get mainContent() {
6610
6752
  return [(() => {
6611
- var _el$13 = _tmpl$7$2(), _el$14 = _el$13.firstChild, _el$15 = _el$14.nextSibling;
6753
+ var _el$9 = _tmpl$5$9(), _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
6612
6754
  createRenderEffect((_p$) => {
6613
6755
  var _v$3 = props.icon, _v$4 = !displayColor(), _v$5 = displayColor() ?? void 0;
6614
- _v$3 !== _p$.e && setAttribute(_el$14, "data-lucide", _p$.e = _v$3);
6615
- _v$4 !== _p$.t && _el$15.classList.toggle("oasis-editor-color-split-indicator-empty", _p$.t = _v$4);
6616
- _v$5 !== _p$.a && setStyleProperty(_el$15, "background-color", _p$.a = _v$5);
6756
+ _v$3 !== _p$.e && setAttribute(_el$0, "data-lucide", _p$.e = _v$3);
6757
+ _v$4 !== _p$.t && _el$1.classList.toggle("oasis-editor-color-split-indicator-empty", _p$.t = _v$4);
6758
+ _v$5 !== _p$.a && setStyleProperty(_el$1, "background-color", _p$.a = _v$5);
6617
6759
  return _p$;
6618
6760
  }, {
6619
6761
  e: void 0,
6620
6762
  t: void 0,
6621
6763
  a: void 0
6622
6764
  });
6623
- return _el$13;
6765
+ return _el$9;
6624
6766
  })(), createComponent(Show, {
6625
6767
  get when() {
6626
6768
  return props.label;
6627
6769
  },
6628
6770
  get children() {
6629
- var _el$16 = _tmpl$8$1();
6630
- insert(_el$16, () => props.label);
6631
- return _el$16;
6771
+ var _el$10 = _tmpl$6$7();
6772
+ insert(_el$10, () => props.label);
6773
+ return _el$10;
6632
6774
  }
6633
6775
  })];
6634
6776
  },
@@ -6638,122 +6780,68 @@ function ColorPicker(props) {
6638
6780
  return clearLabel();
6639
6781
  },
6640
6782
  get children() {
6641
- var _el$ = _tmpl$2$w(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling;
6783
+ var _el$ = _tmpl$2$z(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling;
6642
6784
  _el$.$$click = () => applyColor(null);
6643
6785
  insert(_el$2, createComponent(Show, {
6644
6786
  get when() {
6645
6787
  return props.kind === "color";
6646
6788
  },
6647
6789
  get fallback() {
6648
- return _tmpl$9();
6790
+ return _tmpl$7$3();
6649
6791
  },
6650
6792
  get children() {
6651
- return _tmpl$$R();
6793
+ return _tmpl$$U();
6652
6794
  }
6653
6795
  }));
6654
6796
  insert(_el$4, clearLabel);
6655
6797
  createRenderEffect(() => setAttribute(_el$, "data-testid", `${props.testId}-clear`));
6656
6798
  return _el$;
6657
6799
  }
6658
- }), (() => {
6659
- var _el$5 = _tmpl$3$l(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
6660
- insert(_el$6, () => props.themeColorsLabel);
6661
- insert(_el$7, createComponent(For, {
6662
- get each() {
6663
- return props.palette.themeColors;
6664
- },
6665
- children: (theme) => (() => {
6666
- var _el$18 = _tmpl$0();
6667
- insert(_el$18, createComponent(For, {
6668
- get each() {
6669
- return theme.values;
6670
- },
6671
- children: (color) => (() => {
6672
- var _el$19 = _tmpl$1();
6673
- _el$19.$$click = () => applyColor(color);
6674
- _el$19.addEventListener("blur", () => setPreviewColor(null));
6675
- _el$19.addEventListener("focus", () => setPreviewColor(color));
6676
- _el$19.addEventListener("mouseenter", () => setPreviewColor(color));
6677
- setStyleProperty(_el$19, "background-color", color);
6678
- createRenderEffect((_p$) => {
6679
- var _v$6 = !!(activeColor() === normalizeColor(color)), _v$7 = `${theme.name} ${color}`, _v$8 = `${theme.name} ${color}`, _v$9 = `${props.testId}-theme-swatch-${color.replace("#", "")}`;
6680
- _v$6 !== _p$.e && _el$19.classList.toggle("oasis-editor-color-swatch-active", _p$.e = _v$6);
6681
- _v$7 !== _p$.t && setAttribute(_el$19, "title", _p$.t = _v$7);
6682
- _v$8 !== _p$.a && setAttribute(_el$19, "aria-label", _p$.a = _v$8);
6683
- _v$9 !== _p$.o && setAttribute(_el$19, "data-testid", _p$.o = _v$9);
6684
- return _p$;
6685
- }, {
6686
- e: void 0,
6687
- t: void 0,
6688
- a: void 0,
6689
- o: void 0
6690
- });
6691
- return _el$19;
6692
- })()
6693
- }));
6694
- return _el$18;
6695
- })()
6696
- }));
6697
- return _el$5;
6698
- })(), (() => {
6699
- var _el$8 = _tmpl$4$e(), _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
6700
- insert(_el$9, () => props.standardColorsLabel);
6701
- insert(_el$0, createComponent(For, {
6702
- get each() {
6703
- return props.palette.standardColors;
6704
- },
6705
- children: (swatch) => (() => {
6706
- var _el$20 = _tmpl$1();
6707
- _el$20.$$click = () => applyColor(swatch.value);
6708
- _el$20.addEventListener("blur", () => setPreviewColor(null));
6709
- _el$20.addEventListener("focus", () => setPreviewColor(swatch.value));
6710
- _el$20.addEventListener("mouseenter", () => setPreviewColor(swatch.value));
6711
- createRenderEffect((_p$) => {
6712
- var _v$0 = !!(activeColor() === normalizeColor(swatch.value)), _v$1 = swatch.value, _v$10 = swatch.name, _v$11 = swatch.name, _v$12 = `${props.testId}-standard-swatch-${swatch.value.replace("#", "")}`;
6713
- _v$0 !== _p$.e && _el$20.classList.toggle("oasis-editor-color-swatch-active", _p$.e = _v$0);
6714
- _v$1 !== _p$.t && setStyleProperty(_el$20, "background-color", _p$.t = _v$1);
6715
- _v$10 !== _p$.a && setAttribute(_el$20, "title", _p$.a = _v$10);
6716
- _v$11 !== _p$.o && setAttribute(_el$20, "aria-label", _p$.o = _v$11);
6717
- _v$12 !== _p$.i && setAttribute(_el$20, "data-testid", _p$.i = _v$12);
6718
- return _p$;
6719
- }, {
6720
- e: void 0,
6721
- t: void 0,
6722
- a: void 0,
6723
- o: void 0,
6724
- i: void 0
6725
- });
6726
- return _el$20;
6727
- })()
6728
- }));
6729
- return _el$8;
6730
- })(), createComponent(Show, {
6800
+ }), createComponent(ColorGrids, {
6801
+ get palette() {
6802
+ return props.palette;
6803
+ },
6804
+ get themeColorsLabel() {
6805
+ return props.themeColorsLabel;
6806
+ },
6807
+ get standardColorsLabel() {
6808
+ return props.standardColorsLabel;
6809
+ },
6810
+ get activeColor() {
6811
+ return activeColor();
6812
+ },
6813
+ get testId() {
6814
+ return props.testId;
6815
+ },
6816
+ onPreview: setPreviewColor,
6817
+ onPick: applyColor
6818
+ }), createComponent(Show, {
6731
6819
  get when() {
6732
6820
  return props.palette.allowCustom ?? true;
6733
6821
  },
6734
6822
  get children() {
6735
6823
  return [(() => {
6736
- var _el$1 = _tmpl$5$8(), _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
6737
- _el$1.$$click = () => customColorInputRef == null ? void 0 : customColorInputRef.click();
6738
- insert(_el$11, () => props.moreColorsLabel);
6739
- createRenderEffect(() => setAttribute(_el$1, "data-testid", `${props.testId}-more-colors`));
6740
- return _el$1;
6824
+ var _el$5 = _tmpl$3$n(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
6825
+ _el$5.$$click = () => customColorInputRef == null ? void 0 : customColorInputRef.click();
6826
+ insert(_el$7, () => props.moreColorsLabel);
6827
+ createRenderEffect(() => setAttribute(_el$5, "data-testid", `${props.testId}-more-colors`));
6828
+ return _el$5;
6741
6829
  })(), (() => {
6742
- var _el$12 = _tmpl$6$6();
6743
- _el$12.$$input = (event) => applyColor(event.currentTarget.value);
6830
+ var _el$8 = _tmpl$4$f();
6831
+ _el$8.$$input = (event) => applyColor(event.currentTarget.value);
6744
6832
  var _ref$ = customColorInputRef;
6745
- typeof _ref$ === "function" ? use(_ref$, _el$12) : customColorInputRef = _el$12;
6833
+ typeof _ref$ === "function" ? use(_ref$, _el$8) : customColorInputRef = _el$8;
6746
6834
  createRenderEffect((_p$) => {
6747
6835
  var _v$ = `${props.testId}-custom-input`, _v$2 = props.moreColorsLabel;
6748
- _v$ !== _p$.e && setAttribute(_el$12, "data-testid", _p$.e = _v$);
6749
- _v$2 !== _p$.t && setAttribute(_el$12, "aria-label", _p$.t = _v$2);
6836
+ _v$ !== _p$.e && setAttribute(_el$8, "data-testid", _p$.e = _v$);
6837
+ _v$2 !== _p$.t && setAttribute(_el$8, "aria-label", _p$.t = _v$2);
6750
6838
  return _p$;
6751
6839
  }, {
6752
6840
  e: void 0,
6753
6841
  t: void 0
6754
6842
  });
6755
- createRenderEffect(() => _el$12.value = displayColor() || directApplyColor());
6756
- return _el$12;
6843
+ createRenderEffect(() => _el$8.value = displayColor() || directApplyColor());
6844
+ return _el$8;
6757
6845
  })()];
6758
6846
  }
6759
6847
  })];
@@ -6761,7 +6849,7 @@ function ColorPicker(props) {
6761
6849
  });
6762
6850
  }
6763
6851
  delegateEvents(["click", "input"]);
6764
- var _tmpl$$Q = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-status>`), _tmpl$2$v = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-grid>`), _tmpl$3$k = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$4$d = /* @__PURE__ */ template(`<span>`), _tmpl$5$7 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-tool-button>`), _tmpl$6$5 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-table-grid-picker-cell>`);
6852
+ var _tmpl$$T = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-status>`), _tmpl$2$y = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-grid>`), _tmpl$3$m = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$4$e = /* @__PURE__ */ template(`<span>`), _tmpl$5$8 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-tool-button>`), _tmpl$6$6 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-table-grid-picker-cell>`);
6765
6853
  function GridPicker(props) {
6766
6854
  const t = useI18n();
6767
6855
  const [isOpen, setIsOpen] = createSignal(false);
@@ -6836,7 +6924,7 @@ function GridPicker(props) {
6836
6924
  return h.row === 0 || h.col === 0 ? t("toolbar.table") : `${h.row} × ${h.col}`;
6837
6925
  };
6838
6926
  return (() => {
6839
- var _el$ = _tmpl$3$k();
6927
+ var _el$ = _tmpl$3$m();
6840
6928
  insert(_el$, createComponent(Popover, {
6841
6929
  get open() {
6842
6930
  return isOpen();
@@ -6848,7 +6936,7 @@ function GridPicker(props) {
6848
6936
  col: 0
6849
6937
  }),
6850
6938
  trigger: (api) => (() => {
6851
- var _el$4 = _tmpl$5$7();
6939
+ var _el$4 = _tmpl$5$8();
6852
6940
  _el$4.$$click = () => api.toggle();
6853
6941
  use((el) => api.ref(el), _el$4);
6854
6942
  insert(_el$4, createComponent(ToolIcon, {
@@ -6861,7 +6949,7 @@ function GridPicker(props) {
6861
6949
  return props.label;
6862
6950
  },
6863
6951
  get children() {
6864
- var _el$5 = _tmpl$4$d();
6952
+ var _el$5 = _tmpl$4$e();
6865
6953
  insert(_el$5, () => props.label);
6866
6954
  return _el$5;
6867
6955
  }
@@ -6885,11 +6973,11 @@ function GridPicker(props) {
6885
6973
  })(),
6886
6974
  get children() {
6887
6975
  return [(() => {
6888
- var _el$2 = _tmpl$$Q();
6976
+ var _el$2 = _tmpl$$T();
6889
6977
  insert(_el$2, statusLabel);
6890
6978
  return _el$2;
6891
6979
  })(), (() => {
6892
- var _el$3 = _tmpl$2$v();
6980
+ var _el$3 = _tmpl$2$y();
6893
6981
  insert(_el$3, createComponent(For, {
6894
6982
  get each() {
6895
6983
  return rows();
@@ -6899,7 +6987,7 @@ function GridPicker(props) {
6899
6987
  return cols();
6900
6988
  },
6901
6989
  children: (c) => (() => {
6902
- var _el$6 = _tmpl$6$5();
6990
+ var _el$6 = _tmpl$6$6();
6903
6991
  _el$6.$$click = () => selectGridSize(r, c);
6904
6992
  _el$6.$$mousedown = (event) => event.preventDefault();
6905
6993
  _el$6.addEventListener("mouseenter", () => setHover({
@@ -6989,7 +7077,7 @@ const DEFAULT_PALETTE = {
6989
7077
  standardColors: STANDARD_COLORS,
6990
7078
  allowCustom: true
6991
7079
  };
6992
- var _tmpl$$P = /* @__PURE__ */ template(`<button type=button class=oasis-editor-style-gallery-card role=option><span>`), _tmpl$2$u = /* @__PURE__ */ template(`<div class=oasis-editor-style-gallery-grid>`), _tmpl$3$j = /* @__PURE__ */ template(`<div class=oasis-editor-style-gallery><div class=oasis-editor-style-gallery-ribbon><div class=oasis-editor-style-gallery-strip role=listbox></div><button type=button class=oasis-editor-style-gallery-expand aria-haspopup=listbox>`), _tmpl$4$c = /* @__PURE__ */ template(`<option>`);
7080
+ var _tmpl$$S = /* @__PURE__ */ template(`<button type=button class=oasis-editor-style-gallery-card role=option><span>`), _tmpl$2$x = /* @__PURE__ */ template(`<div class=oasis-editor-style-gallery-grid>`), _tmpl$3$l = /* @__PURE__ */ template(`<div class=oasis-editor-style-gallery><div class=oasis-editor-style-gallery-ribbon><div class=oasis-editor-style-gallery-strip role=listbox></div><button type=button class=oasis-editor-style-gallery-expand aria-haspopup=listbox>`), _tmpl$4$d = /* @__PURE__ */ template(`<option>`);
6993
7081
  function getQuickStyles(styles) {
6994
7082
  const applicable = styles.filter((style2) => style2.type !== "table" && (!style2.semiHidden || style2.unhideWhenUsed && style2.isUsed));
6995
7083
  const hasQuickStyles = applicable.some((style2) => style2.qFormat === true);
@@ -7069,7 +7157,7 @@ function StyleGallery(props) {
7069
7157
  return styles();
7070
7158
  },
7071
7159
  children: (style$1) => (() => {
7072
- var _el$ = _tmpl$$P(), _el$2 = _el$.firstChild;
7160
+ var _el$ = _tmpl$$S(), _el$2 = _el$.firstChild;
7073
7161
  _el$.$$click = () => apply(style$1);
7074
7162
  insert(_el$2, () => style$1.name);
7075
7163
  createRenderEffect((_p$) => {
@@ -7100,7 +7188,7 @@ function StyleGallery(props) {
7100
7188
  panelRole: "listbox",
7101
7189
  panelTestId,
7102
7190
  trigger: (popover) => (() => {
7103
- var _el$4 = _tmpl$3$j(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
7191
+ var _el$4 = _tmpl$3$l(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
7104
7192
  var _ref$ = popover.ref;
7105
7193
  typeof _ref$ === "function" ? use(_ref$, _el$4) : popover.ref = _el$4;
7106
7194
  insert(_el$4, createComponent(Select, {
@@ -7124,7 +7212,7 @@ function StyleGallery(props) {
7124
7212
  return styles();
7125
7213
  },
7126
7214
  children: (style2) => (() => {
7127
- var _el$8 = _tmpl$4$c();
7215
+ var _el$8 = _tmpl$4$d();
7128
7216
  insert(_el$8, () => style2.name);
7129
7217
  createRenderEffect(() => _el$8.value = style2.id);
7130
7218
  return _el$8;
@@ -7150,7 +7238,7 @@ function StyleGallery(props) {
7150
7238
  return _el$4;
7151
7239
  })(),
7152
7240
  get children() {
7153
- var _el$3 = _tmpl$2$u();
7241
+ var _el$3 = _tmpl$2$x();
7154
7242
  _el$3.$$keydown = onPanelKeyDown;
7155
7243
  insert(_el$3, cards);
7156
7244
  return _el$3;
@@ -7158,7 +7246,355 @@ function StyleGallery(props) {
7158
7246
  });
7159
7247
  }
7160
7248
  delegateEvents(["click", "keydown"]);
7161
- var _tmpl$$O = /* @__PURE__ */ template(`<option value>`), _tmpl$2$t = /* @__PURE__ */ template(`<option>`), _tmpl$3$i = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item style=align-items:center>`);
7249
+ var _tmpl$$R = /* @__PURE__ */ template(`<span class=oasis-editor-wide-menu-button-indicator>`), _tmpl$2$w = /* @__PURE__ */ template(`<span class=oasis-editor-wide-menu-button-icon>`), _tmpl$3$k = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-wide-menu-button"aria-haspopup=menu><span class=oasis-editor-wide-menu-button-label>`);
7250
+ function WideMenuButton(props) {
7251
+ return createComponent(Popover, {
7252
+ get open() {
7253
+ return props.open;
7254
+ },
7255
+ get onOpenChange() {
7256
+ return props.onOpenChange;
7257
+ },
7258
+ panelRole: "menu",
7259
+ get panelClass() {
7260
+ return `oasis-editor-color-menu ${props.panelClass ?? ""}`;
7261
+ },
7262
+ trigger: (api) => (() => {
7263
+ var _el$ = _tmpl$3$k(), _el$4 = _el$.firstChild;
7264
+ _el$.$$click = () => api.toggle();
7265
+ use((el) => api.ref(el), _el$);
7266
+ insert(_el$, createComponent(Show, {
7267
+ get when() {
7268
+ return props.icon;
7269
+ },
7270
+ get children() {
7271
+ var _el$2 = _tmpl$2$w();
7272
+ insert(_el$2, createComponent(ToolIcon, {
7273
+ get name() {
7274
+ return props.icon;
7275
+ }
7276
+ }), null);
7277
+ insert(_el$2, createComponent(Show, {
7278
+ get when() {
7279
+ return props.indicatorColor !== void 0;
7280
+ },
7281
+ get children() {
7282
+ var _el$3 = _tmpl$$R();
7283
+ createRenderEffect((_p$) => {
7284
+ var _v$ = !props.indicatorColor, _v$2 = props.indicatorColor ?? "";
7285
+ _v$ !== _p$.e && _el$3.classList.toggle("oasis-editor-wide-menu-button-indicator-empty", _p$.e = _v$);
7286
+ _v$2 !== _p$.t && setStyleProperty(_el$3, "background-color", _p$.t = _v$2);
7287
+ return _p$;
7288
+ }, {
7289
+ e: void 0,
7290
+ t: void 0
7291
+ });
7292
+ return _el$3;
7293
+ }
7294
+ }), null);
7295
+ return _el$2;
7296
+ }
7297
+ }), _el$4);
7298
+ insert(_el$4, () => props.label);
7299
+ insert(_el$, createComponent(DropdownChevron, {}), null);
7300
+ createRenderEffect((_p$) => {
7301
+ var _v$3 = !!(props.active || api.open), _v$4 = props.disabled, _v$5 = props.tooltip ?? props.label, _v$6 = props.tooltip ?? props.label, _v$7 = api.open, _v$8 = props.testId;
7302
+ _v$3 !== _p$.e && _el$.classList.toggle("oasis-editor-tool-button-active", _p$.e = _v$3);
7303
+ _v$4 !== _p$.t && (_el$.disabled = _p$.t = _v$4);
7304
+ _v$5 !== _p$.a && setAttribute(_el$, "title", _p$.a = _v$5);
7305
+ _v$6 !== _p$.o && setAttribute(_el$, "aria-label", _p$.o = _v$6);
7306
+ _v$7 !== _p$.i && setAttribute(_el$, "aria-expanded", _p$.i = _v$7);
7307
+ _v$8 !== _p$.n && setAttribute(_el$, "data-testid", _p$.n = _v$8);
7308
+ return _p$;
7309
+ }, {
7310
+ e: void 0,
7311
+ t: void 0,
7312
+ a: void 0,
7313
+ o: void 0,
7314
+ i: void 0,
7315
+ n: void 0
7316
+ });
7317
+ return _el$;
7318
+ })(),
7319
+ get children() {
7320
+ return props.children;
7321
+ }
7322
+ });
7323
+ }
7324
+ delegateEvents(["click"]);
7325
+ const LINE_DASH_PATTERN_PT = {
7326
+ solid: [],
7327
+ dot: [0.75, 2.25],
7328
+ sysDot: [0.75, 0.75],
7329
+ dash: [3.75, 2.25],
7330
+ sysDash: [2.25, 2.25],
7331
+ dashDot: [3.75, 2.25, 0.75, 2.25],
7332
+ lgDash: [6, 2.25],
7333
+ lgDashDot: [6, 2.25, 0.75, 2.25],
7334
+ lgDashDotDot: [6, 2.25, 0.75, 2.25, 0.75, 2.25]
7335
+ };
7336
+ const DASH_VALUES = new Set(
7337
+ Object.keys(LINE_DASH_PATTERN_PT)
7338
+ );
7339
+ function parseLineDash(value) {
7340
+ return value && DASH_VALUES.has(value) ? value : void 0;
7341
+ }
7342
+ function lineDashPatternPt(dash) {
7343
+ return LINE_DASH_PATTERN_PT[dash ?? "solid"];
7344
+ }
7345
+ const PICTURE_BORDER_WEIGHTS_PT = [
7346
+ 0.25,
7347
+ 0.5,
7348
+ 0.75,
7349
+ 1,
7350
+ 1.5,
7351
+ 2.25,
7352
+ 3,
7353
+ 4.5,
7354
+ 6
7355
+ ];
7356
+ function formatBorderWeight(widthPt) {
7357
+ const whole = Math.floor(widthPt);
7358
+ const fraction = widthPt - whole;
7359
+ const glyph = fraction === 0.25 ? "¼" : fraction === 0.5 ? "½" : fraction === 0.75 ? "¾" : "";
7360
+ if (!glyph) {
7361
+ return String(whole);
7362
+ }
7363
+ return whole === 0 ? glyph : `${whole}${glyph}`;
7364
+ }
7365
+ const PICTURE_BORDER_DASH_OPTIONS = [
7366
+ { value: "solid", labelKey: "image.borderDash.solid" },
7367
+ { value: "sysDot", labelKey: "image.borderDash.sysDot" },
7368
+ { value: "sysDash", labelKey: "image.borderDash.sysDash" },
7369
+ { value: "dot", labelKey: "image.borderDash.dot" },
7370
+ { value: "dash", labelKey: "image.borderDash.dash" },
7371
+ { value: "dashDot", labelKey: "image.borderDash.dashDot" },
7372
+ { value: "lgDash", labelKey: "image.borderDash.lgDash" },
7373
+ { value: "lgDashDot", labelKey: "image.borderDash.lgDashDot" },
7374
+ { value: "lgDashDotDot", labelKey: "image.borderDash.lgDashDotDot" }
7375
+ ];
7376
+ function dashPreviewArray(dash) {
7377
+ const pattern = lineDashPatternPt(dash);
7378
+ return pattern.length > 0 ? pattern.join(" ") : void 0;
7379
+ }
7380
+ var _tmpl$$Q = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action role=menuitem><span class=oasis-editor-color-menu-action-swatch><i data-lucide=slash></i></span><span>`), _tmpl$2$v = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action role=menuitem><span class="oasis-editor-color-menu-action-swatch oasis-editor-color-menu-more-swatch"></span><span>`), _tmpl$3$j = /* @__PURE__ */ template(`<input type=color class=oasis-editor-color-custom-input>`), _tmpl$4$c = /* @__PURE__ */ template(`<div class=oasis-editor-picture-border-flyout role=menu>`), _tmpl$5$7 = /* @__PURE__ */ template(`<div class=oasis-editor-picture-border-submenu-row><button type=button class="oasis-editor-color-menu-action oasis-editor-picture-border-submenu-trigger"role=menuitem aria-haspopup=menu><span class=oasis-editor-color-menu-action-swatch><i data-lucide=minus></i></span><span></span><i data-lucide=chevron-right class=oasis-editor-dropdown-chevron>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=oasis-editor-picture-border-submenu-row><button type=button class="oasis-editor-color-menu-action oasis-editor-picture-border-submenu-trigger"role=menuitem aria-haspopup=menu><span class=oasis-editor-color-menu-action-swatch><i data-lucide=align-justify></i></span><span></span><i data-lucide=chevron-right class=oasis-editor-dropdown-chevron>`), _tmpl$7$2 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-picture-border-option role=menuitemradio><span class=oasis-editor-picture-border-preview></span><span class=oasis-editor-picture-border-option-label>`), _tmpl$8$1 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-picture-border-option role=menuitemradio><svg class=oasis-editor-picture-border-preview-svg viewBox="0 0 48 4"aria-hidden=true><line x1=0 y1=2 x2=48 y2=2 stroke=currentColor stroke-width=1.5></line></svg><span class=oasis-editor-picture-border-option-label>`);
7381
+ function PictureBorderPicker(props) {
7382
+ const [open, setOpen] = createSignal(false);
7383
+ const [submenu, setSubmenu] = createSignal(null);
7384
+ let customColorInputRef;
7385
+ const activeColor = () => {
7386
+ var _a;
7387
+ return ((_a = props.border) == null ? void 0 : _a.color.toLowerCase()) ?? "";
7388
+ };
7389
+ const close = () => {
7390
+ setOpen(false);
7391
+ setSubmenu(null);
7392
+ };
7393
+ const apply = (patch) => {
7394
+ props.onApply(patch);
7395
+ close();
7396
+ };
7397
+ const toggleSubmenu = (next) => {
7398
+ setSubmenu((current) => current === next ? null : next);
7399
+ };
7400
+ return createComponent(WideMenuButton, {
7401
+ get open() {
7402
+ return open();
7403
+ },
7404
+ onOpenChange: (next) => {
7405
+ if (next) setOpen(true);
7406
+ else close();
7407
+ },
7408
+ icon: "square",
7409
+ get label() {
7410
+ return props.label;
7411
+ },
7412
+ get tooltip() {
7413
+ return props.label;
7414
+ },
7415
+ get testId() {
7416
+ return props.testId;
7417
+ },
7418
+ get disabled() {
7419
+ return props.disabled;
7420
+ },
7421
+ get indicatorColor() {
7422
+ var _a;
7423
+ return ((_a = props.border) == null ? void 0 : _a.color) ?? null;
7424
+ },
7425
+ panelClass: "oasis-editor-picture-border-menu",
7426
+ get children() {
7427
+ return [createComponent(ColorGrids, {
7428
+ get palette() {
7429
+ return props.palette;
7430
+ },
7431
+ get themeColorsLabel() {
7432
+ return props.themeColorsLabel;
7433
+ },
7434
+ get standardColorsLabel() {
7435
+ return props.standardColorsLabel;
7436
+ },
7437
+ get activeColor() {
7438
+ return activeColor();
7439
+ },
7440
+ get testId() {
7441
+ return props.testId;
7442
+ },
7443
+ onPreview: () => void 0,
7444
+ onPick: (color) => apply({
7445
+ color
7446
+ })
7447
+ }), (() => {
7448
+ var _el$ = _tmpl$$Q(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
7449
+ _el$.$$click = () => apply({
7450
+ color: null
7451
+ });
7452
+ insert(_el$3, () => props.noOutlineLabel);
7453
+ createRenderEffect(() => setAttribute(_el$, "data-testid", `${props.testId}-none`));
7454
+ return _el$;
7455
+ })(), (() => {
7456
+ var _el$4 = _tmpl$2$v(), _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling;
7457
+ _el$4.$$click = () => customColorInputRef == null ? void 0 : customColorInputRef.click();
7458
+ insert(_el$6, () => props.moreColorsLabel);
7459
+ createRenderEffect(() => setAttribute(_el$4, "data-testid", `${props.testId}-more-colors`));
7460
+ return _el$4;
7461
+ })(), (() => {
7462
+ var _el$7 = _tmpl$3$j();
7463
+ _el$7.$$input = (event) => apply({
7464
+ color: event.currentTarget.value
7465
+ });
7466
+ var _ref$ = customColorInputRef;
7467
+ typeof _ref$ === "function" ? use(_ref$, _el$7) : customColorInputRef = _el$7;
7468
+ createRenderEffect((_p$) => {
7469
+ var _v$ = `${props.testId}-custom-input`, _v$2 = props.moreColorsLabel;
7470
+ _v$ !== _p$.e && setAttribute(_el$7, "data-testid", _p$.e = _v$);
7471
+ _v$2 !== _p$.t && setAttribute(_el$7, "aria-label", _p$.t = _v$2);
7472
+ return _p$;
7473
+ }, {
7474
+ e: void 0,
7475
+ t: void 0
7476
+ });
7477
+ createRenderEffect(() => {
7478
+ var _a;
7479
+ return _el$7.value = ((_a = props.border) == null ? void 0 : _a.color) ?? "#000000";
7480
+ });
7481
+ return _el$7;
7482
+ })(), (() => {
7483
+ var _el$8 = _tmpl$5$7(), _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
7484
+ _el$9.$$click = () => toggleSubmenu("weight");
7485
+ insert(_el$1, () => props.weightLabel);
7486
+ insert(_el$8, createComponent(Show, {
7487
+ get when() {
7488
+ return submenu() === "weight";
7489
+ },
7490
+ get children() {
7491
+ var _el$10 = _tmpl$4$c();
7492
+ insert(_el$10, createComponent(For, {
7493
+ each: PICTURE_BORDER_WEIGHTS_PT,
7494
+ children: (widthPt) => {
7495
+ const isActive = () => {
7496
+ var _a;
7497
+ return ((_a = props.border) == null ? void 0 : _a.widthPt) === widthPt;
7498
+ };
7499
+ return (() => {
7500
+ var _el$16 = _tmpl$7$2(), _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling;
7501
+ _el$16.$$click = () => apply({
7502
+ widthPt
7503
+ });
7504
+ setStyleProperty(_el$17, "border-bottom-width", `${widthPt}pt`);
7505
+ insert(_el$18, () => `${formatBorderWeight(widthPt)} pt`);
7506
+ createRenderEffect((_p$) => {
7507
+ var _v$9 = !!isActive(), _v$0 = isActive(), _v$1 = `${props.testId}-weight-${widthPt}`;
7508
+ _v$9 !== _p$.e && _el$16.classList.toggle("oasis-editor-picture-border-option-active", _p$.e = _v$9);
7509
+ _v$0 !== _p$.t && setAttribute(_el$16, "aria-checked", _p$.t = _v$0);
7510
+ _v$1 !== _p$.a && setAttribute(_el$16, "data-testid", _p$.a = _v$1);
7511
+ return _p$;
7512
+ }, {
7513
+ e: void 0,
7514
+ t: void 0,
7515
+ a: void 0
7516
+ });
7517
+ return _el$16;
7518
+ })();
7519
+ }
7520
+ }));
7521
+ return _el$10;
7522
+ }
7523
+ }), null);
7524
+ createRenderEffect((_p$) => {
7525
+ var _v$3 = !!(submenu() === "weight"), _v$4 = `${props.testId}-weight`, _v$5 = submenu() === "weight";
7526
+ _v$3 !== _p$.e && _el$9.classList.toggle("oasis-editor-picture-border-submenu-open", _p$.e = _v$3);
7527
+ _v$4 !== _p$.t && setAttribute(_el$9, "data-testid", _p$.t = _v$4);
7528
+ _v$5 !== _p$.a && setAttribute(_el$9, "aria-expanded", _p$.a = _v$5);
7529
+ return _p$;
7530
+ }, {
7531
+ e: void 0,
7532
+ t: void 0,
7533
+ a: void 0
7534
+ });
7535
+ return _el$8;
7536
+ })(), (() => {
7537
+ var _el$11 = _tmpl$6$5(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
7538
+ _el$12.$$click = () => toggleSubmenu("dashes");
7539
+ insert(_el$14, () => props.dashesLabel);
7540
+ insert(_el$11, createComponent(Show, {
7541
+ get when() {
7542
+ return submenu() === "dashes";
7543
+ },
7544
+ get children() {
7545
+ var _el$15 = _tmpl$4$c();
7546
+ insert(_el$15, createComponent(For, {
7547
+ get each() {
7548
+ return props.dashOptions;
7549
+ },
7550
+ children: (option) => {
7551
+ const isActive = () => props.border !== null && (props.border.dash ?? "solid") === option.value;
7552
+ return (() => {
7553
+ var _el$19 = _tmpl$8$1(), _el$20 = _el$19.firstChild, _el$21 = _el$20.firstChild, _el$22 = _el$20.nextSibling;
7554
+ _el$19.$$click = () => apply({
7555
+ dash: option.value
7556
+ });
7557
+ insert(_el$22, () => option.label);
7558
+ createRenderEffect((_p$) => {
7559
+ var _v$10 = !!isActive(), _v$11 = isActive(), _v$12 = `${props.testId}-dash-${option.value}`, _v$13 = option.label, _v$14 = dashPreviewArray(option.value);
7560
+ _v$10 !== _p$.e && _el$19.classList.toggle("oasis-editor-picture-border-option-active", _p$.e = _v$10);
7561
+ _v$11 !== _p$.t && setAttribute(_el$19, "aria-checked", _p$.t = _v$11);
7562
+ _v$12 !== _p$.a && setAttribute(_el$19, "data-testid", _p$.a = _v$12);
7563
+ _v$13 !== _p$.o && setAttribute(_el$19, "title", _p$.o = _v$13);
7564
+ _v$14 !== _p$.i && setAttribute(_el$21, "stroke-dasharray", _p$.i = _v$14);
7565
+ return _p$;
7566
+ }, {
7567
+ e: void 0,
7568
+ t: void 0,
7569
+ a: void 0,
7570
+ o: void 0,
7571
+ i: void 0
7572
+ });
7573
+ return _el$19;
7574
+ })();
7575
+ }
7576
+ }));
7577
+ return _el$15;
7578
+ }
7579
+ }), null);
7580
+ createRenderEffect((_p$) => {
7581
+ var _v$6 = !!(submenu() === "dashes"), _v$7 = `${props.testId}-dashes`, _v$8 = submenu() === "dashes";
7582
+ _v$6 !== _p$.e && _el$12.classList.toggle("oasis-editor-picture-border-submenu-open", _p$.e = _v$6);
7583
+ _v$7 !== _p$.t && setAttribute(_el$12, "data-testid", _p$.t = _v$7);
7584
+ _v$8 !== _p$.a && setAttribute(_el$12, "aria-expanded", _p$.a = _v$8);
7585
+ return _p$;
7586
+ }, {
7587
+ e: void 0,
7588
+ t: void 0,
7589
+ a: void 0
7590
+ });
7591
+ return _el$11;
7592
+ })()];
7593
+ }
7594
+ });
7595
+ }
7596
+ delegateEvents(["click", "input"]);
7597
+ var _tmpl$$P = /* @__PURE__ */ template(`<option value>`), _tmpl$2$u = /* @__PURE__ */ template(`<option>`), _tmpl$3$i = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item style=align-items:center>`);
7162
7598
  function renderMenuContent(content, api) {
7163
7599
  if (content.kind === "custom") {
7164
7600
  return content.render(api);
@@ -7316,7 +7752,7 @@ function RenderSelect(props) {
7316
7752
  return props.item.placeholder !== void 0;
7317
7753
  },
7318
7754
  get children() {
7319
- var _el$ = _tmpl$$O();
7755
+ var _el$ = _tmpl$$P();
7320
7756
  insert(_el$, () => props.item.placeholder);
7321
7757
  return _el$;
7322
7758
  }
@@ -7325,7 +7761,7 @@ function RenderSelect(props) {
7325
7761
  return props.item.options(props.api);
7326
7762
  },
7327
7763
  children: (option) => (() => {
7328
- var _el$2 = _tmpl$2$t();
7764
+ var _el$2 = _tmpl$2$u();
7329
7765
  insert(_el$2, () => option.label);
7330
7766
  createRenderEffect(() => _el$2.value = option.value);
7331
7767
  return _el$2;
@@ -7400,6 +7836,53 @@ function RenderColorPicker(props) {
7400
7836
  onApply: apply
7401
7837
  });
7402
7838
  }
7839
+ function RenderPictureBorder(props) {
7840
+ const b = bindItem(props.item, props.api);
7841
+ return createComponent(PictureBorderPicker, {
7842
+ get border() {
7843
+ return b.value() ?? null;
7844
+ },
7845
+ get palette() {
7846
+ return props.item.palette ?? DEFAULT_PALETTE;
7847
+ },
7848
+ get disabled() {
7849
+ return b.disabled();
7850
+ },
7851
+ get testId() {
7852
+ return props.item.testId ?? props.item.id;
7853
+ },
7854
+ get label() {
7855
+ return resolveLabel(props.item, props.api) ?? props.api.t("image.border");
7856
+ },
7857
+ get noOutlineLabel() {
7858
+ return props.api.t("image.borderNone");
7859
+ },
7860
+ get moreColorsLabel() {
7861
+ return props.api.t("image.borderMoreColors");
7862
+ },
7863
+ get weightLabel() {
7864
+ return props.api.t("image.borderWeight");
7865
+ },
7866
+ get dashesLabel() {
7867
+ return props.api.t("image.borderDashes");
7868
+ },
7869
+ get themeColorsLabel() {
7870
+ return props.api.t("toolbar.themeColors");
7871
+ },
7872
+ get standardColorsLabel() {
7873
+ return props.api.t("toolbar.standardColors");
7874
+ },
7875
+ get dashOptions() {
7876
+ return PICTURE_BORDER_DASH_OPTIONS.map((option) => ({
7877
+ value: option.value,
7878
+ label: props.api.t(option.labelKey)
7879
+ }));
7880
+ },
7881
+ onApply: (patch) => {
7882
+ props.api.commands.execute(props.item.command, patch);
7883
+ }
7884
+ });
7885
+ }
7403
7886
  function RenderGridPicker(props) {
7404
7887
  const onSelect = (rows, cols) => {
7405
7888
  props.api.commands.execute(props.item.command, {
@@ -7459,6 +7942,7 @@ const TOOLBAR_RENDERERS = {
7459
7942
  select: RenderSelect,
7460
7943
  styleGallery: RenderStyleGallery,
7461
7944
  colorPicker: RenderColorPicker,
7945
+ pictureBorder: RenderPictureBorder,
7462
7946
  gridPicker: RenderGridPicker,
7463
7947
  separator: RenderSeparator,
7464
7948
  group: RenderGroup,
@@ -7523,12 +8007,14 @@ const RIBBON_TABS = [
7523
8007
  "view",
7524
8008
  "tableDesign",
7525
8009
  "tableLayout",
8010
+ "imageFormat",
7526
8011
  "plugins",
7527
8012
  "ai"
7528
8013
  ];
7529
8014
  const CONTEXTUAL_TABS = {
7530
8015
  tableDesign: "tableContext",
7531
- tableLayout: "tableContext"
8016
+ tableLayout: "tableContext",
8017
+ imageFormat: "imageContext"
7532
8018
  };
7533
8019
  const TAB_LABEL_KEYS = {
7534
8020
  file: "ribbon.tab.file",
@@ -7542,6 +8028,7 @@ const TAB_LABEL_KEYS = {
7542
8028
  view: "ribbon.tab.view",
7543
8029
  tableDesign: "ribbon.tab.tableDesign",
7544
8030
  tableLayout: "ribbon.tab.tableLayout",
8031
+ imageFormat: "ribbon.tab.imageFormat",
7545
8032
  plugins: "ribbon.tab.plugins",
7546
8033
  ai: "ribbon.tab.ai"
7547
8034
  };
@@ -7565,7 +8052,9 @@ const GROUP_LABEL_KEYS = {
7565
8052
  rowsColumns: "ribbon.group.rowsColumns",
7566
8053
  merge: "ribbon.group.merge",
7567
8054
  cellSize: "ribbon.group.cellSize",
7568
- alignment: "ribbon.group.alignment"
8055
+ alignment: "ribbon.group.alignment",
8056
+ size: "ribbon.group.size",
8057
+ imageStyles: "ribbon.group.imageStyles"
7569
8058
  };
7570
8059
  function isRibbonTabVisible(id, api) {
7571
8060
  const gatingCommand = CONTEXTUAL_TABS[id];
@@ -7619,6 +8108,10 @@ const RIBBON_GROUP_ORDER = {
7619
8108
  cellSize: 40,
7620
8109
  alignment: 50
7621
8110
  },
8111
+ imageFormat: {
8112
+ imageStyles: 10,
8113
+ size: 20
8114
+ },
7622
8115
  plugins: {
7623
8116
  general: 10
7624
8117
  }
@@ -7695,6 +8188,10 @@ const RIBBON_GROUP_RESIZE_DEFAULTS = {
7695
8188
  cellSize: { priority: 40, collapsedIcon: "move-horizontal" },
7696
8189
  alignment: { priority: 50, collapsedIcon: "align-left" }
7697
8190
  },
8191
+ imageFormat: {
8192
+ imageStyles: { priority: 30, collapsedIcon: "square" },
8193
+ size: { priority: 40, collapsedIcon: "crop" }
8194
+ },
7698
8195
  plugins: {
7699
8196
  general: { priority: 50, collapsedIcon: "plug" }
7700
8197
  }
@@ -7934,7 +8431,7 @@ function resolveResponsiveRibbonGroups(groups, availableWidth, measurements = {}
7934
8431
  allocatedWidth: allocatedWidths.get(group.id)
7935
8432
  }));
7936
8433
  }
7937
- var _tmpl$$N = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-tabs role=tablist>`), _tmpl$2$s = /* @__PURE__ */ template(`<button type=button class=oasis-editor-ribbon-tab role=tab>`);
8434
+ var _tmpl$$O = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-tabs role=tablist>`), _tmpl$2$t = /* @__PURE__ */ template(`<button type=button class=oasis-editor-ribbon-tab role=tab>`);
7938
8435
  function RibbonTabs(props) {
7939
8436
  const tabs = createMemo(() => buildRibbonTabDefinitions(props.api.t, props.api));
7940
8437
  const moveTab = (current, delta) => {
@@ -7944,13 +8441,13 @@ function RibbonTabs(props) {
7944
8441
  if (next) props.setActiveTab(next.id);
7945
8442
  };
7946
8443
  return (() => {
7947
- var _el$ = _tmpl$$N();
8444
+ var _el$ = _tmpl$$O();
7948
8445
  insert(_el$, createComponent(For, {
7949
8446
  get each() {
7950
8447
  return tabs();
7951
8448
  },
7952
8449
  children: (tab) => (() => {
7953
- var _el$2 = _tmpl$2$s();
8450
+ var _el$2 = _tmpl$2$t();
7954
8451
  _el$2.$$keydown = (event) => {
7955
8452
  if (event.key === "ArrowRight") {
7956
8453
  event.preventDefault();
@@ -7995,10 +8492,10 @@ function RibbonTabs(props) {
7995
8492
  })();
7996
8493
  }
7997
8494
  delegateEvents(["click", "keydown"]);
7998
- var _tmpl$$M = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-row>`);
8495
+ var _tmpl$$N = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-row>`);
7999
8496
  function RibbonRow(props) {
8000
8497
  return (() => {
8001
- var _el$ = _tmpl$$M();
8498
+ var _el$ = _tmpl$$N();
8002
8499
  insert(_el$, createComponent(For, {
8003
8500
  get each() {
8004
8501
  return props.items;
@@ -8013,7 +8510,7 @@ function RibbonRow(props) {
8013
8510
  return _el$;
8014
8511
  })();
8015
8512
  }
8016
- var _tmpl$$L = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-large-items>`), _tmpl$2$r = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-rows><div class=oasis-editor-ribbon-normal-rows>`), _tmpl$3$h = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-label>`), _tmpl$4$b = /* @__PURE__ */ template(`<section class=oasis-editor-ribbon-group>`), _tmpl$5$6 = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-collapsed-items>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-rows>`);
8513
+ var _tmpl$$M = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-large-items>`), _tmpl$2$s = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-rows><div class=oasis-editor-ribbon-normal-rows>`), _tmpl$3$h = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-label>`), _tmpl$4$b = /* @__PURE__ */ template(`<section class=oasis-editor-ribbon-group>`), _tmpl$5$6 = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-collapsed-items>`), _tmpl$6$4 = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-rows>`);
8017
8514
  function groupItems(group) {
8018
8515
  return [...group.largeItems, ...group.rows[1], ...group.rows[2]];
8019
8516
  }
@@ -8072,13 +8569,13 @@ function RibbonGroup(props) {
8072
8569
  },
8073
8570
  get children() {
8074
8571
  return [(() => {
8075
- var _el$2 = _tmpl$2$r(), _el$4 = _el$2.firstChild;
8572
+ var _el$2 = _tmpl$2$s(), _el$4 = _el$2.firstChild;
8076
8573
  insert(_el$2, createComponent(Show, {
8077
8574
  get when() {
8078
8575
  return props.group.largeItems.length > 0;
8079
8576
  },
8080
8577
  get children() {
8081
- var _el$3 = _tmpl$$L();
8578
+ var _el$3 = _tmpl$$M();
8082
8579
  insert(_el$3, createComponent(For, {
8083
8580
  get each() {
8084
8581
  return props.group.largeItems;
@@ -8139,7 +8636,7 @@ function RibbonGroup(props) {
8139
8636
  return _el$;
8140
8637
  })();
8141
8638
  }
8142
- var _tmpl$$K = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-panel role=tabpanel data-testid=editor-ribbon-panel>`);
8639
+ var _tmpl$$L = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-panel role=tabpanel data-testid=editor-ribbon-panel>`);
8143
8640
  function RibbonPanel(props) {
8144
8641
  const [availableWidth, setAvailableWidth] = createSignal(null);
8145
8642
  const [measurements, setMeasurements] = createSignal({});
@@ -8184,7 +8681,7 @@ function RibbonPanel(props) {
8184
8681
  requestAnimationFrame(measureGroups);
8185
8682
  });
8186
8683
  return (() => {
8187
- var _el$ = _tmpl$$K();
8684
+ var _el$ = _tmpl$$L();
8188
8685
  var _ref$ = panelRef;
8189
8686
  typeof _ref$ === "function" ? use(_ref$, _el$) : panelRef = _el$;
8190
8687
  insert(_el$, createComponent(For, {
@@ -8210,21 +8707,31 @@ function RibbonPanel(props) {
8210
8707
  return _el$;
8211
8708
  })();
8212
8709
  }
8213
- var _tmpl$$J = /* @__PURE__ */ template(`<section class=oasis-editor-toolbar>`), _tmpl$2$q = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-wrap-strip>`);
8710
+ var _tmpl$$K = /* @__PURE__ */ template(`<section class=oasis-editor-toolbar>`), _tmpl$2$r = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-wrap-strip>`);
8214
8711
  const shouldAllowNativeMouseDown = (target) => target instanceof Element && target.closest("select, input, textarea, label") !== null;
8215
8712
  function Toolbar(props) {
8216
8713
  const api = createToolbarApi(props.host, useI18n());
8217
8714
  const [version2, setVersion2] = createSignal(0);
8218
8715
  const [activeTab, setActiveTab] = createSignal("home");
8219
- const CONTEXTUAL_TABLE_TABS = ["tableDesign", "tableLayout"];
8220
- createEffect((prevInside) => {
8221
- const inside = api.commands.state("tableContext").isActive;
8222
- if (inside && prevInside === false) {
8223
- setActiveTab("tableDesign");
8224
- } else if (!inside && CONTEXTUAL_TABLE_TABS.includes(activeTab())) {
8716
+ const CONTEXTUAL_TAB_ENTRIES = Object.entries(CONTEXTUAL_TABS);
8717
+ createEffect((prev) => {
8718
+ const current = /* @__PURE__ */ new Map();
8719
+ for (const [, command] of CONTEXTUAL_TAB_ENTRIES) {
8720
+ if (!current.has(command)) {
8721
+ current.set(command, api.commands.state(command).isActive);
8722
+ }
8723
+ }
8724
+ for (const [tab, command] of CONTEXTUAL_TAB_ENTRIES) {
8725
+ if ((current.get(command) ?? false) && !((prev == null ? void 0 : prev.get(command)) ?? false)) {
8726
+ setActiveTab(tab);
8727
+ break;
8728
+ }
8729
+ }
8730
+ const activeCommand = CONTEXTUAL_TABS[activeTab()];
8731
+ if (activeCommand && !(current.get(activeCommand) ?? false)) {
8225
8732
  setActiveTab("home");
8226
8733
  }
8227
- return inside;
8734
+ return current;
8228
8735
  });
8229
8736
  onMount(() => {
8230
8737
  const unsubscribe = props.registry.onChange(() => setVersion2((v) => v + 1));
@@ -8250,7 +8757,7 @@ function Toolbar(props) {
8250
8757
  })
8251
8758
  });
8252
8759
  return (() => {
8253
- var _el$ = _tmpl$$J();
8760
+ var _el$ = _tmpl$$K();
8254
8761
  _el$.$$mousedown = (event) => {
8255
8762
  if (shouldAllowNativeMouseDown(event.target)) {
8256
8763
  return;
@@ -8272,7 +8779,7 @@ function Toolbar(props) {
8272
8779
  return renderItems();
8273
8780
  }
8274
8781
  }) : (() => {
8275
- var _el$2 = _tmpl$2$q();
8782
+ var _el$2 = _tmpl$2$r();
8276
8783
  insert(_el$2, renderItems);
8277
8784
  return _el$2;
8278
8785
  })();
@@ -18910,11 +19417,11 @@ function buildCanvasTableLayout(options) {
18910
19417
  unsupported: Array.from(new Set(unsupported))
18911
19418
  };
18912
19419
  }
18913
- var _tmpl$$I = /* @__PURE__ */ template(`<div class=oasis-editor-page-break style="display:flex;align-items:center;justify-content:center;margin:16px 0;position:relative;user-select:none"><div style="position:absolute;left:0;right:0;top:50%;border-top:1px dashed var(--oasis-toolbar-border, #e0e3e7)"></div><div style="background:var(--oasis-bg, #f6f8fb);padding:0 12px;color:var(--oasis-text-muted, #5f6368);font-size:12px;font-family:var(--oasis-font-ui, sans-serif);z-index:1">`);
19420
+ var _tmpl$$J = /* @__PURE__ */ template(`<div class=oasis-editor-page-break style="display:flex;align-items:center;justify-content:center;margin:16px 0;position:relative;user-select:none"><div style="position:absolute;left:0;right:0;top:50%;border-top:1px dashed var(--oasis-toolbar-border, #e0e3e7)"></div><div style="background:var(--oasis-bg, #f6f8fb);padding:0 12px;color:var(--oasis-text-muted, #5f6368);font-size:12px;font-family:var(--oasis-font-ui, sans-serif);z-index:1">`);
18914
19421
  function PageBreak(_props) {
18915
19422
  const t = useI18n();
18916
19423
  return (() => {
18917
- var _el$ = _tmpl$$I(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
19424
+ var _el$ = _tmpl$$J(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
18918
19425
  insert(_el$3, () => t("metric.pageBreak") || "Page Break");
18919
19426
  return _el$;
18920
19427
  })();
@@ -21318,7 +21825,33 @@ function clamp01(value) {
21318
21825
  if (!Number.isFinite(value) || value < 0) return 0;
21319
21826
  return value > 1 ? 1 : value;
21320
21827
  }
21828
+ function strokeImageBorder(ctx, border, x, y, width, height, rotation) {
21829
+ ctx.save();
21830
+ ctx.translate(x + width / 2, y + height / 2);
21831
+ if (rotation) ctx.rotate(rotation * DEG_TO_RAD$1);
21832
+ ctx.strokeStyle = border.color;
21833
+ ctx.lineWidth = Math.max(1, (border.widthPt ?? 1) * PX_PER_POINT);
21834
+ ctx.setLineDash(
21835
+ lineDashPatternPt(border.dash).map((value) => value * PX_PER_POINT)
21836
+ );
21837
+ ctx.strokeRect(-width / 2, -height / 2, width, height);
21838
+ ctx.restore();
21839
+ }
21321
21840
  function drawImageFragment(ctx, img, image, x, y) {
21841
+ drawImageContent(ctx, img, image, x, y);
21842
+ if (image.border) {
21843
+ strokeImageBorder(
21844
+ ctx,
21845
+ image.border,
21846
+ x,
21847
+ y,
21848
+ image.width,
21849
+ image.height,
21850
+ image.rotation
21851
+ );
21852
+ }
21853
+ }
21854
+ function drawImageContent(ctx, img, image, x, y) {
21322
21855
  const { width, height, crop, fillMode, rotation, flipH, flipV } = image;
21323
21856
  const hasTransform = Boolean(rotation) || Boolean(flipH) || Boolean(flipV);
21324
21857
  if (fillMode === "tile") {
@@ -22487,7 +23020,7 @@ function createCanvasPageRenderer(options) {
22487
23020
  }
22488
23021
  };
22489
23022
  }
22490
- var _tmpl$$H = /* @__PURE__ */ template(`<div class="oasis-editor-paper-stack oasis-editor-canvas-stack"style=position:relative>`), _tmpl$2$p = /* @__PURE__ */ template(`<div class=oasis-editor-canvas-page-slot style=position:relative>`), _tmpl$3$g = /* @__PURE__ */ template(`<div class=oasis-editor-paper data-renderer=canvas data-testid=editor-page style=position:relative;z-index:1><canvas>`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=oasis-editor-table-revision-hit style=position:absolute;pointer-events:auto;background:transparent>`);
23023
+ var _tmpl$$I = /* @__PURE__ */ template(`<div class="oasis-editor-paper-stack oasis-editor-canvas-stack"style=position:relative>`), _tmpl$2$q = /* @__PURE__ */ template(`<div class=oasis-editor-canvas-page-slot style=position:relative>`), _tmpl$3$g = /* @__PURE__ */ template(`<div class=oasis-editor-paper data-renderer=canvas data-testid=editor-page style=position:relative;z-index:1><canvas>`), _tmpl$4$a = /* @__PURE__ */ template(`<div class=oasis-editor-table-revision-hit style=position:absolute;pointer-events:auto;background:transparent>`);
22491
23024
  const surfaceLogger = createEditorLogger("canvas-surface");
22492
23025
  function checkBrowserFonts(families) {
22493
23026
  if (typeof document === "undefined" || !document.fonts) {
@@ -22547,7 +23080,7 @@ function CanvasEditorSurface(props) {
22547
23080
  return layout;
22548
23081
  });
22549
23082
  return (() => {
22550
- var _el$ = _tmpl$$H();
23083
+ var _el$ = _tmpl$$I();
22551
23084
  insert(_el$, createComponent(Index, {
22552
23085
  get each() {
22553
23086
  return documentLayout().pages;
@@ -22559,7 +23092,7 @@ function CanvasEditorSurface(props) {
22559
23092
  // inserting an image that triggers re-pagination in a narrow viewport),
22560
23093
  // causing "Failed to execute 'insertBefore'" errors.
22561
23094
  (() => {
22562
- var _el$2 = _tmpl$2$p();
23095
+ var _el$2 = _tmpl$2$q();
22563
23096
  insert(_el$2, createComponent(Show, {
22564
23097
  when: index > 0,
22565
23098
  get children() {
@@ -23081,7 +23614,7 @@ function computeRulerTicks(pageWidth, contentLeft, unit) {
23081
23614
  pushSide(-1);
23082
23615
  return ticks;
23083
23616
  }
23084
- var _tmpl$$G = /* @__PURE__ */ template(`<div class=oasis-editor-horizontal-ruler data-testid=editor-horizontal-ruler role=presentation><div class=oasis-editor-horizontal-ruler-track><div class=oasis-editor-horizontal-ruler-page><div class=oasis-editor-horizontal-ruler-margin style=left:0px></div><div class=oasis-editor-horizontal-ruler-margin></div><div class=oasis-editor-horizontal-ruler-content></div><button type=button class=oasis-editor-horizontal-ruler-margin-handle></button><button type=button class=oasis-editor-horizontal-ruler-margin-handle></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-first-line"></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-hanging"></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-left-box"></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-right-indent">`), _tmpl$2$o = /* @__PURE__ */ template(`<div>`), _tmpl$3$f = /* @__PURE__ */ template(`<div class=oasis-editor-horizontal-ruler-label>`);
23617
+ var _tmpl$$H = /* @__PURE__ */ template(`<div class=oasis-editor-horizontal-ruler data-testid=editor-horizontal-ruler role=presentation><div class=oasis-editor-horizontal-ruler-track><div class=oasis-editor-horizontal-ruler-page><div class=oasis-editor-horizontal-ruler-margin style=left:0px></div><div class=oasis-editor-horizontal-ruler-margin></div><div class=oasis-editor-horizontal-ruler-content></div><button type=button class=oasis-editor-horizontal-ruler-margin-handle></button><button type=button class=oasis-editor-horizontal-ruler-margin-handle></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-first-line"></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-hanging"></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-left-box"></button><button type=button class="oasis-editor-ruler-marker oasis-editor-ruler-marker-right-indent">`), _tmpl$2$p = /* @__PURE__ */ template(`<div>`), _tmpl$3$f = /* @__PURE__ */ template(`<div class=oasis-editor-horizontal-ruler-label>`);
23085
23618
  function getActivePageSettings(state) {
23086
23619
  var _a;
23087
23620
  const idx = getActiveSectionIndex(state);
@@ -23287,7 +23820,7 @@ function HorizontalRuler(props) {
23287
23820
  }
23288
23821
  };
23289
23822
  return (() => {
23290
- var _el$ = _tmpl$$G(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.nextSibling;
23823
+ var _el$ = _tmpl$$H(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.nextSibling, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.nextSibling;
23291
23824
  var _ref$ = pageRef;
23292
23825
  typeof _ref$ === "function" ? use(_ref$, _el$3) : pageRef = _el$3;
23293
23826
  insert(_el$3, createComponent(For, {
@@ -23295,7 +23828,7 @@ function HorizontalRuler(props) {
23295
23828
  return ticks();
23296
23829
  },
23297
23830
  children: (tick) => [(() => {
23298
- var _el$11 = _tmpl$2$o();
23831
+ var _el$11 = _tmpl$2$p();
23299
23832
  createRenderEffect((_p$) => {
23300
23833
  var _v$27 = `oasis-editor-horizontal-ruler-tick oasis-editor-horizontal-ruler-tick-${tick.kind}`, _v$28 = `${sx(tick.x)}px`;
23301
23834
  _v$27 !== _p$.e && className(_el$11, _p$.e = _v$27);
@@ -23384,10 +23917,10 @@ function HorizontalRuler(props) {
23384
23917
  })();
23385
23918
  }
23386
23919
  delegateEvents(["pointerdown"]);
23387
- var _tmpl$$F = /* @__PURE__ */ template(`<span aria-hidden=true class=oasis-editor-caret>`);
23920
+ var _tmpl$$G = /* @__PURE__ */ template(`<span aria-hidden=true class=oasis-editor-caret>`);
23388
23921
  function CaretOverlay(props) {
23389
23922
  return (() => {
23390
- var _el$ = _tmpl$$F();
23923
+ var _el$ = _tmpl$$G();
23391
23924
  createRenderEffect((_p$) => {
23392
23925
  var _v$ = !!props.active, _v$2 = {
23393
23926
  left: `${props.left}px`,
@@ -23408,16 +23941,16 @@ function CaretOverlay(props) {
23408
23941
  return _el$;
23409
23942
  })();
23410
23943
  }
23411
- var _tmpl$$E = /* @__PURE__ */ template(`<div aria-hidden=true class=oasis-editor-selection-overlay-root>`), _tmpl$2$n = /* @__PURE__ */ template(`<span aria-hidden=true class=oasis-editor-selection-box data-testid=editor-selection-box>`);
23944
+ var _tmpl$$F = /* @__PURE__ */ template(`<div aria-hidden=true class=oasis-editor-selection-overlay-root>`), _tmpl$2$o = /* @__PURE__ */ template(`<span aria-hidden=true class=oasis-editor-selection-box data-testid=editor-selection-box>`);
23412
23945
  function SelectionOverlay(props) {
23413
23946
  return (() => {
23414
- var _el$ = _tmpl$$E();
23947
+ var _el$ = _tmpl$$F();
23415
23948
  insert(_el$, createComponent(Index, {
23416
23949
  get each() {
23417
23950
  return props.boxes;
23418
23951
  },
23419
23952
  children: (box) => (() => {
23420
- var _el$2 = _tmpl$2$n();
23953
+ var _el$2 = _tmpl$2$o();
23421
23954
  createRenderEffect((_p$) => {
23422
23955
  var _v$ = `${box().left}px`, _v$2 = `${box().top}px`, _v$3 = `${box().width}px`, _v$4 = `${box().height}px`;
23423
23956
  _v$ !== _p$.e && setStyleProperty(_el$2, "left", _p$.e = _v$);
@@ -23437,7 +23970,7 @@ function SelectionOverlay(props) {
23437
23970
  return _el$;
23438
23971
  })();
23439
23972
  }
23440
- var _tmpl$$D = /* @__PURE__ */ template(`<div class=oasis-editor-revision-overlay data-testid=editor-revision-overlay><div class=oasis-editor-revision-overlay-content><span class=oasis-editor-revision-overlay-author><strong>:</strong> </span><span class=oasis-editor-revision-overlay-date></span></div><div class=oasis-editor-revision-overlay-arrow>`);
23973
+ var _tmpl$$E = /* @__PURE__ */ template(`<div class=oasis-editor-revision-overlay data-testid=editor-revision-overlay><div class=oasis-editor-revision-overlay-content><span class=oasis-editor-revision-overlay-author><strong>:</strong> </span><span class=oasis-editor-revision-overlay-date></span></div><div class=oasis-editor-revision-overlay-arrow>`);
23441
23974
  function RevisionOverlay(props) {
23442
23975
  const formattedDate = () => {
23443
23976
  try {
@@ -23452,7 +23985,7 @@ function RevisionOverlay(props) {
23452
23985
  return "Alterado por";
23453
23986
  };
23454
23987
  return (() => {
23455
- var _el$ = _tmpl$$D(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
23988
+ var _el$ = _tmpl$$E(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
23456
23989
  _el$4.nextSibling;
23457
23990
  var _el$7 = _el$3.nextSibling;
23458
23991
  insert(_el$4, label, _el$5);
@@ -23470,7 +24003,7 @@ function RevisionOverlay(props) {
23470
24003
  return _el$;
23471
24004
  })();
23472
24005
  }
23473
- var _tmpl$$C = /* @__PURE__ */ template(`<div aria-hidden=true class=oasis-editor-comment-overlay-root>`), _tmpl$2$m = /* @__PURE__ */ template(`<span class=oasis-editor-comment-highlight data-testid=editor-comment-highlight>`), _tmpl$3$e = /* @__PURE__ */ template(`<span class=oasis-editor-comment-popup-date>`), _tmpl$4$9 = /* @__PURE__ */ template(`<span class=oasis-editor-comment-popup-resolved>✓`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=oasis-editor-comment-popup data-testid=editor-comment-popup><div class=oasis-editor-comment-popup-header><span class=oasis-editor-comment-popup-author></span></div><div class=oasis-editor-comment-popup-body>`);
24006
+ var _tmpl$$D = /* @__PURE__ */ template(`<div aria-hidden=true class=oasis-editor-comment-overlay-root>`), _tmpl$2$n = /* @__PURE__ */ template(`<span class=oasis-editor-comment-highlight data-testid=editor-comment-highlight>`), _tmpl$3$e = /* @__PURE__ */ template(`<span class=oasis-editor-comment-popup-date>`), _tmpl$4$9 = /* @__PURE__ */ template(`<span class=oasis-editor-comment-popup-resolved>✓`), _tmpl$5$5 = /* @__PURE__ */ template(`<div class=oasis-editor-comment-popup data-testid=editor-comment-popup><div class=oasis-editor-comment-popup-header><span class=oasis-editor-comment-popup-author></span></div><div class=oasis-editor-comment-popup-body>`);
23474
24007
  function CommentHighlightOverlay(props) {
23475
24008
  const [activeCommentId, setActiveCommentId] = createSignal(null);
23476
24009
  const activeComment = createMemo(() => {
@@ -23497,13 +24030,13 @@ function CommentHighlightOverlay(props) {
23497
24030
  }
23498
24031
  };
23499
24032
  return (() => {
23500
- var _el$ = _tmpl$$C();
24033
+ var _el$ = _tmpl$$D();
23501
24034
  insert(_el$, createComponent(For, {
23502
24035
  get each() {
23503
24036
  return props.boxes();
23504
24037
  },
23505
24038
  children: (box) => (() => {
23506
- var _el$2 = _tmpl$2$m();
24039
+ var _el$2 = _tmpl$2$n();
23507
24040
  _el$2.$$click = () => setActiveCommentId(box.commentId);
23508
24041
  _el$2.addEventListener("mouseenter", () => setActiveCommentId(box.commentId));
23509
24042
  createRenderEffect((_p$) => {
@@ -23603,7 +24136,7 @@ function useSurfaceRect(surfaceRef) {
23603
24136
  });
23604
24137
  return { rect, tick, refresh };
23605
24138
  }
23606
- var _tmpl$$B = /* @__PURE__ */ template(`<div class=oasis-editor-floating-toolbar data-testid=editor-floating-table-toolbar><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group>`);
24139
+ var _tmpl$$C = /* @__PURE__ */ template(`<div class=oasis-editor-floating-toolbar data-testid=editor-floating-table-toolbar><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group></div><div class=oasis-editor-toolbar-group>`);
23607
24140
  function FloatingTableToolbar(props) {
23608
24141
  const t = useI18n();
23609
24142
  const host = () => props.host();
@@ -23661,7 +24194,7 @@ function FloatingTableToolbar(props) {
23661
24194
  return document.body;
23662
24195
  },
23663
24196
  get children() {
23664
- var _el$ = _tmpl$$B(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
24197
+ var _el$ = _tmpl$$C(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling;
23665
24198
  _el$.$$mousedown = (event) => event.preventDefault();
23666
24199
  insert(_el$2, createComponent(Button$1, {
23667
24200
  icon: "combine",
@@ -23821,7 +24354,7 @@ function FloatingTableToolbar(props) {
23821
24354
  });
23822
24355
  }
23823
24356
  delegateEvents(["mousedown"]);
23824
- var _tmpl$$A = /* @__PURE__ */ template(`<svg><rect height=2 rx=1 fill=#9aa0a6></svg>`, false, true, false), _tmpl$2$l = /* @__PURE__ */ template(`<svg><rect rx=1.5></svg>`, false, true, false), _tmpl$3$d = /* @__PURE__ */ template(`<svg><polygon points="29,4 37,12 29,20 21,12"fill=#1a73e8></svg>`, false, true, false), _tmpl$4$8 = /* @__PURE__ */ template(`<svg><polygon points="20,8 26,14 20,20 14,14"fill=#1a73e8></svg>`, false, true, false), _tmpl$5$4 = /* @__PURE__ */ template(`<svg viewBox="0 0 40 32"fill=none aria-hidden=true>`), _tmpl$6$3 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-layout-options-anchor data-testid=editor-layout-options-anchor><svg viewBox="0 0 24 24"fill=none aria-hidden=true><rect x=3 y=4 width=10 height=10 rx=1.5 fill=#1a73e8></rect><rect x=3 y=17 width=18 height=2 rx=1 fill=#9aa0a6></rect><rect x=15 y=5 width=6 height=2 rx=1 fill=#9aa0a6></rect><rect x=15 y=9 width=6 height=2 rx=1 fill=#9aa0a6>`), _tmpl$7$1 = /* @__PURE__ */ template(`<div class=oasis-editor-layout-options-popup data-testid=editor-layout-options-popup><div class=oasis-editor-layout-options-popup-header><span class=oasis-editor-layout-options-title></span><button type=button class=oasis-editor-layout-options-close>×</button></div><div class=oasis-editor-layout-options-group-label></div><div class=oasis-editor-layout-options-grid><button type=button class=oasis-editor-layout-options-cell data-testid=editor-layout-options-inline><svg viewBox="0 0 40 32"fill=none aria-hidden=true><rect x=4 y=7 width=9 height=2 rx=1 fill=#9aa0a6></rect><rect x=15 y=4 width=11 height=11 rx=1.5 fill=#1a73e8></rect><rect x=28 y=7 width=8 height=2 rx=1 fill=#9aa0a6></rect><rect x=4 y=20 width=32 height=2 rx=1 fill=#9aa0a6></rect><rect x=4 y=26 width=32 height=2 rx=1 fill=#9aa0a6></rect></svg></button></div><div class=oasis-editor-layout-options-group-label></div><div class=oasis-editor-layout-options-grid></div><div class=oasis-editor-layout-options-radios><label class=oasis-editor-layout-options-radio><input type=radio name=oasis-layout-position></label><label class=oasis-editor-layout-options-radio><input type=radio name=oasis-layout-position>`), _tmpl$8 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-layout-options-cell>`);
24357
+ var _tmpl$$B = /* @__PURE__ */ template(`<svg><rect height=2 rx=1 fill=#9aa0a6></svg>`, false, true, false), _tmpl$2$m = /* @__PURE__ */ template(`<svg><rect rx=1.5></svg>`, false, true, false), _tmpl$3$d = /* @__PURE__ */ template(`<svg><polygon points="29,4 37,12 29,20 21,12"fill=#1a73e8></svg>`, false, true, false), _tmpl$4$8 = /* @__PURE__ */ template(`<svg><polygon points="20,8 26,14 20,20 14,14"fill=#1a73e8></svg>`, false, true, false), _tmpl$5$4 = /* @__PURE__ */ template(`<svg viewBox="0 0 40 32"fill=none aria-hidden=true>`), _tmpl$6$3 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-layout-options-anchor data-testid=editor-layout-options-anchor><svg viewBox="0 0 24 24"fill=none aria-hidden=true><rect x=3 y=4 width=10 height=10 rx=1.5 fill=#1a73e8></rect><rect x=3 y=17 width=18 height=2 rx=1 fill=#9aa0a6></rect><rect x=15 y=5 width=6 height=2 rx=1 fill=#9aa0a6></rect><rect x=15 y=9 width=6 height=2 rx=1 fill=#9aa0a6>`), _tmpl$7$1 = /* @__PURE__ */ template(`<div class=oasis-editor-layout-options-popup data-testid=editor-layout-options-popup><div class=oasis-editor-layout-options-popup-header><span class=oasis-editor-layout-options-title></span><button type=button class=oasis-editor-layout-options-close>×</button></div><div class=oasis-editor-layout-options-group-label></div><div class=oasis-editor-layout-options-grid><button type=button class=oasis-editor-layout-options-cell data-testid=editor-layout-options-inline><svg viewBox="0 0 40 32"fill=none aria-hidden=true><rect x=4 y=7 width=9 height=2 rx=1 fill=#9aa0a6></rect><rect x=15 y=4 width=11 height=11 rx=1.5 fill=#1a73e8></rect><rect x=28 y=7 width=8 height=2 rx=1 fill=#9aa0a6></rect><rect x=4 y=20 width=32 height=2 rx=1 fill=#9aa0a6></rect><rect x=4 y=26 width=32 height=2 rx=1 fill=#9aa0a6></rect></svg></button></div><div class=oasis-editor-layout-options-group-label></div><div class=oasis-editor-layout-options-grid></div><div class=oasis-editor-layout-options-radios><label class=oasis-editor-layout-options-radio><input type=radio name=oasis-layout-position></label><label class=oasis-editor-layout-options-radio><input type=radio name=oasis-layout-position>`), _tmpl$8 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-layout-options-cell>`);
23825
24358
  const WRAP_OPTIONS = [{
23826
24359
  preset: "square",
23827
24360
  labelKey: "layoutOptions.square"
@@ -23843,14 +24376,14 @@ const WRAP_OPTIONS = [{
23843
24376
  }];
23844
24377
  function WrapIcon(props) {
23845
24378
  const line = (x, y, w) => (() => {
23846
- var _el$ = _tmpl$$A();
24379
+ var _el$ = _tmpl$$B();
23847
24380
  setAttribute(_el$, "x", x);
23848
24381
  setAttribute(_el$, "y", y);
23849
24382
  setAttribute(_el$, "width", w);
23850
24383
  return _el$;
23851
24384
  })();
23852
24385
  const box = (x, y, w, h, fill = "#1a73e8") => (() => {
23853
- var _el$2 = _tmpl$2$l();
24386
+ var _el$2 = _tmpl$2$m();
23854
24387
  setAttribute(_el$2, "x", x);
23855
24388
  setAttribute(_el$2, "y", y);
23856
24389
  setAttribute(_el$2, "width", w);
@@ -35545,6 +36078,39 @@ function parseFillMode(picPic) {
35545
36078
  }
35546
36079
  return void 0;
35547
36080
  }
36081
+ function parseImageBorder(drawing) {
36082
+ var _a, _b;
36083
+ const picPic = findElementDeep(drawing, "pic");
36084
+ const spPr = picPic && findElementDeep(picPic, "spPr");
36085
+ if (!spPr) {
36086
+ return void 0;
36087
+ }
36088
+ for (let index = 0; index < spPr.childNodes.length; index += 1) {
36089
+ const node = spPr.childNodes[index];
36090
+ if ((node == null ? void 0 : node.nodeType) !== 1) continue;
36091
+ const el = node;
36092
+ if (el.localName !== "ln") continue;
36093
+ const color = normalizeHexColor(
36094
+ (_a = findElementDeep(el, "srgbClr")) == null ? void 0 : _a.getAttribute("val")
36095
+ );
36096
+ if (!color) {
36097
+ return void 0;
36098
+ }
36099
+ const border = { color };
36100
+ const width = parseOptionalInt(el.getAttribute("w"));
36101
+ if (width !== void 0) {
36102
+ border.widthPt = roundTo(width / EMU_PER_PT, 2);
36103
+ }
36104
+ const dash = parseLineDash(
36105
+ (_b = findElementDeep(el, "prstDash")) == null ? void 0 : _b.getAttribute("val")
36106
+ );
36107
+ if (dash) {
36108
+ border.dash = dash;
36109
+ }
36110
+ return border;
36111
+ }
36112
+ return void 0;
36113
+ }
35548
36114
  function parseXfrm(picPic) {
35549
36115
  const xfrm = findElementDeep(picPic, "xfrm");
35550
36116
  if (!xfrm) {
@@ -35589,6 +36155,7 @@ async function parseDrawingImage(drawing, zip, relsMap, assets) {
35589
36155
  const alt = docPr ? getAttributeValue(docPr, "descr") ?? getAttributeValue(docPr, "title") : null;
35590
36156
  const crop = parseSrcRect(drawing);
35591
36157
  const fillMode = parseFillMode(drawing);
36158
+ const border = parseImageBorder(drawing);
35592
36159
  const xfrm = parseXfrm(drawing);
35593
36160
  const floating = (container == null ? void 0 : container.kind) === "anchor" ? parseFloatingLayout(container.element) : void 0;
35594
36161
  const wrapPolygon = (container == null ? void 0 : container.kind) === "anchor" ? parseWrapPolygon(container.element) : void 0;
@@ -35598,6 +36165,7 @@ async function parseDrawingImage(drawing, zip, relsMap, assets) {
35598
36165
  ...alt !== null ? { alt } : {},
35599
36166
  ...crop ? { crop } : {},
35600
36167
  ...fillMode ? { fillMode } : {},
36168
+ ...border ? { border } : {},
35601
36169
  ...xfrm.rotation !== void 0 ? { rotation: xfrm.rotation } : {},
35602
36170
  ...xfrm.flipH ? { flipH: true } : {},
35603
36171
  ...xfrm.flipV ? { flipV: true } : {},
@@ -37729,7 +38297,7 @@ function importDocxInWorker(buffer, options = {}) {
37729
38297
  const worker = new Worker(
37730
38298
  new URL(
37731
38299
  /* @vite-ignore */
37732
- "" + new URL("assets/importDocxWorker-CCwhxVSR.js", import.meta.url).href,
38300
+ "" + new URL("assets/importDocxWorker-B0cSSI12.js", import.meta.url).href,
37733
38301
  import.meta.url
37734
38302
  ),
37735
38303
  {
@@ -38369,10 +38937,10 @@ function resolveResizedDimensions(geometry, deltaX, deltaY, preserveAspectRatio,
38369
38937
  nextHeight = clamp(nextWidth / aspectRatio, MIN_RESIZE_SIZE_PX);
38370
38938
  return { width: nextWidth, height: nextHeight };
38371
38939
  }
38372
- var _tmpl$$z = /* @__PURE__ */ template(`<button aria-hidden=true class=oasis-editor-rotate-handle tabindex=-1 type=button>`), _tmpl$2$k = /* @__PURE__ */ template(`<div aria-hidden=true style=transform-origin:center>`), _tmpl$3$c = /* @__PURE__ */ template(`<button aria-hidden=true class=oasis-editor-resize-handle tabindex=-1 type=button>`);
38940
+ var _tmpl$$A = /* @__PURE__ */ template(`<button aria-hidden=true class=oasis-editor-rotate-handle tabindex=-1 type=button>`), _tmpl$2$l = /* @__PURE__ */ template(`<div aria-hidden=true style=transform-origin:center>`), _tmpl$3$c = /* @__PURE__ */ template(`<button aria-hidden=true class=oasis-editor-resize-handle tabindex=-1 type=button>`);
38373
38941
  function ResizeHandlesOverlay(props) {
38374
38942
  return (() => {
38375
- var _el$ = _tmpl$2$k();
38943
+ var _el$ = _tmpl$2$l();
38376
38944
  _el$.$$mousedown = (event) => {
38377
38945
  if (props.readOnly || !props.box() || !props.onBodyMouseDown) {
38378
38946
  return;
@@ -38403,7 +38971,7 @@ function ResizeHandlesOverlay(props) {
38403
38971
  return props.onRotateStart;
38404
38972
  },
38405
38973
  get children() {
38406
- var _el$2 = _tmpl$$z();
38974
+ var _el$2 = _tmpl$$A();
38407
38975
  _el$2.$$mousedown = (event) => {
38408
38976
  var _a;
38409
38977
  if (!props.box()) {
@@ -38444,14 +39012,14 @@ function ResizeHandlesOverlay(props) {
38444
39012
  })();
38445
39013
  }
38446
39014
  delegateEvents(["mousedown"]);
38447
- var _tmpl$$y = /* @__PURE__ */ template(`<div aria-hidden=true class=oasis-editor-table-handles-overlay><button aria-hidden=true class=oasis-editor-table-move-handle tabindex=-1 type=button></button><button aria-hidden=true class=oasis-editor-table-resize-corner tabindex=-1 type=button>`);
39015
+ var _tmpl$$z = /* @__PURE__ */ template(`<div aria-hidden=true class=oasis-editor-table-handles-overlay><button aria-hidden=true class=oasis-editor-table-move-handle tabindex=-1 type=button></button><button aria-hidden=true class=oasis-editor-table-resize-corner tabindex=-1 type=button>`);
38448
39016
  function TableHandlesOverlay(props) {
38449
39017
  return createComponent(Show, {
38450
39018
  get when() {
38451
39019
  return memo(() => !!!props.readOnly)() && props.box();
38452
39020
  },
38453
39021
  children: (box) => (() => {
38454
- var _el$ = _tmpl$$y(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
39022
+ var _el$ = _tmpl$$z(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
38455
39023
  _el$2.$$mousedown = (event) => {
38456
39024
  props.onMoveStart(event);
38457
39025
  };
@@ -38491,7 +39059,7 @@ function createEditorZoom(initial = ZOOM_DEFAULT) {
38491
39059
  const zoomFactor = createMemo(() => zoomPercent() / 100);
38492
39060
  return { zoomPercent, setZoomPercent, adjustZoom, zoomFactor };
38493
39061
  }
38494
- var _tmpl$$x = /* @__PURE__ */ template(`<div class=oasis-editor-import-overlay data-testid=editor-import-overlay role=status aria-live=polite><div class=oasis-editor-import-card><div class=oasis-editor-import-title></div><div class=oasis-editor-import-phase data-testid=editor-import-phase></div><div class=oasis-editor-import-progress-track><div class=oasis-editor-import-progress-bar data-testid=editor-import-progress-bar></div></div><div class=oasis-editor-import-progress-label>`), _tmpl$2$j = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>`), _tmpl$3$b = /* @__PURE__ */ template(`<span class=oasis-editor-import-error-icon>`);
39062
+ var _tmpl$$y = /* @__PURE__ */ template(`<div class=oasis-editor-import-overlay data-testid=editor-import-overlay role=status aria-live=polite><div class=oasis-editor-import-card><div class=oasis-editor-import-title></div><div class=oasis-editor-import-phase data-testid=editor-import-phase></div><div class=oasis-editor-import-progress-track><div class=oasis-editor-import-progress-bar data-testid=editor-import-progress-bar></div></div><div class=oasis-editor-import-progress-label>`), _tmpl$2$k = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>`), _tmpl$3$b = /* @__PURE__ */ template(`<span class=oasis-editor-import-error-icon>`);
38495
39063
  function EditorImportProgressOverlay(props) {
38496
39064
  const t = useI18n();
38497
39065
  return createComponent(Show, {
@@ -38503,7 +39071,7 @@ function EditorImportProgressOverlay(props) {
38503
39071
  const isDone = progress().phase === "done";
38504
39072
  const isError = progress().phase === "error";
38505
39073
  return (() => {
38506
- var _el$ = _tmpl$$x(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$5.nextSibling;
39074
+ var _el$ = _tmpl$$y(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$5.nextSibling;
38507
39075
  _el$.classList.toggle("oasis-editor-import-overlay-done", !!isDone);
38508
39076
  _el$.classList.toggle("oasis-editor-import-overlay-error", !!isError);
38509
39077
  setAttribute(_el$, "aria-busy", !isDone && !isError);
@@ -38516,7 +39084,7 @@ function EditorImportProgressOverlay(props) {
38516
39084
  _el$6.classList.toggle("oasis-editor-import-progress-bar-done", !!isDone);
38517
39085
  _el$6.classList.toggle("oasis-editor-import-progress-bar-error", !!isError);
38518
39086
  insert(_el$7, isDone ? (() => {
38519
- var _el$8 = _tmpl$2$j();
39087
+ var _el$8 = _tmpl$2$k();
38520
39088
  insert(_el$8, () => t("import.phase.done"));
38521
39089
  return _el$8;
38522
39090
  })() : isError ? (() => {
@@ -38538,11 +39106,11 @@ function EditorImportProgressOverlay(props) {
38538
39106
  }
38539
39107
  });
38540
39108
  }
38541
- var _tmpl$$w = /* @__PURE__ */ template(`<div class=oasis-editor-statusbar data-testid=editor-statusbar><div class="oasis-editor-statusbar-group oasis-editor-statusbar-start"><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-word-count></span><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-character-count></span><span class=oasis-editor-statusbar-item></span></div><div class="oasis-editor-statusbar-group oasis-editor-statusbar-end"><div class=oasis-editor-statusbar-zoom data-testid=editor-statusbar-zoom-control><button type=button class=oasis-editor-zoom-button>−</button><input class=oasis-editor-zoom-slider type=range><button type=button class=oasis-editor-zoom-button>+</button><span class="oasis-editor-statusbar-item oasis-editor-zoom-value"data-testid=editor-statusbar-zoom>%`), _tmpl$2$i = /* @__PURE__ */ template(`<span>`);
39109
+ var _tmpl$$x = /* @__PURE__ */ template(`<div class=oasis-editor-statusbar data-testid=editor-statusbar><div class="oasis-editor-statusbar-group oasis-editor-statusbar-start"><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-word-count></span><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-character-count></span><span class=oasis-editor-statusbar-item></span></div><div class="oasis-editor-statusbar-group oasis-editor-statusbar-end"><div class=oasis-editor-statusbar-zoom data-testid=editor-statusbar-zoom-control><button type=button class=oasis-editor-zoom-button>−</button><input class=oasis-editor-zoom-slider type=range><button type=button class=oasis-editor-zoom-button>+</button><span class="oasis-editor-statusbar-item oasis-editor-zoom-value"data-testid=editor-statusbar-zoom>%`), _tmpl$2$j = /* @__PURE__ */ template(`<span>`);
38542
39110
  function EditorStatusBar(props) {
38543
39111
  const t = useI18n();
38544
39112
  return (() => {
38545
- var _el$ = _tmpl$$w(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$2.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild;
39113
+ var _el$ = _tmpl$$x(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.nextSibling, _el$6 = _el$2.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild;
38546
39114
  insert(_el$3, () => t("status.words", [props.wordCount()]));
38547
39115
  insert(_el$4, () => t("status.characters", [props.characterCount()]));
38548
39116
  insert(_el$5, () => t("status.page", [props.currentPage(), props.totalPages()]));
@@ -38565,7 +39133,7 @@ function EditorStatusBar(props) {
38565
39133
  return createComponent(Show, {
38566
39134
  when: key,
38567
39135
  get children() {
38568
- var _el$11 = _tmpl$2$i();
39136
+ var _el$11 = _tmpl$2$j();
38569
39137
  insert(_el$11, () => t(key));
38570
39138
  createRenderEffect(() => className(_el$11, `oasis-editor-statusbar-item oasis-editor-persistence-status oasis-editor-status-${status.replace("...", "ing").replace(".", "")}`));
38571
39139
  return _el$11;
@@ -38598,7 +39166,7 @@ function EditorStatusBar(props) {
38598
39166
  })();
38599
39167
  }
38600
39168
  delegateEvents(["click", "input"]);
38601
- var _tmpl$$v = /* @__PURE__ */ template(`<div data-testid=editor-editor-shell><div class=oasis-editor-editor data-testid=editor-editor><div class=oasis-editor-editor-zoom-sizer><div class=oasis-editor-editor-scroll-content data-testid=editor-editor-scroll-content style="position:absolute;top:0px;transform-origin:top left"><textarea aria-label="Editor input"autocomplete=off autocapitalize=off class=oasis-editor-input data-testid=editor-input value style=pointer-events:none></textarea><input data-testid=editor-import-docx-input type=file style=display:none><input accept="image/png, image/jpeg, image/gif"data-testid=editor-insert-image-input type=file style=display:none>`);
39169
+ var _tmpl$$w = /* @__PURE__ */ template(`<div data-testid=editor-editor-shell><div class=oasis-editor-editor data-testid=editor-editor><div class=oasis-editor-editor-zoom-sizer><div class=oasis-editor-editor-scroll-content data-testid=editor-editor-scroll-content style="position:absolute;top:0px;transform-origin:top left"><textarea aria-label="Editor input"autocomplete=off autocapitalize=off class=oasis-editor-input data-testid=editor-input value style=pointer-events:none></textarea><input data-testid=editor-import-docx-input type=file style=display:none><input accept="image/png, image/jpeg, image/gif"data-testid=editor-insert-image-input type=file style=display:none>`);
38602
39170
  function OasisEditorEditor(props) {
38603
39171
  const layout = () => props.layout;
38604
39172
  const overlays = () => props.overlays;
@@ -38715,6 +39283,10 @@ function OasisEditorEditor(props) {
38715
39283
  return pageIndex === -1 ? 1 : pageIndex + 1;
38716
39284
  };
38717
39285
  const selectedImage = createMemo(() => overlays().selectedImageBox());
39286
+ const imageCropMode = () => {
39287
+ var _a, _b;
39288
+ return ((_b = (_a = overlays()).imageCropMode) == null ? void 0 : _b.call(_a)) ?? false;
39289
+ };
38718
39290
  const selectedTextBox = createMemo(() => overlays().selectedTextBoxBox());
38719
39291
  const selectedTable = createMemo(() => overlays().selectedTableBox());
38720
39292
  const commentsById = createMemo(() => {
@@ -38726,7 +39298,7 @@ function OasisEditorEditor(props) {
38726
39298
  queueMicrotask(recomputeViewportPageIndex);
38727
39299
  });
38728
39300
  return (() => {
38729
- var _el$ = _tmpl$$v(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$6.nextSibling;
39301
+ var _el$ = _tmpl$$w(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$6.nextSibling;
38730
39302
  insert(_el$, createComponent(Show, {
38731
39303
  get when() {
38732
39304
  return memo(() => !!layout().showHorizontalRuler)() && overlays().toolbarHost;
@@ -38880,32 +39452,60 @@ function OasisEditorEditor(props) {
38880
39452
  });
38881
39453
  }
38882
39454
  }), _el$5);
38883
- insert(_el$4, createComponent(ResizeHandlesOverlay, {
38884
- box: selectedImage,
38885
- get readOnly() {
38886
- return Boolean(layout().readOnly);
38887
- },
38888
- variantClass: "oasis-editor-image-selection-overlay",
38889
- rotation: () => {
38890
- var _a;
38891
- return ((_a = selectedImage()) == null ? void 0 : _a.rotation) ?? 0;
38892
- },
38893
- onResizeStart: (direction, event) => {
38894
- const image = selectedImage();
38895
- if (!image) return;
38896
- event.preventDefault();
38897
- event.stopPropagation();
38898
- surfaceHandlers().onImageResizeHandleMouseDown(image.paragraphId, image.startOffset, direction, event);
39455
+ insert(_el$4, createComponent(Show, {
39456
+ get when() {
39457
+ return imageCropMode();
38899
39458
  },
38900
- onRotateStart: (event) => {
38901
- const image = selectedImage();
38902
- if (!image) return;
38903
- surfaceHandlers().onImageRotateHandleMouseDown(image.paragraphId, image.startOffset, event);
39459
+ get fallback() {
39460
+ return createComponent(ResizeHandlesOverlay, {
39461
+ box: selectedImage,
39462
+ get readOnly() {
39463
+ return Boolean(layout().readOnly);
39464
+ },
39465
+ variantClass: "oasis-editor-image-selection-overlay",
39466
+ rotation: () => {
39467
+ var _a;
39468
+ return ((_a = selectedImage()) == null ? void 0 : _a.rotation) ?? 0;
39469
+ },
39470
+ onResizeStart: (direction, event) => {
39471
+ const image = selectedImage();
39472
+ if (!image) return;
39473
+ event.preventDefault();
39474
+ event.stopPropagation();
39475
+ surfaceHandlers().onImageResizeHandleMouseDown(image.paragraphId, image.startOffset, direction, event);
39476
+ },
39477
+ onRotateStart: (event) => {
39478
+ const image = selectedImage();
39479
+ if (!image) return;
39480
+ surfaceHandlers().onImageRotateHandleMouseDown(image.paragraphId, image.startOffset, event);
39481
+ },
39482
+ onBodyMouseDown: (event) => {
39483
+ const image = selectedImage();
39484
+ if (!image) return;
39485
+ surfaceHandlers().onImageMouseDown(image.paragraphId, image.startOffset, event);
39486
+ }
39487
+ });
38904
39488
  },
38905
- onBodyMouseDown: (event) => {
38906
- const image = selectedImage();
38907
- if (!image) return;
38908
- surfaceHandlers().onImageMouseDown(image.paragraphId, image.startOffset, event);
39489
+ get children() {
39490
+ return createComponent(ResizeHandlesOverlay, {
39491
+ box: selectedImage,
39492
+ get readOnly() {
39493
+ return Boolean(layout().readOnly);
39494
+ },
39495
+ variantClass: "oasis-editor-image-crop-overlay",
39496
+ rotation: () => {
39497
+ var _a;
39498
+ return ((_a = selectedImage()) == null ? void 0 : _a.rotation) ?? 0;
39499
+ },
39500
+ onResizeStart: (direction, event) => {
39501
+ var _a, _b;
39502
+ const image = selectedImage();
39503
+ if (!image) return;
39504
+ event.preventDefault();
39505
+ event.stopPropagation();
39506
+ (_b = (_a = surfaceHandlers()).onImageCropHandleMouseDown) == null ? void 0 : _b.call(_a, image.paragraphId, image.startOffset, direction, event);
39507
+ }
39508
+ });
38909
39509
  }
38910
39510
  }), _el$5);
38911
39511
  insert(_el$4, createComponent(ResizeHandlesOverlay, {
@@ -39809,11 +40409,11 @@ function createCanvasLayoutSnapshotProvider() {
39809
40409
  }
39810
40410
  };
39811
40411
  }
39812
- var _tmpl$$u = /* @__PURE__ */ template(`<button>`);
40412
+ var _tmpl$$v = /* @__PURE__ */ template(`<button>`);
39813
40413
  function FloatingActionButton(props) {
39814
40414
  const [local, others] = splitProps(props, ["type", "icon", "label", "active", "class", "classList"]);
39815
40415
  return (() => {
39816
- var _el$ = _tmpl$$u();
40416
+ var _el$ = _tmpl$$v();
39817
40417
  spread(_el$, mergeProps({
39818
40418
  get type() {
39819
40419
  return local.type ?? "button";
@@ -39842,7 +40442,7 @@ function FloatingActionButton(props) {
39842
40442
  return _el$;
39843
40443
  })();
39844
40444
  }
39845
- var _tmpl$$t = /* @__PURE__ */ template(`<aside>`), _tmpl$2$h = /* @__PURE__ */ template(`<div>`);
40445
+ var _tmpl$$u = /* @__PURE__ */ template(`<aside>`), _tmpl$2$i = /* @__PURE__ */ template(`<div>`);
39846
40446
  function SidePanel(props) {
39847
40447
  const [local, others] = splitProps(props, ["mode", "width", "class", "classList", "children", "style"]);
39848
40448
  const width = () => {
@@ -39852,7 +40452,7 @@ function SidePanel(props) {
39852
40452
  return local.width ?? "360px";
39853
40453
  };
39854
40454
  return (() => {
39855
- var _el$ = _tmpl$$t();
40455
+ var _el$ = _tmpl$$u();
39856
40456
  spread(_el$, mergeProps({
39857
40457
  get ["class"]() {
39858
40458
  return `oasis-editor-plugin-side-panel ${local.class ?? ""}`;
@@ -39877,7 +40477,7 @@ function SidePanel(props) {
39877
40477
  function SidePanelHeader(props) {
39878
40478
  const [local, others] = splitProps(props, ["class", "children"]);
39879
40479
  return (() => {
39880
- var _el$2 = _tmpl$2$h();
40480
+ var _el$2 = _tmpl$2$i();
39881
40481
  spread(_el$2, mergeProps({
39882
40482
  get ["class"]() {
39883
40483
  return `oasis-editor-plugin-side-panel-header ${local.class ?? ""}`;
@@ -39890,7 +40490,7 @@ function SidePanelHeader(props) {
39890
40490
  function SidePanelBody(props) {
39891
40491
  const [local, others] = splitProps(props, ["class", "children"]);
39892
40492
  return (() => {
39893
- var _el$3 = _tmpl$2$h();
40493
+ var _el$3 = _tmpl$2$i();
39894
40494
  spread(_el$3, mergeProps({
39895
40495
  get ["class"]() {
39896
40496
  return `oasis-editor-plugin-side-panel-body ${local.class ?? ""}`;
@@ -39903,7 +40503,7 @@ function SidePanelBody(props) {
39903
40503
  function SidePanelFooter(props) {
39904
40504
  const [local, others] = splitProps(props, ["class", "children"]);
39905
40505
  return (() => {
39906
- var _el$4 = _tmpl$2$h();
40506
+ var _el$4 = _tmpl$2$i();
39907
40507
  spread(_el$4, mergeProps({
39908
40508
  get ["class"]() {
39909
40509
  return `oasis-editor-plugin-side-panel-footer ${local.class ?? ""}`;
@@ -39913,11 +40513,11 @@ function SidePanelFooter(props) {
39913
40513
  return _el$4;
39914
40514
  })();
39915
40515
  }
39916
- var _tmpl$$s = /* @__PURE__ */ template(`<button>`);
40516
+ var _tmpl$$t = /* @__PURE__ */ template(`<button>`);
39917
40517
  function IconButton(props) {
39918
40518
  const [local, others] = splitProps(props, ["type", "icon", "label", "active", "variant", "size", "class", "classList"]);
39919
40519
  return (() => {
39920
- var _el$ = _tmpl$$s();
40520
+ var _el$ = _tmpl$$t();
39921
40521
  spread(_el$, mergeProps({
39922
40522
  get type() {
39923
40523
  return local.type ?? "button";
@@ -39948,7 +40548,7 @@ function IconButton(props) {
39948
40548
  return _el$;
39949
40549
  })();
39950
40550
  }
39951
- var _tmpl$$r = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-floating-actions>`), _tmpl$2$g = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-ui-host><div class=oasis-editor-plugin-ui-main>`), _tmpl$3$a = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-side-panel-overlay>`), _tmpl$4$7 = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-side-panel-title>`);
40551
+ var _tmpl$$s = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-floating-actions>`), _tmpl$2$h = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-ui-host><div class=oasis-editor-plugin-ui-main>`), _tmpl$3$a = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-side-panel-overlay>`), _tmpl$4$7 = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-side-panel-title>`);
39952
40552
  const EMPTY_SNAPSHOT = {
39953
40553
  floatingActions: [],
39954
40554
  sidePanels: [],
@@ -39980,7 +40580,7 @@ function PluginUiHost(props) {
39980
40580
  return groupActionsByPlacement(actions());
39981
40581
  },
39982
40582
  children: (group) => (() => {
39983
- var _el$ = _tmpl$$r();
40583
+ var _el$ = _tmpl$$s();
39984
40584
  insert(_el$, createComponent(For, {
39985
40585
  get each() {
39986
40586
  return group.actions;
@@ -40009,7 +40609,7 @@ function PluginUiHost(props) {
40009
40609
  })()
40010
40610
  });
40011
40611
  return (() => {
40012
- var _el$2 = _tmpl$2$g(), _el$3 = _el$2.firstChild;
40612
+ var _el$2 = _tmpl$2$h(), _el$3 = _el$2.firstChild;
40013
40613
  insert(_el$3, resolvedChildren);
40014
40614
  insert(_el$2, createComponent(Show, {
40015
40615
  get when() {
@@ -40132,7 +40732,7 @@ function groupActionsByPlacement(actions) {
40132
40732
  actions: groupActions
40133
40733
  }));
40134
40734
  }
40135
- var _tmpl$$q = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage>`);
40735
+ var _tmpl$$r = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage>`);
40136
40736
  function DocumentShell(props) {
40137
40737
  let surfaceEl;
40138
40738
  let viewportEl;
@@ -40259,7 +40859,7 @@ function DocumentShell(props) {
40259
40859
  return props.runtimeEditor;
40260
40860
  },
40261
40861
  get children() {
40262
- var _el$ = _tmpl$$q(), _el$2 = _el$.firstChild;
40862
+ var _el$ = _tmpl$$r(), _el$2 = _el$.firstChild;
40263
40863
  insert(_el$, createComponent(Show, {
40264
40864
  get when() {
40265
40865
  return memo(() => !!props.showChrome)() && props.showOutline;
@@ -40324,10 +40924,10 @@ function DocumentShell(props) {
40324
40924
  }
40325
40925
  })];
40326
40926
  }
40327
- var _tmpl$$p = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage style=padding:0>`), _tmpl$2$f = /* @__PURE__ */ template(`<div class=oasis-inline-shell style="border:1px solid var(--oasis-toolbar-border);border-radius:var(--oasis-radius);overflow:hidden;display:flex;flex-direction:column">`);
40927
+ var _tmpl$$q = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage style=padding:0>`), _tmpl$2$g = /* @__PURE__ */ template(`<div class=oasis-inline-shell style="border:1px solid var(--oasis-toolbar-border);border-radius:var(--oasis-radius);overflow:hidden;display:flex;flex-direction:column">`);
40328
40928
  function InlineShell(props) {
40329
40929
  return (() => {
40330
- var _el$ = _tmpl$2$f();
40930
+ var _el$ = _tmpl$2$g();
40331
40931
  insert(_el$, createComponent(Show, {
40332
40932
  get when() {
40333
40933
  return memo(() => !!props.showChrome)() && props.showToolbar;
@@ -40354,7 +40954,7 @@ function InlineShell(props) {
40354
40954
  return props.runtimeEditor;
40355
40955
  },
40356
40956
  get children() {
40357
- var _el$2 = _tmpl$$p(), _el$3 = _el$2.firstChild;
40957
+ var _el$2 = _tmpl$$q(), _el$3 = _el$2.firstChild;
40358
40958
  insert(_el$3, createComponent(OasisEditorEditor, {
40359
40959
  state: () => props.state,
40360
40960
  get layout() {
@@ -40394,16 +40994,16 @@ function InlineShell(props) {
40394
40994
  return _el$;
40395
40995
  })();
40396
40996
  }
40397
- var _tmpl$$o = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage style=padding:0>`), _tmpl$2$e = /* @__PURE__ */ template(`<div class=oasis-balloon-shell>`);
40997
+ var _tmpl$$p = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage style=padding:0>`), _tmpl$2$f = /* @__PURE__ */ template(`<div class=oasis-balloon-shell>`);
40398
40998
  function BalloonShell(props) {
40399
40999
  return (() => {
40400
- var _el$ = _tmpl$2$e();
41000
+ var _el$ = _tmpl$2$f();
40401
41001
  insert(_el$, createComponent(PluginUiHost, {
40402
41002
  get editor() {
40403
41003
  return props.runtimeEditor;
40404
41004
  },
40405
41005
  get children() {
40406
- var _el$2 = _tmpl$$o(), _el$3 = _el$2.firstChild;
41006
+ var _el$2 = _tmpl$$p(), _el$3 = _el$2.firstChild;
40407
41007
  insert(_el$3, createComponent(OasisEditorEditor, {
40408
41008
  state: () => props.state,
40409
41009
  get layout() {
@@ -40443,7 +41043,7 @@ function BalloonShell(props) {
40443
41043
  return _el$;
40444
41044
  })();
40445
41045
  }
40446
- var _tmpl$$n = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-footer data-testid=editor-dialog-footer>`), _tmpl$2$d = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-overlay><div role=dialog aria-modal=true data-testid=editor-dialog><div class=oasis-editor-dialog-header><h3 class=oasis-editor-dialog-title></h3><button class=oasis-editor-dialog-close data-testid=editor-dialog-close><i data-lucide=x></i></button></div><div data-testid=editor-dialog-body>`);
41046
+ var _tmpl$$o = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-footer data-testid=editor-dialog-footer>`), _tmpl$2$e = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-overlay><div role=dialog aria-modal=true data-testid=editor-dialog><div class=oasis-editor-dialog-header><h3 class=oasis-editor-dialog-title></h3><button class=oasis-editor-dialog-close data-testid=editor-dialog-close><i data-lucide=x></i></button></div><div data-testid=editor-dialog-body>`);
40447
41047
  function Dialog(props) {
40448
41048
  const t = useI18n();
40449
41049
  let dialogRef;
@@ -40468,7 +41068,7 @@ function Dialog(props) {
40468
41068
  return props.isOpen;
40469
41069
  },
40470
41070
  get children() {
40471
- var _el$ = _tmpl$2$d(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
41071
+ var _el$ = _tmpl$2$e(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$3.nextSibling;
40472
41072
  _el$.$$click = () => {
40473
41073
  if (props.closeOnOverlayClick ?? true) {
40474
41074
  props.onClose();
@@ -40485,7 +41085,7 @@ function Dialog(props) {
40485
41085
  return props.footer;
40486
41086
  },
40487
41087
  get children() {
40488
- var _el$7 = _tmpl$$n();
41088
+ var _el$7 = _tmpl$$o();
40489
41089
  insert(_el$7, () => props.footer);
40490
41090
  return _el$7;
40491
41091
  }
@@ -40514,7 +41114,7 @@ function Dialog(props) {
40514
41114
  });
40515
41115
  }
40516
41116
  delegateEvents(["click"]);
40517
- var _tmpl$$m = /* @__PURE__ */ template(`<div><div class=oasis-editor-tabs-list role=tablist>`), _tmpl$2$c = /* @__PURE__ */ template(`<button type=button role=tab class=oasis-editor-tabs-tab>`), _tmpl$3$9 = /* @__PURE__ */ template(`<div role=tabpanel class=oasis-editor-tabs-panel>`);
41117
+ var _tmpl$$n = /* @__PURE__ */ template(`<div><div class=oasis-editor-tabs-list role=tablist>`), _tmpl$2$d = /* @__PURE__ */ template(`<button type=button role=tab class=oasis-editor-tabs-tab>`), _tmpl$3$9 = /* @__PURE__ */ template(`<div role=tabpanel class=oasis-editor-tabs-panel>`);
40518
41118
  function findEnabledItem(items, startIndex, direction) {
40519
41119
  if (!items.length) return void 0;
40520
41120
  for (let step = 0; step < items.length; step += 1) {
@@ -40565,7 +41165,7 @@ function Tabs(props) {
40565
41165
  selectItem(findEnabledItem(items(), currentIndex + direction, direction), true);
40566
41166
  };
40567
41167
  return (() => {
40568
- var _el$ = _tmpl$$m(), _el$2 = _el$.firstChild;
41168
+ var _el$ = _tmpl$$n(), _el$2 = _el$.firstChild;
40569
41169
  _el$2.$$keydown = handleKeyDown;
40570
41170
  insert(_el$2, createComponent(For, {
40571
41171
  get each() {
@@ -40575,7 +41175,7 @@ function Tabs(props) {
40575
41175
  const tabId = `${baseId}-${item.id}-tab`;
40576
41176
  const panelId = `${baseId}-${item.id}-panel`;
40577
41177
  return (() => {
40578
- var _el$3 = _tmpl$2$c();
41178
+ var _el$3 = _tmpl$2$d();
40579
41179
  _el$3.$$click = () => selectItem(item);
40580
41180
  use((element) => {
40581
41181
  tabRefs[index()] = element;
@@ -40642,12 +41242,12 @@ function Tabs(props) {
40642
41242
  })();
40643
41243
  }
40644
41244
  delegateEvents(["keydown", "click"]);
40645
- var _tmpl$$l = /* @__PURE__ */ template(`<button><span class=oasis-editor-ui-button-label>`);
41245
+ var _tmpl$$m = /* @__PURE__ */ template(`<button><span class=oasis-editor-ui-button-label>`);
40646
41246
  function Button(props) {
40647
41247
  const [local, others] = splitProps(props, ["type", "variant", "size", "icon", "iconPosition", "fullWidth", "class", "classList", "children"]);
40648
41248
  const iconPosition = () => local.iconPosition ?? "start";
40649
41249
  return (() => {
40650
- var _el$ = _tmpl$$l(), _el$2 = _el$.firstChild;
41250
+ var _el$ = _tmpl$$m(), _el$2 = _el$.firstChild;
40651
41251
  spread(_el$, mergeProps({
40652
41252
  get type() {
40653
41253
  return local.type ?? "button";
@@ -40727,11 +41327,11 @@ function StatusText(props) {
40727
41327
  }
40728
41328
  }, others));
40729
41329
  }
40730
- var _tmpl$$k = /* @__PURE__ */ template(`<div>`);
41330
+ var _tmpl$$l = /* @__PURE__ */ template(`<div>`);
40731
41331
  function ActionRow(props) {
40732
41332
  const [local, others] = splitProps(props, ["align", "wrap", "class", "classList", "children"]);
40733
41333
  return (() => {
40734
- var _el$ = _tmpl$$k();
41334
+ var _el$ = _tmpl$$l();
40735
41335
  spread(_el$, mergeProps({
40736
41336
  get ["class"]() {
40737
41337
  return `oasis-editor-ui-action-row ${local.class ?? ""}`;
@@ -40787,7 +41387,7 @@ function mergeStyles(...styles) {
40787
41387
  }
40788
41388
  return Object.assign({}, ...objectStyles);
40789
41389
  }
40790
- var _tmpl$$j = /* @__PURE__ */ template(`<span class=oasis-editor-ui-stack-divider-item aria-hidden=true>`);
41390
+ var _tmpl$$k = /* @__PURE__ */ template(`<span class=oasis-editor-ui-stack-divider-item aria-hidden=true>`);
40791
41391
  function childArray(value) {
40792
41392
  if (Array.isArray(value)) return value;
40793
41393
  if (value === null || value === void 0 || value === false) return [];
@@ -40827,7 +41427,7 @@ function Stack(props) {
40827
41427
  return memo(() => index() > 0)() && local.divider;
40828
41428
  },
40829
41429
  get children() {
40830
- var _el$ = _tmpl$$j();
41430
+ var _el$ = _tmpl$$k();
40831
41431
  insert(_el$, () => renderDivider(index()));
40832
41432
  return _el$;
40833
41433
  }
@@ -40906,14 +41506,14 @@ function Grid(props) {
40906
41506
  }
40907
41507
  }));
40908
41508
  }
40909
- var _tmpl$$i = /* @__PURE__ */ template(`<label>`), _tmpl$2$b = /* @__PURE__ */ template(`<div>`);
41509
+ var _tmpl$$j = /* @__PURE__ */ template(`<label>`), _tmpl$2$c = /* @__PURE__ */ template(`<div>`);
40910
41510
  function FormField(props) {
40911
41511
  const fallbackId = createUniqueId();
40912
41512
  const [local, others] = splitProps(props, ["label", "for", "description", "error", "labelClass", "class", "classList", "children"]);
40913
41513
  const descriptionId = () => local.for ?? `${fallbackId}-description`;
40914
41514
  const errorId = () => local.for ?? `${fallbackId}-error`;
40915
41515
  return (() => {
40916
- var _el$ = _tmpl$2$b();
41516
+ var _el$ = _tmpl$2$c();
40917
41517
  spread(_el$, mergeProps({
40918
41518
  get ["class"]() {
40919
41519
  return `oasis-editor-ui-field ${local.class ?? ""}`;
@@ -40927,7 +41527,7 @@ function FormField(props) {
40927
41527
  return local.label;
40928
41528
  },
40929
41529
  get children() {
40930
- var _el$2 = _tmpl$$i();
41530
+ var _el$2 = _tmpl$$j();
40931
41531
  insert(_el$2, () => local.label);
40932
41532
  createRenderEffect((_p$) => {
40933
41533
  var _v$ = `oasis-editor-ui-field-label ${local.labelClass ?? ""}`, _v$2 = local.for;
@@ -40978,7 +41578,7 @@ function FormField(props) {
40978
41578
  return _el$;
40979
41579
  })();
40980
41580
  }
40981
- var _tmpl$$h = /* @__PURE__ */ template(`<span>`), _tmpl$2$a = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$3$8 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-error>`), _tmpl$4$6 = /* @__PURE__ */ template(`<label><input>`);
41581
+ var _tmpl$$i = /* @__PURE__ */ template(`<span>`), _tmpl$2$b = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$3$8 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-error>`), _tmpl$4$6 = /* @__PURE__ */ template(`<label><input>`);
40982
41582
  function TextField(props) {
40983
41583
  const fallbackId = createUniqueId();
40984
41584
  const [local, others] = splitProps(props, ["label", "description", "error", "labelClass", "controlClass", "onChange", "class", "classList", "id"]);
@@ -40992,7 +41592,7 @@ function TextField(props) {
40992
41592
  return local.label;
40993
41593
  },
40994
41594
  get children() {
40995
- var _el$2 = _tmpl$$h();
41595
+ var _el$2 = _tmpl$$i();
40996
41596
  insert(_el$2, () => local.label);
40997
41597
  createRenderEffect(() => className(_el$2, `oasis-editor-ui-field-label ${local.labelClass ?? ""}`));
40998
41598
  return _el$2;
@@ -41021,7 +41621,7 @@ function TextField(props) {
41021
41621
  return local.description;
41022
41622
  },
41023
41623
  get children() {
41024
- var _el$4 = _tmpl$2$a();
41624
+ var _el$4 = _tmpl$2$b();
41025
41625
  insert(_el$4, () => local.description);
41026
41626
  createRenderEffect(() => setAttribute(_el$4, "id", descriptionId()));
41027
41627
  return _el$4;
@@ -41053,7 +41653,7 @@ function TextField(props) {
41053
41653
  })();
41054
41654
  }
41055
41655
  delegateEvents(["input"]);
41056
- var _tmpl$$g = /* @__PURE__ */ template(`<textarea>`);
41656
+ var _tmpl$$h = /* @__PURE__ */ template(`<textarea>`);
41057
41657
  function TextAreaField(props) {
41058
41658
  const fallbackId = createUniqueId();
41059
41659
  const [local, others] = splitProps(props, ["label", "description", "error", "labelClass", "controlClass", "onChange", "class", "id"]);
@@ -41079,7 +41679,7 @@ function TextAreaField(props) {
41079
41679
  return local.error;
41080
41680
  },
41081
41681
  get children() {
41082
- var _el$ = _tmpl$$g();
41682
+ var _el$ = _tmpl$$h();
41083
41683
  _el$.$$input = (event) => {
41084
41684
  var _a;
41085
41685
  return (_a = local.onChange) == null ? void 0 : _a.call(local, event.currentTarget.value);
@@ -41115,7 +41715,7 @@ function ColorField(props) {
41115
41715
  }
41116
41716
  }, others));
41117
41717
  }
41118
- var _tmpl$$f = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$2$9 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-error>`), _tmpl$3$7 = /* @__PURE__ */ template(`<label><input type=checkbox class=oasis-editor-ui-checkbox-input><span class=oasis-editor-ui-checkbox-copy><span class=oasis-editor-ui-field-label>`);
41718
+ var _tmpl$$g = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$2$a = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-error>`), _tmpl$3$7 = /* @__PURE__ */ template(`<label><input type=checkbox class=oasis-editor-ui-checkbox-input><span class=oasis-editor-ui-checkbox-copy><span class=oasis-editor-ui-field-label>`);
41119
41719
  function Checkbox(props) {
41120
41720
  const fallbackId = createUniqueId();
41121
41721
  const [local, others] = splitProps(props, ["label", "description", "error", "onChange", "class", "id"]);
@@ -41145,7 +41745,7 @@ function Checkbox(props) {
41145
41745
  return local.description;
41146
41746
  },
41147
41747
  get children() {
41148
- var _el$5 = _tmpl$$f();
41748
+ var _el$5 = _tmpl$$g();
41149
41749
  insert(_el$5, () => local.description);
41150
41750
  createRenderEffect(() => setAttribute(_el$5, "id", descriptionId()));
41151
41751
  return _el$5;
@@ -41156,7 +41756,7 @@ function Checkbox(props) {
41156
41756
  return local.error;
41157
41757
  },
41158
41758
  get children() {
41159
- var _el$6 = _tmpl$2$9();
41759
+ var _el$6 = _tmpl$2$a();
41160
41760
  insert(_el$6, () => local.error);
41161
41761
  createRenderEffect(() => setAttribute(_el$6, "id", errorId()));
41162
41762
  return _el$6;
@@ -41174,7 +41774,7 @@ function Checkbox(props) {
41174
41774
  return _el$;
41175
41775
  })();
41176
41776
  }
41177
- var _tmpl$$e = /* @__PURE__ */ template(`<span>`), _tmpl$2$8 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$3$6 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-error>`), _tmpl$4$5 = /* @__PURE__ */ template(`<label><select>`), _tmpl$5$3 = /* @__PURE__ */ template(`<option>`);
41777
+ var _tmpl$$f = /* @__PURE__ */ template(`<span>`), _tmpl$2$9 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$3$6 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-error>`), _tmpl$4$5 = /* @__PURE__ */ template(`<label><select>`), _tmpl$5$3 = /* @__PURE__ */ template(`<option>`);
41178
41778
  function SelectField(props) {
41179
41779
  const fallbackId = createUniqueId();
41180
41780
  const [local, others] = splitProps(props, ["label", "description", "error", "labelClass", "controlClass", "options", "onChange", "class", "classList", "id", "value"]);
@@ -41189,7 +41789,7 @@ function SelectField(props) {
41189
41789
  return local.label;
41190
41790
  },
41191
41791
  get children() {
41192
- var _el$2 = _tmpl$$e();
41792
+ var _el$2 = _tmpl$$f();
41193
41793
  insert(_el$2, () => local.label);
41194
41794
  createRenderEffect(() => className(_el$2, `oasis-editor-ui-field-label ${local.labelClass ?? ""}`));
41195
41795
  return _el$2;
@@ -41242,7 +41842,7 @@ function SelectField(props) {
41242
41842
  return local.description;
41243
41843
  },
41244
41844
  get children() {
41245
- var _el$4 = _tmpl$2$8();
41845
+ var _el$4 = _tmpl$2$9();
41246
41846
  insert(_el$4, () => local.description);
41247
41847
  createRenderEffect(() => setAttribute(_el$4, "id", descriptionId()));
41248
41848
  return _el$4;
@@ -41288,7 +41888,7 @@ function NumberField(props) {
41288
41888
  }
41289
41889
  }, others));
41290
41890
  }
41291
- var _tmpl$$d = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$2$7 = /* @__PURE__ */ template(`<label><input type=radio class=oasis-editor-ui-radio-input><span class=oasis-editor-ui-checkbox-copy><span class=oasis-editor-ui-field-label>`), _tmpl$3$5 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-label>`), _tmpl$4$4 = /* @__PURE__ */ template(`<div role=radiogroup>`);
41891
+ var _tmpl$$e = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-description>`), _tmpl$2$8 = /* @__PURE__ */ template(`<label><input type=radio class=oasis-editor-ui-radio-input><span class=oasis-editor-ui-checkbox-copy><span class=oasis-editor-ui-field-label>`), _tmpl$3$5 = /* @__PURE__ */ template(`<span class=oasis-editor-ui-field-label>`), _tmpl$4$4 = /* @__PURE__ */ template(`<div role=radiogroup>`);
41292
41892
  const RadioGroupCtx = createContext();
41293
41893
  function Radio(props) {
41294
41894
  const fallbackId = createUniqueId();
@@ -41299,7 +41899,7 @@ function Radio(props) {
41299
41899
  const checked = () => group ? group.value() === local.value : Boolean(local.checked);
41300
41900
  const disabled = () => Boolean(local.disabled) || (group ? group.disabled() : false);
41301
41901
  return (() => {
41302
- var _el$ = _tmpl$2$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
41902
+ var _el$ = _tmpl$2$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
41303
41903
  _el$2.addEventListener("change", (event) => {
41304
41904
  var _a;
41305
41905
  if (group) group.onSelect(local.value);
@@ -41331,7 +41931,7 @@ function Radio(props) {
41331
41931
  return local.description;
41332
41932
  },
41333
41933
  get children() {
41334
- var _el$5 = _tmpl$$d();
41934
+ var _el$5 = _tmpl$$e();
41335
41935
  insert(_el$5, () => local.description);
41336
41936
  createRenderEffect(() => setAttribute(_el$5, "id", descriptionId()));
41337
41937
  return _el$5;
@@ -41416,7 +42016,7 @@ function RadioGroup(props) {
41416
42016
  }
41417
42017
  });
41418
42018
  }
41419
- var _tmpl$$c = /* @__PURE__ */ template(`<div>`);
42019
+ var _tmpl$$d = /* @__PURE__ */ template(`<div>`);
41420
42020
  const ALIGN_MAP = {
41421
42021
  start: "flex-start",
41422
42022
  center: "center",
@@ -41426,7 +42026,7 @@ const ALIGN_MAP = {
41426
42026
  function FieldRow(props) {
41427
42027
  const [local, others] = splitProps(props, ["align", "class", "style", "children"]);
41428
42028
  return (() => {
41429
- var _el$ = _tmpl$$c();
42029
+ var _el$ = _tmpl$$d();
41430
42030
  spread(_el$, mergeProps({
41431
42031
  get ["class"]() {
41432
42032
  return `oasis-editor-ui-field-row ${local.class ?? ""}`;
@@ -41442,11 +42042,11 @@ function FieldRow(props) {
41442
42042
  return _el$;
41443
42043
  })();
41444
42044
  }
41445
- var _tmpl$$b = /* @__PURE__ */ template(`<legend>`), _tmpl$2$6 = /* @__PURE__ */ template(`<fieldset>`);
42045
+ var _tmpl$$c = /* @__PURE__ */ template(`<legend>`), _tmpl$2$7 = /* @__PURE__ */ template(`<fieldset>`);
41446
42046
  function FieldGroup(props) {
41447
42047
  const [local, others] = splitProps(props, ["legend", "legendClass", "class", "children"]);
41448
42048
  return (() => {
41449
- var _el$ = _tmpl$2$6();
42049
+ var _el$ = _tmpl$2$7();
41450
42050
  spread(_el$, mergeProps({
41451
42051
  get ["class"]() {
41452
42052
  return `oasis-editor-ui-field-group ${local.class ?? ""}`;
@@ -41457,7 +42057,7 @@ function FieldGroup(props) {
41457
42057
  return local.legend;
41458
42058
  },
41459
42059
  get children() {
41460
- var _el$2 = _tmpl$$b();
42060
+ var _el$2 = _tmpl$$c();
41461
42061
  insert(_el$2, () => local.legend);
41462
42062
  createRenderEffect(() => className(_el$2, `oasis-editor-ui-field-group-legend ${local.legendClass ?? ""}`));
41463
42063
  return _el$2;
@@ -41467,11 +42067,11 @@ function FieldGroup(props) {
41467
42067
  return _el$;
41468
42068
  })();
41469
42069
  }
41470
- var _tmpl$$a = /* @__PURE__ */ template(`<label><input type=checkbox class=oasis-editor-ui-toggle-chip-input><span class=oasis-editor-ui-toggle-chip-label>`);
42070
+ var _tmpl$$b = /* @__PURE__ */ template(`<label><input type=checkbox class=oasis-editor-ui-toggle-chip-input><span class=oasis-editor-ui-toggle-chip-label>`);
41471
42071
  function ToggleChip(props) {
41472
42072
  const [local, others] = splitProps(props, ["label", "labelStyle", "onChange", "class", "checked"]);
41473
42073
  return (() => {
41474
- var _el$ = _tmpl$$a(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
42074
+ var _el$ = _tmpl$$b(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
41475
42075
  _el$2.addEventListener("change", (event) => {
41476
42076
  var _a;
41477
42077
  return (_a = local.onChange) == null ? void 0 : _a.call(local, event.currentTarget.checked);
@@ -41496,11 +42096,11 @@ function ToggleChip(props) {
41496
42096
  return _el$;
41497
42097
  })();
41498
42098
  }
41499
- var _tmpl$$9 = /* @__PURE__ */ template(`<div>`);
42099
+ var _tmpl$$a = /* @__PURE__ */ template(`<div>`);
41500
42100
  function DialogFooter(props) {
41501
42101
  const [local, others] = splitProps(props, ["align", "class", "classList", "children"]);
41502
42102
  return (() => {
41503
- var _el$ = _tmpl$$9();
42103
+ var _el$ = _tmpl$$a();
41504
42104
  spread(_el$, mergeProps({
41505
42105
  get ["class"]() {
41506
42106
  return `oasis-editor-ui-dialog-footer ${local.class ?? ""}`;
@@ -41756,7 +42356,7 @@ const UNDERLINE_STYLE_OPTIONS = [
41756
42356
  }
41757
42357
  }
41758
42358
  ];
41759
- var _tmpl$$8 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action data-testid=editor-toolbar-underline-remove role=menuitem><span class=oasis-editor-color-menu-action-swatch><i data-lucide=slash></i></span><span>`), _tmpl$2$5 = /* @__PURE__ */ template(`<div class=oasis-editor-underline-menu-list>`), _tmpl$3$4 = /* @__PURE__ */ template(`<span class="oasis-editor-color-split-icon oasis-editor-underline-split-icon"><span class=oasis-editor-underline-split-glyph aria-hidden=true>U</span><span class=oasis-editor-underline-split-indicator>`), _tmpl$4$3 = /* @__PURE__ */ template(`<span class="oasis-editor-underline-menu-stroke oasis-editor-underline-menu-stroke-svg">`), _tmpl$5$2 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-underline-menu-item role=menuitemradio><span class=oasis-editor-underline-menu-preview></span><span class=oasis-editor-underline-menu-label>`), _tmpl$6$2 = /* @__PURE__ */ template(`<span class=oasis-editor-underline-menu-stroke>`);
42359
+ var _tmpl$$9 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-menu-action data-testid=editor-toolbar-underline-remove role=menuitem><span class=oasis-editor-color-menu-action-swatch><i data-lucide=slash></i></span><span>`), _tmpl$2$6 = /* @__PURE__ */ template(`<div class=oasis-editor-underline-menu-list>`), _tmpl$3$4 = /* @__PURE__ */ template(`<span class="oasis-editor-color-split-icon oasis-editor-underline-split-icon"><span class=oasis-editor-underline-split-glyph aria-hidden=true>U</span><span class=oasis-editor-underline-split-indicator>`), _tmpl$4$3 = /* @__PURE__ */ template(`<span class="oasis-editor-underline-menu-stroke oasis-editor-underline-menu-stroke-svg">`), _tmpl$5$2 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-underline-menu-item role=menuitemradio><span class=oasis-editor-underline-menu-preview></span><span class=oasis-editor-underline-menu-label>`), _tmpl$6$2 = /* @__PURE__ */ template(`<span class=oasis-editor-underline-menu-stroke>`);
41760
42360
  const mod$1 = /Mac/i.test(navigator.userAgent) ? "⌘" : "Ctrl";
41761
42361
  const TEST_ID = "editor-toolbar-underline";
41762
42362
  function UnderlineControl(props) {
@@ -41814,7 +42414,7 @@ function UnderlineControl(props) {
41814
42414
  },
41815
42415
  get children() {
41816
42416
  return [(() => {
41817
- var _el$ = _tmpl$$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
42417
+ var _el$ = _tmpl$$9(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
41818
42418
  _el$.$$click = () => {
41819
42419
  removeUnderline();
41820
42420
  setOpen(false);
@@ -41822,7 +42422,7 @@ function UnderlineControl(props) {
41822
42422
  insert(_el$3, () => t("toolbar.underlineRemove"));
41823
42423
  return _el$;
41824
42424
  })(), (() => {
41825
- var _el$4 = _tmpl$2$5();
42425
+ var _el$4 = _tmpl$2$6();
41826
42426
  insert(_el$4, createComponent(For, {
41827
42427
  each: UNDERLINE_STYLE_OPTIONS,
41828
42428
  children: (option) => {
@@ -41877,7 +42477,7 @@ function UnderlineControl(props) {
41877
42477
  });
41878
42478
  }
41879
42479
  delegateEvents(["click"]);
41880
- var _tmpl$$7 = /* @__PURE__ */ template(`<option value=decimal>`), _tmpl$2$4 = /* @__PURE__ */ template(`<option value=lowerLetter>`), _tmpl$3$3 = /* @__PURE__ */ template(`<option value=upperLetter>`), _tmpl$4$2 = /* @__PURE__ */ template(`<option value=lowerRoman>`), _tmpl$5$1 = /* @__PURE__ */ template(`<option value=upperRoman>`), _tmpl$6$1 = /* @__PURE__ */ template(`<option value=bullet>`), _tmpl$7 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-list-options><label class=oasis-editor-toolbar-field><span></span></label><label class=oasis-editor-toolbar-field><span></span><input type=number class=oasis-editor-tool-number data-testid=editor-toolbar-list-start-at min=1 step=1 placeholder=1>`);
42480
+ var _tmpl$$8 = /* @__PURE__ */ template(`<option value=decimal>`), _tmpl$2$5 = /* @__PURE__ */ template(`<option value=lowerLetter>`), _tmpl$3$3 = /* @__PURE__ */ template(`<option value=upperLetter>`), _tmpl$4$2 = /* @__PURE__ */ template(`<option value=lowerRoman>`), _tmpl$5$1 = /* @__PURE__ */ template(`<option value=upperRoman>`), _tmpl$6$1 = /* @__PURE__ */ template(`<option value=bullet>`), _tmpl$7 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-list-options><label class=oasis-editor-toolbar-field><span></span></label><label class=oasis-editor-toolbar-field><span></span><input type=number class=oasis-editor-tool-number data-testid=editor-toolbar-list-start-at min=1 step=1 placeholder=1>`);
41881
42481
  function ListOptionsControl(props) {
41882
42482
  const t = useI18n();
41883
42483
  const api = props.api;
@@ -41899,11 +42499,11 @@ function ListOptionsControl(props) {
41899
42499
  },
41900
42500
  get children() {
41901
42501
  return [(() => {
41902
- var _el$4 = _tmpl$$7();
42502
+ var _el$4 = _tmpl$$8();
41903
42503
  insert(_el$4, () => t("toolbar.formatDecimal"));
41904
42504
  return _el$4;
41905
42505
  })(), (() => {
41906
- var _el$5 = _tmpl$2$4();
42506
+ var _el$5 = _tmpl$2$5();
41907
42507
  insert(_el$5, () => t("toolbar.formatLowerLetter"));
41908
42508
  return _el$5;
41909
42509
  })(), (() => {
@@ -41937,7 +42537,7 @@ function parseNumber(value) {
41937
42537
  const parsed = Number(value);
41938
42538
  return Number.isFinite(parsed) ? parsed : null;
41939
42539
  }
41940
- var _tmpl$$6 = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-preview data-testid=editor-line-spacing-dialog-preview><br>`);
42540
+ var _tmpl$$7 = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-preview data-testid=editor-line-spacing-dialog-preview><br>`);
41941
42541
  function LineSpacingDialog(props) {
41942
42542
  const t = useI18n();
41943
42543
  const [lineHeight, setLineHeight] = createSignal(null);
@@ -42068,7 +42668,7 @@ function LineSpacingDialog(props) {
42068
42668
  return t("lineSpacing.preview");
42069
42669
  },
42070
42670
  get children() {
42071
- var _el$ = _tmpl$$6(), _el$2 = _el$.firstChild;
42671
+ var _el$ = _tmpl$$7(), _el$2 = _el$.firstChild;
42072
42672
  insert(_el$, () => t("lineSpacing.previewText"), _el$2);
42073
42673
  insert(_el$, () => t("lineSpacing.previewText"), null);
42074
42674
  createRenderEffect((_$p) => style(_el$, previewStyle2(), _$p));
@@ -42078,7 +42678,7 @@ function LineSpacingDialog(props) {
42078
42678
  }
42079
42679
  });
42080
42680
  }
42081
- var _tmpl$$5 = /* @__PURE__ */ template(`<div class=oasis-editor-line-spacing-menu-separator role=separator>`), _tmpl$2$3 = /* @__PURE__ */ template(`<button type=button class="oasis-editor-line-spacing-item oasis-editor-line-spacing-item-more"role=menuitem data-testid=editor-toolbar-line-spacing-options><span class=oasis-editor-line-spacing-item-check aria-hidden=true></span><span class=oasis-editor-line-spacing-item-label>`), _tmpl$3$2 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-line-spacing-item role=menuitemradio><span class=oasis-editor-line-spacing-item-check aria-hidden=true></span><span class=oasis-editor-line-spacing-item-label>`);
42681
+ var _tmpl$$6 = /* @__PURE__ */ template(`<div class=oasis-editor-line-spacing-menu-separator role=separator>`), _tmpl$2$4 = /* @__PURE__ */ template(`<button type=button class="oasis-editor-line-spacing-item oasis-editor-line-spacing-item-more"role=menuitem data-testid=editor-toolbar-line-spacing-options><span class=oasis-editor-line-spacing-item-check aria-hidden=true></span><span class=oasis-editor-line-spacing-item-label>`), _tmpl$3$2 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-line-spacing-item role=menuitemradio><span class=oasis-editor-line-spacing-item-check aria-hidden=true></span><span class=oasis-editor-line-spacing-item-label>`);
42082
42682
  const PRESET_VALUES = [1, 1.15, 1.5, 2, 2.5, 3];
42083
42683
  function formatPreset(value) {
42084
42684
  return value.toFixed(value === Math.floor(value) ? 1 : 2);
@@ -42177,8 +42777,8 @@ function LineSpacingButton(props) {
42177
42777
  return _el$5;
42178
42778
  })();
42179
42779
  }
42180
- }), _tmpl$$5(), (() => {
42181
- var _el$2 = _tmpl$2$3(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
42780
+ }), _tmpl$$6(), (() => {
42781
+ var _el$2 = _tmpl$2$4(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
42182
42782
  _el$2.$$click = openDialog;
42183
42783
  insert(_el$4, () => t("metric.lineSpacingOptions"));
42184
42784
  return _el$2;
@@ -42207,7 +42807,7 @@ function LineSpacingButton(props) {
42207
42807
  })];
42208
42808
  }
42209
42809
  delegateEvents(["click"]);
42210
- var _tmpl$$4 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel-section oasis-editor-toolbar-panel-actions">`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-panel-grid>`);
42810
+ var _tmpl$$5 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel-section oasis-editor-toolbar-panel-actions">`), _tmpl$2$3 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-panel-grid>`);
42211
42811
  const numValue = (api, command) => {
42212
42812
  const value = api.commands.state(command).value;
42213
42813
  return value == null ? "" : String(value);
@@ -42226,7 +42826,7 @@ function MetricGroup(props) {
42226
42826
  keepMounted: true,
42227
42827
  get children() {
42228
42828
  return [(() => {
42229
- var _el$ = _tmpl$$4();
42829
+ var _el$ = _tmpl$$5();
42230
42830
  insert(_el$, createComponent(Button$1, {
42231
42831
  icon: "file-up",
42232
42832
  get active() {
@@ -42251,7 +42851,7 @@ function MetricGroup(props) {
42251
42851
  }), null);
42252
42852
  return _el$;
42253
42853
  })(), (() => {
42254
- var _el$2 = _tmpl$2$2();
42854
+ var _el$2 = _tmpl$2$3();
42255
42855
  insert(_el$2, createComponent(NumberField, {
42256
42856
  "class": "oasis-editor-tool-metric",
42257
42857
  labelClass: "oasis-editor-tool-metric-label",
@@ -42353,7 +42953,7 @@ function MetricGroup(props) {
42353
42953
  }
42354
42954
  });
42355
42955
  }
42356
- var _tmpl$$3 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel-section oasis-editor-toolbar-panel-actions">`);
42956
+ var _tmpl$$4 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel-section oasis-editor-toolbar-panel-actions">`);
42357
42957
  function SectionGroup(props) {
42358
42958
  const t = useI18n();
42359
42959
  const api = props.api;
@@ -42370,7 +42970,7 @@ function SectionGroup(props) {
42370
42970
  keepMounted: true,
42371
42971
  get children() {
42372
42972
  return [(() => {
42373
- var _el$ = _tmpl$$3();
42973
+ var _el$ = _tmpl$$4();
42374
42974
  insert(_el$, createComponent(Button$1, {
42375
42975
  icon: "rectangle-vertical",
42376
42976
  get active() {
@@ -42401,7 +43001,7 @@ function SectionGroup(props) {
42401
43001
  }), null);
42402
43002
  return _el$;
42403
43003
  })(), (() => {
42404
- var _el$2 = _tmpl$$3();
43004
+ var _el$2 = _tmpl$$4();
42405
43005
  insert(_el$2, createComponent(Button$1, {
42406
43006
  icon: "scissors",
42407
43007
  "data-testid": "editor-toolbar-section-break-next",
@@ -42483,7 +43083,7 @@ function marginsMatchPreset(margins, preset) {
42483
43083
  const target = presetMarginsPx(preset);
42484
43084
  return Math.abs(margins.top - target.top) <= 1 && Math.abs(margins.bottom - target.bottom) <= 1 && Math.abs(margins.left - target.left) <= 1 && Math.abs(margins.right - target.right) <= 1;
42485
43085
  }
42486
- var _tmpl$$2 = /* @__PURE__ */ template(`<div class=oasis-editor-margins-list>`), _tmpl$2$1 = /* @__PURE__ */ template(`<div class=oasis-editor-margins-custom-form>`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-list-options><button type=button class=oasis-editor-margins-custom-toggle data-testid=editor-toolbar-margins-custom><i data-lucide=sliders-horizontal></i><span>`), _tmpl$4$1 = /* @__PURE__ */ template(`<div class=oasis-editor-margins-custom-actions><button type=button class=oasis-editor-margins-custom-apply data-testid=editor-toolbar-margins-custom-apply>`), _tmpl$5 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-margins-item><span class=oasis-editor-margins-item-name></span><span class=oasis-editor-margins-item-values><br>`), _tmpl$6 = /* @__PURE__ */ template(`<label class=oasis-editor-margins-custom-field><span></span><input type=number min=0 step=0.1>`);
43086
+ var _tmpl$$3 = /* @__PURE__ */ template(`<div class=oasis-editor-margins-list>`), _tmpl$2$2 = /* @__PURE__ */ template(`<div class=oasis-editor-margins-custom-form>`), _tmpl$3$1 = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-list-options><button type=button class=oasis-editor-margins-custom-toggle data-testid=editor-toolbar-margins-custom><i data-lucide=sliders-horizontal></i><span>`), _tmpl$4$1 = /* @__PURE__ */ template(`<div class=oasis-editor-margins-custom-actions><button type=button class=oasis-editor-margins-custom-apply data-testid=editor-toolbar-margins-custom-apply>`), _tmpl$5 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-margins-item><span class=oasis-editor-margins-item-name></span><span class=oasis-editor-margins-item-values><br>`), _tmpl$6 = /* @__PURE__ */ template(`<label class=oasis-editor-margins-custom-field><span></span><input type=number min=0 step=0.1>`);
42487
43087
  const FIELDS = [{
42488
43088
  key: "top",
42489
43089
  labelKey: "section.marginField.top"
@@ -42553,7 +43153,7 @@ function MarginsGroup(props) {
42553
43153
  keepMounted: true,
42554
43154
  get children() {
42555
43155
  return [(() => {
42556
- var _el$ = _tmpl$$2();
43156
+ var _el$ = _tmpl$$3();
42557
43157
  insert(_el$, createComponent(For, {
42558
43158
  each: MARGIN_PRESETS,
42559
43159
  children: (preset) => (() => {
@@ -42584,7 +43184,7 @@ function MarginsGroup(props) {
42584
43184
  return showCustom();
42585
43185
  },
42586
43186
  get children() {
42587
- var _el$6 = _tmpl$2$1();
43187
+ var _el$6 = _tmpl$2$2();
42588
43188
  insert(_el$6, createComponent(For, {
42589
43189
  each: FIELDS,
42590
43190
  children: (field) => (() => {
@@ -43113,7 +43713,7 @@ function shapeLabel(preset, locale) {
43113
43713
  var _a;
43114
43714
  return ((_a = SHAPE_LABELS[preset]) == null ? void 0 : _a[locale]) ?? preset;
43115
43715
  }
43116
- var _tmpl$$1 = /* @__PURE__ */ template(`<svg class=oasis-editor-shape-thumb viewBox="0 0 22 22"width=22 height=22 aria-hidden=true><path stroke=currentColor stroke-width=1 stroke-linejoin=round stroke-linecap=round vector-effect=non-scaling-stroke>`);
43716
+ var _tmpl$$2 = /* @__PURE__ */ template(`<svg class=oasis-editor-shape-thumb viewBox="0 0 22 22"width=22 height=22 aria-hidden=true><path stroke=currentColor stroke-width=1 stroke-linejoin=round stroke-linecap=round vector-effect=non-scaling-stroke>`);
43117
43717
  const PREVIEW_W = 22;
43118
43718
  const PREVIEW_H = 22;
43119
43719
  const PREVIEW_PAD = 2;
@@ -43144,7 +43744,7 @@ function ShapeThumbnail(props) {
43144
43744
  const d = () => presetToSvgPath(props.preset, PREVIEW_PAD, PREVIEW_PAD, PREVIEW_W - PREVIEW_PAD * 2, PREVIEW_H - PREVIEW_PAD * 2);
43145
43745
  const strokeOnly = () => STROKE_ONLY_PRESETS.has(props.preset);
43146
43746
  return (() => {
43147
- var _el$ = _tmpl$$1(), _el$2 = _el$.firstChild;
43747
+ var _el$ = _tmpl$$2(), _el$2 = _el$.firstChild;
43148
43748
  createRenderEffect((_p$) => {
43149
43749
  var _v$ = d(), _v$2 = strokeOnly() ? "none" : "currentColor", _v$3 = strokeOnly() ? void 0 : "0.18";
43150
43750
  _v$ !== _p$.e && setAttribute(_el$2, "d", _p$.e = _v$);
@@ -43185,7 +43785,7 @@ function pushRecentShape(preset) {
43185
43785
  }
43186
43786
  return next;
43187
43787
  }
43188
- var _tmpl$ = /* @__PURE__ */ template(`<button type=button class=oasis-editor-shape-gallery-tile>`), _tmpl$2 = /* @__PURE__ */ template(`<div class=oasis-editor-shape-gallery-section-header>`), _tmpl$3 = /* @__PURE__ */ template(`<div class=oasis-editor-shape-gallery-grid>`), _tmpl$4 = /* @__PURE__ */ template(`<div class=oasis-editor-shape-gallery>`);
43788
+ var _tmpl$$1 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-shape-gallery-tile>`), _tmpl$2$1 = /* @__PURE__ */ template(`<div class=oasis-editor-shape-gallery-section-header>`), _tmpl$3 = /* @__PURE__ */ template(`<div class=oasis-editor-shape-gallery-grid>`), _tmpl$4 = /* @__PURE__ */ template(`<div class=oasis-editor-shape-gallery>`);
43189
43789
  function ShapeGallery(props) {
43190
43790
  const t = useI18n();
43191
43791
  const locale = () => t("locale.id") === "en" ? "en" : "pt-BR";
@@ -43196,7 +43796,7 @@ function ShapeGallery(props) {
43196
43796
  props.api.focusEditor();
43197
43797
  };
43198
43798
  const Tile = (tileProps) => (() => {
43199
- var _el$ = _tmpl$();
43799
+ var _el$ = _tmpl$$1();
43200
43800
  _el$.$$click = () => insert$1(tileProps.preset);
43201
43801
  insert(_el$, createComponent(ShapeThumbnail, {
43202
43802
  get preset() {
@@ -43224,7 +43824,7 @@ function ShapeGallery(props) {
43224
43824
  },
43225
43825
  get children() {
43226
43826
  return [(() => {
43227
- var _el$3 = _tmpl$2();
43827
+ var _el$3 = _tmpl$2$1();
43228
43828
  insert(_el$3, () => t("toolbar.shapes.recentlyUsed"));
43229
43829
  return _el$3;
43230
43830
  })(), (() => {
@@ -43244,7 +43844,7 @@ function ShapeGallery(props) {
43244
43844
  insert(_el$2, createComponent(For, {
43245
43845
  each: SHAPE_CATEGORIES,
43246
43846
  children: (category) => [(() => {
43247
- var _el$5 = _tmpl$2();
43847
+ var _el$5 = _tmpl$2$1();
43248
43848
  insert(_el$5, () => t(category.headerKey));
43249
43849
  return _el$5;
43250
43850
  })(), (() => {
@@ -43264,6 +43864,109 @@ function ShapeGallery(props) {
43264
43864
  })();
43265
43865
  }
43266
43866
  delegateEvents(["click"]);
43867
+ var _tmpl$ = /* @__PURE__ */ template(`<div class=oasis-editor-image-size-field><div class=oasis-editor-image-size-icon aria-hidden=true>`), _tmpl$2 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel oasis-editor-image-crop-menu"><div class=oasis-editor-toolbar-panel-separator role=separator></div><div class=oasis-editor-image-crop-ratios>`);
43868
+ function cmValue(api, command) {
43869
+ const value = api.commands.state(command).value;
43870
+ return typeof value === "number" ? value.toFixed(2) : "";
43871
+ }
43872
+ function ImageSizeField(props) {
43873
+ const t = useI18n();
43874
+ const command = props.dimension === "height" ? "imageHeightCm" : "imageWidthCm";
43875
+ const labelKey = props.dimension === "height" ? "image.height" : "image.width";
43876
+ const icon = props.dimension === "height" ? "move-vertical" : "move-horizontal";
43877
+ return (() => {
43878
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
43879
+ insert(_el$2, createComponent(ToolIcon, {
43880
+ name: icon
43881
+ }));
43882
+ insert(_el$, createComponent(NumberField, {
43883
+ "class": "oasis-editor-tool-metric oasis-editor-image-size-metric",
43884
+ labelClass: "oasis-editor-tool-metric-label",
43885
+ get title() {
43886
+ return t(labelKey);
43887
+ },
43888
+ get label() {
43889
+ return t(labelKey);
43890
+ },
43891
+ controlClass: "oasis-editor-tool-number",
43892
+ get ["data-testid"]() {
43893
+ return `editor-toolbar-image-${props.dimension}`;
43894
+ },
43895
+ min: "0.1",
43896
+ step: "0.1",
43897
+ get value() {
43898
+ return cmValue(props.api, command);
43899
+ },
43900
+ onChange: (value) => {
43901
+ props.api.commands.execute(command, value == null ? "" : String(value));
43902
+ }
43903
+ }), null);
43904
+ return _el$;
43905
+ })();
43906
+ }
43907
+ const CROP_ASPECT_PRESETS = [{
43908
+ id: "reset",
43909
+ labelKey: "image.cropReset"
43910
+ }, {
43911
+ id: "1:1",
43912
+ labelKey: "image.cropRatio.square"
43913
+ }, {
43914
+ id: "16:9",
43915
+ labelKey: "image.cropRatio.16x9"
43916
+ }, {
43917
+ id: "4:3",
43918
+ labelKey: "image.cropRatio.4x3"
43919
+ }, {
43920
+ id: "3:2",
43921
+ labelKey: "image.cropRatio.3x2"
43922
+ }, {
43923
+ id: "2:3",
43924
+ labelKey: "image.cropRatio.2x3"
43925
+ }, {
43926
+ id: "3:4",
43927
+ labelKey: "image.cropRatio.3x4"
43928
+ }, {
43929
+ id: "9:16",
43930
+ labelKey: "image.cropRatio.9x16"
43931
+ }];
43932
+ function ImageCropMenu(props) {
43933
+ const t = useI18n();
43934
+ return (() => {
43935
+ var _el$3 = _tmpl$2(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
43936
+ insert(_el$3, createComponent(Button$1, {
43937
+ icon: "crop",
43938
+ get active() {
43939
+ return props.api.commands.state("imageCrop").isActive;
43940
+ },
43941
+ "data-testid": "editor-toolbar-image-crop-toggle",
43942
+ onClick: () => {
43943
+ props.api.commands.execute("imageCrop");
43944
+ },
43945
+ get label() {
43946
+ return t("image.crop");
43947
+ },
43948
+ get tooltip() {
43949
+ return t("image.crop");
43950
+ }
43951
+ }), _el$4);
43952
+ insert(_el$5, createComponent(For, {
43953
+ each: CROP_ASPECT_PRESETS,
43954
+ children: (preset) => createComponent(Button$1, {
43955
+ "class": "oasis-editor-image-crop-ratio",
43956
+ get label() {
43957
+ return t(preset.labelKey);
43958
+ },
43959
+ get ["data-testid"]() {
43960
+ return `editor-toolbar-image-crop-${preset.id}`;
43961
+ },
43962
+ onClick: () => {
43963
+ props.api.commands.execute("imageCropAspect", preset.id);
43964
+ }
43965
+ })
43966
+ }));
43967
+ return _el$3;
43968
+ })();
43969
+ }
43267
43970
  const RIBBON_PLACEMENTS = {
43268
43971
  "editor-toolbar-file-dropdown": { tab: "file", group: "document", row: 1 },
43269
43972
  "sep-file": { tab: "file", group: "document", row: 1 },
@@ -43309,6 +44012,14 @@ const RIBBON_PLACEMENTS = {
43309
44012
  row: 1
43310
44013
  },
43311
44014
  "sep-insert": { tab: "insert", group: "accessibility", row: 2 },
44015
+ "editor-toolbar-image-crop": { tab: "imageFormat", group: "size", row: 1 },
44016
+ "editor-toolbar-image-height": { tab: "imageFormat", group: "size", row: 1 },
44017
+ "editor-toolbar-image-width": { tab: "imageFormat", group: "size", row: 2 },
44018
+ "editor-toolbar-image-border": {
44019
+ tab: "imageFormat",
44020
+ group: "imageStyles",
44021
+ row: 1
44022
+ },
43312
44023
  "editor-toolbar-align-left": { tab: "home", group: "paragraph", row: 2 },
43313
44024
  "editor-toolbar-align-center": { tab: "home", group: "paragraph", row: 2 },
43314
44025
  "editor-toolbar-align-right": { tab: "home", group: "paragraph", row: 2 },
@@ -44052,6 +44763,39 @@ function createDefaultToolbarPreset(t) {
44052
44763
  isVisible: (api) => api.commands.state("insertImageCaption").isEnabled
44053
44764
  });
44054
44765
  items.push({ type: "separator", id: "sep-insert" });
44766
+ items.push({
44767
+ type: "menu",
44768
+ id: "editor-toolbar-image-crop",
44769
+ testId: "editor-toolbar-image-crop",
44770
+ iconName: "crop",
44771
+ tooltipKey: "image.crop",
44772
+ labelKey: "image.crop",
44773
+ ribbonSize: "large",
44774
+ isActive: (api) => api.commands.state("imageCrop").isActive,
44775
+ panelClass: "oasis-editor-image-crop-panel",
44776
+ content: { kind: "custom", render: (api) => ImageCropMenu({ api }) }
44777
+ });
44778
+ items.push({
44779
+ type: "custom",
44780
+ id: "editor-toolbar-image-height",
44781
+ testId: "editor-toolbar-image-height",
44782
+ render: (api) => ImageSizeField({ api, dimension: "height" })
44783
+ });
44784
+ items.push({
44785
+ type: "custom",
44786
+ id: "editor-toolbar-image-width",
44787
+ testId: "editor-toolbar-image-width",
44788
+ render: (api) => ImageSizeField({ api, dimension: "width" })
44789
+ });
44790
+ items.push({
44791
+ type: "pictureBorder",
44792
+ id: "editor-toolbar-image-border",
44793
+ testId: "editor-toolbar-image-border",
44794
+ command: "imageBorder",
44795
+ labelKey: "image.border",
44796
+ tooltipKey: "image.border",
44797
+ ribbonSize: "large"
44798
+ });
44055
44799
  for (const button of ALIGN_BUTTONS) {
44056
44800
  items.push({
44057
44801
  type: "toggle",
@@ -44436,7 +45180,7 @@ export {
44436
45180
  FormField as ay,
44437
45181
  Checkbox as az,
44438
45182
  getPageBodyTop as b,
44439
- getDocumentSectionsCanonical as b$,
45183
+ roundTo as b$,
44440
45184
  resolveEffectiveParagraphStyle as b0,
44441
45185
  resolveEffectiveTextStyleForParagraph as b1,
44442
45186
  EMU_PER_PT as b2,
@@ -44447,33 +45191,33 @@ export {
44447
45191
  getRunEndnoteReference as b7,
44448
45192
  iterateFootnoteReferenceRuns as b8,
44449
45193
  iterateEndnoteReferenceRuns as b9,
44450
- resolveOpenTypeFeatureTags as bA,
44451
- resolveDecorationLineY as bB,
44452
- DOUBLE_STRIKE_OFFSET_PX as bC,
44453
- resolveListLabel as bD,
44454
- getListLabelInset as bE,
44455
- getAlignedListLabelInset as bF,
44456
- getParagraphBorderInsets as bG,
44457
- buildSegmentTable as bH,
44458
- buildCanvasTableLayout as bI,
44459
- resolveCanvasTableWidth as bJ,
44460
- resolveFloatingTableRect as bK,
44461
- paragraphBetweenBorderMatches as bL,
44462
- normalizeFamily as bM,
44463
- ROBOTO_FONT_FILES as bN,
44464
- loadFontAsset as bO,
44465
- OFFICE_COMPAT_FONT_FAMILIES as bP,
44466
- BinaryReader as bQ,
44467
- buildSfnt as bR,
44468
- defaultFontDecoderRegistry as bS,
44469
- SfntFontProgram as bT,
44470
- collectPdfFontFamilies as bU,
44471
- outlineFrom as bV,
44472
- getPageHeaderZoneTop as bW,
44473
- getPageColumnRects as bX,
44474
- findFootnoteReference as bY,
44475
- resolveImporterForFile as bZ,
44476
- roundTo as b_,
45194
+ TEXT_BASELINE_RATIO as bA,
45195
+ resolveOpenTypeFeatureTags as bB,
45196
+ resolveDecorationLineY as bC,
45197
+ DOUBLE_STRIKE_OFFSET_PX as bD,
45198
+ resolveListLabel as bE,
45199
+ getListLabelInset as bF,
45200
+ getAlignedListLabelInset as bG,
45201
+ getParagraphBorderInsets as bH,
45202
+ buildSegmentTable as bI,
45203
+ buildCanvasTableLayout as bJ,
45204
+ resolveCanvasTableWidth as bK,
45205
+ resolveFloatingTableRect as bL,
45206
+ paragraphBetweenBorderMatches as bM,
45207
+ normalizeFamily as bN,
45208
+ ROBOTO_FONT_FILES as bO,
45209
+ loadFontAsset as bP,
45210
+ OFFICE_COMPAT_FONT_FAMILIES as bQ,
45211
+ BinaryReader as bR,
45212
+ buildSfnt as bS,
45213
+ defaultFontDecoderRegistry as bT,
45214
+ SfntFontProgram as bU,
45215
+ collectPdfFontFamilies as bV,
45216
+ outlineFrom as bW,
45217
+ getPageHeaderZoneTop as bX,
45218
+ getPageColumnRects as bY,
45219
+ findFootnoteReference as bZ,
45220
+ resolveImporterForFile as b_,
44477
45221
  imageContentTypeDefaults as ba,
44478
45222
  getRunFieldChar as bb,
44479
45223
  getRunFieldInstruction as bc,
@@ -44485,116 +45229,121 @@ export {
44485
45229
  getTextBoxFloatingGeometry as bi,
44486
45230
  getPresetPathSegments as bj,
44487
45231
  buildListLabels as bk,
44488
- DEFAULT_FONT_SIZE_PX as bl,
44489
- resolveGradientAxis as bm,
44490
- isDoubleUnderlineStyle as bn,
44491
- isWavyUnderlineStyle as bo,
44492
- underlineStyleLineWidthPx as bp,
44493
- WAVY_UNDERLINE_WAVELENGTH_PX as bq,
44494
- WAVY_UNDERLINE_AMPLITUDE_PX as br,
44495
- DOUBLE_UNDERLINE_OFFSET_PX as bs,
44496
- underlineStyleDashArray as bt,
44497
- EMPHASIS_GLYPH as bu,
44498
- rgb255ToHex as bv,
44499
- getImageFloatingGeometry as bw,
44500
- textStyleToFontSizePt as bx,
44501
- resolveTextAlignmentBaselineOffset as by,
44502
- TEXT_BASELINE_RATIO as bz,
45232
+ lineDashPatternPt as bl,
45233
+ DEFAULT_FONT_SIZE_PX as bm,
45234
+ resolveGradientAxis as bn,
45235
+ isDoubleUnderlineStyle as bo,
45236
+ isWavyUnderlineStyle as bp,
45237
+ underlineStyleLineWidthPx as bq,
45238
+ WAVY_UNDERLINE_WAVELENGTH_PX as br,
45239
+ WAVY_UNDERLINE_AMPLITUDE_PX as bs,
45240
+ DOUBLE_UNDERLINE_OFFSET_PX as bt,
45241
+ underlineStyleDashArray as bu,
45242
+ EMPHASIS_GLYPH as bv,
45243
+ rgb255ToHex as bw,
45244
+ getImageFloatingGeometry as bx,
45245
+ textStyleToFontSizePt as by,
45246
+ resolveTextAlignmentBaselineOffset as bz,
44503
45247
  getPageContentWidth as c,
44504
- DialogFooter as c$,
44505
- getDocumentParagraphsCanonical as c0,
44506
- getDocumentParagraphs as c1,
44507
- getDocumentPageSettings as c2,
44508
- getTableCellContentWidthForParagraph as c3,
44509
- layoutMetricsEpoch as c4,
44510
- bumpLayoutMetricsEpoch as c5,
44511
- createCanvasLayoutSnapshotProvider as c6,
44512
- on as c7,
44513
- debounce as c8,
44514
- unwrap as c9,
44515
- previousFontSizePt as cA,
44516
- fontSizePtToPx as cB,
44517
- resolveNamedTextStyle as cC,
44518
- createDefaultToolbarPreset as cD,
44519
- MenuRegistry as cE,
44520
- createToolbarRegistry as cF,
44521
- Editor as cG,
44522
- resolveCommandRef as cH,
44523
- commandRefName as cI,
44524
- createOasisEditorClient as cJ,
44525
- createEditorZoom as cK,
44526
- startLongTaskObserver as cL,
44527
- installGlobalReport as cM,
44528
- applyStoredPreciseFontPreference as cN,
44529
- getWelcomeSeen as cO,
44530
- isLocalFontAccessSupported as cP,
44531
- EDITOR_SCROLL_PADDING_PX as cQ,
44532
- Toolbar as cR,
44533
- OasisEditorLoading as cS,
44534
- I18nProvider as cT,
44535
- createTranslator as cU,
44536
- registerDomStatsSurface as cV,
44537
- createEditorLogger as cW,
44538
- ActionRow as cX,
44539
- ColorPicker as cY,
44540
- CommandRegistry as cZ,
44541
- DEFAULT_PALETTE as c_,
44542
- perfTimer as ca,
44543
- getRunTextBox as cb,
44544
- createEditorDocument as cc,
44545
- resolveResizedDimensions as cd,
44546
- resolveTextBoxRenderHeight as ce,
44547
- getToolbarStyleState as cf,
44548
- VERTICAL_HIT_WEIGHT as cg,
44549
- getCachedCanvasImage as ch,
44550
- measureParagraphMinContentWidthPx as ci,
44551
- getEditableBlocksForZone as cj,
44552
- findParagraphLocation as ck,
44553
- createSectionBoundaryParagraph as cl,
44554
- normalizePageSettings as cm,
44555
- DEFAULT_EDITOR_PAGE_SETTINGS as cn,
44556
- markStart as co,
44557
- markEnd as cp,
44558
- getParagraphEntries as cq,
44559
- getParagraphById as cr,
44560
- createEditorFootnote as cs,
44561
- createFootnoteReferenceRun as ct,
44562
- renumberFootnotes as cu,
44563
- preciseFontModeVersion as cv,
44564
- isPreciseFontModeEnabled as cw,
44565
- getHeadingLevel as cx,
44566
- togglePreciseFontMode as cy,
44567
- nextFontSizePt as cz,
45248
+ createEditorLogger as c$,
45249
+ getDocumentSectionsCanonical as c0,
45250
+ getDocumentParagraphsCanonical as c1,
45251
+ getDocumentParagraphs as c2,
45252
+ PX_PER_CM as c3,
45253
+ getDocumentPageSettings as c4,
45254
+ getTableCellContentWidthForParagraph as c5,
45255
+ layoutMetricsEpoch as c6,
45256
+ bumpLayoutMetricsEpoch as c7,
45257
+ createCanvasLayoutSnapshotProvider as c8,
45258
+ on as c9,
45259
+ preciseFontModeVersion as cA,
45260
+ isPreciseFontModeEnabled as cB,
45261
+ getHeadingLevel as cC,
45262
+ togglePreciseFontMode as cD,
45263
+ nextFontSizePt as cE,
45264
+ previousFontSizePt as cF,
45265
+ fontSizePtToPx as cG,
45266
+ resolveNamedTextStyle as cH,
45267
+ createDefaultToolbarPreset as cI,
45268
+ MenuRegistry as cJ,
45269
+ createToolbarRegistry as cK,
45270
+ Editor as cL,
45271
+ resolveCommandRef as cM,
45272
+ commandRefName as cN,
45273
+ createOasisEditorClient as cO,
45274
+ createEditorZoom as cP,
45275
+ startLongTaskObserver as cQ,
45276
+ installGlobalReport as cR,
45277
+ applyStoredPreciseFontPreference as cS,
45278
+ getWelcomeSeen as cT,
45279
+ isLocalFontAccessSupported as cU,
45280
+ EDITOR_SCROLL_PADDING_PX as cV,
45281
+ Toolbar as cW,
45282
+ OasisEditorLoading as cX,
45283
+ I18nProvider as cY,
45284
+ createTranslator as cZ,
45285
+ registerDomStatsSurface as c_,
45286
+ debounce as ca,
45287
+ unwrap as cb,
45288
+ perfTimer as cc,
45289
+ getRunTextBox as cd,
45290
+ createEditorDocument as ce,
45291
+ resolveResizedDimensions as cf,
45292
+ axisSignForDirection as cg,
45293
+ clamp as ch,
45294
+ MIN_RESIZE_SIZE_PX as ci,
45295
+ resolveTextBoxRenderHeight as cj,
45296
+ getToolbarStyleState as ck,
45297
+ VERTICAL_HIT_WEIGHT as cl,
45298
+ getCachedCanvasImage as cm,
45299
+ measureParagraphMinContentWidthPx as cn,
45300
+ getEditableBlocksForZone as co,
45301
+ findParagraphLocation as cp,
45302
+ createSectionBoundaryParagraph as cq,
45303
+ normalizePageSettings as cr,
45304
+ DEFAULT_EDITOR_PAGE_SETTINGS as cs,
45305
+ markStart as ct,
45306
+ markEnd as cu,
45307
+ getParagraphEntries as cv,
45308
+ getParagraphById as cw,
45309
+ createEditorFootnote as cx,
45310
+ createFootnoteReferenceRun as cy,
45311
+ renumberFootnotes as cz,
44568
45312
  domTextMeasurer as d,
44569
- FieldRow as d0,
44570
- FloatingActionButton as d1,
44571
- GridPicker as d2,
44572
- Heading as d3,
44573
- IconButton as d4,
44574
- Menu as d5,
44575
- OASIS_BUILTIN_COMMANDS as d6,
44576
- OASIS_MENU_ITEMS as d7,
44577
- OASIS_TOOLBAR_ITEMS as d8,
44578
- OasisEditorAppLazy as d9,
44579
- OasisEditorContainer as da,
44580
- PluginCollection as db,
44581
- Popover as dc,
44582
- RIBBON_TABS as dd,
44583
- Select as de,
44584
- Separator as df,
44585
- SidePanel as dg,
44586
- SidePanelBody as dh,
44587
- SidePanelFooter as di,
44588
- SidePanelHeader as dj,
44589
- SplitButton as dk,
44590
- StyleGallery as dl,
44591
- Button$1 as dm,
44592
- buildRibbonTabDefinitions as dn,
44593
- createEditorCommandBus as dp,
44594
- createOasisEditor as dq,
44595
- createOasisEditorContainer as dr,
44596
- mount as ds,
44597
- registerToolbarRenderer as dt,
45313
+ ActionRow as d0,
45314
+ ColorPicker as d1,
45315
+ CommandRegistry as d2,
45316
+ DEFAULT_PALETTE as d3,
45317
+ DialogFooter as d4,
45318
+ FieldRow as d5,
45319
+ FloatingActionButton as d6,
45320
+ GridPicker as d7,
45321
+ Heading as d8,
45322
+ IconButton as d9,
45323
+ Menu as da,
45324
+ OASIS_BUILTIN_COMMANDS as db,
45325
+ OASIS_MENU_ITEMS as dc,
45326
+ OASIS_TOOLBAR_ITEMS as dd,
45327
+ OasisEditorAppLazy as de,
45328
+ OasisEditorContainer as df,
45329
+ PluginCollection as dg,
45330
+ Popover as dh,
45331
+ RIBBON_TABS as di,
45332
+ Select as dj,
45333
+ Separator as dk,
45334
+ SidePanel as dl,
45335
+ SidePanelBody as dm,
45336
+ SidePanelFooter as dn,
45337
+ SidePanelHeader as dp,
45338
+ SplitButton as dq,
45339
+ StyleGallery as dr,
45340
+ Button$1 as ds,
45341
+ buildRibbonTabDefinitions as dt,
45342
+ createEditorCommandBus as du,
45343
+ createOasisEditor as dv,
45344
+ createOasisEditorContainer as dw,
45345
+ mount as dx,
45346
+ registerToolbarRenderer as dy,
44598
45347
  estimateTableBlockHeight as e,
44599
45348
  getParagraphText as f,
44600
45349
  getProjectedParagraphBlockHeight as g,