oasis-editor 0.0.132 → 0.0.134

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 (30) hide show
  1. package/dist/{OasisEditorApp-D-v1-Asf.js → OasisEditorApp-B2f15Gpe.js} +493 -9
  2. package/dist/app/controllers/EditorCommandsController.d.ts +3 -0
  3. package/dist/app/controllers/createCropSession.d.ts +26 -0
  4. package/dist/app/controllers/useEditorImageOperations.d.ts +7 -0
  5. package/dist/core/commands/builtinCommands.d.ts +1 -1
  6. package/dist/core/commands/image.d.ts +37 -1
  7. package/dist/core/commands/publicCommandTypes.d.ts +5 -0
  8. package/dist/core/pluginUiTypes.d.ts +1 -1
  9. package/dist/core/transactionMergeKeys.d.ts +2 -0
  10. package/dist/export/pdf/writer/PdfContentStream.d.ts +8 -0
  11. package/dist/export/pdf/writer/pdfTypes.d.ts +10 -0
  12. package/dist/i18n/locales/en.d.ts +13 -0
  13. package/dist/i18n/locales/pt-BR.d.ts +13 -0
  14. package/dist/{index-DEBNBBUG.js → index-ogn0S9F3.js} +819 -571
  15. package/dist/oasis-editor.css +1 -1
  16. package/dist/oasis-editor.js +49 -49
  17. package/dist/oasis-editor.umd.cjs +4 -4
  18. package/dist/plugins/internal/essentialsCapabilities.d.ts +15 -0
  19. package/dist/ui/OasisEditorEditorProps.d.ts +5 -0
  20. package/dist/ui/app/buildEditorViewProps.d.ts +2 -0
  21. package/dist/ui/app/createAppCommandsController.d.ts +6 -0
  22. package/dist/ui/app/createEditorCommandRuntime.d.ts +3 -0
  23. package/dist/ui/app/createEditorInteractionRuntime.d.ts +7 -0
  24. package/dist/ui/app/essentials/types.d.ts +5 -0
  25. package/dist/ui/components/Toolbar/LineSpacingButton.d.ts +10 -0
  26. package/dist/ui/components/Toolbar/controls/ImageSizeControls.d.ts +16 -0
  27. package/dist/ui/components/Toolbar/primitives/DropdownChevron.d.ts +20 -0
  28. package/dist/ui/cropGeometry.d.ts +23 -0
  29. package/dist/ui/utils/customIcons.d.ts +30 -0
  30. 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,19 @@ 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
+ // Image format (contextual tab)
1844
+ "image.crop": "Crop",
1845
+ "image.height": "Height",
1846
+ "image.width": "Width",
1847
+ "image.cropReset": "Reset crop",
1848
+ "image.cropRatio.square": "1:1",
1849
+ "image.cropRatio.16x9": "16:9",
1850
+ "image.cropRatio.4x3": "4:3",
1851
+ "image.cropRatio.3x2": "3:2",
1852
+ "image.cropRatio.2x3": "2:3",
1853
+ "image.cropRatio.3x4": "3:4",
1854
+ "image.cropRatio.9x16": "9:16",
1841
1855
  // Export
1842
1856
  "toolbar.exportDocx": "Export DOCX",
1843
1857
  "toolbar.exportPdf": "Export PDF",
@@ -2362,6 +2376,7 @@ const ptBR = {
2362
2376
  "ribbon.tab.view": "Exibir",
2363
2377
  "ribbon.tab.tableDesign": "Design da Tabela",
2364
2378
  "ribbon.tab.tableLayout": "Layout da Tabela",
2379
+ "ribbon.tab.imageFormat": "Formato da Imagem",
2365
2380
  "ribbon.tab.plugins": "Plugins",
2366
2381
  "ribbon.tab.ai": "IA",
2367
2382
  // Ribbon groups
@@ -2385,6 +2400,19 @@ const ptBR = {
2385
2400
  "ribbon.group.merge": "Mesclar",
2386
2401
  "ribbon.group.cellSize": "Tamanho da Célula",
2387
2402
  "ribbon.group.alignment": "Alinhamento",
2403
+ "ribbon.group.size": "Tamanho",
2404
+ // Image format (contextual tab)
2405
+ "image.crop": "Cortar",
2406
+ "image.height": "Altura",
2407
+ "image.width": "Largura",
2408
+ "image.cropReset": "Redefinir corte",
2409
+ "image.cropRatio.square": "1:1",
2410
+ "image.cropRatio.16x9": "16:9",
2411
+ "image.cropRatio.4x3": "4:3",
2412
+ "image.cropRatio.3x2": "3:2",
2413
+ "image.cropRatio.2x3": "2:3",
2414
+ "image.cropRatio.3x4": "3:4",
2415
+ "image.cropRatio.9x16": "9:16",
2388
2416
  // Export
2389
2417
  "toolbar.exportDocx": "Exportar DOCX",
2390
2418
  "toolbar.exportPdf": "Exportar PDF",
@@ -2562,14 +2590,14 @@ function I18nProvider(props) {
2562
2590
  });
2563
2591
  }
2564
2592
  const oasisMarkBase64 = "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";
2565
- var _tmpl$$13 = /* @__PURE__ */ template(`<img alt aria-hidden=true>`);
2593
+ var _tmpl$$15 = /* @__PURE__ */ template(`<img alt aria-hidden=true>`);
2566
2594
  const OASIS_MARK_DATA_URI = `data:image/webp;base64,${oasisMarkBase64}`;
2567
2595
  const MARK_ASPECT = 3 / 4;
2568
2596
  function OasisBrandMark(props) {
2569
2597
  const height = () => props.height ?? 64;
2570
2598
  const width = () => Math.round(height() * MARK_ASPECT);
2571
2599
  return (() => {
2572
- var _el$ = _tmpl$$13();
2600
+ var _el$ = _tmpl$$15();
2573
2601
  setAttribute(_el$, "src", OASIS_MARK_DATA_URI);
2574
2602
  setAttribute(_el$, "draggable", false);
2575
2603
  createRenderEffect((_p$) => {
@@ -2586,7 +2614,7 @@ function OasisBrandMark(props) {
2586
2614
  return _el$;
2587
2615
  })();
2588
2616
  }
2589
- var _tmpl$$12 = /* @__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`);
2617
+ var _tmpl$$14 = /* @__PURE__ */ template(`<div class=oasis-editor-import-progress-label>`), _tmpl$2$F = /* @__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`);
2590
2618
  function OasisEditorLoading(props) {
2591
2619
  const t = useI18n();
2592
2620
  const variant = () => props.variant ?? "overlay";
@@ -2596,7 +2624,7 @@ function OasisEditorLoading(props) {
2596
2624
  };
2597
2625
  const isDone = () => (pct() ?? 0) >= 100;
2598
2626
  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;
2627
+ var _el$ = _tmpl$2$F(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild;
2600
2628
  insert(_el$2, createComponent(OasisBrandMark, {
2601
2629
  height: 40,
2602
2630
  "class": "oasis-editor-loading-mark"
@@ -2607,7 +2635,7 @@ function OasisEditorLoading(props) {
2607
2635
  return pct() != null;
2608
2636
  },
2609
2637
  get children() {
2610
- var _el$6 = _tmpl$$12();
2638
+ var _el$6 = _tmpl$$14();
2611
2639
  insert(_el$6, (() => {
2612
2640
  var _c$ = memo(() => !!isDone());
2613
2641
  return () => _c$() ? _tmpl$3$r() : `${pct()}%`;
@@ -2661,7 +2689,7 @@ function OasisEditorAppLazy(props = {}) {
2661
2689
  onCleanup(() => {
2662
2690
  cancelled = true;
2663
2691
  });
2664
- import("./OasisEditorApp-D-v1-Asf.js").then((m) => {
2692
+ import("./OasisEditorApp-B2f15Gpe.js").then((m) => {
2665
2693
  cancelled = true;
2666
2694
  setProgress(1);
2667
2695
  setTimeout(() => setApp(() => m.OasisEditorApp), 180);
@@ -5189,6 +5217,11 @@ const OASIS_BUILTIN_COMMANDS = [
5189
5217
  "insertImage",
5190
5218
  "editImageAlt",
5191
5219
  "insertImageCaption",
5220
+ "imageContext",
5221
+ "imageWidthCm",
5222
+ "imageHeightCm",
5223
+ "imageCrop",
5224
+ "imageCropAspect",
5192
5225
  "outdent",
5193
5226
  "indent",
5194
5227
  "togglePageBreakBefore",
@@ -5259,12 +5292,81 @@ function mount(target, props = {}) {
5259
5292
  unmount: () => client.dispose()
5260
5293
  });
5261
5294
  }
5262
- var _tmpl$$11 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none aria-hidden=true><text x=2 y=18 font-family="'Segoe UI', Arial, sans-serif"font-size=14 font-weight=700 fill=currentColor>ab</text><text x=15.5 y=11 font-family="'Segoe UI', Arial, sans-serif"font-size=10 font-weight=700 fill=#c00000>1`), _tmpl$2$D = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"aria-hidden=true><g fill=currentColor><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>`), _tmpl$3$q = /* @__PURE__ */ template(`<i>`);
5263
- const FootnoteIcon = () => _tmpl$$11();
5264
- const SpecialIndentFirstLineIcon = () => _tmpl$2$D();
5295
+ var _tmpl$$13 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg aria-hidden=true>`), _tmpl$2$E = /* @__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>`);
5296
+ function SvgIcon(props) {
5297
+ return (() => {
5298
+ var _el$ = _tmpl$$13();
5299
+ insert(_el$, () => props.children);
5300
+ createRenderEffect((_p$) => {
5301
+ 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;
5302
+ _v$ !== _p$.e && setAttribute(_el$, "width", _p$.e = _v$);
5303
+ _v$2 !== _p$.t && setAttribute(_el$, "height", _p$.t = _v$2);
5304
+ _v$3 !== _p$.a && setAttribute(_el$, "viewBox", _p$.a = _v$3);
5305
+ _v$4 !== _p$.o && setAttribute(_el$, "fill", _p$.o = _v$4);
5306
+ _v$5 !== _p$.i && setAttribute(_el$, "stroke", _p$.i = _v$5);
5307
+ _v$6 !== _p$.n && setAttribute(_el$, "stroke-width", _p$.n = _v$6);
5308
+ _v$7 !== _p$.s && setAttribute(_el$, "stroke-linecap", _p$.s = _v$7);
5309
+ _v$8 !== _p$.h && setAttribute(_el$, "stroke-linejoin", _p$.h = _v$8);
5310
+ _v$9 !== _p$.r && setAttribute(_el$, "class", _p$.r = _v$9);
5311
+ return _p$;
5312
+ }, {
5313
+ e: void 0,
5314
+ t: void 0,
5315
+ a: void 0,
5316
+ o: void 0,
5317
+ i: void 0,
5318
+ n: void 0,
5319
+ s: void 0,
5320
+ h: void 0,
5321
+ r: void 0
5322
+ });
5323
+ return _el$;
5324
+ })();
5325
+ }
5326
+ const FootnoteIcon = () => createComponent(SvgIcon, {
5327
+ fill: "none",
5328
+ get children() {
5329
+ return [_tmpl$2$E(), _tmpl$3$q()];
5330
+ }
5331
+ });
5332
+ const SpecialIndentFirstLineIcon = () => createComponent(SvgIcon, {
5333
+ fill: "currentColor",
5334
+ get children() {
5335
+ return _tmpl$4$i();
5336
+ }
5337
+ });
5338
+ const LineSpacingIcon = () => createComponent(SvgIcon, {
5339
+ width: 18,
5340
+ height: 18,
5341
+ stroke: "currentColor",
5342
+ "stroke-width": 2,
5343
+ "stroke-linecap": "round",
5344
+ "stroke-linejoin": "round",
5345
+ get children() {
5346
+ return [_tmpl$5$b(), _tmpl$6$8(), _tmpl$7$3(), _tmpl$8$2(), _tmpl$9$1(), _tmpl$0$1()];
5347
+ }
5348
+ });
5349
+ const CheckIcon = (props) => createComponent(SvgIcon, {
5350
+ get width() {
5351
+ return props.size ?? 14;
5352
+ },
5353
+ get height() {
5354
+ return props.size ?? 14;
5355
+ },
5356
+ viewBox: "0 0 24 24",
5357
+ fill: "none",
5358
+ stroke: "currentColor",
5359
+ "stroke-width": 2.5,
5360
+ "stroke-linecap": "round",
5361
+ "stroke-linejoin": "round",
5362
+ get children() {
5363
+ return _tmpl$1$1();
5364
+ }
5365
+ });
5265
5366
  const CUSTOM_ICONS = {
5266
5367
  footnote: FootnoteIcon,
5267
- specialIndentFirstLine: SpecialIndentFirstLineIcon
5368
+ specialIndentFirstLine: SpecialIndentFirstLineIcon,
5369
+ lineSpacing: LineSpacingIcon
5268
5370
  };
5269
5371
  function getCustomIcon(name) {
5270
5372
  return name ? CUSTOM_ICONS[name] : void 0;
@@ -5276,19 +5378,19 @@ function ToolIcon(props) {
5276
5378
  },
5277
5379
  get fallback() {
5278
5380
  return (() => {
5279
- var _el$3 = _tmpl$3$q();
5280
- createRenderEffect(() => setAttribute(_el$3, "data-lucide", props.name));
5281
- return _el$3;
5381
+ var _el$10 = _tmpl$10();
5382
+ createRenderEffect(() => setAttribute(_el$10, "data-lucide", props.name));
5383
+ return _el$10;
5282
5384
  })();
5283
5385
  },
5284
5386
  children: (render2) => render2()()
5285
5387
  });
5286
5388
  }
5287
- var _tmpl$$10 = /* @__PURE__ */ template(`<button>`);
5389
+ var _tmpl$$12 = /* @__PURE__ */ template(`<button>`);
5288
5390
  function SurfaceButton(props) {
5289
5391
  const [local, others] = splitProps(props, ["type", "icon", "label", "variant", "size", "active", "class", "classList", "children"]);
5290
5392
  return (() => {
5291
- var _el$ = _tmpl$$10();
5393
+ var _el$ = _tmpl$$12();
5292
5394
  spread(_el$, mergeProps({
5293
5395
  get type() {
5294
5396
  return local.type ?? "button";
@@ -5349,7 +5451,7 @@ function Text$1(props) {
5349
5451
  }
5350
5452
  }));
5351
5453
  }
5352
- var _tmpl$$$ = /* @__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$i = /* @__PURE__ */ template(`<div class=oasis-menubar-separator role=separator>`), _tmpl$5$c = /* @__PURE__ */ template(`<i class=oasis-menubar-submenu-icon data-lucide=chevron-right>`), _tmpl$6$9 = /* @__PURE__ */ template(`<div class=oasis-menubar-submenu role=menu>`);
5454
+ var _tmpl$$11 = /* @__PURE__ */ template(`<div class=oasis-menubar role=menubar>`), _tmpl$2$D = /* @__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>`);
5353
5455
  function Menubar(props) {
5354
5456
  const t = useI18n();
5355
5457
  const [activeMenu, setActiveMenu] = createSignal(null);
@@ -5417,7 +5519,7 @@ function Menubar(props) {
5417
5519
  });
5418
5520
  const topLevelItems = () => pruneTree(menuTree());
5419
5521
  return (() => {
5420
- var _el$ = _tmpl$$$();
5522
+ var _el$ = _tmpl$$11();
5421
5523
  insert(_el$, createComponent(For, {
5422
5524
  get each() {
5423
5525
  return topLevelItems();
@@ -5458,7 +5560,7 @@ function Menubar(props) {
5458
5560
  return activeMenu() === topLevel.id;
5459
5561
  },
5460
5562
  get children() {
5461
- var _el$3 = _tmpl$2$C();
5563
+ var _el$3 = _tmpl$2$D();
5462
5564
  insert(_el$3, createComponent(For, {
5463
5565
  get each() {
5464
5566
  return topLevel.children;
@@ -5489,7 +5591,7 @@ function MenuNode(props) {
5489
5591
  } = props;
5490
5592
  const isSeparator = (_a = node.item) == null ? void 0 : _a.separator;
5491
5593
  if (isSeparator) {
5492
- return _tmpl$4$i();
5594
+ return _tmpl$4$h();
5493
5595
  }
5494
5596
  const hasChildren = node.children.length > 0;
5495
5597
  const [showSub, setShowSub] = createSignal(false);
@@ -5565,14 +5667,14 @@ function MenuNode(props) {
5565
5667
  }), createComponent(Show, {
5566
5668
  when: hasChildren,
5567
5669
  get children() {
5568
- return _tmpl$5$c();
5670
+ return _tmpl$5$a();
5569
5671
  }
5570
5672
  }), createComponent(Show, {
5571
5673
  get when() {
5572
5674
  return showSub() && hasChildren;
5573
5675
  },
5574
5676
  get children() {
5575
- var _el$6 = _tmpl$6$9();
5677
+ var _el$6 = _tmpl$6$7();
5576
5678
  insert(_el$6, createComponent(For, {
5577
5679
  get each() {
5578
5680
  return node.children;
@@ -5591,10 +5693,10 @@ function MenuNode(props) {
5591
5693
  }
5592
5694
  });
5593
5695
  }
5594
- var _tmpl$$_ = /* @__PURE__ */ template(`<div class=oasis-titlebar><div class=oasis-titlebar-left><div class=oasis-titlebar-menubar-slot>`);
5696
+ var _tmpl$$10 = /* @__PURE__ */ template(`<div class=oasis-titlebar><div class=oasis-titlebar-left><div class=oasis-titlebar-menubar-slot>`);
5595
5697
  function TitleBar(props) {
5596
5698
  return (() => {
5597
- var _el$ = _tmpl$$_(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
5699
+ var _el$ = _tmpl$$10(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
5598
5700
  insert(_el$3, () => props.children);
5599
5701
  return _el$;
5600
5702
  })();
@@ -5689,7 +5791,7 @@ function getCaretRectFromSnapshot(snapshot, position2, paragraphOffset) {
5689
5791
  );
5690
5792
  return rectFromBox(slot.left, slot.top, 1, slot.height || line.height);
5691
5793
  }
5692
- var _tmpl$$Z = /* @__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$h = /* @__PURE__ */ template(`<div class=oasis-outline-empty>`), _tmpl$5$b = /* @__PURE__ */ template(`<div class=oasis-outline-item>`);
5794
+ var _tmpl$$$ = /* @__PURE__ */ template(`<span class=oasis-outline-title>`), _tmpl$2$C = /* @__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>`);
5693
5795
  function OutlinePanel(props) {
5694
5796
  const t = useI18n();
5695
5797
  const [collapsed, setCollapsed] = createSignal(props.defaultCollapsed ?? false);
@@ -5766,7 +5868,7 @@ function OutlinePanel(props) {
5766
5868
  return !collapsed();
5767
5869
  },
5768
5870
  get children() {
5769
- var _el$3 = _tmpl$$Z();
5871
+ var _el$3 = _tmpl$$$();
5770
5872
  insert(_el$3, () => t("menu.view.outline") || "Outline");
5771
5873
  return _el$3;
5772
5874
  }
@@ -5777,14 +5879,14 @@ function OutlinePanel(props) {
5777
5879
  return !collapsed();
5778
5880
  },
5779
5881
  get children() {
5780
- var _el$6 = _tmpl$2$B();
5882
+ var _el$6 = _tmpl$2$C();
5781
5883
  insert(_el$6, createComponent(Show, {
5782
5884
  get when() {
5783
5885
  return items().length > 0;
5784
5886
  },
5785
5887
  get fallback() {
5786
5888
  return (() => {
5787
- var _el$7 = _tmpl$4$h();
5889
+ var _el$7 = _tmpl$4$g();
5788
5890
  insert(_el$7, () => t("outline.empty"));
5789
5891
  return _el$7;
5790
5892
  })();
@@ -5795,7 +5897,7 @@ function OutlinePanel(props) {
5795
5897
  return items();
5796
5898
  },
5797
5899
  children: (item) => (() => {
5798
- var _el$8 = _tmpl$5$b();
5900
+ var _el$8 = _tmpl$5$9();
5799
5901
  _el$8.$$click = () => props.onNavigate(item.anchor);
5800
5902
  insert(_el$8, () => item.text);
5801
5903
  createRenderEffect((_p$) => {
@@ -5834,7 +5936,7 @@ function OutlinePanel(props) {
5834
5936
  })();
5835
5937
  }
5836
5938
  delegateEvents(["click"]);
5837
- var _tmpl$$Y = /* @__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>`);
5939
+ var _tmpl$$_ = /* @__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$B = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item-wrapper style=display:flex;align-items:center;flex-shrink:0>`);
5838
5940
  function ToolbarOverflowManager(props) {
5839
5941
  const t = useI18n();
5840
5942
  const [overflowCount, setOverflowCount] = createSignal(0);
@@ -5978,7 +6080,7 @@ function ToolbarOverflowManager(props) {
5978
6080
  };
5979
6081
  };
5980
6082
  return (() => {
5981
- var _el$ = _tmpl$$Y(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild, _el$6 = _el$4.nextSibling;
6083
+ var _el$ = _tmpl$$_(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild, _el$6 = _el$4.nextSibling;
5982
6084
  var _ref$ = containerRef;
5983
6085
  typeof _ref$ === "function" ? use(_ref$, _el$) : containerRef = _el$;
5984
6086
  var _ref$2 = moreMeasureRef;
@@ -5990,7 +6092,7 @@ function ToolbarOverflowManager(props) {
5990
6092
  return items();
5991
6093
  },
5992
6094
  children: (item) => (() => {
5993
- var _el$7 = _tmpl$2$A();
6095
+ var _el$7 = _tmpl$2$B();
5994
6096
  insert(_el$7, item);
5995
6097
  return _el$7;
5996
6098
  })()
@@ -6066,12 +6168,12 @@ function resolveLabel(item, api) {
6066
6168
  if (item.labelKey) return api.t(item.labelKey);
6067
6169
  return void 0;
6068
6170
  }
6069
- var _tmpl$$X = /* @__PURE__ */ template(`<span>`), _tmpl$2$z = /* @__PURE__ */ template(`<button type=button>`);
6171
+ var _tmpl$$Z = /* @__PURE__ */ template(`<span>`), _tmpl$2$A = /* @__PURE__ */ template(`<button type=button>`);
6070
6172
  function Button$1(props) {
6071
6173
  const [local, others] = splitProps(props, ["icon", "label", "active", "tooltip", "wide", "ribbonSize", "aria-label", "class", "classList"]);
6072
6174
  const ariaLabel = () => local["aria-label"] || local.tooltip || local.label || "";
6073
6175
  return (() => {
6074
- var _el$ = _tmpl$2$z();
6176
+ var _el$ = _tmpl$2$A();
6075
6177
  spread(_el$, mergeProps({
6076
6178
  get ["class"]() {
6077
6179
  return `oasis-editor-tool-button ${local.class || ""}`;
@@ -6108,7 +6210,7 @@ function Button$1(props) {
6108
6210
  return local.label;
6109
6211
  },
6110
6212
  get children() {
6111
- var _el$2 = _tmpl$$X();
6213
+ var _el$2 = _tmpl$$Z();
6112
6214
  insert(_el$2, () => local.label);
6113
6215
  return _el$2;
6114
6216
  }
@@ -6190,7 +6292,7 @@ function useDismiss(options) {
6190
6292
  });
6191
6293
  });
6192
6294
  }
6193
- var _tmpl$$W = /* @__PURE__ */ template(`<div>`);
6295
+ var _tmpl$$Y = /* @__PURE__ */ template(`<div>`);
6194
6296
  function Popover(props) {
6195
6297
  let anchorRef;
6196
6298
  let panelRef;
@@ -6207,7 +6309,7 @@ function Popover(props) {
6207
6309
  closeOnEscape: props.closeOnEscape
6208
6310
  });
6209
6311
  const panel = (portalled) => (() => {
6210
- var _el$ = _tmpl$$W();
6312
+ var _el$ = _tmpl$$Y();
6211
6313
  addEventListener(_el$, "mouseleave", props.onPanelMouseLeave);
6212
6314
  var _ref$ = panelRef;
6213
6315
  typeof _ref$ === "function" ? use(_ref$, _el$) : panelRef = _el$;
@@ -6259,12 +6361,20 @@ function Popover(props) {
6259
6361
  }
6260
6362
  })];
6261
6363
  }
6262
- var _tmpl$$V = /* @__PURE__ */ template(`<div>`), _tmpl$2$y = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$3$n = /* @__PURE__ */ template(`<i>`), _tmpl$4$g = /* @__PURE__ */ template(`<span class=oasis-editor-tool-button-label>`), _tmpl$5$a = /* @__PURE__ */ template(`<i data-lucide=chevron-down class=oasis-editor-dropdown-chevron>`), _tmpl$6$8 = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"aria-haspopup=menu>`);
6364
+ var _tmpl$$X = /* @__PURE__ */ template(`<i data-lucide=chevron-down>`);
6365
+ function DropdownChevron(props) {
6366
+ return (() => {
6367
+ var _el$ = _tmpl$$X();
6368
+ createRenderEffect(() => className(_el$, `oasis-editor-dropdown-chevron${props.class ? ` ${props.class}` : ""}`));
6369
+ return _el$;
6370
+ })();
6371
+ }
6372
+ var _tmpl$$W = /* @__PURE__ */ template(`<div>`), _tmpl$2$z = /* @__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>`);
6263
6373
  function Menu(props) {
6264
6374
  const [open, setOpen] = createSignal(false);
6265
6375
  const ariaLabel = () => props.tooltip || props.label || "";
6266
6376
  return (() => {
6267
- var _el$ = _tmpl$2$y();
6377
+ var _el$ = _tmpl$2$z();
6268
6378
  insert(_el$, createComponent(Popover, {
6269
6379
  get open() {
6270
6380
  return open();
@@ -6279,7 +6389,7 @@ function Menu(props) {
6279
6389
  },
6280
6390
  onPanelMouseLeave: void 0,
6281
6391
  trigger: (api) => (() => {
6282
- var _el$3 = _tmpl$6$8();
6392
+ var _el$3 = _tmpl$4$f();
6283
6393
  _el$3.$$click = () => api.toggle();
6284
6394
  use((el) => api.ref(el), _el$3);
6285
6395
  insert(_el$3, createComponent(Show, {
@@ -6287,9 +6397,11 @@ function Menu(props) {
6287
6397
  return props.icon;
6288
6398
  },
6289
6399
  get children() {
6290
- var _el$4 = _tmpl$3$n();
6291
- createRenderEffect(() => setAttribute(_el$4, "data-lucide", props.icon));
6292
- return _el$4;
6400
+ return createComponent(ToolIcon, {
6401
+ get name() {
6402
+ return props.icon;
6403
+ }
6404
+ });
6293
6405
  }
6294
6406
  }), null);
6295
6407
  insert(_el$3, createComponent(Show, {
@@ -6297,9 +6409,9 @@ function Menu(props) {
6297
6409
  return props.label;
6298
6410
  },
6299
6411
  get children() {
6300
- var _el$5 = _tmpl$4$g();
6301
- insert(_el$5, () => props.label);
6302
- return _el$5;
6412
+ var _el$4 = _tmpl$3$n();
6413
+ insert(_el$4, () => props.label);
6414
+ return _el$4;
6303
6415
  }
6304
6416
  }), null);
6305
6417
  insert(_el$3, createComponent(Show, {
@@ -6307,7 +6419,7 @@ function Menu(props) {
6307
6419
  return !props.hideChevron;
6308
6420
  },
6309
6421
  get children() {
6310
- return _tmpl$5$a();
6422
+ return createComponent(DropdownChevron, {});
6311
6423
  }
6312
6424
  }), null);
6313
6425
  createRenderEffect((_p$) => {
@@ -6332,7 +6444,7 @@ function Menu(props) {
6332
6444
  return _el$3;
6333
6445
  })(),
6334
6446
  get children() {
6335
- var _el$2 = _tmpl$$V();
6447
+ var _el$2 = _tmpl$$W();
6336
6448
  _el$2.$$click = (event) => {
6337
6449
  const el = event.target;
6338
6450
  if (el.closest("button") && !el.closest(".oasis-editor-tool-button-dropdown") && !el.closest(".oasis-editor-toolbar-list-options")) {
@@ -6347,7 +6459,7 @@ function Menu(props) {
6347
6459
  })();
6348
6460
  }
6349
6461
  delegateEvents(["click"]);
6350
- 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>`);
6462
+ var _tmpl$$V = /* @__PURE__ */ template(`<select>`), _tmpl$2$y = /* @__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>`);
6351
6463
  function Select(props) {
6352
6464
  let selectRef;
6353
6465
  const [local, others] = splitProps(props, ["wide", "small", "class", "tooltip", "aria-label", "value", "label", "ribbonSize"]);
@@ -6363,7 +6475,7 @@ function Select(props) {
6363
6475
  }
6364
6476
  });
6365
6477
  const select = () => (() => {
6366
- var _el$ = _tmpl$$U();
6478
+ var _el$ = _tmpl$$V();
6367
6479
  var _ref$ = selectRef;
6368
6480
  typeof _ref$ === "function" ? use(_ref$, _el$) : selectRef = _el$;
6369
6481
  spread(_el$, mergeProps({
@@ -6404,7 +6516,7 @@ function Select(props) {
6404
6516
  return local.label;
6405
6517
  },
6406
6518
  get children() {
6407
- var _el$3 = _tmpl$2$x();
6519
+ var _el$3 = _tmpl$2$y();
6408
6520
  insert(_el$3, () => local.label);
6409
6521
  return _el$3;
6410
6522
  }
@@ -6414,15 +6526,15 @@ function Select(props) {
6414
6526
  }
6415
6527
  });
6416
6528
  }
6417
- var _tmpl$$T = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-separator>`);
6529
+ var _tmpl$$U = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-separator>`);
6418
6530
  function Separator(props) {
6419
6531
  return (() => {
6420
- var _el$ = _tmpl$$T();
6532
+ var _el$ = _tmpl$$U();
6421
6533
  createRenderEffect((_$p) => setStyleProperty(_el$, "display", props.hidden ? "none" : void 0));
6422
6534
  return _el$;
6423
6535
  })();
6424
6536
  }
6425
- 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><i data-lucide=chevron-down>`);
6537
+ var _tmpl$$T = /* @__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>`);
6426
6538
  function SplitButton(props) {
6427
6539
  return createComponent(Popover, {
6428
6540
  get open() {
@@ -6441,11 +6553,12 @@ function SplitButton(props) {
6441
6553
  return props.onPanelMouseLeave;
6442
6554
  },
6443
6555
  trigger: (api) => (() => {
6444
- var _el$ = _tmpl$$S(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
6556
+ var _el$ = _tmpl$$T(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
6445
6557
  use((el) => api.ref(el), _el$);
6446
6558
  _el$2.$$click = () => props.onMain();
6447
6559
  insert(_el$2, () => props.mainContent);
6448
6560
  _el$3.$$click = () => api.toggle();
6561
+ insert(_el$3, createComponent(DropdownChevron, {}));
6449
6562
  createRenderEffect((_p$) => {
6450
6563
  var _v$ = props.rootClass ?? "oasis-editor-color-split", _v$2 = !!(props.rootActive ?? api.open), _v$3 = !!(props.ribbonSize === "large"), _v$4 = props.tooltip, _v$5 = props.mainTestId, _v$6 = props.mainAriaLabel ?? props.tooltip, _v$7 = props.mainPressed, _v$8 = !!api.open, _v$9 = props.menuTestId, _v$0 = props.menuAriaLabel ?? `${props.tooltip ?? ""} menu`, _v$1 = api.open;
6451
6564
  _v$ !== _p$.e && className(_el$, _p$.e = _v$);
@@ -6481,7 +6594,7 @@ function SplitButton(props) {
6481
6594
  });
6482
6595
  }
6483
6596
  delegateEvents(["click"]);
6484
- 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$f = /* @__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$9 = /* @__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$7 = /* @__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>`);
6597
+ var _tmpl$$S = /* @__PURE__ */ template(`<i data-lucide=type>`), _tmpl$2$x = /* @__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>`);
6485
6598
  const normalizeColor = (value) => (value == null ? void 0 : value.trim().toLowerCase()) ?? "";
6486
6599
  function ColorPicker(props) {
6487
6600
  const [isOpen, setIsOpen] = createSignal(false);
@@ -6558,7 +6671,7 @@ function ColorPicker(props) {
6558
6671
  return clearLabel();
6559
6672
  },
6560
6673
  get children() {
6561
- var _el$ = _tmpl$2$w(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling;
6674
+ var _el$ = _tmpl$2$x(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling;
6562
6675
  _el$.$$click = () => applyColor(null);
6563
6676
  insert(_el$2, createComponent(Show, {
6564
6677
  get when() {
@@ -6568,7 +6681,7 @@ function ColorPicker(props) {
6568
6681
  return _tmpl$9();
6569
6682
  },
6570
6683
  get children() {
6571
- return _tmpl$$R();
6684
+ return _tmpl$$S();
6572
6685
  }
6573
6686
  }));
6574
6687
  insert(_el$4, clearLabel);
@@ -6616,7 +6729,7 @@ function ColorPicker(props) {
6616
6729
  }));
6617
6730
  return _el$5;
6618
6731
  })(), (() => {
6619
- var _el$8 = _tmpl$4$f(), _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
6732
+ var _el$8 = _tmpl$4$e(), _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
6620
6733
  insert(_el$9, () => props.standardColorsLabel);
6621
6734
  insert(_el$0, createComponent(For, {
6622
6735
  get each() {
@@ -6653,13 +6766,13 @@ function ColorPicker(props) {
6653
6766
  },
6654
6767
  get children() {
6655
6768
  return [(() => {
6656
- var _el$1 = _tmpl$5$9(), _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
6769
+ var _el$1 = _tmpl$5$8(), _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
6657
6770
  _el$1.$$click = () => customColorInputRef == null ? void 0 : customColorInputRef.click();
6658
6771
  insert(_el$11, () => props.moreColorsLabel);
6659
6772
  createRenderEffect(() => setAttribute(_el$1, "data-testid", `${props.testId}-more-colors`));
6660
6773
  return _el$1;
6661
6774
  })(), (() => {
6662
- var _el$12 = _tmpl$6$7();
6775
+ var _el$12 = _tmpl$6$6();
6663
6776
  _el$12.$$input = (event) => applyColor(event.currentTarget.value);
6664
6777
  var _ref$ = customColorInputRef;
6665
6778
  typeof _ref$ === "function" ? use(_ref$, _el$12) : customColorInputRef = _el$12;
@@ -6681,7 +6794,7 @@ function ColorPicker(props) {
6681
6794
  });
6682
6795
  }
6683
6796
  delegateEvents(["click", "input"]);
6684
- 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$e = /* @__PURE__ */ template(`<span>`), _tmpl$5$8 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-tool-button><i>`), _tmpl$6$6 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-table-grid-picker-cell>`);
6797
+ var _tmpl$$R = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-status>`), _tmpl$2$w = /* @__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>`);
6685
6798
  function GridPicker(props) {
6686
6799
  const t = useI18n();
6687
6800
  const [isOpen, setIsOpen] = createSignal(false);
@@ -6768,45 +6881,48 @@ function GridPicker(props) {
6768
6881
  col: 0
6769
6882
  }),
6770
6883
  trigger: (api) => (() => {
6771
- var _el$4 = _tmpl$5$8(), _el$5 = _el$4.firstChild;
6884
+ var _el$4 = _tmpl$5$7();
6772
6885
  _el$4.$$click = () => api.toggle();
6773
6886
  use((el) => api.ref(el), _el$4);
6887
+ insert(_el$4, createComponent(ToolIcon, {
6888
+ get name() {
6889
+ return icon();
6890
+ }
6891
+ }), null);
6774
6892
  insert(_el$4, createComponent(Show, {
6775
6893
  get when() {
6776
6894
  return props.label;
6777
6895
  },
6778
6896
  get children() {
6779
- var _el$6 = _tmpl$4$e();
6780
- insert(_el$6, () => props.label);
6781
- return _el$6;
6897
+ var _el$5 = _tmpl$4$d();
6898
+ insert(_el$5, () => props.label);
6899
+ return _el$5;
6782
6900
  }
6783
6901
  }), null);
6784
6902
  createRenderEffect((_p$) => {
6785
- var _v$3 = !!api.open, _v$4 = !!(props.ribbonSize === "large"), _v$5 = tooltip(), _v$6 = tooltip(), _v$7 = props.testId, _v$8 = icon();
6903
+ var _v$3 = !!api.open, _v$4 = !!(props.ribbonSize === "large"), _v$5 = tooltip(), _v$6 = tooltip(), _v$7 = props.testId;
6786
6904
  _v$3 !== _p$.e && _el$4.classList.toggle("oasis-editor-tool-button-active", _p$.e = _v$3);
6787
6905
  _v$4 !== _p$.t && _el$4.classList.toggle("oasis-editor-tool-button-ribbon-large", _p$.t = _v$4);
6788
6906
  _v$5 !== _p$.a && setAttribute(_el$4, "title", _p$.a = _v$5);
6789
6907
  _v$6 !== _p$.o && setAttribute(_el$4, "aria-label", _p$.o = _v$6);
6790
6908
  _v$7 !== _p$.i && setAttribute(_el$4, "data-testid", _p$.i = _v$7);
6791
- _v$8 !== _p$.n && setAttribute(_el$5, "data-lucide", _p$.n = _v$8);
6792
6909
  return _p$;
6793
6910
  }, {
6794
6911
  e: void 0,
6795
6912
  t: void 0,
6796
6913
  a: void 0,
6797
6914
  o: void 0,
6798
- i: void 0,
6799
- n: void 0
6915
+ i: void 0
6800
6916
  });
6801
6917
  return _el$4;
6802
6918
  })(),
6803
6919
  get children() {
6804
6920
  return [(() => {
6805
- var _el$2 = _tmpl$$Q();
6921
+ var _el$2 = _tmpl$$R();
6806
6922
  insert(_el$2, statusLabel);
6807
6923
  return _el$2;
6808
6924
  })(), (() => {
6809
- var _el$3 = _tmpl$2$v();
6925
+ var _el$3 = _tmpl$2$w();
6810
6926
  insert(_el$3, createComponent(For, {
6811
6927
  get each() {
6812
6928
  return rows();
@@ -6816,17 +6932,17 @@ function GridPicker(props) {
6816
6932
  return cols();
6817
6933
  },
6818
6934
  children: (c) => (() => {
6819
- var _el$7 = _tmpl$6$6();
6820
- _el$7.$$click = () => selectGridSize(r, c);
6821
- _el$7.$$mousedown = (event) => event.preventDefault();
6822
- _el$7.addEventListener("mouseenter", () => setHover({
6935
+ var _el$6 = _tmpl$6$5();
6936
+ _el$6.$$click = () => selectGridSize(r, c);
6937
+ _el$6.$$mousedown = (event) => event.preventDefault();
6938
+ _el$6.addEventListener("mouseenter", () => setHover({
6823
6939
  row: r,
6824
6940
  col: c
6825
6941
  }));
6826
- setAttribute(_el$7, "data-testid", `editor-toolbar-table-grid-${r}x${c}`);
6827
- setAttribute(_el$7, "aria-label", `${r} × ${c}`);
6828
- createRenderEffect(() => _el$7.classList.toggle("oasis-editor-table-grid-picker-cell-active", !!(r <= hover().row && c <= hover().col)));
6829
- return _el$7;
6942
+ setAttribute(_el$6, "data-testid", `editor-toolbar-table-grid-${r}x${c}`);
6943
+ setAttribute(_el$6, "aria-label", `${r} × ${c}`);
6944
+ createRenderEffect(() => _el$6.classList.toggle("oasis-editor-table-grid-picker-cell-active", !!(r <= hover().row && c <= hover().col)));
6945
+ return _el$6;
6830
6946
  })()
6831
6947
  })
6832
6948
  }));
@@ -6906,7 +7022,7 @@ const DEFAULT_PALETTE = {
6906
7022
  standardColors: STANDARD_COLORS,
6907
7023
  allowCustom: true
6908
7024
  };
6909
- 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><i data-lucide=chevron-down>`), _tmpl$4$d = /* @__PURE__ */ template(`<option>`);
7025
+ var _tmpl$$Q = /* @__PURE__ */ template(`<button type=button class=oasis-editor-style-gallery-card role=option><span>`), _tmpl$2$v = /* @__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>`);
6910
7026
  function getQuickStyles(styles) {
6911
7027
  const applicable = styles.filter((style2) => style2.type !== "table" && (!style2.semiHidden || style2.unhideWhenUsed && style2.isUsed));
6912
7028
  const hasQuickStyles = applicable.some((style2) => style2.qFormat === true);
@@ -6986,7 +7102,7 @@ function StyleGallery(props) {
6986
7102
  return styles();
6987
7103
  },
6988
7104
  children: (style$1) => (() => {
6989
- var _el$ = _tmpl$$P(), _el$2 = _el$.firstChild;
7105
+ var _el$ = _tmpl$$Q(), _el$2 = _el$.firstChild;
6990
7106
  _el$.$$click = () => apply(style$1);
6991
7107
  insert(_el$2, () => style$1.name);
6992
7108
  createRenderEffect((_p$) => {
@@ -7041,7 +7157,7 @@ function StyleGallery(props) {
7041
7157
  return styles();
7042
7158
  },
7043
7159
  children: (style2) => (() => {
7044
- var _el$8 = _tmpl$4$d();
7160
+ var _el$8 = _tmpl$4$c();
7045
7161
  insert(_el$8, () => style2.name);
7046
7162
  createRenderEffect(() => _el$8.value = style2.id);
7047
7163
  return _el$8;
@@ -7052,6 +7168,7 @@ function StyleGallery(props) {
7052
7168
  insert(_el$6, cards);
7053
7169
  _el$7.$$click = () => popover.toggle();
7054
7170
  setAttribute(_el$7, "data-testid", expandTestId);
7171
+ insert(_el$7, createComponent(DropdownChevron, {}));
7055
7172
  createRenderEffect((_p$) => {
7056
7173
  var _v$6 = props.api.t("toolbar.style"), _v$7 = props.api.t("toolbar.style"), _v$8 = popover.open;
7057
7174
  _v$6 !== _p$.e && setAttribute(_el$7, "title", _p$.e = _v$6);
@@ -7066,7 +7183,7 @@ function StyleGallery(props) {
7066
7183
  return _el$4;
7067
7184
  })(),
7068
7185
  get children() {
7069
- var _el$3 = _tmpl$2$u();
7186
+ var _el$3 = _tmpl$2$v();
7070
7187
  _el$3.$$keydown = onPanelKeyDown;
7071
7188
  insert(_el$3, cards);
7072
7189
  return _el$3;
@@ -7074,7 +7191,7 @@ function StyleGallery(props) {
7074
7191
  });
7075
7192
  }
7076
7193
  delegateEvents(["click", "keydown"]);
7077
- 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>`);
7194
+ 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>`);
7078
7195
  function renderMenuContent(content, api) {
7079
7196
  if (content.kind === "custom") {
7080
7197
  return content.render(api);
@@ -7089,37 +7206,7 @@ function renderMenuContent(content, api) {
7089
7206
  })
7090
7207
  });
7091
7208
  }
7092
- function RenderButton(props) {
7093
- const b = bindItem(props.item, props.api);
7094
- return createComponent(Button$1, {
7095
- get icon() {
7096
- return props.item.iconName;
7097
- },
7098
- get label() {
7099
- return resolveLabel(props.item, props.api);
7100
- },
7101
- get wide() {
7102
- return props.item.wide;
7103
- },
7104
- get ribbonSize() {
7105
- return props.item.ribbonSize;
7106
- },
7107
- get active() {
7108
- return b.active();
7109
- },
7110
- get disabled() {
7111
- return b.disabled();
7112
- },
7113
- get ["data-testid"]() {
7114
- return props.item.testId;
7115
- },
7116
- get tooltip() {
7117
- return resolveTooltip(props.item, props.api);
7118
- },
7119
- onClick: () => runItem(props.item, props.api)
7120
- });
7121
- }
7122
- function RenderToggle(props) {
7209
+ function RenderActionButton(props) {
7123
7210
  const b = bindItem(props.item, props.api);
7124
7211
  return createComponent(Button$1, {
7125
7212
  get icon() {
@@ -7262,7 +7349,7 @@ function RenderSelect(props) {
7262
7349
  return props.item.placeholder !== void 0;
7263
7350
  },
7264
7351
  get children() {
7265
- var _el$ = _tmpl$$O();
7352
+ var _el$ = _tmpl$$P();
7266
7353
  insert(_el$, () => props.item.placeholder);
7267
7354
  return _el$;
7268
7355
  }
@@ -7271,7 +7358,7 @@ function RenderSelect(props) {
7271
7358
  return props.item.options(props.api);
7272
7359
  },
7273
7360
  children: (option) => (() => {
7274
- var _el$2 = _tmpl$2$t();
7361
+ var _el$2 = _tmpl$2$u();
7275
7362
  insert(_el$2, () => option.label);
7276
7363
  createRenderEffect(() => _el$2.value = option.value);
7277
7364
  return _el$2;
@@ -7398,8 +7485,8 @@ function RenderCustom(props) {
7398
7485
  return props.item.render(props.api);
7399
7486
  }
7400
7487
  const TOOLBAR_RENDERERS = {
7401
- button: RenderButton,
7402
- toggle: RenderToggle,
7488
+ button: RenderActionButton,
7489
+ toggle: RenderActionButton,
7403
7490
  split: RenderSplit,
7404
7491
  menu: RenderMenu,
7405
7492
  select: RenderSelect,
@@ -7469,12 +7556,14 @@ const RIBBON_TABS = [
7469
7556
  "view",
7470
7557
  "tableDesign",
7471
7558
  "tableLayout",
7559
+ "imageFormat",
7472
7560
  "plugins",
7473
7561
  "ai"
7474
7562
  ];
7475
7563
  const CONTEXTUAL_TABS = {
7476
7564
  tableDesign: "tableContext",
7477
- tableLayout: "tableContext"
7565
+ tableLayout: "tableContext",
7566
+ imageFormat: "imageContext"
7478
7567
  };
7479
7568
  const TAB_LABEL_KEYS = {
7480
7569
  file: "ribbon.tab.file",
@@ -7488,6 +7577,7 @@ const TAB_LABEL_KEYS = {
7488
7577
  view: "ribbon.tab.view",
7489
7578
  tableDesign: "ribbon.tab.tableDesign",
7490
7579
  tableLayout: "ribbon.tab.tableLayout",
7580
+ imageFormat: "ribbon.tab.imageFormat",
7491
7581
  plugins: "ribbon.tab.plugins",
7492
7582
  ai: "ribbon.tab.ai"
7493
7583
  };
@@ -7511,7 +7601,8 @@ const GROUP_LABEL_KEYS = {
7511
7601
  rowsColumns: "ribbon.group.rowsColumns",
7512
7602
  merge: "ribbon.group.merge",
7513
7603
  cellSize: "ribbon.group.cellSize",
7514
- alignment: "ribbon.group.alignment"
7604
+ alignment: "ribbon.group.alignment",
7605
+ size: "ribbon.group.size"
7515
7606
  };
7516
7607
  function isRibbonTabVisible(id, api) {
7517
7608
  const gatingCommand = CONTEXTUAL_TABS[id];
@@ -7565,6 +7656,9 @@ const RIBBON_GROUP_ORDER = {
7565
7656
  cellSize: 40,
7566
7657
  alignment: 50
7567
7658
  },
7659
+ imageFormat: {
7660
+ size: 10
7661
+ },
7568
7662
  plugins: {
7569
7663
  general: 10
7570
7664
  }
@@ -7641,6 +7735,9 @@ const RIBBON_GROUP_RESIZE_DEFAULTS = {
7641
7735
  cellSize: { priority: 40, collapsedIcon: "move-horizontal" },
7642
7736
  alignment: { priority: 50, collapsedIcon: "align-left" }
7643
7737
  },
7738
+ imageFormat: {
7739
+ size: { priority: 40, collapsedIcon: "crop" }
7740
+ },
7644
7741
  plugins: {
7645
7742
  general: { priority: 50, collapsedIcon: "plug" }
7646
7743
  }
@@ -7880,7 +7977,7 @@ function resolveResponsiveRibbonGroups(groups, availableWidth, measurements = {}
7880
7977
  allocatedWidth: allocatedWidths.get(group.id)
7881
7978
  }));
7882
7979
  }
7883
- 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>`);
7980
+ 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>`);
7884
7981
  function RibbonTabs(props) {
7885
7982
  const tabs = createMemo(() => buildRibbonTabDefinitions(props.api.t, props.api));
7886
7983
  const moveTab = (current, delta) => {
@@ -7890,13 +7987,13 @@ function RibbonTabs(props) {
7890
7987
  if (next) props.setActiveTab(next.id);
7891
7988
  };
7892
7989
  return (() => {
7893
- var _el$ = _tmpl$$N();
7990
+ var _el$ = _tmpl$$O();
7894
7991
  insert(_el$, createComponent(For, {
7895
7992
  get each() {
7896
7993
  return tabs();
7897
7994
  },
7898
7995
  children: (tab) => (() => {
7899
- var _el$2 = _tmpl$2$s();
7996
+ var _el$2 = _tmpl$2$t();
7900
7997
  _el$2.$$keydown = (event) => {
7901
7998
  if (event.key === "ArrowRight") {
7902
7999
  event.preventDefault();
@@ -7941,10 +8038,10 @@ function RibbonTabs(props) {
7941
8038
  })();
7942
8039
  }
7943
8040
  delegateEvents(["click", "keydown"]);
7944
- var _tmpl$$M = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-row>`);
8041
+ var _tmpl$$N = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-row>`);
7945
8042
  function RibbonRow(props) {
7946
8043
  return (() => {
7947
- var _el$ = _tmpl$$M();
8044
+ var _el$ = _tmpl$$N();
7948
8045
  insert(_el$, createComponent(For, {
7949
8046
  get each() {
7950
8047
  return props.items;
@@ -7959,7 +8056,7 @@ function RibbonRow(props) {
7959
8056
  return _el$;
7960
8057
  })();
7961
8058
  }
7962
- 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$c = /* @__PURE__ */ template(`<section class=oasis-editor-ribbon-group>`), _tmpl$5$7 = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-collapsed-items>`), _tmpl$6$5 = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-group-rows>`);
8059
+ 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>`);
7963
8060
  function groupItems(group) {
7964
8061
  return [...group.largeItems, ...group.rows[1], ...group.rows[2]];
7965
8062
  }
@@ -7970,14 +8067,14 @@ function groupStyle(group) {
7970
8067
  }
7971
8068
  function RibbonGroup(props) {
7972
8069
  return (() => {
7973
- var _el$ = _tmpl$4$c();
8070
+ var _el$ = _tmpl$4$b();
7974
8071
  insert(_el$, createComponent(Show, {
7975
8072
  get when() {
7976
8073
  return props.group.resizeState !== "collapsed";
7977
8074
  },
7978
8075
  get fallback() {
7979
8076
  return [(() => {
7980
- var _el$6 = _tmpl$6$5();
8077
+ var _el$6 = _tmpl$6$4();
7981
8078
  insert(_el$6, createComponent(Menu, {
7982
8079
  get icon() {
7983
8080
  return props.group.resizePolicy.collapsedIcon;
@@ -7994,7 +8091,7 @@ function RibbonGroup(props) {
7994
8091
  ribbonSize: "large",
7995
8092
  panelClass: "oasis-editor-ribbon-collapsed-menu",
7996
8093
  get children() {
7997
- var _el$7 = _tmpl$5$7();
8094
+ var _el$7 = _tmpl$5$6();
7998
8095
  insert(_el$7, createComponent(For, {
7999
8096
  get each() {
8000
8097
  return groupItems(props.group);
@@ -8018,13 +8115,13 @@ function RibbonGroup(props) {
8018
8115
  },
8019
8116
  get children() {
8020
8117
  return [(() => {
8021
- var _el$2 = _tmpl$2$r(), _el$4 = _el$2.firstChild;
8118
+ var _el$2 = _tmpl$2$s(), _el$4 = _el$2.firstChild;
8022
8119
  insert(_el$2, createComponent(Show, {
8023
8120
  get when() {
8024
8121
  return props.group.largeItems.length > 0;
8025
8122
  },
8026
8123
  get children() {
8027
- var _el$3 = _tmpl$$L();
8124
+ var _el$3 = _tmpl$$M();
8028
8125
  insert(_el$3, createComponent(For, {
8029
8126
  get each() {
8030
8127
  return props.group.largeItems;
@@ -8085,7 +8182,7 @@ function RibbonGroup(props) {
8085
8182
  return _el$;
8086
8183
  })();
8087
8184
  }
8088
- var _tmpl$$K = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-panel role=tabpanel data-testid=editor-ribbon-panel>`);
8185
+ var _tmpl$$L = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-panel role=tabpanel data-testid=editor-ribbon-panel>`);
8089
8186
  function RibbonPanel(props) {
8090
8187
  const [availableWidth, setAvailableWidth] = createSignal(null);
8091
8188
  const [measurements, setMeasurements] = createSignal({});
@@ -8130,7 +8227,7 @@ function RibbonPanel(props) {
8130
8227
  requestAnimationFrame(measureGroups);
8131
8228
  });
8132
8229
  return (() => {
8133
- var _el$ = _tmpl$$K();
8230
+ var _el$ = _tmpl$$L();
8134
8231
  var _ref$ = panelRef;
8135
8232
  typeof _ref$ === "function" ? use(_ref$, _el$) : panelRef = _el$;
8136
8233
  insert(_el$, createComponent(For, {
@@ -8156,21 +8253,31 @@ function RibbonPanel(props) {
8156
8253
  return _el$;
8157
8254
  })();
8158
8255
  }
8159
- var _tmpl$$J = /* @__PURE__ */ template(`<section class=oasis-editor-toolbar>`), _tmpl$2$q = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-wrap-strip>`);
8256
+ var _tmpl$$K = /* @__PURE__ */ template(`<section class=oasis-editor-toolbar>`), _tmpl$2$r = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-wrap-strip>`);
8160
8257
  const shouldAllowNativeMouseDown = (target) => target instanceof Element && target.closest("select, input, textarea, label") !== null;
8161
8258
  function Toolbar(props) {
8162
8259
  const api = createToolbarApi(props.host, useI18n());
8163
8260
  const [version2, setVersion2] = createSignal(0);
8164
8261
  const [activeTab, setActiveTab] = createSignal("home");
8165
- const CONTEXTUAL_TABLE_TABS = ["tableDesign", "tableLayout"];
8166
- createEffect((prevInside) => {
8167
- const inside = api.commands.state("tableContext").isActive;
8168
- if (inside && prevInside === false) {
8169
- setActiveTab("tableDesign");
8170
- } else if (!inside && CONTEXTUAL_TABLE_TABS.includes(activeTab())) {
8262
+ const CONTEXTUAL_TAB_ENTRIES = Object.entries(CONTEXTUAL_TABS);
8263
+ createEffect((prev) => {
8264
+ const current = /* @__PURE__ */ new Map();
8265
+ for (const [, command] of CONTEXTUAL_TAB_ENTRIES) {
8266
+ if (!current.has(command)) {
8267
+ current.set(command, api.commands.state(command).isActive);
8268
+ }
8269
+ }
8270
+ for (const [tab, command] of CONTEXTUAL_TAB_ENTRIES) {
8271
+ if ((current.get(command) ?? false) && !((prev == null ? void 0 : prev.get(command)) ?? false)) {
8272
+ setActiveTab(tab);
8273
+ break;
8274
+ }
8275
+ }
8276
+ const activeCommand = CONTEXTUAL_TABS[activeTab()];
8277
+ if (activeCommand && !(current.get(activeCommand) ?? false)) {
8171
8278
  setActiveTab("home");
8172
8279
  }
8173
- return inside;
8280
+ return current;
8174
8281
  });
8175
8282
  onMount(() => {
8176
8283
  const unsubscribe = props.registry.onChange(() => setVersion2((v) => v + 1));
@@ -8196,7 +8303,7 @@ function Toolbar(props) {
8196
8303
  })
8197
8304
  });
8198
8305
  return (() => {
8199
- var _el$ = _tmpl$$J();
8306
+ var _el$ = _tmpl$$K();
8200
8307
  _el$.$$mousedown = (event) => {
8201
8308
  if (shouldAllowNativeMouseDown(event.target)) {
8202
8309
  return;
@@ -8218,7 +8325,7 @@ function Toolbar(props) {
8218
8325
  return renderItems();
8219
8326
  }
8220
8327
  }) : (() => {
8221
- var _el$2 = _tmpl$2$q();
8328
+ var _el$2 = _tmpl$2$r();
8222
8329
  insert(_el$2, renderItems);
8223
8330
  return _el$2;
8224
8331
  })();
@@ -18856,11 +18963,11 @@ function buildCanvasTableLayout(options) {
18856
18963
  unsupported: Array.from(new Set(unsupported))
18857
18964
  };
18858
18965
  }
18859
- 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">`);
18966
+ 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">`);
18860
18967
  function PageBreak(_props) {
18861
18968
  const t = useI18n();
18862
18969
  return (() => {
18863
- var _el$ = _tmpl$$I(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
18970
+ var _el$ = _tmpl$$J(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
18864
18971
  insert(_el$3, () => t("metric.pageBreak") || "Page Break");
18865
18972
  return _el$;
18866
18973
  })();
@@ -22433,7 +22540,7 @@ function createCanvasPageRenderer(options) {
22433
22540
  }
22434
22541
  };
22435
22542
  }
22436
- 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$b = /* @__PURE__ */ template(`<div class=oasis-editor-table-revision-hit style=position:absolute;pointer-events:auto;background:transparent>`);
22543
+ 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>`);
22437
22544
  const surfaceLogger = createEditorLogger("canvas-surface");
22438
22545
  function checkBrowserFonts(families) {
22439
22546
  if (typeof document === "undefined" || !document.fonts) {
@@ -22493,7 +22600,7 @@ function CanvasEditorSurface(props) {
22493
22600
  return layout;
22494
22601
  });
22495
22602
  return (() => {
22496
- var _el$ = _tmpl$$H();
22603
+ var _el$ = _tmpl$$I();
22497
22604
  insert(_el$, createComponent(Index, {
22498
22605
  get each() {
22499
22606
  return documentLayout().pages;
@@ -22505,7 +22612,7 @@ function CanvasEditorSurface(props) {
22505
22612
  // inserting an image that triggers re-pagination in a narrow viewport),
22506
22613
  // causing "Failed to execute 'insertBefore'" errors.
22507
22614
  (() => {
22508
- var _el$2 = _tmpl$2$p();
22615
+ var _el$2 = _tmpl$2$q();
22509
22616
  insert(_el$2, createComponent(Show, {
22510
22617
  when: index > 0,
22511
22618
  get children() {
@@ -22647,7 +22754,7 @@ function CanvasPage(props) {
22647
22754
  return revisionCells();
22648
22755
  },
22649
22756
  children: (revision) => (() => {
22650
- var _el$5 = _tmpl$4$b();
22757
+ var _el$5 = _tmpl$4$a();
22651
22758
  addEventListener(_el$5, "mousedown", props.onSurfaceMouseDown, true);
22652
22759
  _el$5.addEventListener("mouseleave", (event) => {
22653
22760
  var _a;
@@ -23027,7 +23134,7 @@ function computeRulerTicks(pageWidth, contentLeft, unit) {
23027
23134
  pushSide(-1);
23028
23135
  return ticks;
23029
23136
  }
23030
- 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>`);
23137
+ 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>`);
23031
23138
  function getActivePageSettings(state) {
23032
23139
  var _a;
23033
23140
  const idx = getActiveSectionIndex(state);
@@ -23233,7 +23340,7 @@ function HorizontalRuler(props) {
23233
23340
  }
23234
23341
  };
23235
23342
  return (() => {
23236
- 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;
23343
+ 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;
23237
23344
  var _ref$ = pageRef;
23238
23345
  typeof _ref$ === "function" ? use(_ref$, _el$3) : pageRef = _el$3;
23239
23346
  insert(_el$3, createComponent(For, {
@@ -23241,7 +23348,7 @@ function HorizontalRuler(props) {
23241
23348
  return ticks();
23242
23349
  },
23243
23350
  children: (tick) => [(() => {
23244
- var _el$11 = _tmpl$2$o();
23351
+ var _el$11 = _tmpl$2$p();
23245
23352
  createRenderEffect((_p$) => {
23246
23353
  var _v$27 = `oasis-editor-horizontal-ruler-tick oasis-editor-horizontal-ruler-tick-${tick.kind}`, _v$28 = `${sx(tick.x)}px`;
23247
23354
  _v$27 !== _p$.e && className(_el$11, _p$.e = _v$27);
@@ -23330,10 +23437,10 @@ function HorizontalRuler(props) {
23330
23437
  })();
23331
23438
  }
23332
23439
  delegateEvents(["pointerdown"]);
23333
- var _tmpl$$F = /* @__PURE__ */ template(`<span aria-hidden=true class=oasis-editor-caret>`);
23440
+ var _tmpl$$G = /* @__PURE__ */ template(`<span aria-hidden=true class=oasis-editor-caret>`);
23334
23441
  function CaretOverlay(props) {
23335
23442
  return (() => {
23336
- var _el$ = _tmpl$$F();
23443
+ var _el$ = _tmpl$$G();
23337
23444
  createRenderEffect((_p$) => {
23338
23445
  var _v$ = !!props.active, _v$2 = {
23339
23446
  left: `${props.left}px`,
@@ -23354,16 +23461,16 @@ function CaretOverlay(props) {
23354
23461
  return _el$;
23355
23462
  })();
23356
23463
  }
23357
- 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>`);
23464
+ 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>`);
23358
23465
  function SelectionOverlay(props) {
23359
23466
  return (() => {
23360
- var _el$ = _tmpl$$E();
23467
+ var _el$ = _tmpl$$F();
23361
23468
  insert(_el$, createComponent(Index, {
23362
23469
  get each() {
23363
23470
  return props.boxes;
23364
23471
  },
23365
23472
  children: (box) => (() => {
23366
- var _el$2 = _tmpl$2$n();
23473
+ var _el$2 = _tmpl$2$o();
23367
23474
  createRenderEffect((_p$) => {
23368
23475
  var _v$ = `${box().left}px`, _v$2 = `${box().top}px`, _v$3 = `${box().width}px`, _v$4 = `${box().height}px`;
23369
23476
  _v$ !== _p$.e && setStyleProperty(_el$2, "left", _p$.e = _v$);
@@ -23383,7 +23490,7 @@ function SelectionOverlay(props) {
23383
23490
  return _el$;
23384
23491
  })();
23385
23492
  }
23386
- 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>`);
23493
+ 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>`);
23387
23494
  function RevisionOverlay(props) {
23388
23495
  const formattedDate = () => {
23389
23496
  try {
@@ -23398,7 +23505,7 @@ function RevisionOverlay(props) {
23398
23505
  return "Alterado por";
23399
23506
  };
23400
23507
  return (() => {
23401
- var _el$ = _tmpl$$D(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
23508
+ var _el$ = _tmpl$$E(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
23402
23509
  _el$4.nextSibling;
23403
23510
  var _el$7 = _el$3.nextSibling;
23404
23511
  insert(_el$4, label, _el$5);
@@ -23416,7 +23523,7 @@ function RevisionOverlay(props) {
23416
23523
  return _el$;
23417
23524
  })();
23418
23525
  }
23419
- 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$a = /* @__PURE__ */ template(`<span class=oasis-editor-comment-popup-resolved>✓`), _tmpl$5$6 = /* @__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>`);
23526
+ 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>`);
23420
23527
  function CommentHighlightOverlay(props) {
23421
23528
  const [activeCommentId, setActiveCommentId] = createSignal(null);
23422
23529
  const activeComment = createMemo(() => {
@@ -23443,13 +23550,13 @@ function CommentHighlightOverlay(props) {
23443
23550
  }
23444
23551
  };
23445
23552
  return (() => {
23446
- var _el$ = _tmpl$$C();
23553
+ var _el$ = _tmpl$$D();
23447
23554
  insert(_el$, createComponent(For, {
23448
23555
  get each() {
23449
23556
  return props.boxes();
23450
23557
  },
23451
23558
  children: (box) => (() => {
23452
- var _el$2 = _tmpl$2$m();
23559
+ var _el$2 = _tmpl$2$n();
23453
23560
  _el$2.$$click = () => setActiveCommentId(box.commentId);
23454
23561
  _el$2.addEventListener("mouseenter", () => setActiveCommentId(box.commentId));
23455
23562
  createRenderEffect((_p$) => {
@@ -23481,7 +23588,7 @@ function CommentHighlightOverlay(props) {
23481
23588
  const comment = activeComment();
23482
23589
  const anchor = popupAnchor();
23483
23590
  return (() => {
23484
- var _el$3 = _tmpl$5$6(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$8 = _el$4.nextSibling;
23591
+ var _el$3 = _tmpl$5$5(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$8 = _el$4.nextSibling;
23485
23592
  _el$3.addEventListener("mouseleave", () => setActiveCommentId(null));
23486
23593
  insert(_el$5, () => comment.author || "—");
23487
23594
  insert(_el$4, createComponent(Show, {
@@ -23499,7 +23606,7 @@ function CommentHighlightOverlay(props) {
23499
23606
  return comment.resolved;
23500
23607
  },
23501
23608
  get children() {
23502
- return _tmpl$4$a();
23609
+ return _tmpl$4$9();
23503
23610
  }
23504
23611
  }), null);
23505
23612
  insert(_el$8, () => comment.text);
@@ -23549,7 +23656,7 @@ function useSurfaceRect(surfaceRef) {
23549
23656
  });
23550
23657
  return { rect, tick, refresh };
23551
23658
  }
23552
- 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>`);
23659
+ 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>`);
23553
23660
  function FloatingTableToolbar(props) {
23554
23661
  const t = useI18n();
23555
23662
  const host = () => props.host();
@@ -23607,7 +23714,7 @@ function FloatingTableToolbar(props) {
23607
23714
  return document.body;
23608
23715
  },
23609
23716
  get children() {
23610
- 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;
23717
+ 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;
23611
23718
  _el$.$$mousedown = (event) => event.preventDefault();
23612
23719
  insert(_el$2, createComponent(Button$1, {
23613
23720
  icon: "combine",
@@ -23767,7 +23874,7 @@ function FloatingTableToolbar(props) {
23767
23874
  });
23768
23875
  }
23769
23876
  delegateEvents(["mousedown"]);
23770
- 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$9 = /* @__PURE__ */ template(`<svg><polygon points="20,8 26,14 20,20 14,14"fill=#1a73e8></svg>`, false, true, false), _tmpl$5$5 = /* @__PURE__ */ template(`<svg viewBox="0 0 40 32"fill=none aria-hidden=true>`), _tmpl$6$4 = /* @__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>`);
23877
+ 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>`);
23771
23878
  const WRAP_OPTIONS = [{
23772
23879
  preset: "square",
23773
23880
  labelKey: "layoutOptions.square"
@@ -23789,14 +23896,14 @@ const WRAP_OPTIONS = [{
23789
23896
  }];
23790
23897
  function WrapIcon(props) {
23791
23898
  const line = (x, y, w) => (() => {
23792
- var _el$ = _tmpl$$A();
23899
+ var _el$ = _tmpl$$B();
23793
23900
  setAttribute(_el$, "x", x);
23794
23901
  setAttribute(_el$, "y", y);
23795
23902
  setAttribute(_el$, "width", w);
23796
23903
  return _el$;
23797
23904
  })();
23798
23905
  const box = (x, y, w, h, fill = "#1a73e8") => (() => {
23799
- var _el$2 = _tmpl$2$l();
23906
+ var _el$2 = _tmpl$2$m();
23800
23907
  setAttribute(_el$2, "x", x);
23801
23908
  setAttribute(_el$2, "y", y);
23802
23909
  setAttribute(_el$2, "width", w);
@@ -23805,7 +23912,7 @@ function WrapIcon(props) {
23805
23912
  return _el$2;
23806
23913
  })();
23807
23914
  return (() => {
23808
- var _el$3 = _tmpl$5$5();
23915
+ var _el$3 = _tmpl$5$4();
23809
23916
  insert(_el$3, createComponent(Show, {
23810
23917
  get when() {
23811
23918
  return props.preset === "square";
@@ -23827,7 +23934,7 @@ function WrapIcon(props) {
23827
23934
  return props.preset === "through";
23828
23935
  },
23829
23936
  get children() {
23830
- return [memo(() => line(4, 6, 32)), memo(() => line(4, 12, 9)), memo(() => line(27, 12, 9)), memo(() => line(4, 18, 32)), _tmpl$4$9()];
23937
+ return [memo(() => line(4, 6, 32)), memo(() => line(4, 12, 9)), memo(() => line(27, 12, 9)), memo(() => line(4, 18, 32)), _tmpl$4$8()];
23831
23938
  }
23832
23939
  }), null);
23833
23940
  insert(_el$3, createComponent(Show, {
@@ -23897,7 +24004,7 @@ function FloatingLayoutOptions(props) {
23897
24004
  },
23898
24005
  get children() {
23899
24006
  return [(() => {
23900
- var _el$6 = _tmpl$6$4();
24007
+ var _el$6 = _tmpl$6$3();
23901
24008
  _el$6.$$click = () => setOpen((value) => !value);
23902
24009
  _el$6.$$mousedown = (event) => event.preventDefault();
23903
24010
  createRenderEffect((_p$) => {
@@ -38315,10 +38422,10 @@ function resolveResizedDimensions(geometry, deltaX, deltaY, preserveAspectRatio,
38315
38422
  nextHeight = clamp(nextWidth / aspectRatio, MIN_RESIZE_SIZE_PX);
38316
38423
  return { width: nextWidth, height: nextHeight };
38317
38424
  }
38318
- 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>`);
38425
+ 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>`);
38319
38426
  function ResizeHandlesOverlay(props) {
38320
38427
  return (() => {
38321
- var _el$ = _tmpl$2$k();
38428
+ var _el$ = _tmpl$2$l();
38322
38429
  _el$.$$mousedown = (event) => {
38323
38430
  if (props.readOnly || !props.box() || !props.onBodyMouseDown) {
38324
38431
  return;
@@ -38349,7 +38456,7 @@ function ResizeHandlesOverlay(props) {
38349
38456
  return props.onRotateStart;
38350
38457
  },
38351
38458
  get children() {
38352
- var _el$2 = _tmpl$$z();
38459
+ var _el$2 = _tmpl$$A();
38353
38460
  _el$2.$$mousedown = (event) => {
38354
38461
  var _a;
38355
38462
  if (!props.box()) {
@@ -38390,14 +38497,14 @@ function ResizeHandlesOverlay(props) {
38390
38497
  })();
38391
38498
  }
38392
38499
  delegateEvents(["mousedown"]);
38393
- 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>`);
38500
+ 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>`);
38394
38501
  function TableHandlesOverlay(props) {
38395
38502
  return createComponent(Show, {
38396
38503
  get when() {
38397
38504
  return memo(() => !!!props.readOnly)() && props.box();
38398
38505
  },
38399
38506
  children: (box) => (() => {
38400
- var _el$ = _tmpl$$y(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
38507
+ var _el$ = _tmpl$$z(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
38401
38508
  _el$2.$$mousedown = (event) => {
38402
38509
  props.onMoveStart(event);
38403
38510
  };
@@ -38437,7 +38544,7 @@ function createEditorZoom(initial = ZOOM_DEFAULT) {
38437
38544
  const zoomFactor = createMemo(() => zoomPercent() / 100);
38438
38545
  return { zoomPercent, setZoomPercent, adjustZoom, zoomFactor };
38439
38546
  }
38440
- 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>`);
38547
+ 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>`);
38441
38548
  function EditorImportProgressOverlay(props) {
38442
38549
  const t = useI18n();
38443
38550
  return createComponent(Show, {
@@ -38449,7 +38556,7 @@ function EditorImportProgressOverlay(props) {
38449
38556
  const isDone = progress().phase === "done";
38450
38557
  const isError = progress().phase === "error";
38451
38558
  return (() => {
38452
- 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;
38559
+ 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;
38453
38560
  _el$.classList.toggle("oasis-editor-import-overlay-done", !!isDone);
38454
38561
  _el$.classList.toggle("oasis-editor-import-overlay-error", !!isError);
38455
38562
  setAttribute(_el$, "aria-busy", !isDone && !isError);
@@ -38462,7 +38569,7 @@ function EditorImportProgressOverlay(props) {
38462
38569
  _el$6.classList.toggle("oasis-editor-import-progress-bar-done", !!isDone);
38463
38570
  _el$6.classList.toggle("oasis-editor-import-progress-bar-error", !!isError);
38464
38571
  insert(_el$7, isDone ? (() => {
38465
- var _el$8 = _tmpl$2$j();
38572
+ var _el$8 = _tmpl$2$k();
38466
38573
  insert(_el$8, () => t("import.phase.done"));
38467
38574
  return _el$8;
38468
38575
  })() : isError ? (() => {
@@ -38484,11 +38591,11 @@ function EditorImportProgressOverlay(props) {
38484
38591
  }
38485
38592
  });
38486
38593
  }
38487
- 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>`);
38594
+ 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>`);
38488
38595
  function EditorStatusBar(props) {
38489
38596
  const t = useI18n();
38490
38597
  return (() => {
38491
- 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;
38598
+ 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;
38492
38599
  insert(_el$3, () => t("status.words", [props.wordCount()]));
38493
38600
  insert(_el$4, () => t("status.characters", [props.characterCount()]));
38494
38601
  insert(_el$5, () => t("status.page", [props.currentPage(), props.totalPages()]));
@@ -38511,7 +38618,7 @@ function EditorStatusBar(props) {
38511
38618
  return createComponent(Show, {
38512
38619
  when: key,
38513
38620
  get children() {
38514
- var _el$11 = _tmpl$2$i();
38621
+ var _el$11 = _tmpl$2$j();
38515
38622
  insert(_el$11, () => t(key));
38516
38623
  createRenderEffect(() => className(_el$11, `oasis-editor-statusbar-item oasis-editor-persistence-status oasis-editor-status-${status.replace("...", "ing").replace(".", "")}`));
38517
38624
  return _el$11;
@@ -38544,7 +38651,7 @@ function EditorStatusBar(props) {
38544
38651
  })();
38545
38652
  }
38546
38653
  delegateEvents(["click", "input"]);
38547
- 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>`);
38654
+ 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>`);
38548
38655
  function OasisEditorEditor(props) {
38549
38656
  const layout = () => props.layout;
38550
38657
  const overlays = () => props.overlays;
@@ -38661,6 +38768,10 @@ function OasisEditorEditor(props) {
38661
38768
  return pageIndex === -1 ? 1 : pageIndex + 1;
38662
38769
  };
38663
38770
  const selectedImage = createMemo(() => overlays().selectedImageBox());
38771
+ const imageCropMode = () => {
38772
+ var _a, _b;
38773
+ return ((_b = (_a = overlays()).imageCropMode) == null ? void 0 : _b.call(_a)) ?? false;
38774
+ };
38664
38775
  const selectedTextBox = createMemo(() => overlays().selectedTextBoxBox());
38665
38776
  const selectedTable = createMemo(() => overlays().selectedTableBox());
38666
38777
  const commentsById = createMemo(() => {
@@ -38672,7 +38783,7 @@ function OasisEditorEditor(props) {
38672
38783
  queueMicrotask(recomputeViewportPageIndex);
38673
38784
  });
38674
38785
  return (() => {
38675
- 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;
38786
+ 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;
38676
38787
  insert(_el$, createComponent(Show, {
38677
38788
  get when() {
38678
38789
  return memo(() => !!layout().showHorizontalRuler)() && overlays().toolbarHost;
@@ -38826,32 +38937,60 @@ function OasisEditorEditor(props) {
38826
38937
  });
38827
38938
  }
38828
38939
  }), _el$5);
38829
- insert(_el$4, createComponent(ResizeHandlesOverlay, {
38830
- box: selectedImage,
38831
- get readOnly() {
38832
- return Boolean(layout().readOnly);
38833
- },
38834
- variantClass: "oasis-editor-image-selection-overlay",
38835
- rotation: () => {
38836
- var _a;
38837
- return ((_a = selectedImage()) == null ? void 0 : _a.rotation) ?? 0;
38838
- },
38839
- onResizeStart: (direction, event) => {
38840
- const image = selectedImage();
38841
- if (!image) return;
38842
- event.preventDefault();
38843
- event.stopPropagation();
38844
- surfaceHandlers().onImageResizeHandleMouseDown(image.paragraphId, image.startOffset, direction, event);
38940
+ insert(_el$4, createComponent(Show, {
38941
+ get when() {
38942
+ return imageCropMode();
38845
38943
  },
38846
- onRotateStart: (event) => {
38847
- const image = selectedImage();
38848
- if (!image) return;
38849
- surfaceHandlers().onImageRotateHandleMouseDown(image.paragraphId, image.startOffset, event);
38944
+ get fallback() {
38945
+ return createComponent(ResizeHandlesOverlay, {
38946
+ box: selectedImage,
38947
+ get readOnly() {
38948
+ return Boolean(layout().readOnly);
38949
+ },
38950
+ variantClass: "oasis-editor-image-selection-overlay",
38951
+ rotation: () => {
38952
+ var _a;
38953
+ return ((_a = selectedImage()) == null ? void 0 : _a.rotation) ?? 0;
38954
+ },
38955
+ onResizeStart: (direction, event) => {
38956
+ const image = selectedImage();
38957
+ if (!image) return;
38958
+ event.preventDefault();
38959
+ event.stopPropagation();
38960
+ surfaceHandlers().onImageResizeHandleMouseDown(image.paragraphId, image.startOffset, direction, event);
38961
+ },
38962
+ onRotateStart: (event) => {
38963
+ const image = selectedImage();
38964
+ if (!image) return;
38965
+ surfaceHandlers().onImageRotateHandleMouseDown(image.paragraphId, image.startOffset, event);
38966
+ },
38967
+ onBodyMouseDown: (event) => {
38968
+ const image = selectedImage();
38969
+ if (!image) return;
38970
+ surfaceHandlers().onImageMouseDown(image.paragraphId, image.startOffset, event);
38971
+ }
38972
+ });
38850
38973
  },
38851
- onBodyMouseDown: (event) => {
38852
- const image = selectedImage();
38853
- if (!image) return;
38854
- surfaceHandlers().onImageMouseDown(image.paragraphId, image.startOffset, event);
38974
+ get children() {
38975
+ return createComponent(ResizeHandlesOverlay, {
38976
+ box: selectedImage,
38977
+ get readOnly() {
38978
+ return Boolean(layout().readOnly);
38979
+ },
38980
+ variantClass: "oasis-editor-image-crop-overlay",
38981
+ rotation: () => {
38982
+ var _a;
38983
+ return ((_a = selectedImage()) == null ? void 0 : _a.rotation) ?? 0;
38984
+ },
38985
+ onResizeStart: (direction, event) => {
38986
+ var _a, _b;
38987
+ const image = selectedImage();
38988
+ if (!image) return;
38989
+ event.preventDefault();
38990
+ event.stopPropagation();
38991
+ (_b = (_a = surfaceHandlers()).onImageCropHandleMouseDown) == null ? void 0 : _b.call(_a, image.paragraphId, image.startOffset, direction, event);
38992
+ }
38993
+ });
38855
38994
  }
38856
38995
  }), _el$5);
38857
38996
  insert(_el$4, createComponent(ResizeHandlesOverlay, {
@@ -39755,11 +39894,11 @@ function createCanvasLayoutSnapshotProvider() {
39755
39894
  }
39756
39895
  };
39757
39896
  }
39758
- var _tmpl$$u = /* @__PURE__ */ template(`<button>`);
39897
+ var _tmpl$$v = /* @__PURE__ */ template(`<button>`);
39759
39898
  function FloatingActionButton(props) {
39760
39899
  const [local, others] = splitProps(props, ["type", "icon", "label", "active", "class", "classList"]);
39761
39900
  return (() => {
39762
- var _el$ = _tmpl$$u();
39901
+ var _el$ = _tmpl$$v();
39763
39902
  spread(_el$, mergeProps({
39764
39903
  get type() {
39765
39904
  return local.type ?? "button";
@@ -39788,7 +39927,7 @@ function FloatingActionButton(props) {
39788
39927
  return _el$;
39789
39928
  })();
39790
39929
  }
39791
- var _tmpl$$t = /* @__PURE__ */ template(`<aside>`), _tmpl$2$h = /* @__PURE__ */ template(`<div>`);
39930
+ var _tmpl$$u = /* @__PURE__ */ template(`<aside>`), _tmpl$2$i = /* @__PURE__ */ template(`<div>`);
39792
39931
  function SidePanel(props) {
39793
39932
  const [local, others] = splitProps(props, ["mode", "width", "class", "classList", "children", "style"]);
39794
39933
  const width = () => {
@@ -39798,7 +39937,7 @@ function SidePanel(props) {
39798
39937
  return local.width ?? "360px";
39799
39938
  };
39800
39939
  return (() => {
39801
- var _el$ = _tmpl$$t();
39940
+ var _el$ = _tmpl$$u();
39802
39941
  spread(_el$, mergeProps({
39803
39942
  get ["class"]() {
39804
39943
  return `oasis-editor-plugin-side-panel ${local.class ?? ""}`;
@@ -39823,7 +39962,7 @@ function SidePanel(props) {
39823
39962
  function SidePanelHeader(props) {
39824
39963
  const [local, others] = splitProps(props, ["class", "children"]);
39825
39964
  return (() => {
39826
- var _el$2 = _tmpl$2$h();
39965
+ var _el$2 = _tmpl$2$i();
39827
39966
  spread(_el$2, mergeProps({
39828
39967
  get ["class"]() {
39829
39968
  return `oasis-editor-plugin-side-panel-header ${local.class ?? ""}`;
@@ -39836,7 +39975,7 @@ function SidePanelHeader(props) {
39836
39975
  function SidePanelBody(props) {
39837
39976
  const [local, others] = splitProps(props, ["class", "children"]);
39838
39977
  return (() => {
39839
- var _el$3 = _tmpl$2$h();
39978
+ var _el$3 = _tmpl$2$i();
39840
39979
  spread(_el$3, mergeProps({
39841
39980
  get ["class"]() {
39842
39981
  return `oasis-editor-plugin-side-panel-body ${local.class ?? ""}`;
@@ -39849,7 +39988,7 @@ function SidePanelBody(props) {
39849
39988
  function SidePanelFooter(props) {
39850
39989
  const [local, others] = splitProps(props, ["class", "children"]);
39851
39990
  return (() => {
39852
- var _el$4 = _tmpl$2$h();
39991
+ var _el$4 = _tmpl$2$i();
39853
39992
  spread(_el$4, mergeProps({
39854
39993
  get ["class"]() {
39855
39994
  return `oasis-editor-plugin-side-panel-footer ${local.class ?? ""}`;
@@ -39859,11 +39998,11 @@ function SidePanelFooter(props) {
39859
39998
  return _el$4;
39860
39999
  })();
39861
40000
  }
39862
- var _tmpl$$s = /* @__PURE__ */ template(`<button>`);
40001
+ var _tmpl$$t = /* @__PURE__ */ template(`<button>`);
39863
40002
  function IconButton(props) {
39864
40003
  const [local, others] = splitProps(props, ["type", "icon", "label", "active", "variant", "size", "class", "classList"]);
39865
40004
  return (() => {
39866
- var _el$ = _tmpl$$s();
40005
+ var _el$ = _tmpl$$t();
39867
40006
  spread(_el$, mergeProps({
39868
40007
  get type() {
39869
40008
  return local.type ?? "button";
@@ -39894,7 +40033,7 @@ function IconButton(props) {
39894
40033
  return _el$;
39895
40034
  })();
39896
40035
  }
39897
- 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$8 = /* @__PURE__ */ template(`<div class=oasis-editor-plugin-side-panel-title>`);
40036
+ 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>`);
39898
40037
  const EMPTY_SNAPSHOT = {
39899
40038
  floatingActions: [],
39900
40039
  sidePanels: [],
@@ -39926,7 +40065,7 @@ function PluginUiHost(props) {
39926
40065
  return groupActionsByPlacement(actions());
39927
40066
  },
39928
40067
  children: (group) => (() => {
39929
- var _el$ = _tmpl$$r();
40068
+ var _el$ = _tmpl$$s();
39930
40069
  insert(_el$, createComponent(For, {
39931
40070
  get each() {
39932
40071
  return group.actions;
@@ -39955,7 +40094,7 @@ function PluginUiHost(props) {
39955
40094
  })()
39956
40095
  });
39957
40096
  return (() => {
39958
- var _el$2 = _tmpl$2$g(), _el$3 = _el$2.firstChild;
40097
+ var _el$2 = _tmpl$2$h(), _el$3 = _el$2.firstChild;
39959
40098
  insert(_el$3, resolvedChildren);
39960
40099
  insert(_el$2, createComponent(Show, {
39961
40100
  get when() {
@@ -40019,7 +40158,7 @@ function renderPanel(editor, panel, t) {
40019
40158
  return [createComponent(SidePanelHeader, {
40020
40159
  get children() {
40021
40160
  return [(() => {
40022
- var _el$5 = _tmpl$4$8();
40161
+ var _el$5 = _tmpl$4$7();
40023
40162
  insert(_el$5, createComponent(Show, {
40024
40163
  get when() {
40025
40164
  return panel.icon;
@@ -40078,7 +40217,7 @@ function groupActionsByPlacement(actions) {
40078
40217
  actions: groupActions
40079
40218
  }));
40080
40219
  }
40081
- var _tmpl$$q = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage>`);
40220
+ var _tmpl$$r = /* @__PURE__ */ template(`<div class=oasis-editor-main-container><section class=oasis-editor-stage>`);
40082
40221
  function DocumentShell(props) {
40083
40222
  let surfaceEl;
40084
40223
  let viewportEl;
@@ -40205,7 +40344,7 @@ function DocumentShell(props) {
40205
40344
  return props.runtimeEditor;
40206
40345
  },
40207
40346
  get children() {
40208
- var _el$ = _tmpl$$q(), _el$2 = _el$.firstChild;
40347
+ var _el$ = _tmpl$$r(), _el$2 = _el$.firstChild;
40209
40348
  insert(_el$, createComponent(Show, {
40210
40349
  get when() {
40211
40350
  return memo(() => !!props.showChrome)() && props.showOutline;
@@ -40270,10 +40409,10 @@ function DocumentShell(props) {
40270
40409
  }
40271
40410
  })];
40272
40411
  }
40273
- 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">`);
40412
+ 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">`);
40274
40413
  function InlineShell(props) {
40275
40414
  return (() => {
40276
- var _el$ = _tmpl$2$f();
40415
+ var _el$ = _tmpl$2$g();
40277
40416
  insert(_el$, createComponent(Show, {
40278
40417
  get when() {
40279
40418
  return memo(() => !!props.showChrome)() && props.showToolbar;
@@ -40300,7 +40439,7 @@ function InlineShell(props) {
40300
40439
  return props.runtimeEditor;
40301
40440
  },
40302
40441
  get children() {
40303
- var _el$2 = _tmpl$$p(), _el$3 = _el$2.firstChild;
40442
+ var _el$2 = _tmpl$$q(), _el$3 = _el$2.firstChild;
40304
40443
  insert(_el$3, createComponent(OasisEditorEditor, {
40305
40444
  state: () => props.state,
40306
40445
  get layout() {
@@ -40340,16 +40479,16 @@ function InlineShell(props) {
40340
40479
  return _el$;
40341
40480
  })();
40342
40481
  }
40343
- 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>`);
40482
+ 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>`);
40344
40483
  function BalloonShell(props) {
40345
40484
  return (() => {
40346
- var _el$ = _tmpl$2$e();
40485
+ var _el$ = _tmpl$2$f();
40347
40486
  insert(_el$, createComponent(PluginUiHost, {
40348
40487
  get editor() {
40349
40488
  return props.runtimeEditor;
40350
40489
  },
40351
40490
  get children() {
40352
- var _el$2 = _tmpl$$o(), _el$3 = _el$2.firstChild;
40491
+ var _el$2 = _tmpl$$p(), _el$3 = _el$2.firstChild;
40353
40492
  insert(_el$3, createComponent(OasisEditorEditor, {
40354
40493
  state: () => props.state,
40355
40494
  get layout() {
@@ -40389,7 +40528,7 @@ function BalloonShell(props) {
40389
40528
  return _el$;
40390
40529
  })();
40391
40530
  }
40392
- 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>`);
40531
+ 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>`);
40393
40532
  function Dialog(props) {
40394
40533
  const t = useI18n();
40395
40534
  let dialogRef;
@@ -40414,7 +40553,7 @@ function Dialog(props) {
40414
40553
  return props.isOpen;
40415
40554
  },
40416
40555
  get children() {
40417
- 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;
40556
+ 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;
40418
40557
  _el$.$$click = () => {
40419
40558
  if (props.closeOnOverlayClick ?? true) {
40420
40559
  props.onClose();
@@ -40431,7 +40570,7 @@ function Dialog(props) {
40431
40570
  return props.footer;
40432
40571
  },
40433
40572
  get children() {
40434
- var _el$7 = _tmpl$$n();
40573
+ var _el$7 = _tmpl$$o();
40435
40574
  insert(_el$7, () => props.footer);
40436
40575
  return _el$7;
40437
40576
  }
@@ -40460,7 +40599,7 @@ function Dialog(props) {
40460
40599
  });
40461
40600
  }
40462
40601
  delegateEvents(["click"]);
40463
- 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>`);
40602
+ 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>`);
40464
40603
  function findEnabledItem(items, startIndex, direction) {
40465
40604
  if (!items.length) return void 0;
40466
40605
  for (let step = 0; step < items.length; step += 1) {
@@ -40511,7 +40650,7 @@ function Tabs(props) {
40511
40650
  selectItem(findEnabledItem(items(), currentIndex + direction, direction), true);
40512
40651
  };
40513
40652
  return (() => {
40514
- var _el$ = _tmpl$$m(), _el$2 = _el$.firstChild;
40653
+ var _el$ = _tmpl$$n(), _el$2 = _el$.firstChild;
40515
40654
  _el$2.$$keydown = handleKeyDown;
40516
40655
  insert(_el$2, createComponent(For, {
40517
40656
  get each() {
@@ -40521,7 +40660,7 @@ function Tabs(props) {
40521
40660
  const tabId = `${baseId}-${item.id}-tab`;
40522
40661
  const panelId = `${baseId}-${item.id}-panel`;
40523
40662
  return (() => {
40524
- var _el$3 = _tmpl$2$c();
40663
+ var _el$3 = _tmpl$2$d();
40525
40664
  _el$3.$$click = () => selectItem(item);
40526
40665
  use((element) => {
40527
40666
  tabRefs[index()] = element;
@@ -40588,12 +40727,12 @@ function Tabs(props) {
40588
40727
  })();
40589
40728
  }
40590
40729
  delegateEvents(["keydown", "click"]);
40591
- var _tmpl$$l = /* @__PURE__ */ template(`<button><span class=oasis-editor-ui-button-label>`);
40730
+ var _tmpl$$m = /* @__PURE__ */ template(`<button><span class=oasis-editor-ui-button-label>`);
40592
40731
  function Button(props) {
40593
40732
  const [local, others] = splitProps(props, ["type", "variant", "size", "icon", "iconPosition", "fullWidth", "class", "classList", "children"]);
40594
40733
  const iconPosition = () => local.iconPosition ?? "start";
40595
40734
  return (() => {
40596
- var _el$ = _tmpl$$l(), _el$2 = _el$.firstChild;
40735
+ var _el$ = _tmpl$$m(), _el$2 = _el$.firstChild;
40597
40736
  spread(_el$, mergeProps({
40598
40737
  get type() {
40599
40738
  return local.type ?? "button";
@@ -40673,11 +40812,11 @@ function StatusText(props) {
40673
40812
  }
40674
40813
  }, others));
40675
40814
  }
40676
- var _tmpl$$k = /* @__PURE__ */ template(`<div>`);
40815
+ var _tmpl$$l = /* @__PURE__ */ template(`<div>`);
40677
40816
  function ActionRow(props) {
40678
40817
  const [local, others] = splitProps(props, ["align", "wrap", "class", "classList", "children"]);
40679
40818
  return (() => {
40680
- var _el$ = _tmpl$$k();
40819
+ var _el$ = _tmpl$$l();
40681
40820
  spread(_el$, mergeProps({
40682
40821
  get ["class"]() {
40683
40822
  return `oasis-editor-ui-action-row ${local.class ?? ""}`;
@@ -40733,7 +40872,7 @@ function mergeStyles(...styles) {
40733
40872
  }
40734
40873
  return Object.assign({}, ...objectStyles);
40735
40874
  }
40736
- var _tmpl$$j = /* @__PURE__ */ template(`<span class=oasis-editor-ui-stack-divider-item aria-hidden=true>`);
40875
+ var _tmpl$$k = /* @__PURE__ */ template(`<span class=oasis-editor-ui-stack-divider-item aria-hidden=true>`);
40737
40876
  function childArray(value) {
40738
40877
  if (Array.isArray(value)) return value;
40739
40878
  if (value === null || value === void 0 || value === false) return [];
@@ -40773,7 +40912,7 @@ function Stack(props) {
40773
40912
  return memo(() => index() > 0)() && local.divider;
40774
40913
  },
40775
40914
  get children() {
40776
- var _el$ = _tmpl$$j();
40915
+ var _el$ = _tmpl$$k();
40777
40916
  insert(_el$, () => renderDivider(index()));
40778
40917
  return _el$;
40779
40918
  }
@@ -40852,14 +40991,14 @@ function Grid(props) {
40852
40991
  }
40853
40992
  }));
40854
40993
  }
40855
- var _tmpl$$i = /* @__PURE__ */ template(`<label>`), _tmpl$2$b = /* @__PURE__ */ template(`<div>`);
40994
+ var _tmpl$$j = /* @__PURE__ */ template(`<label>`), _tmpl$2$c = /* @__PURE__ */ template(`<div>`);
40856
40995
  function FormField(props) {
40857
40996
  const fallbackId = createUniqueId();
40858
40997
  const [local, others] = splitProps(props, ["label", "for", "description", "error", "labelClass", "class", "classList", "children"]);
40859
40998
  const descriptionId = () => local.for ?? `${fallbackId}-description`;
40860
40999
  const errorId = () => local.for ?? `${fallbackId}-error`;
40861
41000
  return (() => {
40862
- var _el$ = _tmpl$2$b();
41001
+ var _el$ = _tmpl$2$c();
40863
41002
  spread(_el$, mergeProps({
40864
41003
  get ["class"]() {
40865
41004
  return `oasis-editor-ui-field ${local.class ?? ""}`;
@@ -40873,7 +41012,7 @@ function FormField(props) {
40873
41012
  return local.label;
40874
41013
  },
40875
41014
  get children() {
40876
- var _el$2 = _tmpl$$i();
41015
+ var _el$2 = _tmpl$$j();
40877
41016
  insert(_el$2, () => local.label);
40878
41017
  createRenderEffect((_p$) => {
40879
41018
  var _v$ = `oasis-editor-ui-field-label ${local.labelClass ?? ""}`, _v$2 = local.for;
@@ -40924,7 +41063,7 @@ function FormField(props) {
40924
41063
  return _el$;
40925
41064
  })();
40926
41065
  }
40927
- 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$7 = /* @__PURE__ */ template(`<label><input>`);
41066
+ 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>`);
40928
41067
  function TextField(props) {
40929
41068
  const fallbackId = createUniqueId();
40930
41069
  const [local, others] = splitProps(props, ["label", "description", "error", "labelClass", "controlClass", "onChange", "class", "classList", "id"]);
@@ -40932,13 +41071,13 @@ function TextField(props) {
40932
41071
  const descriptionId = () => `${id()}-description`;
40933
41072
  const errorId = () => `${id()}-error`;
40934
41073
  return (() => {
40935
- var _el$ = _tmpl$4$7(), _el$3 = _el$.firstChild;
41074
+ var _el$ = _tmpl$4$6(), _el$3 = _el$.firstChild;
40936
41075
  insert(_el$, createComponent(Show, {
40937
41076
  get when() {
40938
41077
  return local.label;
40939
41078
  },
40940
41079
  get children() {
40941
- var _el$2 = _tmpl$$h();
41080
+ var _el$2 = _tmpl$$i();
40942
41081
  insert(_el$2, () => local.label);
40943
41082
  createRenderEffect(() => className(_el$2, `oasis-editor-ui-field-label ${local.labelClass ?? ""}`));
40944
41083
  return _el$2;
@@ -40967,7 +41106,7 @@ function TextField(props) {
40967
41106
  return local.description;
40968
41107
  },
40969
41108
  get children() {
40970
- var _el$4 = _tmpl$2$a();
41109
+ var _el$4 = _tmpl$2$b();
40971
41110
  insert(_el$4, () => local.description);
40972
41111
  createRenderEffect(() => setAttribute(_el$4, "id", descriptionId()));
40973
41112
  return _el$4;
@@ -40999,7 +41138,7 @@ function TextField(props) {
40999
41138
  })();
41000
41139
  }
41001
41140
  delegateEvents(["input"]);
41002
- var _tmpl$$g = /* @__PURE__ */ template(`<textarea>`);
41141
+ var _tmpl$$h = /* @__PURE__ */ template(`<textarea>`);
41003
41142
  function TextAreaField(props) {
41004
41143
  const fallbackId = createUniqueId();
41005
41144
  const [local, others] = splitProps(props, ["label", "description", "error", "labelClass", "controlClass", "onChange", "class", "id"]);
@@ -41025,7 +41164,7 @@ function TextAreaField(props) {
41025
41164
  return local.error;
41026
41165
  },
41027
41166
  get children() {
41028
- var _el$ = _tmpl$$g();
41167
+ var _el$ = _tmpl$$h();
41029
41168
  _el$.$$input = (event) => {
41030
41169
  var _a;
41031
41170
  return (_a = local.onChange) == null ? void 0 : _a.call(local, event.currentTarget.value);
@@ -41061,7 +41200,7 @@ function ColorField(props) {
41061
41200
  }
41062
41201
  }, others));
41063
41202
  }
41064
- 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>`);
41203
+ 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>`);
41065
41204
  function Checkbox(props) {
41066
41205
  const fallbackId = createUniqueId();
41067
41206
  const [local, others] = splitProps(props, ["label", "description", "error", "onChange", "class", "id"]);
@@ -41091,7 +41230,7 @@ function Checkbox(props) {
41091
41230
  return local.description;
41092
41231
  },
41093
41232
  get children() {
41094
- var _el$5 = _tmpl$$f();
41233
+ var _el$5 = _tmpl$$g();
41095
41234
  insert(_el$5, () => local.description);
41096
41235
  createRenderEffect(() => setAttribute(_el$5, "id", descriptionId()));
41097
41236
  return _el$5;
@@ -41102,7 +41241,7 @@ function Checkbox(props) {
41102
41241
  return local.error;
41103
41242
  },
41104
41243
  get children() {
41105
- var _el$6 = _tmpl$2$9();
41244
+ var _el$6 = _tmpl$2$a();
41106
41245
  insert(_el$6, () => local.error);
41107
41246
  createRenderEffect(() => setAttribute(_el$6, "id", errorId()));
41108
41247
  return _el$6;
@@ -41120,7 +41259,7 @@ function Checkbox(props) {
41120
41259
  return _el$;
41121
41260
  })();
41122
41261
  }
41123
- 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$6 = /* @__PURE__ */ template(`<label><select>`), _tmpl$5$4 = /* @__PURE__ */ template(`<option>`);
41262
+ 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>`);
41124
41263
  function SelectField(props) {
41125
41264
  const fallbackId = createUniqueId();
41126
41265
  const [local, others] = splitProps(props, ["label", "description", "error", "labelClass", "controlClass", "options", "onChange", "class", "classList", "id", "value"]);
@@ -41129,13 +41268,13 @@ function SelectField(props) {
41129
41268
  const descriptionId = () => `${id()}-description`;
41130
41269
  const errorId = () => `${id()}-error`;
41131
41270
  return (() => {
41132
- var _el$ = _tmpl$4$6(), _el$3 = _el$.firstChild;
41271
+ var _el$ = _tmpl$4$5(), _el$3 = _el$.firstChild;
41133
41272
  insert(_el$, createComponent(Show, {
41134
41273
  get when() {
41135
41274
  return local.label;
41136
41275
  },
41137
41276
  get children() {
41138
- var _el$2 = _tmpl$$e();
41277
+ var _el$2 = _tmpl$$f();
41139
41278
  insert(_el$2, () => local.label);
41140
41279
  createRenderEffect(() => className(_el$2, `oasis-editor-ui-field-label ${local.labelClass ?? ""}`));
41141
41280
  return _el$2;
@@ -41168,7 +41307,7 @@ function SelectField(props) {
41168
41307
  return local.options;
41169
41308
  },
41170
41309
  children: (option) => (() => {
41171
- var _el$6 = _tmpl$5$4();
41310
+ var _el$6 = _tmpl$5$3();
41172
41311
  insert(_el$6, () => option.label);
41173
41312
  createRenderEffect((_p$) => {
41174
41313
  var _v$4 = option.disabled, _v$5 = option.value === currentValue();
@@ -41188,7 +41327,7 @@ function SelectField(props) {
41188
41327
  return local.description;
41189
41328
  },
41190
41329
  get children() {
41191
- var _el$4 = _tmpl$2$8();
41330
+ var _el$4 = _tmpl$2$9();
41192
41331
  insert(_el$4, () => local.description);
41193
41332
  createRenderEffect(() => setAttribute(_el$4, "id", descriptionId()));
41194
41333
  return _el$4;
@@ -41234,7 +41373,7 @@ function NumberField(props) {
41234
41373
  }
41235
41374
  }, others));
41236
41375
  }
41237
- 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$5 = /* @__PURE__ */ template(`<div role=radiogroup>`);
41376
+ 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>`);
41238
41377
  const RadioGroupCtx = createContext();
41239
41378
  function Radio(props) {
41240
41379
  const fallbackId = createUniqueId();
@@ -41245,7 +41384,7 @@ function Radio(props) {
41245
41384
  const checked = () => group ? group.value() === local.value : Boolean(local.checked);
41246
41385
  const disabled = () => Boolean(local.disabled) || (group ? group.disabled() : false);
41247
41386
  return (() => {
41248
- var _el$ = _tmpl$2$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
41387
+ var _el$ = _tmpl$2$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
41249
41388
  _el$2.addEventListener("change", (event) => {
41250
41389
  var _a;
41251
41390
  if (group) group.onSelect(local.value);
@@ -41277,7 +41416,7 @@ function Radio(props) {
41277
41416
  return local.description;
41278
41417
  },
41279
41418
  get children() {
41280
- var _el$5 = _tmpl$$d();
41419
+ var _el$5 = _tmpl$$e();
41281
41420
  insert(_el$5, () => local.description);
41282
41421
  createRenderEffect(() => setAttribute(_el$5, "id", descriptionId()));
41283
41422
  return _el$5;
@@ -41309,7 +41448,7 @@ function RadioGroup(props) {
41309
41448
  return createComponent(RadioGroupCtx.Provider, {
41310
41449
  value: ctx,
41311
41450
  get children() {
41312
- var _el$6 = _tmpl$4$5();
41451
+ var _el$6 = _tmpl$4$4();
41313
41452
  insert(_el$6, createComponent(Show, {
41314
41453
  get when() {
41315
41454
  return props.label;
@@ -41362,7 +41501,7 @@ function RadioGroup(props) {
41362
41501
  }
41363
41502
  });
41364
41503
  }
41365
- var _tmpl$$c = /* @__PURE__ */ template(`<div>`);
41504
+ var _tmpl$$d = /* @__PURE__ */ template(`<div>`);
41366
41505
  const ALIGN_MAP = {
41367
41506
  start: "flex-start",
41368
41507
  center: "center",
@@ -41372,7 +41511,7 @@ const ALIGN_MAP = {
41372
41511
  function FieldRow(props) {
41373
41512
  const [local, others] = splitProps(props, ["align", "class", "style", "children"]);
41374
41513
  return (() => {
41375
- var _el$ = _tmpl$$c();
41514
+ var _el$ = _tmpl$$d();
41376
41515
  spread(_el$, mergeProps({
41377
41516
  get ["class"]() {
41378
41517
  return `oasis-editor-ui-field-row ${local.class ?? ""}`;
@@ -41388,11 +41527,11 @@ function FieldRow(props) {
41388
41527
  return _el$;
41389
41528
  })();
41390
41529
  }
41391
- var _tmpl$$b = /* @__PURE__ */ template(`<legend>`), _tmpl$2$6 = /* @__PURE__ */ template(`<fieldset>`);
41530
+ var _tmpl$$c = /* @__PURE__ */ template(`<legend>`), _tmpl$2$7 = /* @__PURE__ */ template(`<fieldset>`);
41392
41531
  function FieldGroup(props) {
41393
41532
  const [local, others] = splitProps(props, ["legend", "legendClass", "class", "children"]);
41394
41533
  return (() => {
41395
- var _el$ = _tmpl$2$6();
41534
+ var _el$ = _tmpl$2$7();
41396
41535
  spread(_el$, mergeProps({
41397
41536
  get ["class"]() {
41398
41537
  return `oasis-editor-ui-field-group ${local.class ?? ""}`;
@@ -41403,7 +41542,7 @@ function FieldGroup(props) {
41403
41542
  return local.legend;
41404
41543
  },
41405
41544
  get children() {
41406
- var _el$2 = _tmpl$$b();
41545
+ var _el$2 = _tmpl$$c();
41407
41546
  insert(_el$2, () => local.legend);
41408
41547
  createRenderEffect(() => className(_el$2, `oasis-editor-ui-field-group-legend ${local.legendClass ?? ""}`));
41409
41548
  return _el$2;
@@ -41413,11 +41552,11 @@ function FieldGroup(props) {
41413
41552
  return _el$;
41414
41553
  })();
41415
41554
  }
41416
- var _tmpl$$a = /* @__PURE__ */ template(`<label><input type=checkbox class=oasis-editor-ui-toggle-chip-input><span class=oasis-editor-ui-toggle-chip-label>`);
41555
+ var _tmpl$$b = /* @__PURE__ */ template(`<label><input type=checkbox class=oasis-editor-ui-toggle-chip-input><span class=oasis-editor-ui-toggle-chip-label>`);
41417
41556
  function ToggleChip(props) {
41418
41557
  const [local, others] = splitProps(props, ["label", "labelStyle", "onChange", "class", "checked"]);
41419
41558
  return (() => {
41420
- var _el$ = _tmpl$$a(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
41559
+ var _el$ = _tmpl$$b(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
41421
41560
  _el$2.addEventListener("change", (event) => {
41422
41561
  var _a;
41423
41562
  return (_a = local.onChange) == null ? void 0 : _a.call(local, event.currentTarget.checked);
@@ -41442,11 +41581,11 @@ function ToggleChip(props) {
41442
41581
  return _el$;
41443
41582
  })();
41444
41583
  }
41445
- var _tmpl$$9 = /* @__PURE__ */ template(`<div>`);
41584
+ var _tmpl$$a = /* @__PURE__ */ template(`<div>`);
41446
41585
  function DialogFooter(props) {
41447
41586
  const [local, others] = splitProps(props, ["align", "class", "classList", "children"]);
41448
41587
  return (() => {
41449
- var _el$ = _tmpl$$9();
41588
+ var _el$ = _tmpl$$a();
41450
41589
  spread(_el$, mergeProps({
41451
41590
  get ["class"]() {
41452
41591
  return `oasis-editor-ui-dialog-footer ${local.class ?? ""}`;
@@ -41702,7 +41841,7 @@ const UNDERLINE_STYLE_OPTIONS = [
41702
41841
  }
41703
41842
  }
41704
41843
  ];
41705
- 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$4 = /* @__PURE__ */ template(`<span class="oasis-editor-underline-menu-stroke oasis-editor-underline-menu-stroke-svg">`), _tmpl$5$3 = /* @__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$3 = /* @__PURE__ */ template(`<span class=oasis-editor-underline-menu-stroke>`);
41844
+ 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>`);
41706
41845
  const mod$1 = /Mac/i.test(navigator.userAgent) ? "⌘" : "Ctrl";
41707
41846
  const TEST_ID = "editor-toolbar-underline";
41708
41847
  function UnderlineControl(props) {
@@ -41760,7 +41899,7 @@ function UnderlineControl(props) {
41760
41899
  },
41761
41900
  get children() {
41762
41901
  return [(() => {
41763
- var _el$ = _tmpl$$8(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
41902
+ var _el$ = _tmpl$$9(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
41764
41903
  _el$.$$click = () => {
41765
41904
  removeUnderline();
41766
41905
  setOpen(false);
@@ -41768,13 +41907,13 @@ function UnderlineControl(props) {
41768
41907
  insert(_el$3, () => t("toolbar.underlineRemove"));
41769
41908
  return _el$;
41770
41909
  })(), (() => {
41771
- var _el$4 = _tmpl$2$5();
41910
+ var _el$4 = _tmpl$2$6();
41772
41911
  insert(_el$4, createComponent(For, {
41773
41912
  each: UNDERLINE_STYLE_OPTIONS,
41774
41913
  children: (option) => {
41775
41914
  const isActive = () => active() && activeStyleValue() === option.value.toLowerCase();
41776
41915
  return (() => {
41777
- var _el$8 = _tmpl$5$3(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling;
41916
+ var _el$8 = _tmpl$5$2(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling;
41778
41917
  _el$8.$$click = () => {
41779
41918
  applyUnderlineStyle(option.value);
41780
41919
  setOpen(false);
@@ -41785,7 +41924,7 @@ function UnderlineControl(props) {
41785
41924
  },
41786
41925
  get fallback() {
41787
41926
  return (() => {
41788
- var _el$10 = _tmpl$6$3();
41927
+ var _el$10 = _tmpl$6$2();
41789
41928
  createRenderEffect((_$p) => style(_el$10, option.preview.borderStyle === "wavy" ? void 0 : {
41790
41929
  "border-bottom-style": option.preview.borderStyle,
41791
41930
  "border-bottom-width": option.preview.borderBottomWidth ?? "1px"
@@ -41794,7 +41933,7 @@ function UnderlineControl(props) {
41794
41933
  })();
41795
41934
  },
41796
41935
  get children() {
41797
- var _el$0 = _tmpl$4$4();
41936
+ var _el$0 = _tmpl$4$3();
41798
41937
  createRenderEffect(() => _el$0.innerHTML = option.preview.svg);
41799
41938
  return _el$0;
41800
41939
  }
@@ -41823,7 +41962,7 @@ function UnderlineControl(props) {
41823
41962
  });
41824
41963
  }
41825
41964
  delegateEvents(["click"]);
41826
- 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$3 = /* @__PURE__ */ template(`<option value=lowerRoman>`), _tmpl$5$2 = /* @__PURE__ */ template(`<option value=upperRoman>`), _tmpl$6$2 = /* @__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>`);
41965
+ 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>`);
41827
41966
  function ListOptionsControl(props) {
41828
41967
  const t = useI18n();
41829
41968
  const api = props.api;
@@ -41845,11 +41984,11 @@ function ListOptionsControl(props) {
41845
41984
  },
41846
41985
  get children() {
41847
41986
  return [(() => {
41848
- var _el$4 = _tmpl$$7();
41987
+ var _el$4 = _tmpl$$8();
41849
41988
  insert(_el$4, () => t("toolbar.formatDecimal"));
41850
41989
  return _el$4;
41851
41990
  })(), (() => {
41852
- var _el$5 = _tmpl$2$4();
41991
+ var _el$5 = _tmpl$2$5();
41853
41992
  insert(_el$5, () => t("toolbar.formatLowerLetter"));
41854
41993
  return _el$5;
41855
41994
  })(), (() => {
@@ -41857,15 +41996,15 @@ function ListOptionsControl(props) {
41857
41996
  insert(_el$6, () => t("toolbar.formatUpperLetter"));
41858
41997
  return _el$6;
41859
41998
  })(), (() => {
41860
- var _el$7 = _tmpl$4$3();
41999
+ var _el$7 = _tmpl$4$2();
41861
42000
  insert(_el$7, () => t("toolbar.formatLowerRoman"));
41862
42001
  return _el$7;
41863
42002
  })(), (() => {
41864
- var _el$8 = _tmpl$5$2();
42003
+ var _el$8 = _tmpl$5$1();
41865
42004
  insert(_el$8, () => t("toolbar.formatUpperRoman"));
41866
42005
  return _el$8;
41867
42006
  })(), (() => {
41868
- var _el$9 = _tmpl$6$2();
42007
+ var _el$9 = _tmpl$6$1();
41869
42008
  insert(_el$9, () => t("toolbar.formatBullet"));
41870
42009
  return _el$9;
41871
42010
  })()];
@@ -41883,7 +42022,7 @@ function parseNumber(value) {
41883
42022
  const parsed = Number(value);
41884
42023
  return Number.isFinite(parsed) ? parsed : null;
41885
42024
  }
41886
- var _tmpl$$6 = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-preview data-testid=editor-line-spacing-dialog-preview><br>`);
42025
+ var _tmpl$$7 = /* @__PURE__ */ template(`<div class=oasis-editor-dialog-preview data-testid=editor-line-spacing-dialog-preview><br>`);
41887
42026
  function LineSpacingDialog(props) {
41888
42027
  const t = useI18n();
41889
42028
  const [lineHeight, setLineHeight] = createSignal(null);
@@ -42014,7 +42153,7 @@ function LineSpacingDialog(props) {
42014
42153
  return t("lineSpacing.preview");
42015
42154
  },
42016
42155
  get children() {
42017
- var _el$ = _tmpl$$6(), _el$2 = _el$.firstChild;
42156
+ var _el$ = _tmpl$$7(), _el$2 = _el$.firstChild;
42018
42157
  insert(_el$, () => t("lineSpacing.previewText"), _el$2);
42019
42158
  insert(_el$, () => t("lineSpacing.previewText"), null);
42020
42159
  createRenderEffect((_$p) => style(_el$, previewStyle2(), _$p));
@@ -42024,7 +42163,7 @@ function LineSpacingDialog(props) {
42024
42163
  }
42025
42164
  });
42026
42165
  }
42027
- 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(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$4$2 = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown oasis-editor-line-spacing-button"aria-haspopup=menu data-testid=editor-toolbar-line-spacing><span class=oasis-editor-line-spacing-icon aria-hidden=true><svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><polyline points="4 7 7 4 10 7"></polyline><line x1=7 y1=4 x2=7 y2=20></line><polyline points="4 17 7 20 10 17"></polyline><line x1=13 y1=6 x2=21 y2=6></line><line x1=13 y1=12 x2=21 y2=12></line><line x1=13 y1=18 x2=21 y2=18>`), _tmpl$5$1 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2.5 stroke-linecap=round stroke-linejoin=round><polyline points="20 6 9 17 4 12">`), _tmpl$6$1 = /* @__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>`);
42166
+ 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>`);
42028
42167
  const PRESET_VALUES = [1, 1.15, 1.5, 2, 2.5, 3];
42029
42168
  function formatPreset(value) {
42030
42169
  return value.toFixed(value === Math.floor(value) ? 1 : 2);
@@ -42038,7 +42177,6 @@ function toStr(value) {
42038
42177
  function LineSpacingButton(props) {
42039
42178
  const t = useI18n();
42040
42179
  const api = props.api;
42041
- const [isOpen, setIsOpen] = createSignal(false);
42042
42180
  const [dialogOpen, setDialogOpen] = createSignal(false);
42043
42181
  const [dialogInitial, setDialogInitial] = createSignal({
42044
42182
  lineHeight: "",
@@ -42051,11 +42189,9 @@ function LineSpacingButton(props) {
42051
42189
  const num = Number(raw);
42052
42190
  return Number.isFinite(num) ? num : null;
42053
42191
  });
42054
- const close = () => setIsOpen(false);
42055
42192
  const applyPreset = (value) => {
42056
42193
  api.commands.execute("setLineHeight", value);
42057
42194
  api.focusEditor();
42058
- close();
42059
42195
  };
42060
42196
  const openDialog = () => {
42061
42197
  setDialogInitial({
@@ -42064,7 +42200,6 @@ function LineSpacingButton(props) {
42064
42200
  spacingAfter: toStr(api.commands.state("setSpacingAfter").value)
42065
42201
  });
42066
42202
  setDialogOpen(true);
42067
- close();
42068
42203
  };
42069
42204
  const handleDialogApply = (values, original) => {
42070
42205
  const originalLH = original.lineHeight ? Number(original.lineHeight) : null;
@@ -42081,105 +42216,83 @@ function LineSpacingButton(props) {
42081
42216
  }
42082
42217
  api.focusEditor();
42083
42218
  };
42084
- return (() => {
42085
- var _el$ = _tmpl$3$2();
42086
- insert(_el$, createComponent(Popover, {
42087
- get open() {
42088
- return isOpen();
42089
- },
42090
- onOpenChange: setIsOpen,
42091
- panelRole: "menu",
42092
- panelClass: "oasis-editor-toolbar-dropdown-menu oasis-editor-line-spacing-menu",
42093
- trigger: (popover) => (() => {
42094
- var _el$6 = _tmpl$4$2();
42095
- _el$6.$$click = () => popover.toggle();
42096
- use((el) => popover.ref(el), _el$6);
42097
- createRenderEffect((_p$) => {
42098
- var _v$ = !!popover.open, _v$2 = t("metric.lineSpacing"), _v$3 = t("metric.lineSpacing"), _v$4 = popover.open;
42099
- _v$ !== _p$.e && _el$6.classList.toggle("oasis-editor-tool-button-active", _p$.e = _v$);
42100
- _v$2 !== _p$.t && setAttribute(_el$6, "title", _p$.t = _v$2);
42101
- _v$3 !== _p$.a && setAttribute(_el$6, "aria-label", _p$.a = _v$3);
42102
- _v$4 !== _p$.o && setAttribute(_el$6, "aria-expanded", _p$.o = _v$4);
42103
- return _p$;
42104
- }, {
42105
- e: void 0,
42106
- t: void 0,
42107
- a: void 0,
42108
- o: void 0
42109
- });
42110
- return _el$6;
42111
- })(),
42112
- get children() {
42113
- return [createComponent(For, {
42114
- each: PRESET_VALUES,
42115
- children: (value) => {
42116
- const label = formatPreset(value);
42117
- const isActive = () => {
42118
- const lh = currentLineHeight();
42119
- return lh !== null && approxEqual(lh, value);
42120
- };
42121
- return (() => {
42122
- var _el$7 = _tmpl$6$1(), _el$8 = _el$7.firstChild, _el$0 = _el$8.nextSibling;
42123
- _el$7.$$click = () => applyPreset(value);
42124
- insert(_el$8, createComponent(Show, {
42125
- get when() {
42126
- return isActive();
42127
- },
42128
- get children() {
42129
- return _tmpl$5$1();
42130
- }
42131
- }));
42132
- insert(_el$0, label);
42133
- createRenderEffect((_p$) => {
42134
- var _v$5 = !!isActive(), _v$6 = isActive(), _v$7 = `editor-toolbar-line-spacing-${label.replace(".", "_")}`, _v$8 = t("metric.lineSpacingOption", [label]);
42135
- _v$5 !== _p$.e && _el$7.classList.toggle("oasis-editor-line-spacing-item-active", _p$.e = _v$5);
42136
- _v$6 !== _p$.t && setAttribute(_el$7, "aria-checked", _p$.t = _v$6);
42137
- _v$7 !== _p$.a && setAttribute(_el$7, "data-testid", _p$.a = _v$7);
42138
- _v$8 !== _p$.o && setAttribute(_el$7, "title", _p$.o = _v$8);
42139
- return _p$;
42140
- }, {
42141
- e: void 0,
42142
- t: void 0,
42143
- a: void 0,
42144
- o: void 0
42145
- });
42146
- return _el$7;
42147
- })();
42148
- }
42149
- }), _tmpl$$5(), (() => {
42150
- var _el$3 = _tmpl$2$3(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
42151
- _el$3.$$click = openDialog;
42152
- insert(_el$5, () => t("metric.lineSpacingOptions"));
42153
- return _el$3;
42154
- })()];
42155
- }
42156
- }), null);
42157
- insert(_el$, createComponent(Show, {
42158
- get when() {
42159
- return dialogOpen();
42160
- },
42161
- get children() {
42162
- return createComponent(Portal, {
42163
- get children() {
42164
- return createComponent(LineSpacingDialog, {
42165
- get isOpen() {
42166
- return dialogOpen();
42167
- },
42168
- get initial() {
42169
- return dialogInitial();
42219
+ return [createComponent(Menu, {
42220
+ icon: "lineSpacing",
42221
+ testId: "editor-toolbar-line-spacing",
42222
+ get tooltip() {
42223
+ return t("metric.lineSpacing");
42224
+ },
42225
+ panelClass: "oasis-editor-line-spacing-menu",
42226
+ get children() {
42227
+ return [createComponent(For, {
42228
+ each: PRESET_VALUES,
42229
+ children: (value) => {
42230
+ const label = formatPreset(value);
42231
+ const isActive = () => {
42232
+ const lh = currentLineHeight();
42233
+ return lh !== null && approxEqual(lh, value);
42234
+ };
42235
+ return (() => {
42236
+ var _el$5 = _tmpl$3$2(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
42237
+ _el$5.$$click = () => applyPreset(value);
42238
+ insert(_el$6, createComponent(Show, {
42239
+ get when() {
42240
+ return isActive();
42170
42241
  },
42171
- onClose: () => setDialogOpen(false),
42172
- onApply: handleDialogApply
42242
+ get children() {
42243
+ return createComponent(CheckIcon, {
42244
+ size: 14
42245
+ });
42246
+ }
42247
+ }));
42248
+ insert(_el$7, label);
42249
+ createRenderEffect((_p$) => {
42250
+ var _v$ = !!isActive(), _v$2 = isActive(), _v$3 = `editor-toolbar-line-spacing-${label.replace(".", "_")}`, _v$4 = t("metric.lineSpacingOption", [label]);
42251
+ _v$ !== _p$.e && _el$5.classList.toggle("oasis-editor-line-spacing-item-active", _p$.e = _v$);
42252
+ _v$2 !== _p$.t && setAttribute(_el$5, "aria-checked", _p$.t = _v$2);
42253
+ _v$3 !== _p$.a && setAttribute(_el$5, "data-testid", _p$.a = _v$3);
42254
+ _v$4 !== _p$.o && setAttribute(_el$5, "title", _p$.o = _v$4);
42255
+ return _p$;
42256
+ }, {
42257
+ e: void 0,
42258
+ t: void 0,
42259
+ a: void 0,
42260
+ o: void 0
42173
42261
  });
42174
- }
42175
- });
42176
- }
42177
- }), null);
42178
- return _el$;
42179
- })();
42262
+ return _el$5;
42263
+ })();
42264
+ }
42265
+ }), _tmpl$$6(), (() => {
42266
+ var _el$2 = _tmpl$2$4(), _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
42267
+ _el$2.$$click = openDialog;
42268
+ insert(_el$4, () => t("metric.lineSpacingOptions"));
42269
+ return _el$2;
42270
+ })()];
42271
+ }
42272
+ }), createComponent(Show, {
42273
+ get when() {
42274
+ return dialogOpen();
42275
+ },
42276
+ get children() {
42277
+ return createComponent(Portal, {
42278
+ get children() {
42279
+ return createComponent(LineSpacingDialog, {
42280
+ get isOpen() {
42281
+ return dialogOpen();
42282
+ },
42283
+ get initial() {
42284
+ return dialogInitial();
42285
+ },
42286
+ onClose: () => setDialogOpen(false),
42287
+ onApply: handleDialogApply
42288
+ });
42289
+ }
42290
+ });
42291
+ }
42292
+ })];
42180
42293
  }
42181
42294
  delegateEvents(["click"]);
42182
- 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>`);
42295
+ 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>`);
42183
42296
  const numValue = (api, command) => {
42184
42297
  const value = api.commands.state(command).value;
42185
42298
  return value == null ? "" : String(value);
@@ -42198,7 +42311,7 @@ function MetricGroup(props) {
42198
42311
  keepMounted: true,
42199
42312
  get children() {
42200
42313
  return [(() => {
42201
- var _el$ = _tmpl$$4();
42314
+ var _el$ = _tmpl$$5();
42202
42315
  insert(_el$, createComponent(Button$1, {
42203
42316
  icon: "file-up",
42204
42317
  get active() {
@@ -42223,7 +42336,7 @@ function MetricGroup(props) {
42223
42336
  }), null);
42224
42337
  return _el$;
42225
42338
  })(), (() => {
42226
- var _el$2 = _tmpl$2$2();
42339
+ var _el$2 = _tmpl$2$3();
42227
42340
  insert(_el$2, createComponent(NumberField, {
42228
42341
  "class": "oasis-editor-tool-metric",
42229
42342
  labelClass: "oasis-editor-tool-metric-label",
@@ -42325,7 +42438,7 @@ function MetricGroup(props) {
42325
42438
  }
42326
42439
  });
42327
42440
  }
42328
- var _tmpl$$3 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel-section oasis-editor-toolbar-panel-actions">`);
42441
+ var _tmpl$$4 = /* @__PURE__ */ template(`<div class="oasis-editor-toolbar-panel-section oasis-editor-toolbar-panel-actions">`);
42329
42442
  function SectionGroup(props) {
42330
42443
  const t = useI18n();
42331
42444
  const api = props.api;
@@ -42342,7 +42455,7 @@ function SectionGroup(props) {
42342
42455
  keepMounted: true,
42343
42456
  get children() {
42344
42457
  return [(() => {
42345
- var _el$ = _tmpl$$3();
42458
+ var _el$ = _tmpl$$4();
42346
42459
  insert(_el$, createComponent(Button$1, {
42347
42460
  icon: "rectangle-vertical",
42348
42461
  get active() {
@@ -42373,7 +42486,7 @@ function SectionGroup(props) {
42373
42486
  }), null);
42374
42487
  return _el$;
42375
42488
  })(), (() => {
42376
- var _el$2 = _tmpl$$3();
42489
+ var _el$2 = _tmpl$$4();
42377
42490
  insert(_el$2, createComponent(Button$1, {
42378
42491
  icon: "scissors",
42379
42492
  "data-testid": "editor-toolbar-section-break-next",
@@ -42455,7 +42568,7 @@ function marginsMatchPreset(margins, preset) {
42455
42568
  const target = presetMarginsPx(preset);
42456
42569
  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;
42457
42570
  }
42458
- 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>`);
42571
+ 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>`);
42459
42572
  const FIELDS = [{
42460
42573
  key: "top",
42461
42574
  labelKey: "section.marginField.top"
@@ -42525,7 +42638,7 @@ function MarginsGroup(props) {
42525
42638
  keepMounted: true,
42526
42639
  get children() {
42527
42640
  return [(() => {
42528
- var _el$ = _tmpl$$2();
42641
+ var _el$ = _tmpl$$3();
42529
42642
  insert(_el$, createComponent(For, {
42530
42643
  each: MARGIN_PRESETS,
42531
42644
  children: (preset) => (() => {
@@ -42556,7 +42669,7 @@ function MarginsGroup(props) {
42556
42669
  return showCustom();
42557
42670
  },
42558
42671
  get children() {
42559
- var _el$6 = _tmpl$2$1();
42672
+ var _el$6 = _tmpl$2$2();
42560
42673
  insert(_el$6, createComponent(For, {
42561
42674
  each: FIELDS,
42562
42675
  children: (field) => (() => {
@@ -43085,7 +43198,7 @@ function shapeLabel(preset, locale) {
43085
43198
  var _a;
43086
43199
  return ((_a = SHAPE_LABELS[preset]) == null ? void 0 : _a[locale]) ?? preset;
43087
43200
  }
43088
- 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>`);
43201
+ 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>`);
43089
43202
  const PREVIEW_W = 22;
43090
43203
  const PREVIEW_H = 22;
43091
43204
  const PREVIEW_PAD = 2;
@@ -43116,7 +43229,7 @@ function ShapeThumbnail(props) {
43116
43229
  const d = () => presetToSvgPath(props.preset, PREVIEW_PAD, PREVIEW_PAD, PREVIEW_W - PREVIEW_PAD * 2, PREVIEW_H - PREVIEW_PAD * 2);
43117
43230
  const strokeOnly = () => STROKE_ONLY_PRESETS.has(props.preset);
43118
43231
  return (() => {
43119
- var _el$ = _tmpl$$1(), _el$2 = _el$.firstChild;
43232
+ var _el$ = _tmpl$$2(), _el$2 = _el$.firstChild;
43120
43233
  createRenderEffect((_p$) => {
43121
43234
  var _v$ = d(), _v$2 = strokeOnly() ? "none" : "currentColor", _v$3 = strokeOnly() ? void 0 : "0.18";
43122
43235
  _v$ !== _p$.e && setAttribute(_el$2, "d", _p$.e = _v$);
@@ -43157,7 +43270,7 @@ function pushRecentShape(preset) {
43157
43270
  }
43158
43271
  return next;
43159
43272
  }
43160
- 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>`);
43273
+ 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>`);
43161
43274
  function ShapeGallery(props) {
43162
43275
  const t = useI18n();
43163
43276
  const locale = () => t("locale.id") === "en" ? "en" : "pt-BR";
@@ -43168,7 +43281,7 @@ function ShapeGallery(props) {
43168
43281
  props.api.focusEditor();
43169
43282
  };
43170
43283
  const Tile = (tileProps) => (() => {
43171
- var _el$ = _tmpl$();
43284
+ var _el$ = _tmpl$$1();
43172
43285
  _el$.$$click = () => insert$1(tileProps.preset);
43173
43286
  insert(_el$, createComponent(ShapeThumbnail, {
43174
43287
  get preset() {
@@ -43196,7 +43309,7 @@ function ShapeGallery(props) {
43196
43309
  },
43197
43310
  get children() {
43198
43311
  return [(() => {
43199
- var _el$3 = _tmpl$2();
43312
+ var _el$3 = _tmpl$2$1();
43200
43313
  insert(_el$3, () => t("toolbar.shapes.recentlyUsed"));
43201
43314
  return _el$3;
43202
43315
  })(), (() => {
@@ -43216,7 +43329,7 @@ function ShapeGallery(props) {
43216
43329
  insert(_el$2, createComponent(For, {
43217
43330
  each: SHAPE_CATEGORIES,
43218
43331
  children: (category) => [(() => {
43219
- var _el$5 = _tmpl$2();
43332
+ var _el$5 = _tmpl$2$1();
43220
43333
  insert(_el$5, () => t(category.headerKey));
43221
43334
  return _el$5;
43222
43335
  })(), (() => {
@@ -43236,6 +43349,109 @@ function ShapeGallery(props) {
43236
43349
  })();
43237
43350
  }
43238
43351
  delegateEvents(["click"]);
43352
+ 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>`);
43353
+ function cmValue(api, command) {
43354
+ const value = api.commands.state(command).value;
43355
+ return typeof value === "number" ? value.toFixed(2) : "";
43356
+ }
43357
+ function ImageSizeField(props) {
43358
+ const t = useI18n();
43359
+ const command = props.dimension === "height" ? "imageHeightCm" : "imageWidthCm";
43360
+ const labelKey = props.dimension === "height" ? "image.height" : "image.width";
43361
+ const icon = props.dimension === "height" ? "move-vertical" : "move-horizontal";
43362
+ return (() => {
43363
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
43364
+ insert(_el$2, createComponent(ToolIcon, {
43365
+ name: icon
43366
+ }));
43367
+ insert(_el$, createComponent(NumberField, {
43368
+ "class": "oasis-editor-tool-metric oasis-editor-image-size-metric",
43369
+ labelClass: "oasis-editor-tool-metric-label",
43370
+ get title() {
43371
+ return t(labelKey);
43372
+ },
43373
+ get label() {
43374
+ return t(labelKey);
43375
+ },
43376
+ controlClass: "oasis-editor-tool-number",
43377
+ get ["data-testid"]() {
43378
+ return `editor-toolbar-image-${props.dimension}`;
43379
+ },
43380
+ min: "0.1",
43381
+ step: "0.1",
43382
+ get value() {
43383
+ return cmValue(props.api, command);
43384
+ },
43385
+ onChange: (value) => {
43386
+ props.api.commands.execute(command, value == null ? "" : String(value));
43387
+ }
43388
+ }), null);
43389
+ return _el$;
43390
+ })();
43391
+ }
43392
+ const CROP_ASPECT_PRESETS = [{
43393
+ id: "reset",
43394
+ labelKey: "image.cropReset"
43395
+ }, {
43396
+ id: "1:1",
43397
+ labelKey: "image.cropRatio.square"
43398
+ }, {
43399
+ id: "16:9",
43400
+ labelKey: "image.cropRatio.16x9"
43401
+ }, {
43402
+ id: "4:3",
43403
+ labelKey: "image.cropRatio.4x3"
43404
+ }, {
43405
+ id: "3:2",
43406
+ labelKey: "image.cropRatio.3x2"
43407
+ }, {
43408
+ id: "2:3",
43409
+ labelKey: "image.cropRatio.2x3"
43410
+ }, {
43411
+ id: "3:4",
43412
+ labelKey: "image.cropRatio.3x4"
43413
+ }, {
43414
+ id: "9:16",
43415
+ labelKey: "image.cropRatio.9x16"
43416
+ }];
43417
+ function ImageCropMenu(props) {
43418
+ const t = useI18n();
43419
+ return (() => {
43420
+ var _el$3 = _tmpl$2(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
43421
+ insert(_el$3, createComponent(Button$1, {
43422
+ icon: "crop",
43423
+ get active() {
43424
+ return props.api.commands.state("imageCrop").isActive;
43425
+ },
43426
+ "data-testid": "editor-toolbar-image-crop-toggle",
43427
+ onClick: () => {
43428
+ props.api.commands.execute("imageCrop");
43429
+ },
43430
+ get label() {
43431
+ return t("image.crop");
43432
+ },
43433
+ get tooltip() {
43434
+ return t("image.crop");
43435
+ }
43436
+ }), _el$4);
43437
+ insert(_el$5, createComponent(For, {
43438
+ each: CROP_ASPECT_PRESETS,
43439
+ children: (preset) => createComponent(Button$1, {
43440
+ "class": "oasis-editor-image-crop-ratio",
43441
+ get label() {
43442
+ return t(preset.labelKey);
43443
+ },
43444
+ get ["data-testid"]() {
43445
+ return `editor-toolbar-image-crop-${preset.id}`;
43446
+ },
43447
+ onClick: () => {
43448
+ props.api.commands.execute("imageCropAspect", preset.id);
43449
+ }
43450
+ })
43451
+ }));
43452
+ return _el$3;
43453
+ })();
43454
+ }
43239
43455
  const RIBBON_PLACEMENTS = {
43240
43456
  "editor-toolbar-file-dropdown": { tab: "file", group: "document", row: 1 },
43241
43457
  "sep-file": { tab: "file", group: "document", row: 1 },
@@ -43281,6 +43497,9 @@ const RIBBON_PLACEMENTS = {
43281
43497
  row: 1
43282
43498
  },
43283
43499
  "sep-insert": { tab: "insert", group: "accessibility", row: 2 },
43500
+ "editor-toolbar-image-crop": { tab: "imageFormat", group: "size", row: 1 },
43501
+ "editor-toolbar-image-height": { tab: "imageFormat", group: "size", row: 1 },
43502
+ "editor-toolbar-image-width": { tab: "imageFormat", group: "size", row: 2 },
43284
43503
  "editor-toolbar-align-left": { tab: "home", group: "paragraph", row: 2 },
43285
43504
  "editor-toolbar-align-center": { tab: "home", group: "paragraph", row: 2 },
43286
43505
  "editor-toolbar-align-right": { tab: "home", group: "paragraph", row: 2 },
@@ -44024,6 +44243,30 @@ function createDefaultToolbarPreset(t) {
44024
44243
  isVisible: (api) => api.commands.state("insertImageCaption").isEnabled
44025
44244
  });
44026
44245
  items.push({ type: "separator", id: "sep-insert" });
44246
+ items.push({
44247
+ type: "menu",
44248
+ id: "editor-toolbar-image-crop",
44249
+ testId: "editor-toolbar-image-crop",
44250
+ iconName: "crop",
44251
+ tooltipKey: "image.crop",
44252
+ labelKey: "image.crop",
44253
+ ribbonSize: "large",
44254
+ isActive: (api) => api.commands.state("imageCrop").isActive,
44255
+ panelClass: "oasis-editor-image-crop-panel",
44256
+ content: { kind: "custom", render: (api) => ImageCropMenu({ api }) }
44257
+ });
44258
+ items.push({
44259
+ type: "custom",
44260
+ id: "editor-toolbar-image-height",
44261
+ testId: "editor-toolbar-image-height",
44262
+ render: (api) => ImageSizeField({ api, dimension: "height" })
44263
+ });
44264
+ items.push({
44265
+ type: "custom",
44266
+ id: "editor-toolbar-image-width",
44267
+ testId: "editor-toolbar-image-width",
44268
+ render: (api) => ImageSizeField({ api, dimension: "width" })
44269
+ });
44027
44270
  for (const button of ALIGN_BUTTONS) {
44028
44271
  items.push({
44029
44272
  type: "toggle",
@@ -44343,7 +44586,7 @@ export {
44343
44586
  underlineStyleToCssDecorationStyle as Z,
44344
44587
  resolveImageSrc as _,
44345
44588
  getPageBodyBottom as a,
44346
- resolveEffectiveParagraphStyle as a$,
44589
+ TABLE_BORDER_EDGE_KEYS as a$,
44347
44590
  isParagraphTag as a0,
44348
44591
  collectInlineRuns as a1,
44349
44592
  parseParagraphStyle as a2,
@@ -44368,19 +44611,19 @@ export {
44368
44611
  delegateEvents as aL,
44369
44612
  onMount as aM,
44370
44613
  onCleanup as aN,
44371
- use as aO,
44372
- PluginUiHost as aP,
44373
- OasisEditorEditor as aQ,
44374
- OasisBrandMark as aR,
44375
- setPreciseFontPreference as aS,
44376
- setWelcomeSeen as aT,
44377
- enablePreciseFontMode as aU,
44378
- TWIPS_PER_POINT as aV,
44379
- PX_PER_INCH as aW,
44380
- TWIPS_PER_INCH as aX,
44381
- normalizeHex6 as aY,
44382
- TABLE_CONDITIONAL_FLAG_ATTRIBUTES as aZ,
44383
- TABLE_BORDER_EDGE_KEYS as a_,
44614
+ CheckIcon as aO,
44615
+ use as aP,
44616
+ PluginUiHost as aQ,
44617
+ OasisEditorEditor as aR,
44618
+ OasisBrandMark as aS,
44619
+ setPreciseFontPreference as aT,
44620
+ setWelcomeSeen as aU,
44621
+ enablePreciseFontMode as aV,
44622
+ TWIPS_PER_POINT as aW,
44623
+ PX_PER_INCH as aX,
44624
+ TWIPS_PER_INCH as aY,
44625
+ normalizeHex6 as aZ,
44626
+ TABLE_CONDITIONAL_FLAG_ATTRIBUTES as a_,
44384
44627
  createComponent as aa,
44385
44628
  CaretOverlay as ab,
44386
44629
  Show as ac,
@@ -44408,164 +44651,169 @@ export {
44408
44651
  FormField as ay,
44409
44652
  Checkbox as az,
44410
44653
  getPageBodyTop as b,
44411
- getDocumentParagraphsCanonical as b$,
44412
- resolveEffectiveTextStyleForParagraph as b0,
44413
- EMU_PER_PT as b1,
44414
- OOXML_ROTATION_UNITS as b2,
44415
- OOXML_PERCENT_DENOMINATOR as b3,
44416
- parseHexColorToRgb255 as b4,
44417
- EMU_PER_PX as b5,
44418
- getRunEndnoteReference as b6,
44419
- iterateFootnoteReferenceRuns as b7,
44420
- iterateEndnoteReferenceRuns as b8,
44421
- imageContentTypeDefaults as b9,
44422
- resolveDecorationLineY as bA,
44423
- DOUBLE_STRIKE_OFFSET_PX as bB,
44424
- resolveListLabel as bC,
44425
- getListLabelInset as bD,
44426
- getAlignedListLabelInset as bE,
44427
- getParagraphBorderInsets as bF,
44428
- buildSegmentTable as bG,
44429
- buildCanvasTableLayout as bH,
44430
- resolveCanvasTableWidth as bI,
44431
- resolveFloatingTableRect as bJ,
44432
- paragraphBetweenBorderMatches as bK,
44433
- normalizeFamily as bL,
44434
- ROBOTO_FONT_FILES as bM,
44435
- loadFontAsset as bN,
44436
- OFFICE_COMPAT_FONT_FAMILIES as bO,
44437
- BinaryReader as bP,
44438
- buildSfnt as bQ,
44439
- defaultFontDecoderRegistry as bR,
44440
- SfntFontProgram as bS,
44441
- collectPdfFontFamilies as bT,
44442
- outlineFrom as bU,
44443
- getPageHeaderZoneTop as bV,
44444
- getPageColumnRects as bW,
44445
- findFootnoteReference as bX,
44446
- resolveImporterForFile as bY,
44447
- roundTo as bZ,
44448
- getDocumentSectionsCanonical as b_,
44449
- getRunFieldChar as ba,
44450
- getRunFieldInstruction as bb,
44451
- createEditorRun as bc,
44452
- JSZip as bd,
44453
- imageExtensionFromMime as be,
44454
- pxToPt as bf,
44455
- resolveFloatingObjectRect as bg,
44456
- getTextBoxFloatingGeometry as bh,
44457
- getPresetPathSegments as bi,
44458
- buildListLabels as bj,
44459
- DEFAULT_FONT_SIZE_PX as bk,
44460
- resolveGradientAxis as bl,
44461
- isDoubleUnderlineStyle as bm,
44462
- isWavyUnderlineStyle as bn,
44463
- underlineStyleLineWidthPx as bo,
44464
- WAVY_UNDERLINE_WAVELENGTH_PX as bp,
44465
- WAVY_UNDERLINE_AMPLITUDE_PX as bq,
44466
- DOUBLE_UNDERLINE_OFFSET_PX as br,
44467
- underlineStyleDashArray as bs,
44468
- EMPHASIS_GLYPH as bt,
44469
- rgb255ToHex as bu,
44470
- getImageFloatingGeometry as bv,
44471
- textStyleToFontSizePt as bw,
44472
- resolveTextAlignmentBaselineOffset as bx,
44473
- TEXT_BASELINE_RATIO as by,
44474
- resolveOpenTypeFeatureTags as bz,
44654
+ getDocumentSectionsCanonical as b$,
44655
+ resolveEffectiveParagraphStyle as b0,
44656
+ resolveEffectiveTextStyleForParagraph as b1,
44657
+ EMU_PER_PT as b2,
44658
+ OOXML_ROTATION_UNITS as b3,
44659
+ OOXML_PERCENT_DENOMINATOR as b4,
44660
+ parseHexColorToRgb255 as b5,
44661
+ EMU_PER_PX as b6,
44662
+ getRunEndnoteReference as b7,
44663
+ iterateFootnoteReferenceRuns as b8,
44664
+ iterateEndnoteReferenceRuns as b9,
44665
+ resolveOpenTypeFeatureTags as bA,
44666
+ resolveDecorationLineY as bB,
44667
+ DOUBLE_STRIKE_OFFSET_PX as bC,
44668
+ resolveListLabel as bD,
44669
+ getListLabelInset as bE,
44670
+ getAlignedListLabelInset as bF,
44671
+ getParagraphBorderInsets as bG,
44672
+ buildSegmentTable as bH,
44673
+ buildCanvasTableLayout as bI,
44674
+ resolveCanvasTableWidth as bJ,
44675
+ resolveFloatingTableRect as bK,
44676
+ paragraphBetweenBorderMatches as bL,
44677
+ normalizeFamily as bM,
44678
+ ROBOTO_FONT_FILES as bN,
44679
+ loadFontAsset as bO,
44680
+ OFFICE_COMPAT_FONT_FAMILIES as bP,
44681
+ BinaryReader as bQ,
44682
+ buildSfnt as bR,
44683
+ defaultFontDecoderRegistry as bS,
44684
+ SfntFontProgram as bT,
44685
+ collectPdfFontFamilies as bU,
44686
+ outlineFrom as bV,
44687
+ getPageHeaderZoneTop as bW,
44688
+ getPageColumnRects as bX,
44689
+ findFootnoteReference as bY,
44690
+ resolveImporterForFile as bZ,
44691
+ roundTo as b_,
44692
+ imageContentTypeDefaults as ba,
44693
+ getRunFieldChar as bb,
44694
+ getRunFieldInstruction as bc,
44695
+ createEditorRun as bd,
44696
+ JSZip as be,
44697
+ imageExtensionFromMime as bf,
44698
+ pxToPt as bg,
44699
+ resolveFloatingObjectRect as bh,
44700
+ getTextBoxFloatingGeometry as bi,
44701
+ getPresetPathSegments as bj,
44702
+ buildListLabels as bk,
44703
+ DEFAULT_FONT_SIZE_PX as bl,
44704
+ resolveGradientAxis as bm,
44705
+ isDoubleUnderlineStyle as bn,
44706
+ isWavyUnderlineStyle as bo,
44707
+ underlineStyleLineWidthPx as bp,
44708
+ WAVY_UNDERLINE_WAVELENGTH_PX as bq,
44709
+ WAVY_UNDERLINE_AMPLITUDE_PX as br,
44710
+ DOUBLE_UNDERLINE_OFFSET_PX as bs,
44711
+ underlineStyleDashArray as bt,
44712
+ EMPHASIS_GLYPH as bu,
44713
+ rgb255ToHex as bv,
44714
+ getImageFloatingGeometry as bw,
44715
+ textStyleToFontSizePt as bx,
44716
+ resolveTextAlignmentBaselineOffset as by,
44717
+ TEXT_BASELINE_RATIO as bz,
44475
44718
  getPageContentWidth as c,
44476
- FieldRow as c$,
44477
- getDocumentParagraphs as c0,
44478
- getDocumentPageSettings as c1,
44479
- getTableCellContentWidthForParagraph as c2,
44480
- layoutMetricsEpoch as c3,
44481
- bumpLayoutMetricsEpoch as c4,
44482
- createCanvasLayoutSnapshotProvider as c5,
44483
- on as c6,
44484
- debounce as c7,
44485
- unwrap as c8,
44486
- perfTimer as c9,
44487
- fontSizePtToPx as cA,
44488
- resolveNamedTextStyle as cB,
44489
- createDefaultToolbarPreset as cC,
44490
- MenuRegistry as cD,
44491
- createToolbarRegistry as cE,
44492
- Editor as cF,
44493
- resolveCommandRef as cG,
44494
- commandRefName as cH,
44495
- createOasisEditorClient as cI,
44496
- createEditorZoom as cJ,
44497
- startLongTaskObserver as cK,
44498
- installGlobalReport as cL,
44499
- applyStoredPreciseFontPreference as cM,
44500
- getWelcomeSeen as cN,
44501
- isLocalFontAccessSupported as cO,
44502
- EDITOR_SCROLL_PADDING_PX as cP,
44503
- Toolbar as cQ,
44504
- OasisEditorLoading as cR,
44505
- I18nProvider as cS,
44506
- createTranslator as cT,
44507
- registerDomStatsSurface as cU,
44508
- createEditorLogger as cV,
44509
- ActionRow as cW,
44510
- ColorPicker as cX,
44511
- CommandRegistry as cY,
44512
- DEFAULT_PALETTE as cZ,
44513
- DialogFooter as c_,
44514
- getRunTextBox as ca,
44515
- createEditorDocument as cb,
44516
- resolveResizedDimensions as cc,
44517
- resolveTextBoxRenderHeight as cd,
44518
- getToolbarStyleState as ce,
44519
- VERTICAL_HIT_WEIGHT as cf,
44520
- getCachedCanvasImage as cg,
44521
- measureParagraphMinContentWidthPx as ch,
44522
- getEditableBlocksForZone as ci,
44523
- findParagraphLocation as cj,
44524
- createSectionBoundaryParagraph as ck,
44525
- normalizePageSettings as cl,
44526
- DEFAULT_EDITOR_PAGE_SETTINGS as cm,
44527
- markStart as cn,
44528
- markEnd as co,
44529
- getParagraphEntries as cp,
44530
- getParagraphById as cq,
44531
- createEditorFootnote as cr,
44532
- createFootnoteReferenceRun as cs,
44533
- renumberFootnotes as ct,
44534
- preciseFontModeVersion as cu,
44535
- isPreciseFontModeEnabled as cv,
44536
- getHeadingLevel as cw,
44537
- togglePreciseFontMode as cx,
44538
- nextFontSizePt as cy,
44539
- previousFontSizePt as cz,
44719
+ ActionRow as c$,
44720
+ getDocumentParagraphsCanonical as c0,
44721
+ getDocumentParagraphs as c1,
44722
+ PX_PER_CM as c2,
44723
+ getDocumentPageSettings as c3,
44724
+ getTableCellContentWidthForParagraph as c4,
44725
+ layoutMetricsEpoch as c5,
44726
+ bumpLayoutMetricsEpoch as c6,
44727
+ createCanvasLayoutSnapshotProvider as c7,
44728
+ on as c8,
44729
+ debounce as c9,
44730
+ isPreciseFontModeEnabled as cA,
44731
+ getHeadingLevel as cB,
44732
+ togglePreciseFontMode as cC,
44733
+ nextFontSizePt as cD,
44734
+ previousFontSizePt as cE,
44735
+ fontSizePtToPx as cF,
44736
+ resolveNamedTextStyle as cG,
44737
+ createDefaultToolbarPreset as cH,
44738
+ MenuRegistry as cI,
44739
+ createToolbarRegistry as cJ,
44740
+ Editor as cK,
44741
+ resolveCommandRef as cL,
44742
+ commandRefName as cM,
44743
+ createOasisEditorClient as cN,
44744
+ createEditorZoom as cO,
44745
+ startLongTaskObserver as cP,
44746
+ installGlobalReport as cQ,
44747
+ applyStoredPreciseFontPreference as cR,
44748
+ getWelcomeSeen as cS,
44749
+ isLocalFontAccessSupported as cT,
44750
+ EDITOR_SCROLL_PADDING_PX as cU,
44751
+ Toolbar as cV,
44752
+ OasisEditorLoading as cW,
44753
+ I18nProvider as cX,
44754
+ createTranslator as cY,
44755
+ registerDomStatsSurface as cZ,
44756
+ createEditorLogger as c_,
44757
+ unwrap as ca,
44758
+ perfTimer as cb,
44759
+ getRunTextBox as cc,
44760
+ createEditorDocument as cd,
44761
+ resolveResizedDimensions as ce,
44762
+ axisSignForDirection as cf,
44763
+ clamp as cg,
44764
+ MIN_RESIZE_SIZE_PX as ch,
44765
+ resolveTextBoxRenderHeight as ci,
44766
+ getToolbarStyleState as cj,
44767
+ VERTICAL_HIT_WEIGHT as ck,
44768
+ getCachedCanvasImage as cl,
44769
+ measureParagraphMinContentWidthPx as cm,
44770
+ getEditableBlocksForZone as cn,
44771
+ findParagraphLocation as co,
44772
+ createSectionBoundaryParagraph as cp,
44773
+ normalizePageSettings as cq,
44774
+ DEFAULT_EDITOR_PAGE_SETTINGS as cr,
44775
+ markStart as cs,
44776
+ markEnd as ct,
44777
+ getParagraphEntries as cu,
44778
+ getParagraphById as cv,
44779
+ createEditorFootnote as cw,
44780
+ createFootnoteReferenceRun as cx,
44781
+ renumberFootnotes as cy,
44782
+ preciseFontModeVersion as cz,
44540
44783
  domTextMeasurer as d,
44541
- FloatingActionButton as d0,
44542
- GridPicker as d1,
44543
- Heading as d2,
44544
- IconButton as d3,
44545
- Menu as d4,
44546
- OASIS_BUILTIN_COMMANDS as d5,
44547
- OASIS_MENU_ITEMS as d6,
44548
- OASIS_TOOLBAR_ITEMS as d7,
44549
- OasisEditorAppLazy as d8,
44550
- OasisEditorContainer as d9,
44551
- PluginCollection as da,
44552
- Popover as db,
44553
- RIBBON_TABS as dc,
44554
- Select as dd,
44555
- Separator as de,
44556
- SidePanel as df,
44557
- SidePanelBody as dg,
44558
- SidePanelFooter as dh,
44559
- SidePanelHeader as di,
44560
- SplitButton as dj,
44561
- StyleGallery as dk,
44562
- Button$1 as dl,
44563
- buildRibbonTabDefinitions as dm,
44564
- createEditorCommandBus as dn,
44565
- createOasisEditor as dp,
44566
- createOasisEditorContainer as dq,
44567
- mount as dr,
44568
- registerToolbarRenderer as ds,
44784
+ ColorPicker as d0,
44785
+ CommandRegistry as d1,
44786
+ DEFAULT_PALETTE as d2,
44787
+ DialogFooter as d3,
44788
+ FieldRow as d4,
44789
+ FloatingActionButton as d5,
44790
+ GridPicker as d6,
44791
+ Heading as d7,
44792
+ IconButton as d8,
44793
+ Menu as d9,
44794
+ OASIS_BUILTIN_COMMANDS as da,
44795
+ OASIS_MENU_ITEMS as db,
44796
+ OASIS_TOOLBAR_ITEMS as dc,
44797
+ OasisEditorAppLazy as dd,
44798
+ OasisEditorContainer as de,
44799
+ PluginCollection as df,
44800
+ Popover as dg,
44801
+ RIBBON_TABS as dh,
44802
+ Select as di,
44803
+ Separator as dj,
44804
+ SidePanel as dk,
44805
+ SidePanelBody as dl,
44806
+ SidePanelFooter as dm,
44807
+ SidePanelHeader as dn,
44808
+ SplitButton as dp,
44809
+ StyleGallery as dq,
44810
+ Button$1 as dr,
44811
+ buildRibbonTabDefinitions as ds,
44812
+ createEditorCommandBus as dt,
44813
+ createOasisEditor as du,
44814
+ createOasisEditorContainer as dv,
44815
+ mount as dw,
44816
+ registerToolbarRenderer as dx,
44569
44817
  estimateTableBlockHeight as e,
44570
44818
  getParagraphText as f,
44571
44819
  getProjectedParagraphBlockHeight as g,