oasis-editor 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { n as normalizeSelection, g as getParagraphs, c as createEditorParagraphFromRuns, a as getParagraphLength, b as createEditorRun, d as getDocumentSections, e as createEditorStyledRun, f as getParagraphText, h as getActiveZone, i as getActiveSectionIndex, p as positionToParagraphOffset, j as paragraphOffsetToPosition, k as clampPosition, l as findParagraphIndex, m as createCollapsedSelection, o as isSelectionCollapsed, q as createEditorParagraph, r as getBlockParagraphs, s as findParagraphTableLocation, t as buildTableCellLayout, u as createEditorTableCell, v as createEditorTable, w as createEditorTableRow, x as underlineStyleToCssDecorationStyle, y as resolveImageSrc, z as createEditorFootnote, A as createFootnoteReferenceRun, B as renumberFootnotes, C as iterateFootnoteReferenceRuns, D as getFootnoteDisplayMarker, E as createSignal, F as createEffect, G as onCleanup, H as buildCanvasLayoutSnapshot, I as on, J as onMount, K as debounce, L as unwrap, M as getDocumentParagraphs, N as getDocumentSectionsCanonical, O as createEditorDocument, P as getPageContentWidth, Q as getDocumentPageSettings, R as getTableCellContentWidthForParagraph, S as resolveResizedDimensions, T as resolveTextBoxRenderHeight, U as resolveEffectiveParagraphStyle, V as resolveEffectiveTextStyleForParagraph, W as iterateEndnoteReferenceRuns, X as JSZip, Y as imageContentTypeDefaults, Z as imageExtensionFromMime, _ as pxToPt$1, $ as buildSegmentTable, a0 as buildCanvasTableLayout, a1 as resolveFloatingObjectRect, a2 as getTextBoxFloatingGeometry, a3 as getPresetPathSegments, a4 as projectBlocksLayout, a5 as textStyleToFontSizePt, a6 as PX_PER_POINT, a7 as DEFAULT_FONT_SIZE_PX, a8 as isDoubleUnderlineStyle, a9 as isWavyUnderlineStyle, aa as underlineStyleLineWidthPx, ab as underlineStyleDashArray, ac as getListLabelInset, ad as getParagraphBorderInsets, ae as normalizeFamily, af as ROBOTO_FONT_FILES, ag as loadFontAsset, ah as OFFICE_COMPAT_FONT_FAMILIES, ai as buildSfnt, aj as defaultFontDecoderRegistry, ak as SfntFontProgram, al as collectPdfFontFamilies, am as projectDocumentLayout, an as getPageHeaderZoneTop, ao as getPageBodyTop, ap as getPageColumnRects, aq as findFootnoteReference, ar as FOOTNOTE_MARKER_GUTTER_PX, as as resolveImporterForFile, at as createEditorStateFromDocument, au as getDocumentParagraphsCanonical, av as getToolbarStyleState, aw as STANDARD_FONT_SIZES_PT, ax as fontSizePxToPt, ay as probeLocalFontFamilies, az as createInitialEditorState, aA as parseFontSizePtToPx, aB as formatFontSizePt, aC as listKindForTag, aD as isParagraphTag, aE as collectInlineRuns, aF as parseParagraphStyle, aG as t, aH as preciseFontModeVersion, aI as isPreciseFontModeEnabled, aJ as togglePreciseFontMode, aK as nextFontSizePt, aL as previousFontSizePt, aM as fontSizePtToPx, aN as createDefaultToolbarPreset, aO as defaultMenuItems, aP as MenuRegistry, aQ as createToolbarRegistry, aR as Editor, aS as resolveCommandRef, aT as commandRefName, aU as InlineShell, aV as BalloonShell, aW as DocumentShell, aX as createMemo, aY as getCaretRectFromSnapshot, aZ as getParagraphRectFromSnapshot, a_ as createComponent, a$ as CaretOverlay, b0 as Show, b1 as createRenderEffect, b2 as style, b3 as setAttribute, b4 as setStyleProperty, b5 as memo, b6 as template, b7 as insert, b8 as use, b9 as addEventListener, ba as Dialog, bb as delegateEvents, bc as className, bd as For, be as UNDERLINE_STYLE_OPTIONS, bf as Tabs, bg as measureParagraphMinContentWidthPx, bh as getEditableBlocksForZone, bi as findParagraphLocation, bj as createSectionBoundaryParagraph, bk as normalizePageSettings, bl as DEFAULT_EDITOR_PAGE_SETTINGS, bm as markStart, bn as markEnd, bo as getParagraphEntries, bp as getParagraphById, bq as PluginUiHost, br as OasisEditorEditor, bs as perfTimer, bt as OasisBrandMark, bu as setPreciseFontPreference, bv as setWelcomeSeen, bw as enablePreciseFontMode, bx as createOasisEditorClient, by as setLocale, bz as startLongTaskObserver, bA as installGlobalReport, bB as applyStoredPreciseFontPreference, bC as getWelcomeSeen, bD as isLocalFontAccessSupported, bE as EDITOR_SCROLL_PADDING_PX, bF as Toolbar, bG as OasisEditorLoading, bH as createEditorLogger, bI as getCachedCanvasImage, bJ as registerDomStatsSurface } from "./index-CBXD1ygJ.js";
4
+ import { n as normalizeSelection, g as getParagraphs, c as createEditorParagraphFromRuns, a as getParagraphLength, b as createEditorRun, d as getDocumentSections, e as createEditorStyledRun, f as getParagraphText, h as getActiveZone, i as getActiveSectionIndex, p as positionToParagraphOffset, j as paragraphOffsetToPosition, k as clampPosition, l as findParagraphIndex, m as createCollapsedSelection, o as isSelectionCollapsed, q as createEditorParagraph, r as getBlockParagraphs, s as findParagraphTableLocation, t as buildTableCellLayout, u as createEditorTableCell, v as createEditorTable, w as createEditorTableRow, x as underlineStyleToCssDecorationStyle, y as resolveImageSrc, z as createEditorFootnote, A as createFootnoteReferenceRun, B as renumberFootnotes, C as iterateFootnoteReferenceRuns, D as getFootnoteDisplayMarker, E as createSignal, F as createEffect, G as onCleanup, H as buildCanvasLayoutSnapshot, I as on, J as onMount, K as debounce, L as unwrap, M as getDocumentParagraphs, N as getDocumentSectionsCanonical, O as createEditorDocument, P as getPageContentWidth, Q as getDocumentPageSettings, R as getTableCellContentWidthForParagraph, S as resolveResizedDimensions, T as resolveTextBoxRenderHeight, U as resolveEffectiveParagraphStyle, V as resolveEffectiveTextStyleForParagraph, W as iterateEndnoteReferenceRuns, X as JSZip, Y as imageContentTypeDefaults, Z as imageExtensionFromMime, _ as pxToPt$1, $ as buildSegmentTable, a0 as buildCanvasTableLayout, a1 as resolveFloatingObjectRect, a2 as getTextBoxFloatingGeometry, a3 as getPresetPathSegments, a4 as projectBlocksLayout, a5 as textStyleToFontSizePt, a6 as PX_PER_POINT, a7 as DEFAULT_FONT_SIZE_PX, a8 as isDoubleUnderlineStyle, a9 as isWavyUnderlineStyle, aa as underlineStyleLineWidthPx, ab as underlineStyleDashArray, ac as getListLabelInset, ad as getParagraphBorderInsets, ae as normalizeFamily, af as ROBOTO_FONT_FILES, ag as loadFontAsset, ah as OFFICE_COMPAT_FONT_FAMILIES, ai as buildSfnt, aj as defaultFontDecoderRegistry, ak as SfntFontProgram, al as collectPdfFontFamilies, am as projectDocumentLayout, an as getPageHeaderZoneTop, ao as getPageBodyTop, ap as getPageColumnRects, aq as findFootnoteReference, ar as FOOTNOTE_MARKER_GUTTER_PX, as as resolveImporterForFile, at as createEditorStateFromDocument, au as getDocumentParagraphsCanonical, av as getToolbarStyleState, aw as STANDARD_FONT_SIZES_PT, ax as fontSizePxToPt, ay as probeLocalFontFamilies, az as createInitialEditorState, aA as parseFontSizePtToPx, aB as formatFontSizePt, aC as listKindForTag, aD as isParagraphTag, aE as collectInlineRuns, aF as parseParagraphStyle, aG as t, aH as preciseFontModeVersion, aI as isPreciseFontModeEnabled, aJ as togglePreciseFontMode, aK as nextFontSizePt, aL as previousFontSizePt, aM as fontSizePtToPx, aN as createDefaultToolbarPreset, aO as defaultMenuItems, aP as MenuRegistry, aQ as createToolbarRegistry, aR as Editor, aS as resolveCommandRef, aT as commandRefName, aU as InlineShell, aV as BalloonShell, aW as DocumentShell, aX as createMemo, aY as getCaretRectFromSnapshot, aZ as getParagraphRectFromSnapshot, a_ as createComponent, a$ as CaretOverlay, b0 as Show, b1 as createRenderEffect, b2 as style, b3 as setAttribute, b4 as setStyleProperty, b5 as memo, b6 as template, b7 as insert, b8 as use, b9 as addEventListener, ba as Dialog, bb as delegateEvents, bc as className, bd as For, be as UNDERLINE_STYLE_OPTIONS, bf as Tabs, bg as measureParagraphMinContentWidthPx, bh as getEditableBlocksForZone, bi as findParagraphLocation, bj as createSectionBoundaryParagraph, bk as normalizePageSettings, bl as DEFAULT_EDITOR_PAGE_SETTINGS, bm as markStart, bn as markEnd, bo as getParagraphEntries, bp as getParagraphById, bq as PluginUiHost, br as OasisEditorEditor, bs as perfTimer, bt as OasisBrandMark, bu as setPreciseFontPreference, bv as setWelcomeSeen, bw as enablePreciseFontMode, bx as createOasisEditorClient, by as setLocale, bz as startLongTaskObserver, bA as installGlobalReport, bB as applyStoredPreciseFontPreference, bC as getWelcomeSeen, bD as isLocalFontAccessSupported, bE as EDITOR_SCROLL_PADDING_PX, bF as Toolbar, bG as OasisEditorLoading, bH as createEditorLogger, bI as getCachedCanvasImage, bJ as registerDomStatsSurface } from "./index-BmpiQ2A0.js";
5
5
  function getSelectedObjectRun(state, predicate) {
6
6
  const normalized = normalizeSelection(state);
7
7
  if (normalized.isCollapsed || normalized.startIndex !== normalized.endIndex || normalized.endParagraphOffset - normalized.startParagraphOffset !== 1) {
@@ -41841,6 +41841,7 @@ function useEditorRuntimePlugins(options) {
41841
41841
  tab: item.tab ?? "plugins",
41842
41842
  group: item.group ?? "general",
41843
41843
  row: item.row ?? 1,
41844
+ ribbonSize: item.ribbonSize,
41844
41845
  order: item.order
41845
41846
  };
41846
41847
  toolbarRegistry.register(contributed);
@@ -2,7 +2,7 @@ import { JSX } from 'solid-js';
2
2
  import { EditorState } from './model.js';
3
3
  import { Editor } from './Editor.js';
4
4
  import { CommandRef } from './commands/CommandRef.js';
5
- import { RibbonRow, RibbonTabId } from '../ui/components/Toolbar/schema/items.js';
5
+ import { RibbonRow, RibbonSize, RibbonTabId } from '../ui/components/Toolbar/schema/items.js';
6
6
 
7
7
  export type Unsubscribe = () => void;
8
8
  export interface OasisCommandContext {
@@ -47,6 +47,7 @@ export interface PluginAction {
47
47
  tab?: RibbonTabId;
48
48
  group?: string;
49
49
  row?: RibbonRow;
50
+ ribbonSize?: RibbonSize;
50
51
  order?: number;
51
52
  }
52
53
  export interface PluginMenuItem extends PluginAction {
@@ -2366,7 +2366,7 @@ function OasisBrandMark(props) {
2366
2366
  return _el$;
2367
2367
  })();
2368
2368
  }
2369
- var _tmpl$$R = /* @__PURE__ */ template(`<div class=oasis-editor-import-progress-label>`), _tmpl$2$y = /* @__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$m = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>Done`);
2369
+ var _tmpl$$R = /* @__PURE__ */ template(`<div class=oasis-editor-import-progress-label>`), _tmpl$2$z = /* @__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$m = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>Done`);
2370
2370
  function OasisEditorLoading(props) {
2371
2371
  const variant = () => props.variant ?? "overlay";
2372
2372
  const pct = () => {
@@ -2375,7 +2375,7 @@ function OasisEditorLoading(props) {
2375
2375
  };
2376
2376
  const isDone = () => (pct() ?? 0) >= 100;
2377
2377
  return (() => {
2378
- var _el$ = _tmpl$2$y(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild;
2378
+ var _el$ = _tmpl$2$z(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild;
2379
2379
  insert(_el$2, createComponent(OasisBrandMark, {
2380
2380
  height: 40,
2381
2381
  "class": "oasis-editor-loading-mark"
@@ -2438,7 +2438,7 @@ function OasisEditorAppLazy(props = {}) {
2438
2438
  onCleanup(() => {
2439
2439
  cancelled = true;
2440
2440
  });
2441
- import("./OasisEditorApp-YuR1PFAE.js").then((m) => {
2441
+ import("./OasisEditorApp-D-O4XHvu.js").then((m) => {
2442
2442
  cancelled = true;
2443
2443
  setProgress(1);
2444
2444
  setTimeout(() => setApp(() => m.OasisEditorApp), 180);
@@ -4511,9 +4511,9 @@ class MenuRegistry {
4511
4511
  }
4512
4512
  }
4513
4513
  const defaultMenuRegistry = new MenuRegistry();
4514
- var _tmpl$$Q = /* @__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$x = /* @__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$l = /* @__PURE__ */ template(`<i>`);
4514
+ var _tmpl$$Q = /* @__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$y = /* @__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$l = /* @__PURE__ */ template(`<i>`);
4515
4515
  const FootnoteIcon = () => _tmpl$$Q();
4516
- const SpecialIndentFirstLineIcon = () => _tmpl$2$x();
4516
+ const SpecialIndentFirstLineIcon = () => _tmpl$2$y();
4517
4517
  const CUSTOM_ICONS = {
4518
4518
  footnote: FootnoteIcon,
4519
4519
  specialIndentFirstLine: SpecialIndentFirstLineIcon
@@ -4878,7 +4878,7 @@ const defaultMenuItems = [
4878
4878
  }
4879
4879
  ];
4880
4880
  defaultMenuItems.forEach((item) => defaultMenuRegistry.register(item));
4881
- var _tmpl$$P = /* @__PURE__ */ template(`<div class=oasis-menubar role=menubar>`), _tmpl$2$w = /* @__PURE__ */ template(`<div class=oasis-menubar-dropdown role=menu>`), _tmpl$3$k = /* @__PURE__ */ template(`<div class=oasis-menubar-menu><div class=oasis-menubar-button role=menuitem aria-haspopup=true>`), _tmpl$4$f = /* @__PURE__ */ template(`<div class=oasis-menubar-separator role=separator>`), _tmpl$5$e = /* @__PURE__ */ template(`<span class=oasis-menubar-item-icon aria-hidden=true>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span class=oasis-menubar-shortcut>`), _tmpl$7$3 = /* @__PURE__ */ template(`<i class=oasis-menubar-submenu-icon data-lucide=chevron-right>`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=oasis-menubar-submenu role=menu>`), _tmpl$9$1 = /* @__PURE__ */ template(`<div class=oasis-menubar-item role=menuitem><span class=oasis-menubar-item-main><span>`);
4881
+ var _tmpl$$P = /* @__PURE__ */ template(`<div class=oasis-menubar role=menubar>`), _tmpl$2$x = /* @__PURE__ */ template(`<div class=oasis-menubar-dropdown role=menu>`), _tmpl$3$k = /* @__PURE__ */ template(`<div class=oasis-menubar-menu><div class=oasis-menubar-button role=menuitem aria-haspopup=true>`), _tmpl$4$f = /* @__PURE__ */ template(`<div class=oasis-menubar-separator role=separator>`), _tmpl$5$e = /* @__PURE__ */ template(`<span class=oasis-menubar-item-icon aria-hidden=true>`), _tmpl$6$7 = /* @__PURE__ */ template(`<span class=oasis-menubar-shortcut>`), _tmpl$7$3 = /* @__PURE__ */ template(`<i class=oasis-menubar-submenu-icon data-lucide=chevron-right>`), _tmpl$8$2 = /* @__PURE__ */ template(`<div class=oasis-menubar-submenu role=menu>`), _tmpl$9$1 = /* @__PURE__ */ template(`<div class=oasis-menubar-item role=menuitem><span class=oasis-menubar-item-main><span>`);
4882
4882
  function Menubar(props) {
4883
4883
  const [activeMenu, setActiveMenu] = createSignal(null);
4884
4884
  const menuItems = () => (props.registry ?? defaultMenuRegistry).getItems();
@@ -4971,7 +4971,7 @@ function Menubar(props) {
4971
4971
  return activeMenu() === topLevel.id;
4972
4972
  },
4973
4973
  get children() {
4974
- var _el$4 = _tmpl$2$w();
4974
+ var _el$4 = _tmpl$2$x();
4975
4975
  insert(_el$4, createComponent(For, {
4976
4976
  get each() {
4977
4977
  return topLevel.children;
@@ -17160,7 +17160,7 @@ function getCaretRectFromSnapshot(snapshot, position2, paragraphOffset) {
17160
17160
  );
17161
17161
  return rectFromBox(slot.left, slot.top, 1, slot.height || line.height);
17162
17162
  }
17163
- var _tmpl$$N = /* @__PURE__ */ template(`<span class=oasis-outline-title>`), _tmpl$2$v = /* @__PURE__ */ template(`<div class=oasis-outline-list>`), _tmpl$3$j = /* @__PURE__ */ template(`<div class=oasis-outline-panel><div class=oasis-outline-header><button class=oasis-outline-toggle><i>`), _tmpl$4$e = /* @__PURE__ */ template(`<div class=oasis-outline-empty>`), _tmpl$5$d = /* @__PURE__ */ template(`<div class=oasis-outline-item>`);
17163
+ var _tmpl$$N = /* @__PURE__ */ template(`<span class=oasis-outline-title>`), _tmpl$2$w = /* @__PURE__ */ template(`<div class=oasis-outline-list>`), _tmpl$3$j = /* @__PURE__ */ template(`<div class=oasis-outline-panel><div class=oasis-outline-header><button class=oasis-outline-toggle><i>`), _tmpl$4$e = /* @__PURE__ */ template(`<div class=oasis-outline-empty>`), _tmpl$5$d = /* @__PURE__ */ template(`<div class=oasis-outline-item>`);
17164
17164
  function OutlinePanel(props) {
17165
17165
  const [collapsed, setCollapsed] = createSignal(props.defaultCollapsed ?? false);
17166
17166
  const [items, setItems] = createSignal([]);
@@ -17245,7 +17245,7 @@ function OutlinePanel(props) {
17245
17245
  return !collapsed();
17246
17246
  },
17247
17247
  get children() {
17248
- var _el$6 = _tmpl$2$v();
17248
+ var _el$6 = _tmpl$2$w();
17249
17249
  insert(_el$6, createComponent(Show, {
17250
17250
  get when() {
17251
17251
  return items().length > 0;
@@ -17302,7 +17302,7 @@ function OutlinePanel(props) {
17302
17302
  })();
17303
17303
  }
17304
17304
  delegateEvents(["click"]);
17305
- var _tmpl$$M = /* @__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$u = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item-wrapper style=display:flex;align-items:center;flex-shrink:0>`);
17305
+ var _tmpl$$M = /* @__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$v = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-item-wrapper style=display:flex;align-items:center;flex-shrink:0>`);
17306
17306
  function ToolbarOverflowManager(props) {
17307
17307
  const [overflowCount, setOverflowCount] = createSignal(0);
17308
17308
  const [menuOpen, setMenuOpen] = createSignal(false);
@@ -17457,7 +17457,7 @@ function ToolbarOverflowManager(props) {
17457
17457
  return items();
17458
17458
  },
17459
17459
  children: (item) => (() => {
17460
- var _el$7 = _tmpl$2$u();
17460
+ var _el$7 = _tmpl$2$v();
17461
17461
  insert(_el$7, item);
17462
17462
  return _el$7;
17463
17463
  })()
@@ -17533,12 +17533,12 @@ function resolveLabel(item, api) {
17533
17533
  if (item.labelKey) return api.t(item.labelKey);
17534
17534
  return void 0;
17535
17535
  }
17536
- var _tmpl$$L = /* @__PURE__ */ template(`<span>`), _tmpl$2$t = /* @__PURE__ */ template(`<button type=button>`);
17536
+ var _tmpl$$L = /* @__PURE__ */ template(`<span>`), _tmpl$2$u = /* @__PURE__ */ template(`<button type=button>`);
17537
17537
  function Button$1(props) {
17538
- const [local, others] = splitProps(props, ["icon", "label", "active", "tooltip", "wide", "aria-label", "class", "classList"]);
17538
+ const [local, others] = splitProps(props, ["icon", "label", "active", "tooltip", "wide", "ribbonSize", "aria-label", "class", "classList"]);
17539
17539
  const ariaLabel = () => local["aria-label"] || local.tooltip || local.label || "";
17540
17540
  return (() => {
17541
- var _el$ = _tmpl$2$t();
17541
+ var _el$ = _tmpl$2$u();
17542
17542
  spread(_el$, mergeProps({
17543
17543
  get ["class"]() {
17544
17544
  return `oasis-editor-tool-button ${local.class || ""}`;
@@ -17547,6 +17547,7 @@ function Button$1(props) {
17547
17547
  return {
17548
17548
  "oasis-editor-tool-button-active": local.active,
17549
17549
  "oasis-editor-tool-button-wide": local.wide,
17550
+ "oasis-editor-tool-button-ribbon-large": local.ribbonSize === "large",
17550
17551
  ...local.classList
17551
17552
  };
17552
17553
  },
@@ -17725,12 +17726,12 @@ function Popover(props) {
17725
17726
  }
17726
17727
  })];
17727
17728
  }
17728
- var _tmpl$$J = /* @__PURE__ */ template(`<div>`), _tmpl$2$s = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$3$i = /* @__PURE__ */ template(`<i>`), _tmpl$4$d = /* @__PURE__ */ template(`<span class=oasis-editor-tool-button-label>`), _tmpl$5$c = /* @__PURE__ */ template(`<i data-lucide=chevron-down class=oasis-editor-dropdown-chevron>`), _tmpl$6$6 = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"aria-haspopup=menu>`);
17729
+ var _tmpl$$J = /* @__PURE__ */ template(`<div>`), _tmpl$2$t = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$3$i = /* @__PURE__ */ template(`<i>`), _tmpl$4$d = /* @__PURE__ */ template(`<span class=oasis-editor-tool-button-label>`), _tmpl$5$c = /* @__PURE__ */ template(`<i data-lucide=chevron-down class=oasis-editor-dropdown-chevron>`), _tmpl$6$6 = /* @__PURE__ */ template(`<button type=button class="oasis-editor-tool-button oasis-editor-tool-button-dropdown"aria-haspopup=menu>`);
17729
17730
  function Menu(props) {
17730
17731
  const [open, setOpen] = createSignal(false);
17731
17732
  const ariaLabel = () => props.tooltip || props.label || "";
17732
17733
  return (() => {
17733
- var _el$ = _tmpl$2$s();
17734
+ var _el$ = _tmpl$2$t();
17734
17735
  insert(_el$, createComponent(Popover, {
17735
17736
  get open() {
17736
17737
  return open();
@@ -17777,13 +17778,14 @@ function Menu(props) {
17777
17778
  }
17778
17779
  }), null);
17779
17780
  createRenderEffect((_p$) => {
17780
- var _v$ = !!(props.active || api.open), _v$2 = props.disabled, _v$3 = props.tooltip, _v$4 = ariaLabel(), _v$5 = api.open, _v$6 = props.testId;
17781
+ var _v$ = !!(props.active || api.open), _v$2 = !!(props.ribbonSize === "large"), _v$3 = props.disabled, _v$4 = props.tooltip, _v$5 = ariaLabel(), _v$6 = api.open, _v$7 = props.testId;
17781
17782
  _v$ !== _p$.e && _el$3.classList.toggle("oasis-editor-tool-button-active", _p$.e = _v$);
17782
- _v$2 !== _p$.t && (_el$3.disabled = _p$.t = _v$2);
17783
- _v$3 !== _p$.a && setAttribute(_el$3, "title", _p$.a = _v$3);
17784
- _v$4 !== _p$.o && setAttribute(_el$3, "aria-label", _p$.o = _v$4);
17785
- _v$5 !== _p$.i && setAttribute(_el$3, "aria-expanded", _p$.i = _v$5);
17786
- _v$6 !== _p$.n && setAttribute(_el$3, "data-testid", _p$.n = _v$6);
17783
+ _v$2 !== _p$.t && _el$3.classList.toggle("oasis-editor-tool-button-ribbon-large", _p$.t = _v$2);
17784
+ _v$3 !== _p$.a && (_el$3.disabled = _p$.a = _v$3);
17785
+ _v$4 !== _p$.o && setAttribute(_el$3, "title", _p$.o = _v$4);
17786
+ _v$5 !== _p$.i && setAttribute(_el$3, "aria-label", _p$.i = _v$5);
17787
+ _v$6 !== _p$.n && setAttribute(_el$3, "aria-expanded", _p$.n = _v$6);
17788
+ _v$7 !== _p$.s && setAttribute(_el$3, "data-testid", _p$.s = _v$7);
17787
17789
  return _p$;
17788
17790
  }, {
17789
17791
  e: void 0,
@@ -17791,7 +17793,8 @@ function Menu(props) {
17791
17793
  a: void 0,
17792
17794
  o: void 0,
17793
17795
  i: void 0,
17794
- n: void 0
17796
+ n: void 0,
17797
+ s: void 0
17795
17798
  });
17796
17799
  return _el$3;
17797
17800
  })(),
@@ -17919,7 +17922,7 @@ function SplitButton(props) {
17919
17922
  });
17920
17923
  }
17921
17924
  delegateEvents(["click"]);
17922
- var _tmpl$$F = /* @__PURE__ */ template(`<i data-lucide=type>`), _tmpl$2$r = /* @__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$h = /* @__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$c = /* @__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$b = /* @__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$5 = /* @__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(`<i data-lucide=slash>`), _tmpl$9 = /* @__PURE__ */ template(`<div class=oasis-editor-color-theme-column>`), _tmpl$0 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-swatch>`);
17925
+ var _tmpl$$F = /* @__PURE__ */ template(`<i data-lucide=type>`), _tmpl$2$s = /* @__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$h = /* @__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$c = /* @__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$b = /* @__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$5 = /* @__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(`<i data-lucide=slash>`), _tmpl$9 = /* @__PURE__ */ template(`<div class=oasis-editor-color-theme-column>`), _tmpl$0 = /* @__PURE__ */ template(`<button type=button class=oasis-editor-color-swatch>`);
17923
17926
  const normalizeColor = (value) => (value == null ? void 0 : value.trim().toLowerCase()) ?? "";
17924
17927
  function ColorPicker(props) {
17925
17928
  const [isOpen, setIsOpen] = createSignal(false);
@@ -17984,7 +17987,7 @@ function ColorPicker(props) {
17984
17987
  return clearLabel();
17985
17988
  },
17986
17989
  get children() {
17987
- var _el$ = _tmpl$2$r(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling;
17990
+ var _el$ = _tmpl$2$s(), _el$2 = _el$.firstChild, _el$4 = _el$2.nextSibling;
17988
17991
  _el$.$$click = () => applyColor(null);
17989
17992
  insert(_el$2, createComponent(Show, {
17990
17993
  get when() {
@@ -18107,7 +18110,7 @@ function ColorPicker(props) {
18107
18110
  });
18108
18111
  }
18109
18112
  delegateEvents(["click", "input"]);
18110
- var _tmpl$$E = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-status>`), _tmpl$2$q = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-grid>`), _tmpl$3$g = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$4$b = /* @__PURE__ */ template(`<button type=button class=oasis-editor-tool-button><i>`), _tmpl$5$a = /* @__PURE__ */ template(`<button type=button class=oasis-editor-table-grid-picker-cell>`);
18113
+ var _tmpl$$E = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-status>`), _tmpl$2$r = /* @__PURE__ */ template(`<div class=oasis-editor-table-grid-picker-grid>`), _tmpl$3$g = /* @__PURE__ */ template(`<div class=oasis-editor-toolbar-dropdown>`), _tmpl$4$b = /* @__PURE__ */ template(`<button type=button class=oasis-editor-tool-button><i>`), _tmpl$5$a = /* @__PURE__ */ template(`<button type=button class=oasis-editor-table-grid-picker-cell>`);
18111
18114
  function GridPicker(props) {
18112
18115
  const [isOpen, setIsOpen] = createSignal(false);
18113
18116
  const [hover, setHover] = createSignal({
@@ -18219,7 +18222,7 @@ function GridPicker(props) {
18219
18222
  insert(_el$2, statusLabel);
18220
18223
  return _el$2;
18221
18224
  })(), (() => {
18222
- var _el$3 = _tmpl$2$q();
18225
+ var _el$3 = _tmpl$2$r();
18223
18226
  insert(_el$3, createComponent(For, {
18224
18227
  get each() {
18225
18228
  return rows();
@@ -18319,7 +18322,7 @@ const DEFAULT_PALETTE = {
18319
18322
  standardColors: STANDARD_COLORS,
18320
18323
  allowCustom: true
18321
18324
  };
18322
- var _tmpl$$D = /* @__PURE__ */ template(`<option value>`), _tmpl$2$p = /* @__PURE__ */ template(`<option>`);
18325
+ var _tmpl$$D = /* @__PURE__ */ template(`<option value>`), _tmpl$2$q = /* @__PURE__ */ template(`<option>`);
18323
18326
  function renderMenuContent(content, api) {
18324
18327
  if (content.kind === "custom") {
18325
18328
  return content.render(api);
@@ -18346,6 +18349,9 @@ function RenderButton(props) {
18346
18349
  get wide() {
18347
18350
  return props.item.wide;
18348
18351
  },
18352
+ get ribbonSize() {
18353
+ return props.item.ribbonSize;
18354
+ },
18349
18355
  get active() {
18350
18356
  return b.active();
18351
18357
  },
@@ -18373,6 +18379,9 @@ function RenderToggle(props) {
18373
18379
  get wide() {
18374
18380
  return props.item.wide;
18375
18381
  },
18382
+ get ribbonSize() {
18383
+ return props.item.ribbonSize;
18384
+ },
18376
18385
  get active() {
18377
18386
  return b.active();
18378
18387
  },
@@ -18412,6 +18421,9 @@ function RenderMenu(props) {
18412
18421
  get hideChevron() {
18413
18422
  return props.item.hideChevron;
18414
18423
  },
18424
+ get ribbonSize() {
18425
+ return props.item.ribbonSize;
18426
+ },
18415
18427
  get panelClass() {
18416
18428
  return props.item.panelClass;
18417
18429
  },
@@ -18501,7 +18513,7 @@ function RenderSelect(props) {
18501
18513
  return props.item.options(props.api);
18502
18514
  },
18503
18515
  children: (option) => (() => {
18504
- var _el$2 = _tmpl$2$p();
18516
+ var _el$2 = _tmpl$2$q();
18505
18517
  insert(_el$2, () => option.label);
18506
18518
  createRenderEffect(() => _el$2.value = option.value);
18507
18519
  return _el$2;
@@ -18646,7 +18658,15 @@ function ToolbarItemRenderer(props) {
18646
18658
  }
18647
18659
  })
18648
18660
  }));
18649
- createRenderEffect((_$p) => setStyleProperty(_el$, "display", binding.visible() ? "flex" : "none"));
18661
+ createRenderEffect((_p$) => {
18662
+ var _v$ = !!("ribbonSize" in props.item && props.item.ribbonSize === "large"), _v$2 = binding.visible() ? "flex" : "none";
18663
+ _v$ !== _p$.e && _el$.classList.toggle("oasis-editor-toolbar-item-ribbon-large", _p$.e = _v$);
18664
+ _v$2 !== _p$.t && setStyleProperty(_el$, "display", _p$.t = _v$2);
18665
+ return _p$;
18666
+ }, {
18667
+ e: void 0,
18668
+ t: void 0
18669
+ });
18650
18670
  return _el$;
18651
18671
  })();
18652
18672
  }
@@ -18742,8 +18762,12 @@ function normalizeRibbonGroup(group) {
18742
18762
  function normalizeRibbonRow(row) {
18743
18763
  return row === 2 ? 2 : DEFAULT_RIBBON_ROW;
18744
18764
  }
18765
+ function isLargeRibbonItem(item) {
18766
+ return "ribbonSize" in item && item.ribbonSize === "large";
18767
+ }
18745
18768
  function ribbonGroupLabel(group) {
18746
- return t(GROUP_LABEL_KEYS[group] ?? group);
18769
+ const key = GROUP_LABEL_KEYS[group];
18770
+ return key ? t(key) : group;
18747
18771
  }
18748
18772
  function buildRibbonGroups(items, tab) {
18749
18773
  const groups = /* @__PURE__ */ new Map();
@@ -18760,17 +18784,22 @@ function buildRibbonGroups(items, tab) {
18760
18784
  group = {
18761
18785
  id: groupId,
18762
18786
  label: ribbonGroupLabel(groupId),
18787
+ largeItems: [],
18763
18788
  rows: { 1: [], 2: [] },
18764
18789
  order: groupOrder
18765
18790
  };
18766
18791
  groups.set(groupId, group);
18767
18792
  }
18768
18793
  group.order = Math.min(group.order, groupOrder);
18769
- group.rows[row].push(item);
18794
+ if (isLargeRibbonItem(item)) {
18795
+ group.largeItems.push(item);
18796
+ } else {
18797
+ group.rows[row].push(item);
18798
+ }
18770
18799
  });
18771
18800
  return Array.from(groups.values()).sort((a, b) => a.order - b.order);
18772
18801
  }
18773
- var _tmpl$$B = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-tabs role=tablist>`), _tmpl$2$o = /* @__PURE__ */ template(`<button type=button class=oasis-editor-ribbon-tab role=tab>`);
18802
+ var _tmpl$$B = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-tabs role=tablist>`), _tmpl$2$p = /* @__PURE__ */ template(`<button type=button class=oasis-editor-ribbon-tab role=tab>`);
18774
18803
  function RibbonTabs(props) {
18775
18804
  const tabs = RIBBON_TAB_DEFINITIONS;
18776
18805
  const moveTab = (current, delta) => {
@@ -18783,7 +18812,7 @@ function RibbonTabs(props) {
18783
18812
  insert(_el$, createComponent(For, {
18784
18813
  each: tabs,
18785
18814
  children: (tab) => (() => {
18786
- var _el$2 = _tmpl$2$o();
18815
+ var _el$2 = _tmpl$2$p();
18787
18816
  _el$2.$$keydown = (event) => {
18788
18817
  if (event.key === "ArrowRight") {
18789
18818
  event.preventDefault();
@@ -18843,11 +18872,31 @@ function RibbonRow(props) {
18843
18872
  return _el$;
18844
18873
  })();
18845
18874
  }
18846
- var _tmpl$$z = /* @__PURE__ */ template(`<section class=oasis-editor-ribbon-group><div class=oasis-editor-ribbon-group-rows></div><div class=oasis-editor-ribbon-group-label>`);
18875
+ var _tmpl$$z = /* @__PURE__ */ template(`<div class=oasis-editor-ribbon-large-items>`), _tmpl$2$o = /* @__PURE__ */ template(`<section class=oasis-editor-ribbon-group><div class=oasis-editor-ribbon-group-rows><div class=oasis-editor-ribbon-normal-rows></div></div><div class=oasis-editor-ribbon-group-label>`);
18847
18876
  function RibbonGroup(props) {
18848
18877
  return (() => {
18849
- var _el$ = _tmpl$$z(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
18850
- insert(_el$2, createComponent(RibbonRow, {
18878
+ var _el$ = _tmpl$2$o(), _el$2 = _el$.firstChild, _el$4 = _el$2.firstChild, _el$5 = _el$2.nextSibling;
18879
+ insert(_el$2, createComponent(Show, {
18880
+ get when() {
18881
+ return props.group.largeItems.length > 0;
18882
+ },
18883
+ get children() {
18884
+ var _el$3 = _tmpl$$z();
18885
+ insert(_el$3, createComponent(For, {
18886
+ get each() {
18887
+ return props.group.largeItems;
18888
+ },
18889
+ children: (item) => createComponent(ToolbarItemRenderer, {
18890
+ item,
18891
+ get api() {
18892
+ return props.api;
18893
+ }
18894
+ })
18895
+ }));
18896
+ return _el$3;
18897
+ }
18898
+ }), _el$4);
18899
+ insert(_el$4, createComponent(RibbonRow, {
18851
18900
  get items() {
18852
18901
  return props.group.rows[1];
18853
18902
  },
@@ -18855,7 +18904,7 @@ function RibbonGroup(props) {
18855
18904
  return props.api;
18856
18905
  }
18857
18906
  }), null);
18858
- insert(_el$2, createComponent(RibbonRow, {
18907
+ insert(_el$4, createComponent(RibbonRow, {
18859
18908
  get items() {
18860
18909
  return props.group.rows[2];
18861
18910
  },
@@ -18863,7 +18912,7 @@ function RibbonGroup(props) {
18863
18912
  return props.api;
18864
18913
  }
18865
18914
  }), null);
18866
- insert(_el$3, () => props.group.label);
18915
+ insert(_el$5, () => props.group.label);
18867
18916
  createRenderEffect((_p$) => {
18868
18917
  var _v$ = props.group.id, _v$2 = props.group.label;
18869
18918
  _v$ !== _p$.e && setAttribute(_el$, "data-ribbon-group", _p$.e = _v$);
@@ -37580,11 +37629,13 @@ function SectionGroup(props) {
37580
37629
  const api = props.api;
37581
37630
  return createComponent(Menu, {
37582
37631
  icon: "layout-template",
37632
+ get label() {
37633
+ return t("section.orientation");
37634
+ },
37583
37635
  testId: "editor-toolbar-section-dropdown",
37584
37636
  get tooltip() {
37585
37637
  return t("section.pageSetup");
37586
37638
  },
37587
- hideChevron: true,
37588
37639
  panelClass: "oasis-editor-toolbar-panel",
37589
37640
  keepMounted: true,
37590
37641
  get children() {
@@ -38487,11 +38538,13 @@ function createDefaultToolbarPreset() {
38487
38538
  items.push({
38488
38539
  type: "custom",
38489
38540
  id: "editor-toolbar-margins",
38541
+ ribbonSize: "large",
38490
38542
  render: (api) => MarginsGroup({ api })
38491
38543
  });
38492
38544
  items.push({
38493
38545
  type: "custom",
38494
38546
  id: "editor-toolbar-section",
38547
+ ribbonSize: "large",
38495
38548
  render: (api) => SectionGroup({ api })
38496
38549
  });
38497
38550
  return withDefaultRibbonPlacement(items);
@@ -38535,6 +38588,7 @@ const OASIS_TOOLBAR_ITEMS = {
38535
38588
  lineSpacing: "editor-toolbar-line-spacing-control",
38536
38589
  metrics: "editor-toolbar-metrics",
38537
38590
  table: "editor-toolbar-table",
38591
+ margins: "editor-toolbar-margins",
38538
38592
  section: "editor-toolbar-section"
38539
38593
  };
38540
38594
  const OASIS_MENU_ITEMS = {