@odoo/o-spreadsheet 19.1.0-alpha.1 → 19.1.0-alpha.2

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.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.1.0-alpha.1
6
- * @date 2025-09-12T13:33:41.605Z
7
- * @hash d3e4e7b
5
+ * @version 19.1.0-alpha.2
6
+ * @date 2025-09-19T07:26:49.306Z
7
+ * @hash 8cc543d
8
8
  */
9
9
 
10
10
  import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, App, blockDom, useState, onPatched, useExternalListener, onWillUpdateProps, onWillStart, onWillPatch, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
@@ -587,7 +587,6 @@ var DIRECTION;
587
587
  const CANVAS_SHIFT = 0.5;
588
588
  // Colors
589
589
  const HIGHLIGHT_COLOR = "#017E84";
590
- const BACKGROUND_GRAY_COLOR = "#f5f5f5";
591
590
  const BACKGROUND_HEADER_COLOR = "#F8F9FA";
592
591
  const BACKGROUND_HEADER_SELECTED_COLOR = "#E8EAED";
593
592
  const BACKGROUND_HEADER_ACTIVE_COLOR = "#595959";
@@ -597,15 +596,10 @@ const SELECTION_BORDER_COLOR = "#3266ca";
597
596
  const HEADER_BORDER_COLOR = "#C0C0C0";
598
597
  const CELL_BORDER_COLOR = "#E2E3E3";
599
598
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
600
- const DISABLED_TEXT_COLOR = "#CACACA";
601
599
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
602
600
  const LINK_COLOR = HIGHLIGHT_COLOR;
603
601
  const FILTERS_COLOR = "#188038";
604
- const SEPARATOR_COLOR = "#E0E2E4";
605
- const ICONS_COLOR = "#4A4F59";
606
- const HEADER_GROUPING_BACKGROUND_COLOR = "#F5F5F5";
607
602
  const HEADER_GROUPING_BORDER_COLOR = "#999";
608
- const GRID_BORDER_COLOR = "#E2E3E3";
609
603
  const FROZEN_PANE_HEADER_BORDER_COLOR = "#BCBCBC";
610
604
  const FROZEN_PANE_BORDER_COLOR = "#DADFE8";
611
605
  const COMPOSER_ASSISTANT_COLOR = "#9B359B";
@@ -617,30 +611,9 @@ const CHART_WATERFALL_SUBTOTAL_COLOR = "#AAAAAA";
617
611
  const GRAY_900 = "#111827";
618
612
  const GRAY_300 = "#D8DADD";
619
613
  const GRAY_200 = "#E7E9ED";
620
- const GRAY_100 = "#F9FAFB";
621
614
  const TEXT_BODY = "#374151";
622
615
  const TEXT_BODY_MUTED = TEXT_BODY + "C2";
623
- const TEXT_HEADING = "#111827";
624
- const PRIMARY_BUTTON_BG = "#714B67";
625
- const PRIMARY_BUTTON_HOVER_BG = "#624159";
626
- const PRIMARY_BUTTON_ACTIVE_BG = "#f1edf0";
627
- const BUTTON_BG = GRAY_200;
628
- const BUTTON_HOVER_BG = GRAY_300;
629
- const BUTTON_HOVER_TEXT_COLOR = "#111827";
630
- const BUTTON_ACTIVE_BG = "#e6f2f3";
631
- const BUTTON_ACTIVE_TEXT_COLOR = "#111827";
632
616
  const ACTION_COLOR = HIGHLIGHT_COLOR;
633
- const ACTION_COLOR_HOVER = "#01585c";
634
- const ALERT_WARNING_BG = "#FBEBCC";
635
- const ALERT_WARNING_BORDER = "#F8E2B3";
636
- const ALERT_WARNING_TEXT_COLOR = "#946D23";
637
- const ALERT_DANGER_BG = "#D44C591A";
638
- const ALERT_DANGER_BORDER = "#C34A41";
639
- const ALERT_DANGER_TEXT_COLOR = "#C34A41";
640
- const ALERT_INFO_BG = "#CDEDF1";
641
- const ALERT_INFO_BORDER = "#98DBE2";
642
- const ALERT_INFO_TEXT_COLOR = "#09414A";
643
- const BADGE_SELECTED_COLOR = "#E6F2F3";
644
617
  const CHART_PADDING = 20;
645
618
  const CHART_PADDING_BOTTOM = 10;
646
619
  const CHART_PADDING_TOP = 15;
@@ -738,9 +711,7 @@ const MIN_COL_WIDTH = 5;
738
711
  const HEADER_HEIGHT = 26;
739
712
  const HEADER_WIDTH = 48;
740
713
  const DESKTOP_TOPBAR_TOOLBAR_HEIGHT = 34;
741
- const MOBILE_TOPBAR_TOOLBAR_HEIGHT = 44;
742
714
  const DESKTOP_BOTTOMBAR_HEIGHT = 36;
743
- const MOBILE_BOTTOMBAR_HEIGHT = 44;
744
715
  const DEFAULT_CELL_WIDTH = 96;
745
716
  const DEFAULT_CELL_HEIGHT = 23;
746
717
  const SCROLLBAR_WIDTH = 15;
@@ -748,7 +719,6 @@ const AUTOFILL_EDGE_LENGTH = 8;
748
719
  const ICON_EDGE_LENGTH = 18;
749
720
  const MIN_CF_ICON_MARGIN = 4;
750
721
  const MIN_CELL_TEXT_MARGIN = 4;
751
- const CF_ICON_EDGE_LENGTH = 15;
752
722
  const PADDING_AUTORESIZE_VERTICAL = 3;
753
723
  const PADDING_AUTORESIZE_HORIZONTAL = MIN_CELL_TEXT_MARGIN;
754
724
  const GROUP_LAYER_WIDTH = 21;
@@ -763,11 +733,6 @@ const MOBILE_WIDTH_BREAKPOINT = 768;
763
733
  const MENU_WIDTH = 250;
764
734
  const MENU_VERTICAL_PADDING = 6;
765
735
  const DESKTOP_MENU_ITEM_HEIGHT = 26;
766
- const MOBILE_MENU_ITEM_HEIGHT = 35;
767
- const MENU_ITEM_PADDING_HORIZONTAL = 11;
768
- const MENU_ITEM_PADDING_VERTICAL = 4;
769
- const MENU_SEPARATOR_BORDER_WIDTH = 1;
770
- const MENU_SEPARATOR_PADDING = 5;
771
736
  // Style
772
737
  const DEFAULT_STYLE = {
773
738
  align: "left",
@@ -821,23 +786,6 @@ const FORBIDDEN_SHEETNAME_CHARS = ["'", "*", "?", "/", "\\", "[", "]"];
821
786
  const FORBIDDEN_SHEETNAME_CHARS_IN_EXCEL_REGEX = /'|\*|\?|\/|\\|\[|\]/;
822
787
  // Cells
823
788
  const FORMULA_REF_IDENTIFIER = "|";
824
- // Components
825
- var ComponentsImportance;
826
- (function (ComponentsImportance) {
827
- ComponentsImportance[ComponentsImportance["Grid"] = 0] = "Grid";
828
- ComponentsImportance[ComponentsImportance["Highlight"] = 5] = "Highlight";
829
- ComponentsImportance[ComponentsImportance["HeaderGroupingButton"] = 6] = "HeaderGroupingButton";
830
- ComponentsImportance[ComponentsImportance["Figure"] = 10] = "Figure";
831
- ComponentsImportance[ComponentsImportance["ScrollBar"] = 15] = "ScrollBar";
832
- ComponentsImportance[ComponentsImportance["GridPopover"] = 19] = "GridPopover";
833
- ComponentsImportance[ComponentsImportance["GridComposer"] = 20] = "GridComposer";
834
- ComponentsImportance[ComponentsImportance["IconPicker"] = 25] = "IconPicker";
835
- ComponentsImportance[ComponentsImportance["TopBarComposer"] = 30] = "TopBarComposer";
836
- ComponentsImportance[ComponentsImportance["Popover"] = 35] = "Popover";
837
- ComponentsImportance[ComponentsImportance["FigureAnchor"] = 1000] = "FigureAnchor";
838
- ComponentsImportance[ComponentsImportance["FigureSnapLine"] = 1001] = "FigureSnapLine";
839
- ComponentsImportance[ComponentsImportance["FigureTooltip"] = 1002] = "FigureTooltip";
840
- })(ComponentsImportance || (ComponentsImportance = {}));
841
789
  let DEFAULT_SHEETVIEW_SIZE = 0;
842
790
  function getDefaultSheetViewSize() {
843
791
  return DEFAULT_SHEETVIEW_SIZE;
@@ -1367,8 +1315,19 @@ function memoize(func) {
1367
1315
  },
1368
1316
  }[funcName];
1369
1317
  }
1318
+ /**
1319
+ * Removes the specified indexes from the array.
1320
+ * Sparse (empty) elements are transformed to undefined (unless their index is explicitly removed).
1321
+ */
1370
1322
  function removeIndexesFromArray(array, indexes) {
1371
- return array.filter((_, index) => !indexes.includes(index));
1323
+ const toRemove = new Set(indexes);
1324
+ const newArray = [];
1325
+ for (let i = 0; i < array.length; i++) {
1326
+ if (!toRemove.has(i)) {
1327
+ newArray.push(array[i]);
1328
+ }
1329
+ }
1330
+ return newArray;
1372
1331
  }
1373
1332
  function insertItemsAtIndex(array, items, index) {
1374
1333
  const newArray = [...array];
@@ -10664,153 +10623,6 @@ class ComposerFocusStore extends SpreadsheetStore {
10664
10623
  }
10665
10624
  }
10666
10625
 
10667
- /**
10668
- * This file is largely inspired by owl 1.
10669
- * `css` tag has been removed from owl 2 without workaround to manage css.
10670
- * So, the solution was to import the behavior of owl 1 directly in our
10671
- * codebase, with one difference: the css is added to the sheet as soon as the
10672
- * css tag is executed. In owl 1, the css was added as soon as a Component was
10673
- * created for the first time.
10674
- */
10675
- const STYLESHEETS = {};
10676
- let nextId = 0;
10677
- /**
10678
- * CSS tag helper for defining inline stylesheets. With this, one can simply define
10679
- * an inline stylesheet with just the following code:
10680
- * ```js
10681
- * css`.component-a { color: red; }`;
10682
- * ```
10683
- */
10684
- function css(strings, ...args) {
10685
- const name = `__sheet__${nextId++}`;
10686
- const value = String.raw(strings, ...args);
10687
- registerSheet(name, value);
10688
- activateSheet(name);
10689
- return name;
10690
- }
10691
- function processSheet(str) {
10692
- const tokens = str.split(/(\{|\}|;)/).map((s) => s.trim());
10693
- const selectorStack = [];
10694
- const parts = [];
10695
- let rules = [];
10696
- function generateSelector(stackIndex, parentSelector) {
10697
- const parts = [];
10698
- for (const selector of selectorStack[stackIndex]) {
10699
- let part = (parentSelector && parentSelector + " " + selector) || selector;
10700
- if (part.includes("&")) {
10701
- part = selector.replace(/&/g, parentSelector || "");
10702
- }
10703
- if (stackIndex < selectorStack.length - 1) {
10704
- part = generateSelector(stackIndex + 1, part);
10705
- }
10706
- parts.push(part);
10707
- }
10708
- return parts.join(", ");
10709
- }
10710
- function generateRules() {
10711
- if (rules.length) {
10712
- parts.push(generateSelector(0) + " {");
10713
- parts.push(...rules);
10714
- parts.push("}");
10715
- rules = [];
10716
- }
10717
- }
10718
- while (tokens.length) {
10719
- const token = tokens.shift();
10720
- if (token === "}") {
10721
- generateRules();
10722
- selectorStack.pop();
10723
- }
10724
- else {
10725
- if (tokens[0] === "{") {
10726
- generateRules();
10727
- selectorStack.push(token.split(/\s*,\s*/));
10728
- tokens.shift();
10729
- }
10730
- if (tokens[0] === ";") {
10731
- rules.push(" " + token + ";");
10732
- }
10733
- }
10734
- }
10735
- return parts.join("\n");
10736
- }
10737
- function registerSheet(id, css) {
10738
- const sheet = document.createElement("style");
10739
- sheet.textContent = processSheet(css);
10740
- STYLESHEETS[id] = sheet;
10741
- }
10742
- function activateSheet(id) {
10743
- const sheet = STYLESHEETS[id];
10744
- sheet.setAttribute("component", id);
10745
- document.head.appendChild(sheet);
10746
- }
10747
- function getTextDecoration({ strikethrough, underline, }) {
10748
- if (!strikethrough && !underline) {
10749
- return "none";
10750
- }
10751
- return `${strikethrough ? "line-through" : ""} ${underline ? "underline" : ""}`;
10752
- }
10753
- /**
10754
- * Convert the cell style to CSS properties.
10755
- */
10756
- function cellStyleToCss(style) {
10757
- const attributes = cellTextStyleToCss(style);
10758
- if (!style)
10759
- return attributes;
10760
- if (style.fillColor) {
10761
- attributes["background"] = style.fillColor;
10762
- }
10763
- return attributes;
10764
- }
10765
- /**
10766
- * Convert the cell text style to CSS properties.
10767
- */
10768
- function cellTextStyleToCss(style) {
10769
- const attributes = {};
10770
- if (!style)
10771
- return attributes;
10772
- if (style.bold) {
10773
- attributes["font-weight"] = "bold";
10774
- }
10775
- if (style.italic) {
10776
- attributes["font-style"] = "italic";
10777
- }
10778
- if (style.fontSize) {
10779
- attributes["font-size"] = `${style.fontSize}px`;
10780
- }
10781
- if (style.strikethrough || style.underline) {
10782
- let decoration = style.strikethrough ? "line-through" : "";
10783
- decoration = style.underline ? decoration + " underline" : decoration;
10784
- attributes["text-decoration"] = decoration;
10785
- }
10786
- if (style.textColor) {
10787
- attributes["color"] = style.textColor;
10788
- }
10789
- return attributes;
10790
- }
10791
- /**
10792
- * Transform CSS properties into a CSS string.
10793
- */
10794
- function cssPropertiesToCss(attributes) {
10795
- let styleStr = "";
10796
- for (const attName in attributes) {
10797
- if (!attributes[attName]) {
10798
- continue;
10799
- }
10800
- styleStr += `${attName}:${attributes[attName]}; `;
10801
- }
10802
- return styleStr;
10803
- }
10804
- function getElementMargins(el) {
10805
- const style = window.getComputedStyle(el);
10806
- return {
10807
- top: parseInt(style.marginTop, 10) || 0,
10808
- bottom: parseInt(style.marginBottom, 10) || 0,
10809
- left: parseInt(style.marginLeft, 10) || 0,
10810
- right: parseInt(style.marginRight, 10) || 0,
10811
- };
10812
- }
10813
-
10814
10626
  const chartJsExtensionRegistry = new Registry();
10815
10627
  function areChartJSExtensionsLoaded() {
10816
10628
  return !!window.Chart.registry.plugins.get("chartShowValuesPlugin");
@@ -16083,8 +15895,9 @@ function interactiveSort(env, sheetId, anchor, zone, sortDirection, sortOptions)
16083
15895
  }
16084
15896
 
16085
15897
  function sortMatrix(matrix, locale, ...criteria) {
16086
- for (const [i, value] of criteria.entries()) {
16087
- assert(value !== undefined, _t("Value for parameter %d is missing, while the function [[FUNCTION_NAME]] expect a number or a range.", i + 1));
15898
+ for (let i = 0; i < criteria.length; i++) {
15899
+ const param = i % 2 === 0 ? "sort_column" : "is_ascending";
15900
+ assert(criteria[i] !== undefined, _t("Value for parameter %s is missing in [[FUNCTION_NAME]].", param));
16088
15901
  }
16089
15902
  const sortingOrders = [];
16090
15903
  const sortColumns = [];
@@ -24032,15 +23845,6 @@ function getNextNonEmptyBar(bars, startIndex) {
24032
23845
  return bars.find((bar, i) => i > startIndex && bar.height !== 0);
24033
23846
  }
24034
23847
 
24035
- css /* scss */ `
24036
- .o-spreadsheet {
24037
- .o-chart-custom-tooltip {
24038
- font-size: 12px;
24039
- background-color: #fff;
24040
- z-index: ${ComponentsImportance.FigureTooltip};
24041
- }
24042
- }
24043
- `;
24044
23848
  chartJsExtensionRegistry.add("chartShowValuesPlugin", {
24045
23849
  register: (Chart) => Chart.register(chartShowValuesPlugin),
24046
23850
  unregister: (Chart) => Chart.unregister(chartShowValuesPlugin),
@@ -27780,13 +27584,6 @@ const zoomWindowPlugin = {
27780
27584
  },
27781
27585
  };
27782
27586
 
27783
- css /* scss */ `
27784
- .o-spreadsheet {
27785
- .o-master-chart-container {
27786
- height: ${MASTER_CHART_HEIGHT}px;
27787
- }
27788
- }
27789
- `;
27790
27587
  chartJsExtensionRegistry.add("zoomWindowPlugin", {
27791
27588
  register: (Chart) => Chart.register(zoomWindowPlugin),
27792
27589
  unregister: (Chart) => Chart.unregister(zoomWindowPlugin),
@@ -31597,6 +31394,81 @@ function getCarouselItemTitle(getters, item) {
31597
31394
  return matchedChart.displayName;
31598
31395
  }
31599
31396
 
31397
+ /**
31398
+ * This file is largely inspired by owl 1.
31399
+ * `css` tag has been removed from owl 2 without workaround to manage css.
31400
+ * So, the solution was to import the behavior of owl 1 directly in our
31401
+ * codebase, with one difference: the css is added to the sheet as soon as the
31402
+ * css tag is executed. In owl 1, the css was added as soon as a Component was
31403
+ * created for the first time.
31404
+ */
31405
+ function getTextDecoration({ strikethrough, underline, }) {
31406
+ if (!strikethrough && !underline) {
31407
+ return "none";
31408
+ }
31409
+ return `${strikethrough ? "line-through" : ""} ${underline ? "underline" : ""}`;
31410
+ }
31411
+ /**
31412
+ * Convert the cell style to CSS properties.
31413
+ */
31414
+ function cellStyleToCss(style) {
31415
+ const attributes = cellTextStyleToCss(style);
31416
+ if (!style)
31417
+ return attributes;
31418
+ if (style.fillColor) {
31419
+ attributes["background"] = style.fillColor;
31420
+ }
31421
+ return attributes;
31422
+ }
31423
+ /**
31424
+ * Convert the cell text style to CSS properties.
31425
+ */
31426
+ function cellTextStyleToCss(style) {
31427
+ const attributes = {};
31428
+ if (!style)
31429
+ return attributes;
31430
+ if (style.bold) {
31431
+ attributes["font-weight"] = "bold";
31432
+ }
31433
+ if (style.italic) {
31434
+ attributes["font-style"] = "italic";
31435
+ }
31436
+ if (style.fontSize) {
31437
+ attributes["font-size"] = `${style.fontSize}px`;
31438
+ }
31439
+ if (style.strikethrough || style.underline) {
31440
+ let decoration = style.strikethrough ? "line-through" : "";
31441
+ decoration = style.underline ? decoration + " underline" : decoration;
31442
+ attributes["text-decoration"] = decoration;
31443
+ }
31444
+ if (style.textColor) {
31445
+ attributes["color"] = style.textColor;
31446
+ }
31447
+ return attributes;
31448
+ }
31449
+ /**
31450
+ * Transform CSS properties into a CSS string.
31451
+ */
31452
+ function cssPropertiesToCss(attributes) {
31453
+ let styleStr = "";
31454
+ for (const attName in attributes) {
31455
+ if (!attributes[attName]) {
31456
+ continue;
31457
+ }
31458
+ styleStr += `${attName}:${attributes[attName]}; `;
31459
+ }
31460
+ return styleStr;
31461
+ }
31462
+ function getElementMargins(el) {
31463
+ const style = window.getComputedStyle(el);
31464
+ return {
31465
+ top: parseInt(style.marginTop, 10) || 0,
31466
+ bottom: parseInt(style.marginBottom, 10) || 0,
31467
+ left: parseInt(style.marginLeft, 10) || 0,
31468
+ right: parseInt(style.marginRight, 10) || 0,
31469
+ };
31470
+ }
31471
+
31600
31472
  /**
31601
31473
  * Repeatedly calls a callback function with a time delay between calls.
31602
31474
  */
@@ -31651,59 +31523,6 @@ function useTimeOut() {
31651
31523
  };
31652
31524
  }
31653
31525
 
31654
- //------------------------------------------------------------------------------
31655
- // Context Menu Component
31656
- //------------------------------------------------------------------------------
31657
- css /* scss */ `
31658
- .o-menu {
31659
- background-color: white;
31660
- user-select: none;
31661
-
31662
- .o-menu-item {
31663
- height: ${DESKTOP_MENU_ITEM_HEIGHT}px;
31664
- padding: ${MENU_ITEM_PADDING_VERTICAL}px ${MENU_ITEM_PADDING_HORIZONTAL}px;
31665
- cursor: pointer;
31666
- user-select: none;
31667
-
31668
- .o-menu-item-name {
31669
- min-width: 40%;
31670
- }
31671
-
31672
- .o-menu-item-icon {
31673
- display: inline-block;
31674
- margin: 0px 8px 0px 0px;
31675
- width: ${DESKTOP_MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
31676
- line-height: ${DESKTOP_MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
31677
- }
31678
-
31679
- &:not(.disabled) {
31680
- &:hover,
31681
- &.o-menu-item-active {
31682
- background-color: ${BUTTON_ACTIVE_BG};
31683
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
31684
- }
31685
- .o-menu-item-description {
31686
- color: grey;
31687
- }
31688
- .o-menu-item-icon {
31689
- .o-icon {
31690
- color: ${ICONS_COLOR};
31691
- }
31692
- }
31693
- }
31694
- &.disabled {
31695
- color: ${DISABLED_TEXT_COLOR};
31696
- cursor: not-allowed;
31697
- }
31698
- }
31699
- }
31700
-
31701
- .o-spreadsheet-mobile {
31702
- .o-menu-item {
31703
- height: ${MOBILE_MENU_ITEM_HEIGHT}px;
31704
- }
31705
- }
31706
- `;
31707
31526
  class Menu extends Component {
31708
31527
  static template = "o-spreadsheet-Menu";
31709
31528
  static props = {
@@ -31880,16 +31699,6 @@ function usePopoverContainer() {
31880
31699
  return container;
31881
31700
  }
31882
31701
 
31883
- css /* scss */ `
31884
- .o-popover {
31885
- position: absolute;
31886
- z-index: ${ComponentsImportance.Popover};
31887
- overflow: auto;
31888
- box-shadow: 1px 2px 5px 2px rgb(51 51 51 / 15%);
31889
- width: fit-content;
31890
- height: fit-content;
31891
- }
31892
- `;
31893
31702
  class Popover extends Component {
31894
31703
  static template = "o-spreadsheet-Popover";
31895
31704
  static props = {
@@ -31912,7 +31721,6 @@ class Popover extends Component {
31912
31721
  onMouseWheel: () => { },
31913
31722
  onPopoverMoved: () => { },
31914
31723
  onPopoverHidden: () => { },
31915
- zIndex: ComponentsImportance.Popover,
31916
31724
  };
31917
31725
  popoverRef = useRef("popover");
31918
31726
  popoverContentRef = useRef("popoverContent");
@@ -31933,11 +31741,6 @@ class Popover extends Component {
31933
31741
  // the element in rendered, so we can still set its position
31934
31742
  useEffect(this.computePopoverPosition.bind(this));
31935
31743
  }
31936
- get popoverStyle() {
31937
- return cssPropertiesToCss({
31938
- "z-index": `${this.props.zIndex}`,
31939
- });
31940
- }
31941
31744
  computePopoverPosition() {
31942
31745
  if (!this.containerRect)
31943
31746
  throw new Error("Popover container is not defined");
@@ -32128,12 +31931,6 @@ class TopRightPopoverContext extends PopoverPositionContext {
32128
31931
  //------------------------------------------------------------------------------
32129
31932
  // Context MenuPopover Component
32130
31933
  //------------------------------------------------------------------------------
32131
- css /* scss */ `
32132
- .o-menu-wrapper {
32133
- padding: ${MENU_VERTICAL_PADDING}px 0px;
32134
- background-color: white;
32135
- }
32136
- `;
32137
31934
  const TIMEOUT_DELAY = 250;
32138
31935
  class MenuPopover extends Component {
32139
31936
  static template = "o-spreadsheet-Menu-Popover";
@@ -32574,79 +32371,6 @@ figureRegistry.add("carousel", {
32574
32371
  const ANCHOR_SIZE = 8;
32575
32372
  const BORDER_WIDTH = 1;
32576
32373
  const ACTIVE_BORDER_WIDTH = 2;
32577
- css /*SCSS*/ `
32578
- div.o-figure {
32579
- position: absolute;
32580
- width: 100%;
32581
- height: 100%;
32582
- user-select: none;
32583
-
32584
- &:focus {
32585
- outline: none;
32586
- }
32587
- }
32588
-
32589
- div.o-figure-border {
32590
- z-index: 1;
32591
- }
32592
-
32593
- .o-figure-wrapper {
32594
- position: absolute;
32595
- box-sizing: content-box;
32596
- pointer-events: auto;
32597
-
32598
- .o-fig-anchor {
32599
- z-index: ${ComponentsImportance.FigureAnchor};
32600
- position: absolute;
32601
- width: ${ANCHOR_SIZE}px;
32602
- height: ${ANCHOR_SIZE}px;
32603
- background-color: #1a73e8;
32604
- outline: ${BORDER_WIDTH}px solid white;
32605
-
32606
- &.o-top {
32607
- cursor: n-resize;
32608
- }
32609
- &.o-topRight {
32610
- cursor: ne-resize;
32611
- }
32612
- &.o-right {
32613
- cursor: e-resize;
32614
- }
32615
- &.o-bottomRight {
32616
- cursor: se-resize;
32617
- }
32618
- &.o-bottom {
32619
- cursor: s-resize;
32620
- }
32621
- &.o-bottomLeft {
32622
- cursor: sw-resize;
32623
- }
32624
- &.o-left {
32625
- cursor: w-resize;
32626
- }
32627
- &.o-topLeft {
32628
- cursor: nw-resize;
32629
- }
32630
- }
32631
-
32632
- .o-figure-menu {
32633
- right: 0px;
32634
- top: 0px;
32635
- display: none;
32636
- }
32637
-
32638
- .o-figure-menu-item {
32639
- cursor: pointer;
32640
- }
32641
-
32642
- .o-figure.active:focus,
32643
- .o-figure:hover {
32644
- .o-figure-menu {
32645
- display: flex;
32646
- }
32647
- }
32648
- }
32649
- `;
32650
32374
  class FigureComponent extends Component {
32651
32375
  static template = "o-spreadsheet-FigureComponent";
32652
32376
  static props = {
@@ -32691,7 +32415,6 @@ class FigureComponent extends Component {
32691
32415
  top: `${y}px`,
32692
32416
  width: `${width}px`,
32693
32417
  height: `${height}px`,
32694
- "z-index": String(ComponentsImportance.Figure + (this.isSelected ? 1 : 0)),
32695
32418
  });
32696
32419
  }
32697
32420
  getResizerPosition(resizer) {
@@ -32970,21 +32693,6 @@ class CellPopoverStore extends SpreadsheetStore {
32970
32693
  }
32971
32694
 
32972
32695
  const ERROR_TOOLTIP_MAX_HEIGHT = 80;
32973
- const ERROR_TOOLTIP_WIDTH = 180;
32974
- css /* scss */ `
32975
- .o-error-tooltip {
32976
- font-size: 13px;
32977
- background-color: white;
32978
- border-left: 3px solid red;
32979
- padding: 10px;
32980
- width: ${ERROR_TOOLTIP_WIDTH}px;
32981
- overflow-wrap: break-word;
32982
-
32983
- .o-error-tooltip-message {
32984
- overflow: hidden;
32985
- }
32986
- }
32987
- `;
32988
32696
  class ErrorToolTip extends Component {
32989
32697
  static maxSize = { maxHeight: ERROR_TOOLTIP_MAX_HEIGHT };
32990
32698
  static template = "o-spreadsheet-ErrorToolTip";
@@ -33085,34 +32793,6 @@ class Collapse extends Component {
33085
32793
  }
33086
32794
  }
33087
32795
 
33088
- css /* scss */ `
33089
- .o_side_panel_collapsible_title {
33090
- font-size: 16px;
33091
- cursor: pointer;
33092
- padding: 6px 0px 6px 6px !important;
33093
-
33094
- .collapsor-arrow {
33095
- transform: rotate(-90deg);
33096
- display: inline-block;
33097
- transform-origin: 8px 11px;
33098
- transition: transform 0.2s ease-in-out;
33099
-
33100
- .o-icon {
33101
- width: 16px;
33102
- height: 22px;
33103
- }
33104
- }
33105
- .collapsor:not(.collapsed) .collapsor-arrow {
33106
- transform: rotate(0);
33107
- }
33108
-
33109
- .collapsor {
33110
- width: 100%;
33111
- transition-delay: 0.35s;
33112
- transition-property: all;
33113
- }
33114
- }
33115
- `;
33116
32796
  class SidePanelCollapsible extends Component {
33117
32797
  static template = "o-spreadsheet-SidePanelCollapsible";
33118
32798
  static props = {
@@ -33749,27 +33429,6 @@ function updateSelectionWithArrowKeys(ev, selection) {
33749
33429
  }
33750
33430
  }
33751
33431
 
33752
- css /* scss */ `
33753
- .o-autocomplete-dropdown {
33754
- pointer-events: auto;
33755
- cursor: pointer;
33756
- background-color: #fff;
33757
- max-width: 400px;
33758
- z-index: 1;
33759
-
33760
- .o-autocomplete-value-focus {
33761
- background-color: #f2f2f2;
33762
- }
33763
-
33764
- & > div {
33765
- padding: 1px 5px 5px 5px;
33766
- .o-autocomplete-description {
33767
- padding-left: 5px;
33768
- font-size: 11px;
33769
- }
33770
- }
33771
- }
33772
- `;
33773
33432
  class TextValueProvider extends Component {
33774
33433
  static template = "o-spreadsheet-TextValueProvider";
33775
33434
  static props = {
@@ -34071,36 +33730,6 @@ class FunctionDescriptionProvider extends Component {
34071
33730
  }
34072
33731
 
34073
33732
  const BUBBLE_ARROW_SIZE = 7;
34074
- css /* scss */ `
34075
- .o-spreadsheet {
34076
- .o-speech-bubble {
34077
- background-color: white;
34078
- box-sizing: border-box;
34079
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
34080
- border: 1px solid #ccc;
34081
- z-index: ${ComponentsImportance.Popover};
34082
-
34083
- &::after {
34084
- content: "";
34085
- position: absolute;
34086
- top: 100%;
34087
- left: 50%;
34088
- background-color: white;
34089
- height: ${BUBBLE_ARROW_SIZE}px;
34090
- width: ${BUBBLE_ARROW_SIZE}px;
34091
- transform-origin: top left;
34092
- transform: translate(0, -67%) rotate(45deg);
34093
- border-right: 1px solid #ccc;
34094
- border-bottom: 1px solid #ccc;
34095
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
34096
- }
34097
- }
34098
-
34099
- .o-speech-content {
34100
- max-width: 300px;
34101
- }
34102
- }
34103
- `;
34104
33733
  class SpeechBubble extends Component {
34105
33734
  static template = "o-spreadsheet-SpeechBubble";
34106
33735
  static props = { content: String, anchorRect: Object };
@@ -34129,85 +33758,6 @@ const CLOSE_ICON_RADIUS = 9;
34129
33758
  const selectionIndicatorClass = "selector-flag";
34130
33759
  const highlightParenthesisClass = "highlight-parenthesis-flag";
34131
33760
  const highlightClass = "highlight-flag";
34132
- const selectionIndicatorColor = "#a9a9a9";
34133
- const selectionIndicator = "␣";
34134
- css /* scss */ `
34135
- .o-composer-container {
34136
- .o-composer {
34137
- overflow-y: auto;
34138
- overflow-x: hidden;
34139
- word-break: break-all;
34140
- padding-right: 2px;
34141
-
34142
- caret-color: black;
34143
- padding-left: 3px;
34144
- padding-right: 3px;
34145
- outline: none;
34146
-
34147
- tab-size: 4;
34148
-
34149
- p {
34150
- margin-bottom: 0px;
34151
-
34152
- span {
34153
- white-space: pre-wrap;
34154
- /* On some browsers (chromium ?) it is somehow possible to hover two of the composer's spans at the same time, leading to
34155
- * flickering with a succession of onmouseenter/onmouseleave events. A small invisible padding seems to prevent the issue.*/
34156
- padding-left: 0.01px;
34157
-
34158
- &.${selectionIndicatorClass}:after {
34159
- content: "${selectionIndicator}";
34160
- color: ${selectionIndicatorColor};
34161
- }
34162
-
34163
- &.${highlightParenthesisClass}:not(.${highlightClass}) {
34164
- border-radius: 5px;
34165
- background-color: lightgray;
34166
- padding: 1.5px 0px 1.5px 0px;
34167
- }
34168
-
34169
- &.${highlightClass} {
34170
- background-color: #e6edf3;
34171
- }
34172
- }
34173
- }
34174
- }
34175
- .o-composer[placeholder]:empty:not(:focus):not(.active)::before {
34176
- content: attr(placeholder);
34177
- color: #bdbdbd;
34178
- position: relative;
34179
- top: 0%;
34180
- pointer-events: none;
34181
- }
34182
-
34183
- .fa-stack {
34184
- /* reset stack size which is doubled by default */
34185
- width: ${CLOSE_ICON_RADIUS * 2}px;
34186
- height: ${CLOSE_ICON_RADIUS * 2}px;
34187
- line-height: ${CLOSE_ICON_RADIUS * 2}px;
34188
- }
34189
-
34190
- .force-open-assistant {
34191
- left: -1px;
34192
- top: -1px;
34193
-
34194
- .fa-question-circle {
34195
- color: ${PRIMARY_BUTTON_BG};
34196
- }
34197
- }
34198
-
34199
- .o-composer-assistant {
34200
- margin-top: 1px;
34201
-
34202
- .o-semi-bold {
34203
- /* FIXME: to remove in favor of Bootstrap
34204
- * 'fw-semibold' when we upgrade to Bootstrap 5.2
34205
- */
34206
- font-weight: 600 !important;
34207
- }
34208
- }
34209
- }
34210
- `;
34211
33761
  class Composer extends Component {
34212
33762
  static template = "o-spreadsheet-Composer";
34213
33763
  static props = {
@@ -35880,30 +35430,6 @@ class StandaloneComposerStore extends AbstractComposerStore {
35880
35430
  }
35881
35431
  }
35882
35432
 
35883
- css /* scss */ `
35884
- .o-spreadsheet {
35885
- .o-standalone-composer {
35886
- min-height: 24px;
35887
-
35888
- border-bottom: 1px solid;
35889
- border-color: ${GRAY_300};
35890
-
35891
- &.active {
35892
- border-color: ${ACTION_COLOR};
35893
- }
35894
-
35895
- &.o-invalid {
35896
- border-bottom: 2px solid red;
35897
- }
35898
-
35899
- /* As the standalone composer is potentially very small (eg. in a side panel), we remove the scrollbar display */
35900
- scrollbar-width: none; /* Firefox */
35901
- &::-webkit-scrollbar {
35902
- display: none;
35903
- }
35904
- }
35905
- }
35906
- `;
35907
35433
  class StandaloneComposer extends Component {
35908
35434
  static template = "o-spreadsheet-StandaloneComposer";
35909
35435
  static props = {
@@ -35971,17 +35497,6 @@ class StandaloneComposer extends Component {
35971
35497
  }
35972
35498
  }
35973
35499
 
35974
- css /* scss */ `
35975
- .o-dv-input {
35976
- &.o-invalid {
35977
- background-color: #ffdddd;
35978
- }
35979
- .error-icon {
35980
- right: 7px;
35981
- top: 7px;
35982
- }
35983
- }
35984
- `;
35985
35500
  class CriterionInput extends Component {
35986
35501
  static template = "o-spreadsheet-CriterionInput";
35987
35502
  static props = {
@@ -36149,8 +35664,6 @@ function startDnd(onPointerMove, onPointerUp) {
36149
35664
  return removeListeners;
36150
35665
  }
36151
35666
 
36152
- const LINE_VERTICAL_PADDING = 1;
36153
- const PICKER_PADDING = 8;
36154
35667
  const ITEM_BORDER_WIDTH = 1;
36155
35668
  const ITEM_EDGE_LENGTH = 18;
36156
35669
  const ITEMS_PER_LINE = 10;
@@ -36159,170 +35672,6 @@ const ITEM_GAP = 2;
36159
35672
  const CONTENT_WIDTH = ITEMS_PER_LINE * (ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH) + (ITEMS_PER_LINE - 1) * ITEM_GAP;
36160
35673
  const INNER_GRADIENT_WIDTH = CONTENT_WIDTH - 2 * ITEM_BORDER_WIDTH;
36161
35674
  const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
36162
- const CONTAINER_WIDTH = CONTENT_WIDTH + 2 * PICKER_PADDING;
36163
- css /* scss */ `
36164
- .o-color-picker {
36165
- padding: ${PICKER_PADDING}px 0;
36166
- /* FIXME: this is useless, overiden by the popover container */
36167
- box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
36168
- background-color: white;
36169
- line-height: 1.2;
36170
- overflow-y: auto;
36171
- overflow-x: hidden;
36172
- width: ${CONTAINER_WIDTH}px;
36173
-
36174
- .o-color-picker-section-name {
36175
- margin: 0px ${ITEM_BORDER_WIDTH}px;
36176
- padding: 4px ${PICKER_PADDING}px;
36177
- }
36178
- .colors-grid {
36179
- display: grid;
36180
- padding: ${LINE_VERTICAL_PADDING}px ${PICKER_PADDING}px;
36181
- grid-template-columns: repeat(${ITEMS_PER_LINE}, 1fr);
36182
- grid-gap: ${ITEM_GAP}px;
36183
- }
36184
- .o-color-picker-toggler-button {
36185
- display: flex;
36186
- .o-color-picker-toggler-sign {
36187
- display: flex;
36188
- margin: auto auto;
36189
- width: 55%;
36190
- height: 55%;
36191
- .o-icon {
36192
- width: 100%;
36193
- height: 100%;
36194
- }
36195
- }
36196
- }
36197
- .o-color-picker-line-item {
36198
- width: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
36199
- height: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
36200
- margin: 0px;
36201
- border-radius: 50px;
36202
- border: ${ITEM_BORDER_WIDTH}px solid #666666;
36203
- padding: 0px;
36204
- font-size: 16px;
36205
- background: white;
36206
- &:hover {
36207
- background-color: rgba(0, 0, 0, 0.08);
36208
- outline: 1px solid gray;
36209
- cursor: pointer;
36210
- }
36211
- }
36212
- .o-buttons {
36213
- padding: ${PICKER_PADDING}px;
36214
- display: flex;
36215
- .o-cancel {
36216
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36217
- width: 100%;
36218
- padding: 5px;
36219
- font-size: 14px;
36220
- background: white;
36221
- border-radius: 4px;
36222
- &:hover:enabled {
36223
- background-color: rgba(0, 0, 0, 0.08);
36224
- }
36225
- }
36226
- }
36227
- .o-add-button {
36228
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36229
- padding: 4px;
36230
- background: white;
36231
- border-radius: 4px;
36232
- &:hover:enabled {
36233
- background-color: rgba(0, 0, 0, 0.08);
36234
- }
36235
- }
36236
- .o-separator {
36237
- border-bottom: ${MENU_SEPARATOR_BORDER_WIDTH}px solid ${SEPARATOR_COLOR};
36238
- margin-top: ${MENU_SEPARATOR_PADDING}px;
36239
- margin-bottom: ${MENU_SEPARATOR_PADDING}px;
36240
- }
36241
-
36242
- .o-custom-selector {
36243
- padding: ${PICKER_PADDING + 2}px ${PICKER_PADDING}px;
36244
- position: relative;
36245
- .o-gradient {
36246
- margin-bottom: ${MAGNIFIER_EDGE / 2}px;
36247
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36248
- width: ${INNER_GRADIENT_WIDTH + 2 * ITEM_BORDER_WIDTH}px;
36249
- height: ${INNER_GRADIENT_HEIGHT + 2 * ITEM_BORDER_WIDTH}px;
36250
- position: relative;
36251
- }
36252
-
36253
- .magnifier {
36254
- height: ${MAGNIFIER_EDGE}px;
36255
- width: ${MAGNIFIER_EDGE}px;
36256
- border-radius: 50%;
36257
- border: 2px solid #fff;
36258
- box-shadow: 0px 0px 3px #c0c0c0;
36259
- position: absolute;
36260
- z-index: 2;
36261
- }
36262
- .saturation {
36263
- background: linear-gradient(to right, #fff 0%, transparent 100%);
36264
- }
36265
- .lightness {
36266
- background: linear-gradient(to top, #000 0%, transparent 100%);
36267
- }
36268
- .o-hue-picker {
36269
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36270
- width: 100%;
36271
- height: 12px;
36272
- border-radius: 4px;
36273
- background: linear-gradient(
36274
- to right,
36275
- hsl(0 100% 50%) 0%,
36276
- hsl(0.2turn 100% 50%) 20%,
36277
- hsl(0.3turn 100% 50%) 30%,
36278
- hsl(0.4turn 100% 50%) 40%,
36279
- hsl(0.5turn 100% 50%) 50%,
36280
- hsl(0.6turn 100% 50%) 60%,
36281
- hsl(0.7turn 100% 50%) 70%,
36282
- hsl(0.8turn 100% 50%) 80%,
36283
- hsl(0.9turn 100% 50%) 90%,
36284
- hsl(1turn 100% 50%) 100%
36285
- );
36286
- position: relative;
36287
- cursor: crosshair;
36288
- }
36289
- .o-hue-slider {
36290
- margin-top: -3px;
36291
- }
36292
- .o-custom-input-preview {
36293
- padding: 2px 0px;
36294
- display: flex;
36295
- input {
36296
- width: 50%;
36297
- border-radius: 4px;
36298
- padding: 4px 23px 4px 10px;
36299
- height: 24px;
36300
- border: 1px solid #c0c0c0;
36301
- margin-right: 2px;
36302
- }
36303
- .o-wrong-color {
36304
- /* FIXME bootstrap class instead? */
36305
- outline-color: red;
36306
- border-color: red;
36307
- &:focus {
36308
- outline-style: solid;
36309
- outline-width: 1px;
36310
- }
36311
- }
36312
- }
36313
- .o-custom-input-buttons {
36314
- padding: 2px 0px;
36315
- display: flex;
36316
- justify-content: end;
36317
- }
36318
- .o-color-preview {
36319
- border: 1px solid #c0c0c0;
36320
- border-radius: 4px;
36321
- width: 50%;
36322
- }
36323
- }
36324
- }
36325
- `;
36326
35675
  class ColorPicker extends Component {
36327
35676
  static template = "o-spreadsheet-ColorPicker";
36328
35677
  static props = {
@@ -36477,21 +35826,12 @@ class Section extends Component {
36477
35826
  };
36478
35827
  }
36479
35828
 
36480
- const TRANSPARENT_BACKGROUND_SVG = /*xml*/ `
36481
- <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
36482
- <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
36483
- </svg>
36484
- `;
36485
- css /* scss */ `
36486
- .o-round-color-picker-button {
36487
- width: 20px;
36488
- height: 20px;
36489
- cursor: pointer;
36490
- border: 1px solid ${GRAY_300};
36491
- background-position: 1px 1px;
36492
- background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
36493
- }
36494
- `;
35829
+ // FIXME Encoding version used in css
35830
+ // const TRANSPARENT_BACKGROUND_SVG = /*xml*/ `
35831
+ // <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
35832
+ // <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
35833
+ // </svg>
35834
+ // `;
36495
35835
  class RoundColorPicker extends Component {
36496
35836
  static template = "o-spreadsheet.RoundColorPicker";
36497
35837
  static components = { Section, ColorPicker };
@@ -36528,12 +35868,6 @@ class RoundColorPicker extends Component {
36528
35868
  }
36529
35869
  }
36530
35870
 
36531
- css /* scss */ `
36532
- .o-dv-list-item-delete {
36533
- color: #666666;
36534
- cursor: pointer;
36535
- }
36536
- `;
36537
35871
  class ListCriterionForm extends CriterionForm {
36538
35872
  static template = "o-spreadsheet-ListCriterionForm";
36539
35873
  static components = { CriterionInput, RoundColorPicker };
@@ -37247,36 +36581,6 @@ class SelectionInputStore extends SpreadsheetStore {
37247
36581
  }
37248
36582
  }
37249
36583
 
37250
- css /* scss */ `
37251
- .o-selection {
37252
- .o-selection-input {
37253
- padding: 2px 0px;
37254
-
37255
- input.o-invalid {
37256
- background-color: ${ALERT_DANGER_BG};
37257
- }
37258
- .input-icon {
37259
- right: 7px;
37260
- top: 4px;
37261
- }
37262
- .o-drag-handle {
37263
- cursor: move;
37264
- }
37265
- }
37266
- .o-disabled-ranges {
37267
- color: #888 !important;
37268
- }
37269
- .o-button {
37270
- flex-grow: 0;
37271
- }
37272
-
37273
- /* Make the character a bit bigger
37274
- compared to its neighbor INPUT box */
37275
- .o-remove-selection {
37276
- font-size: calc(100% + 4px);
37277
- }
37278
- }
37279
- `;
37280
36584
  /**
37281
36585
  * This component can be used when the user needs to input some
37282
36586
  * ranges. He can either input the ranges with the regular DOM `<input/>`
@@ -37775,44 +37079,6 @@ class FilterMenuCriterion extends Component {
37775
37079
  }
37776
37080
  }
37777
37081
 
37778
- const CHECK_SVG = /*xml*/ `
37779
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
37780
- <path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
37781
- </svg>
37782
- `;
37783
- const CHECKBOX_WIDTH = 14;
37784
- css /* scss */ `
37785
- label.o-checkbox {
37786
- input {
37787
- appearance: none;
37788
- -webkit-appearance: none;
37789
- -moz-appearance: none;
37790
- border-radius: 0;
37791
- width: ${CHECKBOX_WIDTH}px;
37792
- height: ${CHECKBOX_WIDTH}px;
37793
- vertical-align: top;
37794
- outline: none;
37795
- border: 1px solid ${GRAY_300};
37796
- cursor: pointer;
37797
-
37798
- &:hover {
37799
- border-color: ${ACTION_COLOR};
37800
- }
37801
-
37802
- &:checked {
37803
- background: url("data:image/svg+xml,${encodeURIComponent(CHECK_SVG)}");
37804
- background-color: ${ACTION_COLOR};
37805
- border-color: ${ACTION_COLOR};
37806
- }
37807
-
37808
- &:focus {
37809
- outline: none;
37810
- box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
37811
- border-color: ${ACTION_COLOR};
37812
- }
37813
- }
37814
- }
37815
- `;
37816
37082
  class Checkbox extends Component {
37817
37083
  static template = "o-spreadsheet.Checkbox";
37818
37084
  static props = {
@@ -38020,60 +37286,6 @@ class FilterMenuValueList extends Component {
38020
37286
  }
38021
37287
  }
38022
37288
 
38023
- css /* scss */ `
38024
- .o-filter-menu {
38025
- width: 245px;
38026
- padding: 8px 0;
38027
- user-select: none;
38028
-
38029
- .o-filter-menu-content {
38030
- padding: 0 16px;
38031
- }
38032
-
38033
- .o-sort-item {
38034
- padding-left: 34px;
38035
- }
38036
-
38037
- .o_side_panel_collapsible_title {
38038
- font-size: inherit;
38039
- padding: 0 0 4px 0 !important;
38040
- font-weight: 400 !important;
38041
-
38042
- .collapsor .o-icon {
38043
- opacity: 0.8;
38044
- }
38045
-
38046
- .collapsor-arrow {
38047
- transform-origin: 6px 8px;
38048
-
38049
- .o-icon {
38050
- width: 12px;
38051
- height: 16px;
38052
- }
38053
- }
38054
- }
38055
-
38056
- .o-filter-menu-item {
38057
- display: flex;
38058
- cursor: pointer;
38059
- user-select: none;
38060
- line-height: 1;
38061
-
38062
- &.selected,
38063
- &:hover {
38064
- background-color: ${BUTTON_ACTIVE_BG};
38065
- }
38066
- }
38067
-
38068
- .o-filter-menu-buttons {
38069
- margin-top: 9px;
38070
-
38071
- .o-button {
38072
- height: 26px;
38073
- }
38074
- }
38075
- }
38076
- `;
38077
37289
  class FilterMenu extends Component {
38078
37290
  static template = "o-spreadsheet-FilterMenu";
38079
37291
  static props = {
@@ -38197,55 +37409,6 @@ const FilterMenuPopoverBuilder = {
38197
37409
  },
38198
37410
  };
38199
37411
 
38200
- const LINK_TOOLTIP_HEIGHT = 32;
38201
- const LINK_TOOLTIP_WIDTH = 220;
38202
- css /* scss */ `
38203
- .o-link-tool {
38204
- font-size: 13px;
38205
- background-color: white;
38206
- box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);
38207
- padding: 6px 12px;
38208
- border-radius: 4px;
38209
- display: flex;
38210
- justify-content: space-between;
38211
- height: ${LINK_TOOLTIP_HEIGHT}px;
38212
- width: ${LINK_TOOLTIP_WIDTH}px;
38213
-
38214
- img {
38215
- margin-right: 3px;
38216
- width: 16px;
38217
- height: 16px;
38218
- }
38219
-
38220
- a.o-link {
38221
- color: ${LINK_COLOR};
38222
- text-decoration: none;
38223
- flex-grow: 2;
38224
- white-space: nowrap;
38225
- overflow: hidden;
38226
- text-overflow: ellipsis;
38227
- }
38228
- a.o-link:hover {
38229
- text-decoration: none;
38230
- color: #001d1f;
38231
- cursor: pointer;
38232
- }
38233
- }
38234
- .o-link-icon {
38235
- float: right;
38236
- padding-left: 5px;
38237
- .o-icon {
38238
- height: 16px;
38239
- }
38240
- }
38241
- .o-link-icon .o-icon {
38242
- height: 13px;
38243
- }
38244
- .o-link-icon:hover {
38245
- cursor: pointer;
38246
- color: #000;
38247
- }
38248
- `;
38249
37412
  class LinkDisplay extends Component {
38250
37413
  static template = "o-spreadsheet-LinkDisplay";
38251
37414
  static props = {
@@ -38476,54 +37639,6 @@ linkMenuRegistry.add("sheet", {
38476
37639
  sequence: 10,
38477
37640
  });
38478
37641
 
38479
- const PADDING = 12;
38480
- const LINK_EDITOR_WIDTH = 340 + 2 * PADDING;
38481
- css /* scss */ `
38482
- .o-link-editor {
38483
- font-size: 13px;
38484
- background-color: white;
38485
- box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);
38486
- padding: ${PADDING}px;
38487
- display: flex;
38488
- flex-direction: column;
38489
- border-radius: 4px;
38490
- width: ${LINK_EDITOR_WIDTH}px;
38491
-
38492
- .o-section {
38493
- .o-section-title {
38494
- font-weight: bold;
38495
- margin-bottom: 5px;
38496
- }
38497
- }
38498
- .o-buttons {
38499
- padding-left: 16px;
38500
- padding-top: 16px;
38501
- text-align: right;
38502
- }
38503
- input.o-input {
38504
- width: 100%;
38505
- padding: 0 23px 4px 0;
38506
- }
38507
- .o-link-url {
38508
- position: relative;
38509
- flex-grow: 1;
38510
- button {
38511
- position: absolute;
38512
- right: 0px;
38513
- top: 0px;
38514
- border: none;
38515
- height: 20px;
38516
- width: 20px;
38517
- background-color: #fff;
38518
- margin: 2px 3px 1px 0px;
38519
- padding: 0px 1px 0px 0px;
38520
- }
38521
- button:hover {
38522
- cursor: pointer;
38523
- }
38524
- }
38525
- }
38526
- `;
38527
37642
  class LinkEditor extends Component {
38528
37643
  static template = "o-spreadsheet-LinkEditor";
38529
37644
  static props = {
@@ -39251,29 +38366,6 @@ function buildTableStyle(name, templateName, primaryColor) {
39251
38366
  };
39252
38367
  }
39253
38368
 
39254
- css /* scss */ `
39255
- .o-spreadsheet {
39256
- .o-icon {
39257
- display: flex;
39258
- align-items: center;
39259
- justify-content: center;
39260
- width: ${ICON_EDGE_LENGTH}px;
39261
- height: ${ICON_EDGE_LENGTH}px;
39262
- font-size: ${ICON_EDGE_LENGTH}px;
39263
- vertical-align: middle;
39264
-
39265
- .small-text {
39266
- font: bold 9px sans-serif;
39267
- }
39268
- .heavy-text {
39269
- font: bold 16px sans-serif;
39270
- }
39271
- }
39272
- .fa-small {
39273
- font-size: 14px;
39274
- }
39275
- }
39276
- `;
39277
38369
  // -----------------------------------------------------------------------------
39278
38370
  // We need here the svg of the icons that we need to convert to images for the renderer
39279
38371
  // -----------------------------------------------------------------------------
@@ -49147,37 +48239,6 @@ function adjustIndexWithinBounds(index, position, max) {
49147
48239
  return index;
49148
48240
  }
49149
48241
 
49150
- // -----------------------------------------------------------------------------
49151
- // Autofill
49152
- // -----------------------------------------------------------------------------
49153
- css /* scss */ `
49154
- .o-autofill {
49155
- position: absolute;
49156
- height: ${AUTOFILL_EDGE_LENGTH}px;
49157
- width: ${AUTOFILL_EDGE_LENGTH}px;
49158
- border: 1px solid white;
49159
- background-color: #1a73e8;
49160
- }
49161
-
49162
- .o-autofill-handler {
49163
- position: absolute;
49164
- height: ${AUTOFILL_EDGE_LENGTH}px;
49165
- width: ${AUTOFILL_EDGE_LENGTH}px;
49166
- &:hover {
49167
- cursor: crosshair;
49168
- }
49169
- }
49170
-
49171
- .o-autofill-nextvalue {
49172
- position: absolute;
49173
- background-color: #ffffff;
49174
- border: 1px solid black;
49175
- padding: 5px;
49176
- font-size: 12px;
49177
- pointer-events: none;
49178
- white-space: nowrap;
49179
- }
49180
- `;
49181
48242
  class Autofill extends Component {
49182
48243
  static template = "o-spreadsheet-Autofill";
49183
48244
  static props = {
@@ -49262,16 +48323,6 @@ class TooltipComponent extends Component {
49262
48323
  `;
49263
48324
  }
49264
48325
 
49265
- css /* scss */ `
49266
- .o-client-tag {
49267
- position: absolute;
49268
- border-top-left-radius: 4px;
49269
- border-top-right-radius: 4px;
49270
- font-size: ${DEFAULT_FONT_SIZE};
49271
- color: white;
49272
- pointer-events: none;
49273
- }
49274
- `;
49275
48326
  class ClientTag extends Component {
49276
48327
  static template = "o-spreadsheet-ClientTag";
49277
48328
  static props = {
@@ -49821,28 +48872,6 @@ class CellComposerStore extends AbstractComposerStore {
49821
48872
 
49822
48873
  const COMPOSER_BORDER_WIDTH = 3 * 0.4 * window.devicePixelRatio || 1;
49823
48874
  const GRID_CELL_REFERENCE_TOP_OFFSET = 28;
49824
- css /* scss */ `
49825
- div.o-grid-composer {
49826
- z-index: ${ComponentsImportance.GridComposer};
49827
- position: absolute;
49828
- border: ${COMPOSER_BORDER_WIDTH}px solid ${SELECTION_BORDER_COLOR};
49829
- font-family: ${DEFAULT_FONT};
49830
-
49831
- display: flex;
49832
- align-items: center;
49833
- }
49834
-
49835
- div.o-cell-reference {
49836
- position: absolute;
49837
- z-index: ${ComponentsImportance.GridComposer};
49838
- background: ${SELECTION_BORDER_COLOR};
49839
- color: white;
49840
- font-size: 12px;
49841
- line-height: 14px;
49842
- padding: 6px 7px;
49843
- border-radius: 4px;
49844
- }
49845
- `;
49846
48875
  /**
49847
48876
  * This component is a composer which positions itself on the grid at the anchor cell.
49848
48877
  * It also applies the style of the cell to the composer input.
@@ -49968,6 +48997,7 @@ class GridComposer extends Component {
49968
48997
  return cssPropertiesToCss({
49969
48998
  left: `${left - 1}px`,
49970
48999
  top: `${top}px`,
49000
+ border: `${COMPOSER_BORDER_WIDTH}px solid ${SELECTION_BORDER_COLOR}`,
49971
49001
  "min-width": `${minWidth}px`,
49972
49002
  "min-height": `${minHeight}px`,
49973
49003
  "max-width": `${maxWidth}px`,
@@ -50238,24 +49268,6 @@ function getAxis(getters, figureUI, dnd, axisType) {
50238
49268
  return { position, axisType: axisType };
50239
49269
  }
50240
49270
 
50241
- css /*SCSS*/ `
50242
- .o-figure-snap-line {
50243
- position: relative;
50244
- z-index: ${ComponentsImportance.FigureSnapLine};
50245
- &.vertical {
50246
- width: 0px;
50247
- border-left: 1px dashed black;
50248
- }
50249
- &.horizontal {
50250
- border-top: 1px dashed black;
50251
- height: 0px;
50252
- }
50253
- }
50254
- .o-figure-container {
50255
- -webkit-user-select: none; /* safari */
50256
- user-select: none;
50257
- }
50258
- `;
50259
49271
  /**
50260
49272
  * Each figure ⭐ is positioned inside a container `div` placed and sized
50261
49273
  * according to the split pane the figure is part of, or a separate container for the figure
@@ -50687,38 +49699,6 @@ class FiguresContainer extends Component {
50687
49699
  }
50688
49700
  }
50689
49701
 
50690
- css /* scss */ `
50691
- .o-validation {
50692
- border-radius: 4px;
50693
- border-width: 0 0 0 3px;
50694
- border-style: solid;
50695
- gap: 3px;
50696
-
50697
- .o-icon {
50698
- margin-right: 5px;
50699
- height: 1.2em;
50700
- width: 1.2em;
50701
- }
50702
- }
50703
-
50704
- .o-validation-warning {
50705
- border-color: ${ALERT_WARNING_BORDER};
50706
- color: ${ALERT_WARNING_TEXT_COLOR};
50707
- background-color: ${ALERT_WARNING_BG};
50708
- }
50709
-
50710
- .o-validation-error {
50711
- border-color: ${ALERT_DANGER_BORDER};
50712
- color: ${ALERT_DANGER_TEXT_COLOR};
50713
- background-color: ${ALERT_DANGER_BG};
50714
- }
50715
-
50716
- .o-validation-info {
50717
- border-color: ${ALERT_INFO_BORDER};
50718
- color: ${ALERT_INFO_TEXT_COLOR};
50719
- background-color: ${ALERT_INFO_BG};
50720
- }
50721
- `;
50722
49702
  class ValidationMessages extends Component {
50723
49703
  static template = "o-spreadsheet-ValidationMessages";
50724
49704
  static props = {
@@ -50740,20 +49720,6 @@ class ValidationMessages extends Component {
50740
49720
  }
50741
49721
  }
50742
49722
 
50743
- css /* scss */ `
50744
- .o-grid-add-rows {
50745
- input.o-input {
50746
- width: 60px;
50747
- height: 30px;
50748
- }
50749
-
50750
- .o-validation-error {
50751
- display: inline-block !important;
50752
- margin-top: 0;
50753
- margin-left: 8px;
50754
- }
50755
- }
50756
- `;
50757
49723
  class GridAddRowsFooter extends Component {
50758
49724
  static template = "o-spreadsheet-GridAddRowsFooter";
50759
49725
  static props = {
@@ -50998,14 +49964,6 @@ class HoveredIconStore extends SpreadsheetStore {
50998
49964
  }
50999
49965
  }
51000
49966
 
51001
- const CURSOR_SVG = /*xml*/ `
51002
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
51003
- `;
51004
- css /* scss */ `
51005
- .o-paint-format-cursor {
51006
- cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
51007
- }
51008
- `;
51009
49967
  function useCellHovered(env, gridRef) {
51010
49968
  const delayedHoveredCell = useStore(DelayedHoveredCellStore);
51011
49969
  const hoveredTable = useStore(HoveredTableStore);
@@ -51251,7 +50209,6 @@ class GridPopover extends Component {
51251
50209
  };
51252
50210
  static components = { Popover };
51253
50211
  cellPopovers;
51254
- zIndex = ComponentsImportance.GridPopover;
51255
50212
  setup() {
51256
50213
  this.cellPopovers = useStore(CellPopoverStore);
51257
50214
  }
@@ -51570,58 +50527,6 @@ class AbstractResizer extends Component {
51570
50527
  this.props.onOpenContextMenu(type, ev.clientX, ev.clientY);
51571
50528
  }
51572
50529
  }
51573
- css /* scss */ `
51574
- .o-col-resizer {
51575
- position: absolute;
51576
- top: 0;
51577
- left: ${HEADER_WIDTH}px;
51578
- right: ${SCROLLBAR_WIDTH}px;
51579
- height: ${HEADER_HEIGHT}px;
51580
- width: calc(100% - ${HEADER_WIDTH + SCROLLBAR_WIDTH}px);
51581
- &.o-dragging {
51582
- cursor: grabbing;
51583
- }
51584
- &.o-grab {
51585
- cursor: grab;
51586
- }
51587
- .dragging-col-line {
51588
- top: ${HEADER_HEIGHT}px;
51589
- position: absolute;
51590
- width: 2px;
51591
- height: 10000px;
51592
- background-color: black;
51593
- }
51594
- .dragging-col-shadow {
51595
- top: ${HEADER_HEIGHT}px;
51596
- position: absolute;
51597
- height: 10000px;
51598
- background-color: black;
51599
- opacity: 0.1;
51600
- }
51601
- .o-handle {
51602
- position: absolute;
51603
- height: ${HEADER_HEIGHT}px;
51604
- width: 4px;
51605
- cursor: e-resize;
51606
- background-color: ${SELECTION_BORDER_COLOR};
51607
- }
51608
- .dragging-resizer {
51609
- top: ${HEADER_HEIGHT}px;
51610
- position: absolute;
51611
- margin-left: 2px;
51612
- width: 1px;
51613
- height: 10000px;
51614
- background-color: ${SELECTION_BORDER_COLOR};
51615
- }
51616
- .o-unhide {
51617
- color: ${ICONS_COLOR};
51618
- }
51619
- .o-unhide:hover {
51620
- z-index: ${ComponentsImportance.Grid + 1};
51621
- background-color: lightgrey;
51622
- }
51623
- }
51624
- `;
51625
50530
  class ColResizer extends AbstractResizer {
51626
50531
  static props = {
51627
50532
  onOpenContextMenu: Function,
@@ -51764,57 +50669,6 @@ class ColResizer extends AbstractResizer {
51764
50669
  return this.env.model.getters.getPaneDivisions(this.sheetId).xSplit > 0;
51765
50670
  }
51766
50671
  }
51767
- css /* scss */ `
51768
- .o-row-resizer {
51769
- position: absolute;
51770
- top: ${HEADER_HEIGHT}px;
51771
- left: 0;
51772
- bottom: ${SCROLLBAR_WIDTH}px;
51773
- width: ${HEADER_WIDTH}px;
51774
- &.o-dragging {
51775
- cursor: grabbing;
51776
- }
51777
- &.o-grab {
51778
- cursor: grab;
51779
- }
51780
- .dragging-row-line {
51781
- left: ${HEADER_WIDTH}px;
51782
- position: absolute;
51783
- width: 10000px;
51784
- height: 2px;
51785
- background-color: black;
51786
- }
51787
- .dragging-row-shadow {
51788
- left: ${HEADER_WIDTH}px;
51789
- position: absolute;
51790
- width: 10000px;
51791
- background-color: black;
51792
- opacity: 0.1;
51793
- }
51794
- .o-handle {
51795
- position: absolute;
51796
- height: 4px;
51797
- width: ${HEADER_WIDTH}px;
51798
- cursor: n-resize;
51799
- background-color: ${SELECTION_BORDER_COLOR};
51800
- }
51801
- .dragging-resizer {
51802
- left: ${HEADER_WIDTH}px;
51803
- position: absolute;
51804
- margin-top: 2px;
51805
- width: 10000px;
51806
- height: 1px;
51807
- background-color: ${SELECTION_BORDER_COLOR};
51808
- }
51809
- .o-unhide {
51810
- color: ${ICONS_COLOR};
51811
- }
51812
- .o-unhide:hover {
51813
- z-index: ${ComponentsImportance.Grid + 1};
51814
- background-color: lightgrey;
51815
- }
51816
- }
51817
- `;
51818
50672
  class RowResizer extends AbstractResizer {
51819
50673
  static props = {
51820
50674
  onOpenContextMenu: Function,
@@ -51955,18 +50809,6 @@ class RowResizer extends AbstractResizer {
51955
50809
  return this.env.model.getters.getPaneDivisions(this.sheetId).ySplit > 0;
51956
50810
  }
51957
50811
  }
51958
- css /* scss */ `
51959
- .o-overlay {
51960
- .all {
51961
- position: absolute;
51962
- top: 0;
51963
- left: 0;
51964
- right: 0;
51965
- width: ${HEADER_WIDTH}px;
51966
- height: ${HEADER_HEIGHT}px;
51967
- }
51968
- }
51969
- `;
51970
50812
  class HeadersOverlay extends Component {
51971
50813
  static props = {
51972
50814
  onOpenContextMenu: Function,
@@ -52921,17 +51763,6 @@ function useWheelHandler(handler) {
52921
51763
  return onMouseWheel;
52922
51764
  }
52923
51765
 
52924
- css /* scss */ `
52925
- .o-border {
52926
- position: absolute;
52927
- &:hover {
52928
- cursor: grab;
52929
- }
52930
- }
52931
- .o-moving {
52932
- cursor: grabbing;
52933
- }
52934
- `;
52935
51766
  class Border extends Component {
52936
51767
  static template = "o-spreadsheet-Border";
52937
51768
  static props = {
@@ -52970,32 +51801,6 @@ class Border extends Component {
52970
51801
  }
52971
51802
 
52972
51803
  const MOBILE_HANDLER_WIDTH = 40;
52973
- css /* scss */ `
52974
- .o-corner {
52975
- position: absolute;
52976
- }
52977
-
52978
- .o-corner-button {
52979
- border: 1px solid white;
52980
- height: ${AUTOFILL_EDGE_LENGTH}px;
52981
- width: ${AUTOFILL_EDGE_LENGTH}px;
52982
- }
52983
- .o-corner-nw,
52984
- .o-corner-se {
52985
- &:hover {
52986
- cursor: nwse-resize;
52987
- }
52988
- }
52989
- .o-corner-ne,
52990
- .o-corner-sw {
52991
- &:hover {
52992
- cursor: nesw-resize;
52993
- }
52994
- }
52995
- .o-resizing {
52996
- cursor: grabbing;
52997
- }
52998
- `;
52999
51804
  class Corner extends Component {
53000
51805
  static template = "o-spreadsheet-Corner";
53001
51806
  static props = {
@@ -53061,11 +51866,6 @@ function orientationToDir(or) {
53061
51866
  return { dirX, dirY };
53062
51867
  }
53063
51868
 
53064
- css /*SCSS*/ `
53065
- .o-highlight {
53066
- z-index: ${ComponentsImportance.Highlight};
53067
- }
53068
- `;
53069
51869
  class Highlight extends Component {
53070
51870
  static template = "o-spreadsheet-Highlight";
53071
51871
  static props = {
@@ -53200,24 +52000,6 @@ let ScrollBar$1 = class ScrollBar {
53200
52000
  }
53201
52001
  };
53202
52002
 
53203
- css /* scss */ `
53204
- .o-scrollbar {
53205
- position: absolute;
53206
- overflow: auto;
53207
- z-index: ${ComponentsImportance.ScrollBar};
53208
- background-color: ${BACKGROUND_GRAY_COLOR};
53209
-
53210
- &.corner {
53211
- box-sizing: content-box;
53212
- right: 0px;
53213
- bottom: 0px;
53214
- height: ${SCROLLBAR_WIDTH}px;
53215
- width: ${SCROLLBAR_WIDTH}px;
53216
- border-top: 1px solid #e2e3e3;
53217
- border-left: 1px solid #e2e3e3;
53218
- }
53219
- }
53220
- `;
53221
52003
  class ScrollBar extends Component {
53222
52004
  static props = {
53223
52005
  width: { type: Number, optional: true },
@@ -53380,24 +52162,6 @@ function useAutofocus({ refName }) {
53380
52162
  }, () => [ref.el]);
53381
52163
  }
53382
52164
 
53383
- css /* scss */ `
53384
- .o-spreadsheet {
53385
- .os-input {
53386
- border-width: 0 0 1px 0;
53387
- border-color: transparent;
53388
- outline: none;
53389
- text-overflow: ellipsis;
53390
- color: ${TEXT_BODY};
53391
- }
53392
- .os-input:hover,
53393
- .os-input.o-input-border {
53394
- border-color: ${GRAY_300};
53395
- }
53396
- .os-input:focus {
53397
- border-color: ${ACTION_COLOR};
53398
- }
53399
- }
53400
- `;
53401
52165
  class TextInput extends Component {
53402
52166
  static template = "o-spreadsheet-TextInput";
53403
52167
  static props = {
@@ -53479,21 +52243,6 @@ class TextInput extends Component {
53479
52243
  }
53480
52244
  }
53481
52245
 
53482
- css /* scss */ `
53483
- .o-menu-item-button {
53484
- display: flex;
53485
- justify-content: center;
53486
- align-items: center;
53487
- margin: 2px 1px;
53488
- padding: 0px 1px;
53489
- border-radius: 2px;
53490
- min-width: 22px;
53491
- }
53492
- .o-disabled {
53493
- opacity: 0.6;
53494
- cursor: default;
53495
- }
53496
- `;
53497
52246
  class ActionButton extends Component {
53498
52247
  static template = "o-spreadsheet-ActionButton";
53499
52248
  static props = {
@@ -53546,41 +52295,6 @@ class ActionButton extends Component {
53546
52295
  }
53547
52296
  }
53548
52297
 
53549
- css /* scss */ `
53550
- .o-color-picker-widget {
53551
- display: flex;
53552
- position: relative;
53553
- align-items: center;
53554
- height: 30px;
53555
-
53556
- .o-color-picker-button-style {
53557
- display: flex;
53558
- justify-content: center;
53559
- align-items: center;
53560
- margin: 2px;
53561
- padding: 3px;
53562
- border-radius: 2px;
53563
- cursor: pointer;
53564
- &:not([disabled]):hover {
53565
- background-color: rgba(0, 0, 0, 0.08);
53566
- }
53567
- }
53568
-
53569
- .o-color-picker-button {
53570
- > span {
53571
- border-bottom: 4px solid;
53572
- height: 20px;
53573
- margin-top: 2px;
53574
- display: block;
53575
- }
53576
-
53577
- &[disabled] {
53578
- pointer-events: none;
53579
- opacity: 0.3;
53580
- }
53581
- }
53582
- }
53583
- `;
53584
52298
  class ColorPickerWidget extends Component {
53585
52299
  static template = "o-spreadsheet-ColorPickerWidget";
53586
52300
  static props = {
@@ -53613,26 +52327,6 @@ class ColorPickerWidget extends Component {
53613
52327
  }
53614
52328
  }
53615
52329
 
53616
- css /* scss */ `
53617
- .o-font-size-editor {
53618
- width: max-content !important;
53619
- height: calc(100% - 4px);
53620
- input.o-font-size {
53621
- outline: none;
53622
- height: 20px;
53623
- width: 31px;
53624
- text-align: center;
53625
- }
53626
- }
53627
- .o-text-options > div {
53628
- cursor: pointer;
53629
- line-height: 26px;
53630
- padding: 3px 12px;
53631
- &:hover {
53632
- background-color: rgba(0, 0, 0, 0.08);
53633
- }
53634
- }
53635
- `;
53636
52330
  class FontSizeEditor extends Component {
53637
52331
  static template = "o-spreadsheet-FontSizeEditor";
53638
52332
  static props = {
@@ -53708,41 +52402,6 @@ class FontSizeEditor extends Component {
53708
52402
  }
53709
52403
  }
53710
52404
 
53711
- css /* scss */ `
53712
- .o-chart-title-designer {
53713
- .o-hoverable-button {
53714
- height: 30px;
53715
- }
53716
- .o-dropdown-content .o-hoverable-button {
53717
- height: fit-content;
53718
- }
53719
-
53720
- .o-divider {
53721
- border-right: 1px solid ${GRAY_300};
53722
- margin: 0px 4px;
53723
- height: 14px;
53724
- }
53725
-
53726
- .o-menu-item-button.active {
53727
- background-color: #e6f4ea;
53728
- color: #188038;
53729
- }
53730
-
53731
- .o-dropdown-content {
53732
- overflow-y: auto;
53733
- overflow-x: hidden;
53734
- padding: 2px;
53735
- z-index: 100;
53736
- box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
53737
-
53738
- .o-dropdown-line {
53739
- > span {
53740
- padding: 4px;
53741
- }
53742
- }
53743
- }
53744
- }
53745
- `;
53746
52405
  class TextStyler extends Component {
53747
52406
  static template = "o-spreadsheet.TextStyler";
53748
52407
  static components = { ColorPickerWidget, ActionButton, FontSizeEditor };
@@ -54570,27 +53229,6 @@ class BarConfigPanel extends GenericChartConfigPanel {
54570
53229
  }
54571
53230
  }
54572
53231
 
54573
- css /* scss */ `
54574
- .o-badge-selection {
54575
- gap: 1px;
54576
- button.o-button {
54577
- border-radius: 0;
54578
- &.selected {
54579
- color: ${GRAY_900};
54580
- border-color: ${ACTION_COLOR};
54581
- background: ${BADGE_SELECTED_COLOR};
54582
- font-weight: 600;
54583
- }
54584
-
54585
- &:first-child {
54586
- border-radius: 4px 0 0 4px;
54587
- }
54588
- &:last-child {
54589
- border-radius: 0 4px 4px 0;
54590
- }
54591
- }
54592
- }
54593
- `;
54594
53232
  class BadgeSelection extends Component {
54595
53233
  static template = "o-spreadsheet.BadgeSelection";
54596
53234
  static props = {
@@ -54600,13 +53238,6 @@ class BadgeSelection extends Component {
54600
53238
  };
54601
53239
  }
54602
53240
 
54603
- css /* scss */ `
54604
- .o-chart-title-designer {
54605
- > span {
54606
- height: 30px;
54607
- }
54608
- }
54609
- `;
54610
53241
  class ChartTitle extends Component {
54611
53242
  static template = "o-spreadsheet.ChartTitle";
54612
53243
  static components = { Section, TextStyler };
@@ -54668,31 +53299,12 @@ class AxisDesignEditor extends Component {
54668
53299
  }
54669
53300
  }
54670
53301
 
54671
- const CIRCLE_SVG = /*xml*/ `
54672
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
54673
- <circle r="2" fill="#FFF"/>
54674
- </svg>
54675
- `;
54676
- css /* scss */ `
54677
- .o-radio {
54678
- input {
54679
- appearance: none;
54680
- -webkit-appearance: none;
54681
- -moz-appearance: none;
54682
- width: 14px;
54683
- height: 14px;
54684
- border: 1px solid ${GRAY_300};
54685
- outline: none;
54686
- border-radius: 8px;
54687
-
54688
- &:checked {
54689
- background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
54690
- background-color: ${ACTION_COLOR};
54691
- border-color: ${ACTION_COLOR};
54692
- }
54693
- }
54694
- }
54695
- `;
53302
+ // FIXME Encoding version used in css
53303
+ // const CIRCLE_SVG = /*xml*/ `
53304
+ // <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
53305
+ // <circle r="2" fill="#FFF"/>
53306
+ // </svg>
53307
+ // `;
54696
53308
  class RadioSelection extends Component {
54697
53309
  static template = "o-spreadsheet.RadioSelection";
54698
53310
  static props = {
@@ -55189,45 +53801,6 @@ class GaugeChartConfigPanel extends Component {
55189
53801
  }
55190
53802
  }
55191
53803
 
55192
- css /* scss */ `
55193
- .o-gauge-color-set {
55194
- table {
55195
- table-layout: fixed;
55196
- margin-top: 2%;
55197
- display: table;
55198
- text-align: left;
55199
- font-size: 12px;
55200
- line-height: 18px;
55201
- width: 100%;
55202
- font-size: 12px;
55203
- }
55204
-
55205
- td {
55206
- height: 30px;
55207
- padding: 6px 0;
55208
- }
55209
- th.o-gauge-color-set-colorPicker {
55210
- width: 8%;
55211
- }
55212
- th.o-gauge-color-set-text {
55213
- width: 25%;
55214
- }
55215
- th.o-gauge-color-set-operator {
55216
- width: 10%;
55217
- }
55218
- th.o-gauge-color-set-value {
55219
- width: 22%;
55220
- }
55221
- th.o-gauge-color-set-type {
55222
- width: 30%;
55223
- }
55224
- input,
55225
- select {
55226
- width: 100%;
55227
- height: 100%;
55228
- }
55229
- }
55230
- `;
55231
53804
  class GaugeChartDesignPanel extends Component {
55232
53805
  static template = "o-spreadsheet-GaugeChartDesignPanel";
55233
53806
  static components = {
@@ -56033,40 +54606,6 @@ chartSidePanelComponentRegistry
56033
54606
  design: TreeMapChartDesignPanel,
56034
54607
  });
56035
54608
 
56036
- css /* scss */ `
56037
- .o-section .o-input.o-type-selector {
56038
- height: 30px;
56039
- padding-left: 35px;
56040
- padding-top: 5px;
56041
- }
56042
- .o-type-selector-preview {
56043
- left: 5px;
56044
- top: 3px;
56045
- .o-chart-preview {
56046
- width: 24px;
56047
- height: 24px;
56048
- }
56049
- }
56050
-
56051
- .o-popover .o-chart-select-popover {
56052
- background: #fff;
56053
- .o-chart-type-item {
56054
- cursor: pointer;
56055
- padding: 3px 6px;
56056
- margin: 1px 2px;
56057
- &.selected,
56058
- &:hover {
56059
- border: 1px solid ${ACTION_COLOR};
56060
- background: ${BADGE_SELECTED_COLOR};
56061
- padding: 2px 5px;
56062
- }
56063
- .o-chart-preview {
56064
- width: 48px;
56065
- height: 48px;
56066
- }
56067
- }
56068
- }
56069
- `;
56070
54609
  class ChartTypePicker extends Component {
56071
54610
  static template = "o-spreadsheet-ChartTypePicker";
56072
54611
  static components = { Section, Popover };
@@ -56169,38 +54708,6 @@ class MainChartPanelStore extends SpreadsheetStore {
56169
54708
  }
56170
54709
  }
56171
54710
 
56172
- css /* scss */ `
56173
- .o-chart {
56174
- .o-panel {
56175
- display: flex;
56176
- .o-panel-element {
56177
- flex: 1 0 auto;
56178
- padding: 8px 0px;
56179
- text-align: center;
56180
- cursor: pointer;
56181
- border-right: 1px solid ${GRAY_300};
56182
-
56183
- &.inactive {
56184
- color: ${TEXT_BODY};
56185
- background-color: ${GRAY_100};
56186
- border-bottom: 1px solid ${GRAY_300};
56187
- }
56188
-
56189
- &:not(.inactive) {
56190
- color: ${TEXT_HEADING};
56191
- border-bottom: 1px solid #fff;
56192
- }
56193
-
56194
- .fa {
56195
- margin-right: 4px;
56196
- }
56197
- }
56198
- .o-panel-element:last-child {
56199
- border-right: none;
56200
- }
56201
- }
56202
- }
56203
- `;
56204
54711
  class ChartPanel extends Component {
56205
54712
  static template = "o-spreadsheet-ChartPanel";
56206
54713
  static components = { Section, ChartTypePicker };
@@ -56289,26 +54796,6 @@ class ChartPanel extends Component {
56289
54796
  }
56290
54797
  }
56291
54798
 
56292
- css /* scss */ `
56293
- .o-icon-picker {
56294
- position: absolute;
56295
- z-index: ${ComponentsImportance.IconPicker};
56296
- box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
56297
- background-color: white;
56298
- padding: 2px 1px;
56299
- }
56300
- .o-cf-icon-line {
56301
- display: flex;
56302
- padding: 0 6px;
56303
- }
56304
- .o-icon-picker-item {
56305
- cursor: pointer;
56306
- &:hover {
56307
- background-color: ${BADGE_SELECTED_COLOR};
56308
- outline: ${ACTION_COLOR} solid 1px;
56309
- }
56310
- }
56311
- `;
56312
54799
  class IconPicker extends Component {
56313
54800
  static template = "o-spreadsheet-IconPicker";
56314
54801
  static props = {
@@ -56346,77 +54833,6 @@ function useHighlights(highlightProvider) {
56346
54833
  }, () => [highlightProvider.highlights]);
56347
54834
  }
56348
54835
 
56349
- css /* scss */ `
56350
- .o-cf-preview {
56351
- &.o-cf-cursor-ptr {
56352
- cursor: pointer;
56353
- }
56354
-
56355
- border-bottom: 1px solid ${GRAY_300};
56356
- height: 80px;
56357
- padding: 10px;
56358
- position: relative;
56359
- cursor: pointer;
56360
- &:hover,
56361
- &.o-cf-dragging {
56362
- background-color: ${GRAY_200};
56363
- }
56364
-
56365
- &:not(:hover) .o-cf-delete-button {
56366
- display: none;
56367
- }
56368
- .o-cf-preview-icon {
56369
- border: 1px solid ${GRAY_300};
56370
- background-color: #fff;
56371
- position: absolute;
56372
- height: 50px;
56373
- width: 50px;
56374
- .o-icon {
56375
- width: ${CF_ICON_EDGE_LENGTH}px;
56376
- height: ${CF_ICON_EDGE_LENGTH}px;
56377
- }
56378
- }
56379
- .o-cf-preview-description {
56380
- left: 65px;
56381
- margin-bottom: auto;
56382
- margin-right: 8px;
56383
- margin-top: auto;
56384
- position: relative;
56385
- width: 142px;
56386
- .o-cf-preview-description-rule {
56387
- margin-bottom: 4px;
56388
- max-height: 2.8em;
56389
- line-height: 1.4em;
56390
- }
56391
- .o-cf-preview-range {
56392
- font-size: 12px;
56393
- }
56394
- }
56395
- .o-cf-delete {
56396
- left: 90%;
56397
- top: 39%;
56398
- position: absolute;
56399
- }
56400
- &:not(:hover):not(.o-cf-dragging) .o-cf-drag-handle {
56401
- display: none !important;
56402
- }
56403
- .o-cf-drag-handle {
56404
- left: -8px;
56405
- cursor: move;
56406
- .o-icon {
56407
- width: 6px;
56408
- height: 30px;
56409
- }
56410
- }
56411
-
56412
- .o-icon.arrow-down {
56413
- color: #e06666;
56414
- }
56415
- .o-icon.arrow-up {
56416
- color: #6aa84f;
56417
- }
56418
- }
56419
- `;
56420
54836
  class ConditionalFormatPreview extends Component {
56421
54837
  static template = "o-spreadsheet-ConditionalFormatPreview";
56422
54838
  icons = ICONS;
@@ -56535,95 +54951,6 @@ class ConditionalFormatPreviewList extends Component {
56535
54951
  }
56536
54952
  }
56537
54953
 
56538
- css /* scss */ `
56539
- .o-cf-ruleEditor {
56540
- .o-cf-preview-display {
56541
- border: 1px solid ${GRAY_300};
56542
- padding: 10px;
56543
- }
56544
-
56545
- .o-cf-cell-is-rule {
56546
- .o-divider {
56547
- border-right: 1px solid ${GRAY_300};
56548
- margin: 4px 6px;
56549
- }
56550
- }
56551
- .o-cf-color-scale-editor {
56552
- .o-threshold {
56553
- .o-select-with-input {
56554
- max-width: 150px;
56555
- }
56556
- .o-threshold-value {
56557
- flex-grow: 1;
56558
- flex-basis: 60%;
56559
- min-width: 0px; /* input overflows in Firefox otherwise */
56560
- }
56561
- .o-threshold-value input:disabled {
56562
- background-color: #edebed;
56563
- }
56564
- }
56565
- }
56566
- .o-cf-iconset-rule {
56567
- .o-cf-clickable-icon {
56568
- border: 1px solid ${GRAY_200};
56569
- border-radius: 4px;
56570
- cursor: pointer;
56571
- &:hover {
56572
- border-color: ${ACTION_COLOR};
56573
- background-color: ${BADGE_SELECTED_COLOR};
56574
- }
56575
- .o-icon {
56576
- width: ${CF_ICON_EDGE_LENGTH}px;
56577
- height: ${CF_ICON_EDGE_LENGTH}px;
56578
- }
56579
- }
56580
- .o-cf-iconsets {
56581
- gap: 11px;
56582
- .o-cf-iconset {
56583
- padding: 7px 8px;
56584
- width: 95px;
56585
- .o-icon {
56586
- margin: 0 3px;
56587
- }
56588
- svg {
56589
- vertical-align: baseline;
56590
- }
56591
- }
56592
- }
56593
- .o-inflection {
56594
- .o-cf-icon-button {
56595
- padding: 4px 10px;
56596
- }
56597
- table {
56598
- font-size: 13px;
56599
- td {
56600
- padding: 6px 0;
56601
- }
56602
-
56603
- th.o-cf-iconset-icons {
56604
- width: 25px;
56605
- }
56606
- th.o-cf-iconset-text {
56607
- width: 82px;
56608
- }
56609
- th.o-cf-iconset-operator {
56610
- width: 20px;
56611
- }
56612
- .o-cf-iconset-type {
56613
- min-width: 80px;
56614
- }
56615
- }
56616
- }
56617
- }
56618
-
56619
- .o-icon.arrow-down {
56620
- color: #e06666;
56621
- }
56622
- .o-icon.arrow-up {
56623
- color: #6aa84f;
56624
- }
56625
- }
56626
- `;
56627
54954
  class ConditionalFormattingEditor extends Component {
56628
54955
  static template = "o-spreadsheet-ConditionalFormattingEditor";
56629
54956
  static props = {
@@ -57153,25 +55480,6 @@ class ConditionalFormattingPanel extends Component {
57153
55480
  */
57154
55481
  const currenciesRegistry = new Registry();
57155
55482
 
57156
- css /* scss */ `
57157
- .o-custom-currency {
57158
- .o-format-proposals {
57159
- color: black;
57160
- }
57161
-
57162
- .o-format-examples {
57163
- background: #f9fafb;
57164
- padding: 8px;
57165
- border-radius: 4px;
57166
- border: 1px solid #d8dadd;
57167
- color: #374151;
57168
- }
57169
-
57170
- table {
57171
- table-layout: fixed;
57172
- }
57173
- }
57174
- `;
57175
55483
  class CustomCurrencyPanel extends Component {
57176
55484
  static template = "o-spreadsheet-CustomCurrencyPanel";
57177
55485
  static components = { Section, Checkbox };
@@ -57404,31 +55712,6 @@ class DataValidationEditor extends Component {
57404
55712
  }
57405
55713
  }
57406
55714
 
57407
- css /* scss */ `
57408
- .o-sidePanel {
57409
- .o-dv-preview {
57410
- height: 70px;
57411
- cursor: pointer;
57412
- border-bottom: 1px solid ${FIGURE_BORDER_COLOR};
57413
-
57414
- .o-dv-container {
57415
- min-width: 0; /* otherwise flex won't shrink correctly */
57416
- }
57417
-
57418
- .o-dv-preview-description {
57419
- font-size: 13px;
57420
- }
57421
-
57422
- &:hover {
57423
- background-color: rgba(0, 0, 0, 0.08);
57424
- }
57425
-
57426
- &:not(:hover) .o-dv-preview-delete {
57427
- display: none !important;
57428
- }
57429
- }
57430
- }
57431
- `;
57432
55715
  class DataValidationPreview extends Component {
57433
55716
  static template = "o-spreadsheet-DataValidationPreview";
57434
55717
  static props = {
@@ -57877,38 +56160,6 @@ class FindAndReplaceStore extends SpreadsheetStore {
57877
56160
  }
57878
56161
  }
57879
56162
 
57880
- css /* scss */ `
57881
- .o-find-and-replace {
57882
- outline: none;
57883
- height: 100%;
57884
- .o-input-search-container {
57885
- display: flex;
57886
- .o-input-with-count {
57887
- flex-grow: 1;
57888
- width: auto;
57889
- }
57890
- .o-input-without-count {
57891
- width: 100%;
57892
- }
57893
- .o-input-count {
57894
- width: fit-content;
57895
- padding: 4px 0 4px 4px;
57896
- white-space: nowrap;
57897
- }
57898
- }
57899
-
57900
- .o-result-buttons {
57901
- .o-button {
57902
- height: 19px;
57903
- width: 19px;
57904
- .o-icon {
57905
- height: 14px;
57906
- width: 14px;
57907
- }
57908
- }
57909
- }
57910
- }
57911
- `;
57912
56163
  class FindAndReplacePanel extends Component {
57913
56164
  static template = "o-spreadsheet-FindAndReplacePanel";
57914
56165
  static components = { SelectionInput, Section, Checkbox, ValidationMessages };
@@ -58019,22 +56270,6 @@ class FindAndReplacePanel extends Component {
58019
56270
  }
58020
56271
  }
58021
56272
 
58022
- css /* scss */ `
58023
- .o-more-formats-panel {
58024
- .format-preview {
58025
- height: 49px;
58026
- background-color: white;
58027
- cursor: pointer;
58028
-
58029
- &:hover {
58030
- background-color: rgba(0, 0, 0, 0.08);
58031
- }
58032
- }
58033
- .check-icon {
58034
- width: 24px;
58035
- }
58036
- }
58037
- `;
58038
56273
  const DATE_FORMAT_ACTIONS = createActions([
58039
56274
  formatNumberFullDateTime,
58040
56275
  formatNumberISODate,
@@ -58192,21 +56427,6 @@ class PivotMeasureDisplayPanelStore extends SpreadsheetStore {
58192
56427
  }
58193
56428
  }
58194
56429
 
58195
- css /* scss */ `
58196
- .o-sidePanel {
58197
- .o-pivot-measure-display-field,
58198
- .o-pivot-measure-display-value {
58199
- border: solid 1px ${GRAY_300};
58200
- border-radius: 3px;
58201
- }
58202
-
58203
- .o-pivot-measure-display-description {
58204
- white-space: pre-wrap;
58205
- color: dimgray;
58206
- border-left: 2px solid ${GRAY_300};
58207
- }
58208
- }
58209
- `;
58210
56430
  class PivotMeasureDisplayPanel extends Component {
58211
56431
  static template = "o-spreadsheet-PivotMeasureDisplayPanel";
58212
56432
  static props = {
@@ -58265,11 +56485,6 @@ function getVisiblePivotCellPositions(getters, pivotId) {
58265
56485
  return positions;
58266
56486
  }
58267
56487
 
58268
- css /* scss */ `
58269
- .pivot-defer-update {
58270
- min-height: 40px;
58271
- }
58272
- `;
58273
56488
  class PivotDeferUpdate extends Component {
58274
56489
  static template = "o-spreadsheet-PivotDeferUpdate";
58275
56490
  static props = {
@@ -58358,25 +56573,6 @@ function getHtmlContentFromPattern(pattern, value, highlightColor, className) {
58358
56573
  return pendingHtmlContent.filter((content) => content.value);
58359
56574
  }
58360
56575
 
58361
- css /* scss */ `
58362
- input.pivot-dimension-search-field:focus {
58363
- outline: none;
58364
- }
58365
- .pivot-dimension-search-field-icon svg {
58366
- width: 13px;
58367
- height: 13px;
58368
- }
58369
- .pivot-dimension-search {
58370
- background-color: white;
58371
- }
58372
- .add-dimension.o-button {
58373
- padding: 2px 7px;
58374
- font-weight: 400;
58375
- font-size: 12px;
58376
- flex-grow: 0;
58377
- height: inherit;
58378
- }
58379
- `;
58380
56576
  class AddDimensionButton extends Component {
58381
56577
  static template = "o-spreadsheet-AddDimensionButton";
58382
56578
  static components = { Popover, TextValueProvider };
@@ -58470,35 +56666,6 @@ class AddDimensionButton extends Component {
58470
56666
  }
58471
56667
  }
58472
56668
 
58473
- // don't use bg-white since it's flipped to dark in dark mode and we don't support dark mode
58474
- css /* scss */ `
58475
- .pivot-dimension {
58476
- background-color: white;
58477
- border: 1px solid ${GRAY_300};
58478
- border-radius: 4px;
58479
-
58480
- select.o-input {
58481
- height: inherit;
58482
- }
58483
-
58484
- select > option {
58485
- background-color: white;
58486
- }
58487
-
58488
- .pivot-dim-operator-label {
58489
- min-width: 120px;
58490
- }
58491
-
58492
- &.pivot-dimension-invalid {
58493
- background-color: #ffdddd;
58494
- border-color: red !important;
58495
- select,
58496
- input {
58497
- background-color: #ffdddd;
58498
- }
58499
- }
58500
- }
58501
- `;
58502
56669
  class PivotDimension extends Component {
58503
56670
  static template = "o-spreadsheet-PivotDimension";
58504
56671
  static props = {
@@ -58650,19 +56817,6 @@ class PivotMeasureEditor extends Component {
58650
56817
  }
58651
56818
  }
58652
56819
 
58653
- css /* scss */ `
58654
- .o-pivot-sort {
58655
- .o-sort-card {
58656
- width: fit-content;
58657
- background-color: ${GRAY_100};
58658
- border: 1px solid ${GRAY_300};
58659
-
58660
- .o-sort-value {
58661
- color: ${PRIMARY_BUTTON_BG};
58662
- }
58663
- }
58664
- }
58665
- `;
58666
56820
  class PivotSortSection extends Component {
58667
56821
  static template = "o-spreadsheet-PivotSortSection";
58668
56822
  static components = {
@@ -58708,11 +56862,6 @@ class PivotSortSection extends Component {
58708
56862
  }
58709
56863
  }
58710
56864
 
58711
- css /* scss */ `
58712
- .add-calculated-measure {
58713
- cursor: pointer;
58714
- }
58715
- `;
58716
56865
  class PivotLayoutConfigurator extends Component {
58717
56866
  static template = "o-spreadsheet-PivotLayoutConfigurator";
58718
56867
  static components = {
@@ -59527,11 +57676,6 @@ class PivotSidePanel extends Component {
59527
57676
  }
59528
57677
  }
59529
57678
 
59530
- css /* scss */ `
59531
- .o-checkbox-selection {
59532
- max-height: 300px;
59533
- }
59534
- `;
59535
57679
  class RemoveDuplicatesPanel extends Component {
59536
57680
  static template = "o-spreadsheet-RemoveDuplicatesPanel";
59537
57681
  static components = { ValidationMessages, Section, Checkbox };
@@ -59618,12 +57762,6 @@ class RemoveDuplicatesPanel extends Component {
59618
57762
  }
59619
57763
  }
59620
57764
 
59621
- css /* scss */ `
59622
- .o-locale-preview {
59623
- border: 1px solid ${GRAY_300};
59624
- background-color: ${GRAY_100};
59625
- }
59626
- `;
59627
57765
  class SettingsPanel extends Component {
59628
57766
  static template = "o-spreadsheet-SettingsPanel";
59629
57767
  static components = { Section, ValidationMessages, BadgeSelection };
@@ -59897,34 +58035,6 @@ function drawTexts(ctx, tableStyle, colWidth, rowHeight) {
59897
58035
  ctx.restore();
59898
58036
  }
59899
58037
 
59900
- css /* scss */ `
59901
- .o-table-style-list-item {
59902
- border: 1px solid transparent;
59903
- border-radius: 4px;
59904
- &.selected {
59905
- border: 1px solid ${ACTION_COLOR};
59906
- background: ${BADGE_SELECTED_COLOR};
59907
- }
59908
-
59909
- &:hover {
59910
- background: #ddd;
59911
- .o-table-style-edit-button {
59912
- display: block !important;
59913
- right: 0;
59914
- top: 0;
59915
- background: #fff;
59916
- cursor: pointer;
59917
- border: 1px solid #ddd;
59918
- padding: 1px 1px 1px 2px;
59919
- .o-icon {
59920
- font-size: 12px;
59921
- width: 12px;
59922
- height: 12px;
59923
- }
59924
- }
59925
- }
59926
- }
59927
- `;
59928
58038
  class TableStylePreview extends Component {
59929
58039
  static template = "o-spreadsheet-TableStylePreview";
59930
58040
  static components = { MenuPopover };
@@ -59985,52 +58095,6 @@ class TableStylePreview extends Component {
59985
58095
  }
59986
58096
  }
59987
58097
 
59988
- css /* scss */ `
59989
- .o-table-style-popover {
59990
- /* 7 tables preview + padding by line */
59991
- width: calc((66px + 4px * 2) * 7 + 1.5rem * 2);
59992
- background: #fff;
59993
- font-size: 14px;
59994
- user-select: none;
59995
-
59996
- .o-notebook {
59997
- border-bottom: 1px solid ${GRAY_300};
59998
-
59999
- .o-notebook-tab {
60000
- padding: 5px 15px;
60001
- border: 1px solid ${GRAY_300};
60002
- margin-bottom: -1px;
60003
- margin-left: -1px;
60004
- color: ${TEXT_BODY};
60005
- cursor: pointer;
60006
- transition: color 0.2s, border-color 0.2s;
60007
-
60008
- &.selected {
60009
- border-bottom-color: #fff;
60010
- border-top-color: ${PRIMARY_BUTTON_BG};
60011
- color: ${TEXT_HEADING};
60012
- }
60013
- }
60014
- }
60015
-
60016
- .o-table-style-list-item {
60017
- padding: 3px;
60018
- }
60019
-
60020
- .o-table-style-popover-preview {
60021
- width: 66px;
60022
- height: 51px;
60023
- }
60024
-
60025
- .o-new-table-style {
60026
- font-size: 36px;
60027
- color: #666;
60028
- &:hover {
60029
- background: #f5f5f5;
60030
- }
60031
- }
60032
- }
60033
- `;
60034
58098
  class TableStylesPopover extends Component {
60035
58099
  static template = "o-spreadsheet-TableStylesPopover";
60036
58100
  static components = { Popover, TableStylePreview };
@@ -60070,31 +58134,6 @@ class TableStylesPopover extends Component {
60070
58134
  }
60071
58135
  }
60072
58136
 
60073
- css /* scss */ `
60074
- .o-table-style-picker {
60075
- border: 1px solid ${GRAY_300};
60076
- border-radius: 3px;
60077
-
60078
- .o-table-style-picker-arrow {
60079
- border-left: 1px solid ${GRAY_300};
60080
-
60081
- &:hover {
60082
- background: #f5f5f5;
60083
- cursor: pointer;
60084
- }
60085
- }
60086
-
60087
- .o-table-style-list-item {
60088
- padding: 5px 6px;
60089
- margin: 5px 2px;
60090
-
60091
- .o-table-style-picker-preview {
60092
- width: 51px;
60093
- height: 36px;
60094
- }
60095
- }
60096
- }
60097
- `;
60098
58137
  class TableStylePicker extends Component {
60099
58138
  static template = "o-spreadsheet-TableStylePicker";
60100
58139
  static components = { TableStylesPopover, TableStylePreview };
@@ -60138,19 +58177,6 @@ class TableStylePicker extends Component {
60138
58177
  }
60139
58178
  }
60140
58179
 
60141
- css /* scss */ `
60142
- .o-table-panel {
60143
- input.o-table-n-of-headers {
60144
- width: 14px;
60145
- text-align: center;
60146
- }
60147
-
60148
- .o-info-icon {
60149
- width: 14px;
60150
- height: 14px;
60151
- }
60152
- }
60153
- `;
60154
58180
  class TablePanel extends Component {
60155
58181
  static template = "o-spreadsheet-TablePanel";
60156
58182
  static components = { TableStylePicker, SelectionInput, ValidationMessages, Checkbox, Section };
@@ -60302,19 +58328,6 @@ class TablePanel extends Component {
60302
58328
  }
60303
58329
  }
60304
58330
 
60305
- css /* scss */ `
60306
- .o-table-style-editor-panel {
60307
- .o-table-style-list-item {
60308
- margin: 2px 7px;
60309
- padding: 6px 9px;
60310
-
60311
- .o-table-style-edit-template-preview {
60312
- width: 71px;
60313
- height: 51px;
60314
- }
60315
- }
60316
- }
60317
- `;
60318
58331
  const DEFAULT_TABLE_STYLE_COLOR = "#3C78D8";
60319
58332
  class TableStyleEditorPanel extends Component {
60320
58333
  static template = "o-spreadsheet-TableStyleEditorPanel";
@@ -60749,15 +58762,6 @@ class SidePanelStore extends SpreadsheetStore {
60749
58762
 
60750
58763
  const SIZE = 3;
60751
58764
  const COLOR = "#777";
60752
- css /* scss */ `
60753
- .o-table-resizer {
60754
- width: ${SIZE * 2}px;
60755
- height: ${SIZE * 2}px;
60756
- border-bottom: ${SIZE}px solid ${COLOR};
60757
- border-right: ${SIZE}px solid ${COLOR};
60758
- cursor: nwse-resize;
60759
- }
60760
- `;
60761
58765
  class TableResizer extends Component {
60762
58766
  static template = "o-spreadsheet-TableResizer";
60763
58767
  static props = { table: Object };
@@ -61574,43 +59578,6 @@ class FullScreenChart extends Component {
61574
59578
  }
61575
59579
  }
61576
59580
 
61577
- css /* scss */ `
61578
- .o_pivot_html_renderer {
61579
- width: 100%;
61580
- border-collapse: collapse;
61581
-
61582
- &:hover {
61583
- cursor: pointer;
61584
- }
61585
-
61586
- td,
61587
- th {
61588
- border: 1px solid #dee2e6;
61589
- background-color: #fff;
61590
- padding: 0.3rem;
61591
- white-space: nowrap;
61592
-
61593
- &:hover {
61594
- filter: brightness(0.9);
61595
- }
61596
- }
61597
-
61598
- td {
61599
- text-align: right;
61600
- }
61601
-
61602
- th {
61603
- background-color: #f5f5f5;
61604
- font-weight: bold;
61605
- color: black;
61606
- }
61607
-
61608
- .o_missing_value {
61609
- color: #46646d;
61610
- background: #e7f2f6;
61611
- }
61612
- }
61613
- `;
61614
59581
  class PivotHTMLRenderer extends Component {
61615
59582
  static template = "o_spreadsheet.PivotHTMLRenderer";
61616
59583
  static components = { Checkbox };
@@ -77624,13 +75591,10 @@ class GridSelectionPlugin extends UIPlugin {
77624
75591
  const deltaCol = isBasedBefore && isCol ? thickness : 0;
77625
75592
  const deltaRow = isBasedBefore && !isCol ? thickness : 0;
77626
75593
  const toRemove = isBasedBefore ? cmd.elements.map((el) => el + thickness) : cmd.elements;
77627
- const originalSize = Object.fromEntries(toRemove.map((element) => {
77628
- const size = isCol
77629
- ? this.getters.getColSize(cmd.sheetId, element)
77630
- : this.getters.getUserRowSize(cmd.sheetId, element);
77631
- const isDefaultCol = isCol && size === DEFAULT_CELL_WIDTH;
77632
- return [element, isDefaultCol ? undefined : size];
77633
- }));
75594
+ const originalSize = {};
75595
+ for (const element of toRemove) {
75596
+ originalSize[element] = this.getters.getHeaderSize(cmd.sheetId, cmd.dimension, element);
75597
+ }
77634
75598
  const target = [
77635
75599
  {
77636
75600
  left: isCol ? start + deltaCol : 0,
@@ -77674,11 +75638,11 @@ class GridSelectionPlugin extends UIPlugin {
77674
75638
  for (const element of toRemove) {
77675
75639
  const size = originalSize[element];
77676
75640
  const currentSize = this.getters.getHeaderSize(cmd.sheetId, cmd.dimension, currentIndex);
77677
- if (size && size !== currentSize) {
75641
+ if (size !== currentSize) {
77678
75642
  resizingGroups[size] ??= [];
77679
75643
  resizingGroups[size].push(currentIndex);
77680
- currentIndex += 1;
77681
75644
  }
75645
+ currentIndex += 1;
77682
75646
  }
77683
75647
  for (const size in resizingGroups) {
77684
75648
  this.dispatch("RESIZE_COLUMNS_ROWS", {
@@ -80597,11 +78561,6 @@ const RIPPLE_KEY_FRAMES = [
80597
78561
  { transform: "scale(0.8)", offset: 0.33 },
80598
78562
  { opacity: "0", transform: "scale(1)", offset: 1 },
80599
78563
  ];
80600
- css /* scss */ `
80601
- .o-ripple {
80602
- z-index: 1;
80603
- }
80604
- `;
80605
78564
  class RippleEffect extends Component {
80606
78565
  static template = "o-spreadsheet-RippleEffect";
80607
78566
  static props = {
@@ -80773,59 +78732,6 @@ function interactiveRenameSheet(env, sheetId, name, errorCallback) {
80773
78732
  }
80774
78733
  }
80775
78734
 
80776
- css /* scss */ `
80777
- .o-sheet {
80778
- padding: 0 15px;
80779
- padding-right: 10px;
80780
- height: ${DESKTOP_BOTTOMBAR_HEIGHT}px;
80781
- border-left: 1px solid #c1c1c1;
80782
- border-right: 1px solid #c1c1c1;
80783
- margin-left: -1px;
80784
- cursor: pointer;
80785
- &:hover {
80786
- background-color: rgba(0, 0, 0, 0.08);
80787
- }
80788
-
80789
- &.active {
80790
- color: ${ACTION_COLOR};
80791
- background-color: #ffffff;
80792
- box-shadow: 0 1px 3px 1px rgba(60, 64, 67, 0.15);
80793
- }
80794
-
80795
- .o-sheet-icon {
80796
- z-index: 1;
80797
-
80798
- &:hover {
80799
- background-color: rgba(0, 0, 0, 0.08);
80800
- }
80801
- }
80802
-
80803
- .o-sheet-name {
80804
- outline: none;
80805
- padding: 2px 4px;
80806
-
80807
- &.o-sheet-name-editable {
80808
- border-radius: 2px;
80809
- border: 2px solid mediumblue;
80810
- /* negative margins so nothing moves when the border is added */
80811
- margin-left: -2px;
80812
- margin-right: -2px;
80813
- }
80814
- }
80815
-
80816
- .o-sheet-color {
80817
- bottom: 0;
80818
- left: 0;
80819
- height: 6px;
80820
- z-index: 1;
80821
- width: calc(100% - 1px);
80822
- }
80823
- }
80824
-
80825
- .o-spreadshet-mobile .o-sheet {
80826
- height: ${MOBILE_BOTTOMBAR_HEIGHT}px;
80827
- }
80828
- `;
80829
78735
  class BottomBarSheet extends Component {
80830
78736
  static template = "o-spreadsheet-BottomBarSheet";
80831
78737
  static props = {
@@ -81105,20 +79011,6 @@ class AggregateStatisticsStore extends SpreadsheetStore {
81105
79011
  }
81106
79012
  }
81107
79013
 
81108
- // -----------------------------------------------------------------------------
81109
- // SpreadSheet
81110
- // -----------------------------------------------------------------------------
81111
- css /* scss */ `
81112
- .o-selection-statistic {
81113
- margin-right: 20px;
81114
- padding: 4px 4px 4px 8px;
81115
- color: #333;
81116
- cursor: pointer;
81117
- &:hover {
81118
- background-color: rgba(0, 0, 0, 0.08) !important;
81119
- }
81120
- }
81121
- `;
81122
79014
  class BottomBarStatistic extends Component {
81123
79015
  static template = "o-spreadsheet-BottomBarStatistic";
81124
79016
  static props = {
@@ -81175,77 +79067,6 @@ class BottomBarStatistic extends Component {
81175
79067
  // SpreadSheet
81176
79068
  // -----------------------------------------------------------------------------
81177
79069
  const MENU_MAX_HEIGHT = 250;
81178
- css /* scss */ `
81179
- .o-spreadsheet-bottom-bar {
81180
- background-color: ${BACKGROUND_GRAY_COLOR};
81181
- padding-left: ${HEADER_WIDTH}px;
81182
- font-size: 15px;
81183
- border-top: 1px solid lightgrey;
81184
-
81185
- .o-sheet-item {
81186
- cursor: pointer;
81187
- &:hover {
81188
- background-color: rgba(0, 0, 0, 0.08);
81189
- }
81190
- }
81191
-
81192
- .o-all-sheets {
81193
- max-width: 70%;
81194
- .o-bottom-bar-fade-out {
81195
- background-image: linear-gradient(-90deg, #cfcfcf, transparent 1%);
81196
- }
81197
-
81198
- .o-bottom-bar-fade-in {
81199
- z-index: 1;
81200
- background-image: linear-gradient(90deg, #cfcfcf, transparent 1%);
81201
- }
81202
-
81203
- .o-sheet-list {
81204
- overflow-y: hidden;
81205
- overflow-x: auto;
81206
-
81207
- &::-webkit-scrollbar {
81208
- display: none; /* Chrome */
81209
- }
81210
- -ms-overflow-style: none; /* IE and Edge */
81211
- scrollbar-width: none; /* Firefox */
81212
- }
81213
- }
81214
-
81215
- .o-bottom-bar-arrows {
81216
- .o-bottom-bar-arrow {
81217
- cursor: pointer;
81218
- &:hover:not([class*="o-disabled"]) {
81219
- .o-icon {
81220
- opacity: 0.9;
81221
- }
81222
- }
81223
-
81224
- .o-icon {
81225
- height: 18px;
81226
- width: 18px;
81227
- font-size: 18px;
81228
- }
81229
- }
81230
- }
81231
- }
81232
-
81233
- .o-spreadsheet-mobile .o-spreadsheet-bottom-bar {
81234
- padding-left: 0;
81235
-
81236
- .add-sheet-container {
81237
- order: 2;
81238
- }
81239
-
81240
- .o-add-sheet {
81241
- margin-left: 0.5rem;
81242
- }
81243
-
81244
- .o-all-sheets {
81245
- max-width: none;
81246
- }
81247
- }
81248
- `;
81249
79070
  class BottomBar extends Component {
81250
79071
  static template = "o-spreadsheet-BottomBar";
81251
79072
  static props = { onClick: Function };
@@ -81501,12 +79322,6 @@ class ClickableCellsStore extends SpreadsheetStore {
81501
79322
  }
81502
79323
  }
81503
79324
 
81504
- css /* scss */ `
81505
- .o-dashboard-clickable-cell {
81506
- position: absolute;
81507
- cursor: pointer;
81508
- }
81509
- `;
81510
79325
  class SpreadsheetDashboard extends Component {
81511
79326
  static template = "o-spreadsheet-SpreadsheetDashboard";
81512
79327
  static props = { getGridSize: Function };
@@ -81598,27 +79413,6 @@ class SpreadsheetDashboard extends Component {
81598
79413
  }
81599
79414
  }
81600
79415
 
81601
- css /* scss */ `
81602
- .o-header-group {
81603
- .o-header-group-header {
81604
- z-index: ${ComponentsImportance.HeaderGroupingButton};
81605
- .o-group-fold-button {
81606
- cursor: pointer;
81607
- width: 15px;
81608
- height: 15px;
81609
- border: 1px solid ${HEADER_GROUPING_BORDER_COLOR};
81610
- .o-icon {
81611
- width: 7px;
81612
- height: 7px;
81613
- }
81614
-
81615
- &:hover {
81616
- border-color: #777;
81617
- }
81618
- }
81619
- }
81620
- }
81621
- `;
81622
79416
  class AbstractHeaderGroup extends Component {
81623
79417
  static template = "o-spreadsheet-HeaderGroup";
81624
79418
  static props = {
@@ -81769,27 +79563,6 @@ class ColGroup extends AbstractHeaderGroup {
81769
79563
  }
81770
79564
  }
81771
79565
 
81772
- css /* scss */ `
81773
- .o-header-group-frozen-pane-border {
81774
- &.o-group-rows {
81775
- margin-top: -1px;
81776
- border-bottom: 3px solid ${FROZEN_PANE_HEADER_BORDER_COLOR};
81777
- }
81778
- &.o-group-columns {
81779
- margin-left: -1px;
81780
- border-right: 3px solid ${FROZEN_PANE_HEADER_BORDER_COLOR};
81781
- }
81782
- }
81783
-
81784
- .o-header-group-main-pane {
81785
- &.o-group-rows {
81786
- margin-top: -2px; /* Counteract o-header-group-frozen-pane-border offset */
81787
- }
81788
- &.o-group-columns {
81789
- margin-left: -2px;
81790
- }
81791
- }
81792
- `;
81793
79566
  class HeaderGroupContainer extends Component {
81794
79567
  static template = "o-spreadsheet-HeaderGroupContainer";
81795
79568
  static props = {
@@ -81868,121 +79641,6 @@ function useScreenWidth() {
81868
79641
  };
81869
79642
  }
81870
79643
 
81871
- css /* scss */ `
81872
- .o-sidePanel {
81873
- display: flex;
81874
- flex-direction: column;
81875
- overflow-x: hidden;
81876
- background-color: white;
81877
- border: solid ${GRAY_300};
81878
- border-width: 1px 0 0 1px;
81879
- user-select: none;
81880
- color: ${TEXT_BODY};
81881
-
81882
- &.collapsed {
81883
- padding: 8px;
81884
- cursor: pointer;
81885
-
81886
- .o-sidePanelTitle {
81887
- writing-mode: vertical-rl;
81888
- text-orientation: mixed;
81889
- }
81890
- }
81891
-
81892
- .o-sidePanelTitle {
81893
- line-height: 20px;
81894
- font-size: 16px;
81895
- }
81896
-
81897
- .o-sidePanelHeader {
81898
- padding: 8px;
81899
- border-bottom: 1px solid ${GRAY_300};
81900
- }
81901
-
81902
- .o-sidePanelAction {
81903
- padding: 5px 10px;
81904
- cursor: pointer;
81905
-
81906
- &.active {
81907
- background-color: ${BUTTON_ACTIVE_BG};
81908
- }
81909
-
81910
- &:hover {
81911
- background-color: ${BUTTON_HOVER_BG};
81912
- }
81913
- }
81914
- .o-sidePanelBody-container {
81915
- /* This overwrites the min-height: auto; of flex. Without this, a flex div cannot be smaller than its children */
81916
- min-height: 0;
81917
- }
81918
- .o-sidePanelBody {
81919
- overflow: auto;
81920
- width: 100%;
81921
- height: 100%;
81922
-
81923
- .o-section {
81924
- padding: 16px;
81925
-
81926
- .o-section-title {
81927
- font-weight: 500;
81928
- margin-bottom: 5px;
81929
- }
81930
-
81931
- .o-section-subtitle {
81932
- font-weight: 500;
81933
- font-size: 13px;
81934
- line-height: 14px;
81935
- margin: 8px 0 4px 0;
81936
- }
81937
-
81938
- .o-subsection-left {
81939
- display: inline-block;
81940
- width: 47%;
81941
- margin-right: 3%;
81942
- }
81943
-
81944
- .o-subsection-right {
81945
- display: inline-block;
81946
- width: 47%;
81947
- margin-left: 3%;
81948
- }
81949
- }
81950
-
81951
- .o-sidePanel-composer {
81952
- color: ${TEXT_BODY};
81953
- }
81954
- }
81955
-
81956
- .o-sidePanelButtons {
81957
- display: flex;
81958
- gap: 8px;
81959
- }
81960
-
81961
- .o-invalid {
81962
- border-width: 2px;
81963
- border-color: red;
81964
- }
81965
-
81966
- .o-sidePanel-handle-container {
81967
- width: 8px;
81968
- position: fixed;
81969
- top: 50%;
81970
- z-index: 1;
81971
- }
81972
- .o-sidePanel-handle {
81973
- cursor: col-resize;
81974
- color: #a9a9a9;
81975
- .o-icon {
81976
- height: 25px;
81977
- margin-left: -5px;
81978
- }
81979
- }
81980
- }
81981
-
81982
- .o-fw-bold {
81983
- font-weight: 500;
81984
- }
81985
- `;
81986
79644
  class SidePanel extends Component {
81987
79645
  static template = "o-spreadsheet-SidePanel";
81988
79646
  static props = {
@@ -82157,11 +79815,6 @@ class RibbonMenu extends Component {
82157
79815
  }
82158
79816
  }
82159
79817
 
82160
- css `
82161
- .o-small-composer {
82162
- z-index: ${ComponentsImportance.TopBarComposer};
82163
- }
82164
- `;
82165
79818
  class SmallBottomBar extends Component {
82166
79819
  static components = { Composer, BottomBar, Ripple, RibbonMenu };
82167
79820
  static template = "o-spreadsheet-SmallBottomBar";
@@ -82249,36 +79902,12 @@ class SmallBottomBar extends Component {
82249
79902
 
82250
79903
  const COMPOSER_MAX_HEIGHT = 300;
82251
79904
  /* svg free of use from https://uxwing.com/formula-fx-icon/ */
82252
- const FX_SVG = /*xml*/ `
82253
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
82254
- <path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
82255
- </svg>
82256
- `;
82257
- css /* scss */ `
82258
- .o-topbar-composer-container {
82259
- height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
82260
- }
82261
-
82262
- .o-topbar-composer {
82263
- height: fit-content;
82264
- margin-top: -1px;
82265
- margin-bottom: -1px;
82266
- border: 1px solid;
82267
- font-family: ${DEFAULT_FONT};
82268
-
82269
- /* In readonly we always show the fx icon if the composer is empty, not matter the focus */
82270
- .o-composer:empty:not(:focus):not(.active)::before,
82271
- &.o-topbar-composer-readonly .o-composer:empty::before {
82272
- content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
82273
- position: relative;
82274
- top: 20%;
82275
- }
82276
- }
82277
-
82278
- .user-select-text {
82279
- user-select: text;
82280
- }
82281
- `;
79905
+ // FIXME This svg is hardcoded in the css file. We should find a better way to handle it.
79906
+ // const FX_SVG = /*xml*/ `
79907
+ // <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
79908
+ // <path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
79909
+ // </svg>
79910
+ // `;
82282
79911
  class TopBarComposer extends Component {
82283
79912
  static template = "o-spreadsheet-TopBarComposer";
82284
79913
  static props = {};
@@ -82314,18 +79943,6 @@ class TopBarComposer extends Component {
82314
79943
  style.height = this.focus === "inactive" ? `${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px` : "fit-content";
82315
79944
  return cssPropertiesToCss(style);
82316
79945
  }
82317
- get containerStyle() {
82318
- if (this.focus === "inactive") {
82319
- return cssPropertiesToCss({
82320
- "border-color": SEPARATOR_COLOR,
82321
- "border-right": "none",
82322
- });
82323
- }
82324
- return cssPropertiesToCss({
82325
- "border-color": SELECTION_BORDER_COLOR,
82326
- "z-index": String(ComponentsImportance.TopBarComposer),
82327
- });
82328
- }
82329
79946
  onFocus(selection) {
82330
79947
  this.composerFocusStore.focusComposer(this.composerInterface, { selection });
82331
79948
  }
@@ -82415,79 +80032,6 @@ const BORDER_POSITIONS = [
82415
80032
  // -----------------------------------------------------------------------------
82416
80033
  // Border Editor
82417
80034
  // -----------------------------------------------------------------------------
82418
- css /* scss */ `
82419
- .o-border-selector {
82420
- padding: 4px;
82421
- background-color: white;
82422
-
82423
- .o-divider {
82424
- border-right: 1px solid ${GRAY_300};
82425
- margin: 0 6px;
82426
- }
82427
-
82428
- .o-border-selector-section {
82429
- .o-dropdown-line {
82430
- height: 30px;
82431
- margin: 1px;
82432
- .o-line-item {
82433
- padding: 4px;
82434
- width: 26px;
82435
- height: 26px;
82436
- &.active {
82437
- background-color: ${BUTTON_ACTIVE_BG};
82438
- }
82439
- }
82440
- }
82441
- .o-border-style-tool {
82442
- padding: 0px 3px;
82443
- margin: 2px;
82444
- height: 25px;
82445
- }
82446
- }
82447
- }
82448
-
82449
- .o-border-style-dropdown {
82450
- background: #ffffff;
82451
- padding: 4px;
82452
- .o-dropdown-line {
82453
- }
82454
- .o-style-preview {
82455
- margin: 7px 5px 7px 5px;
82456
- width: 60px;
82457
- height: 5px;
82458
- }
82459
- .o-style-thin {
82460
- border-bottom: 1px solid #000000;
82461
- }
82462
- .o-style-medium {
82463
- border-bottom: 2px solid #000000;
82464
- }
82465
- .o-style-thick {
82466
- border-bottom: 3px solid #000000;
82467
- }
82468
- .o-style-dashed {
82469
- border-bottom: 1px dashed #000000;
82470
- }
82471
- .o-style-dotted {
82472
- border-bottom: 1px dotted #000000;
82473
- }
82474
- .o-dropdown-border-type {
82475
- cursor: pointer;
82476
- &:not(.o-disabled):not(.active):hover {
82477
- background-color: ${BUTTON_HOVER_BG};
82478
- }
82479
- }
82480
- .o-dropdown-border-check {
82481
- width: 20px;
82482
- font-size: 12px;
82483
- }
82484
- .o-border-picker-button {
82485
- padding: 0px !important;
82486
- margin: 5px 0px 0px 0px !important;
82487
- height: 25px !important;
82488
- }
82489
- }
82490
- `;
82491
80035
  class BorderEditor extends Component {
82492
80036
  static template = "o-spreadsheet-BorderEditor";
82493
80037
  static props = {
@@ -83038,90 +80582,6 @@ topBarToolBarRegistry
83038
80582
  // -----------------------------------------------------------------------------
83039
80583
  // TopBar
83040
80584
  // -----------------------------------------------------------------------------
83041
- css /* scss */ `
83042
- .o-topbar-divider {
83043
- border-right: 1px solid ${SEPARATOR_COLOR};
83044
- width: 0;
83045
- margin: 0 6px;
83046
- height: 30px;
83047
- }
83048
-
83049
- .o-toolbar-button {
83050
- height: 30px;
83051
- }
83052
-
83053
- .o-spreadsheet-topbar {
83054
- line-height: 1.2;
83055
- font-size: 14px;
83056
- font-weight: 500;
83057
- background-color: #fff;
83058
-
83059
- .o-topbar-top {
83060
- border-bottom: 1px solid ${SEPARATOR_COLOR};
83061
- padding: 2px 10px;
83062
-
83063
- /* Menus */
83064
- .o-topbar-topleft {
83065
- .o-topbar-menu {
83066
- padding: 4px 6px;
83067
- margin: 0 2px;
83068
-
83069
- &.active {
83070
- background-color: ${BUTTON_ACTIVE_BG};
83071
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83072
- }
83073
- }
83074
- }
83075
- }
83076
-
83077
- .irregularity-map {
83078
- border-top: 1px solid ${SEPARATOR_COLOR};
83079
- height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
83080
-
83081
- .alert-info {
83082
- border-left: 3px solid ${ALERT_INFO_BORDER};
83083
- }
83084
- }
83085
-
83086
- .o-topbar-composer {
83087
- flex-grow: 1;
83088
- }
83089
-
83090
- /* Toolbar */
83091
- .o-topbar-toolbar {
83092
- height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
83093
-
83094
- .o-readonly-toolbar {
83095
- background-color: ${BACKGROUND_HEADER_COLOR};
83096
- padding-left: 18px;
83097
- padding-right: 18px;
83098
- }
83099
-
83100
- /* Toolbar */
83101
- .o-toolbar-tools {
83102
- cursor: default;
83103
- }
83104
- }
83105
- }
83106
-
83107
- .o-spreadsheet-mobile {
83108
- .o-topbar-toolbar {
83109
- height: ${MOBILE_TOPBAR_TOOLBAR_HEIGHT}px;
83110
- }
83111
- .o-topbar-divider {
83112
- border-width: 2px;
83113
- border-radius: 4px;
83114
- }
83115
-
83116
- .o-toolbar-button {
83117
- height: 35px;
83118
- width: 31px;
83119
- .o-toolbar-button.o-mobile-disabled * {
83120
- color: ${DISABLED_TEXT_COLOR};
83121
- cursor: not-allowed;
83122
- }
83123
- }
83124
- `;
83125
80585
  class TopBar extends Component {
83126
80586
  static template = "o-spreadsheet-TopBar";
83127
80587
  static props = {
@@ -83395,251 +80855,6 @@ class WebClipboardWrapper {
83395
80855
  }
83396
80856
  }
83397
80857
 
83398
- // -----------------------------------------------------------------------------
83399
- // SpreadSheet
83400
- // -----------------------------------------------------------------------------
83401
- const CARET_DOWN_SVG = /*xml*/ `
83402
- <svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
83403
- <polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
83404
- </svg>
83405
- `;
83406
- css /* scss */ `
83407
- .o-spreadsheet {
83408
- position: relative;
83409
- display: grid;
83410
- font-size: 14px;
83411
-
83412
- .text-muted {
83413
- color: ${TEXT_BODY_MUTED} !important;
83414
- }
83415
- .o-disabled {
83416
- opacity: 0.4;
83417
- cursor: default;
83418
- pointer-events: none;
83419
- }
83420
-
83421
- &,
83422
- *,
83423
- *:before,
83424
- *:after {
83425
- /* rtl not supported ATM */
83426
- direction: ltr;
83427
- }
83428
- .o-separator {
83429
- border-bottom: ${MENU_SEPARATOR_BORDER_WIDTH}px solid ${SEPARATOR_COLOR};
83430
- margin-top: ${MENU_SEPARATOR_PADDING}px;
83431
- margin-bottom: ${MENU_SEPARATOR_PADDING}px;
83432
- }
83433
- .o-hoverable-button {
83434
- border-radius: 2px;
83435
- cursor: pointer;
83436
- .o-icon {
83437
- color: ${TEXT_BODY};
83438
- }
83439
- &:not(.o-disabled):not(.active):hover {
83440
- background-color: ${BUTTON_HOVER_BG};
83441
- color: ${BUTTON_HOVER_TEXT_COLOR};
83442
- .o-icon {
83443
- color: ${BUTTON_HOVER_TEXT_COLOR};
83444
- }
83445
- }
83446
- &.active {
83447
- background-color: ${BUTTON_ACTIVE_BG};
83448
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83449
- .o-icon {
83450
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83451
- }
83452
- }
83453
- }
83454
-
83455
- .o-grid-container {
83456
- display: grid;
83457
- background-color: ${HEADER_GROUPING_BACKGROUND_COLOR};
83458
-
83459
- .o-top-left {
83460
- border: 1px solid ${GRID_BORDER_COLOR};
83461
- margin-bottom: -1px;
83462
- margin-right: -1px;
83463
- }
83464
-
83465
- .o-column-groups {
83466
- grid-column-start: 2;
83467
- border-top: 1px solid ${GRID_BORDER_COLOR};
83468
- }
83469
-
83470
- .o-row-groups {
83471
- grid-row-start: 2;
83472
- }
83473
-
83474
- .o-group-grid {
83475
- border-top: 1px solid ${GRID_BORDER_COLOR};
83476
- border-left: 1px solid ${GRID_BORDER_COLOR};
83477
- }
83478
- }
83479
-
83480
- .o-input {
83481
- min-width: 0px;
83482
- padding: 1px 0;
83483
- width: 100%;
83484
- outline: none;
83485
- border-color: ${GRAY_300};
83486
- color: ${GRAY_900};
83487
-
83488
- &::placeholder {
83489
- opacity: 0.5;
83490
- }
83491
- &:focus {
83492
- border-color: ${ACTION_COLOR};
83493
- }
83494
- }
83495
-
83496
- select.o-input {
83497
- cursor: pointer;
83498
- border-width: 0 0 1px 0;
83499
- padding: 1px 6px 1px 0px;
83500
-
83501
- appearance: none;
83502
- -webkit-appearance: none;
83503
- -moz-appearance: none;
83504
- background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
83505
- no-repeat right center;
83506
- text-overflow: ellipsis;
83507
-
83508
- &:disabled {
83509
- color: ${DISABLED_TEXT_COLOR};
83510
- opacity: 0.4;
83511
- cursor: default;
83512
- }
83513
- }
83514
-
83515
- .o-input[type="text"] {
83516
- border-width: 0 0 1px 0;
83517
- }
83518
-
83519
- .o-input[type="number"],
83520
- .o-number-input {
83521
- border-width: 0 0 1px 0;
83522
- /* Remove number input arrows */
83523
- appearance: textfield;
83524
- &::-webkit-outer-spin-button,
83525
- &::-webkit-inner-spin-button {
83526
- -webkit-appearance: none;
83527
- margin: 0;
83528
- }
83529
- }
83530
- }
83531
-
83532
- .o-two-columns {
83533
- grid-column: 1 / 3;
83534
- }
83535
-
83536
- .o-text-icon {
83537
- vertical-align: middle;
83538
- }
83539
- `;
83540
- // -----------------------------------------------------------------------------
83541
- // GRID STYLE
83542
- // -----------------------------------------------------------------------------
83543
- css /* scss */ `
83544
- .o-grid {
83545
- position: relative;
83546
- overflow: hidden;
83547
- background-color: ${BACKGROUND_GRAY_COLOR};
83548
- &:focus {
83549
- outline: none;
83550
- }
83551
-
83552
- > canvas {
83553
- box-sizing: content-box;
83554
- border-bottom: 1px solid #e2e3e3;
83555
- border-right: 1px solid #e2e3e3;
83556
- }
83557
-
83558
- .o-grid-overlay {
83559
- position: absolute;
83560
- outline: none;
83561
- }
83562
- }
83563
-
83564
- .o-button {
83565
- border: 1px solid;
83566
- border-radius: 4px;
83567
- font-weight: 500;
83568
- font-size: 14px;
83569
- height: 32px;
83570
- line-height: 16px;
83571
- flex-grow: 1;
83572
- background-color: ${BUTTON_BG};
83573
- border: 1px solid ${GRAY_200};
83574
- color: ${TEXT_BODY};
83575
-
83576
- &:disabled {
83577
- color: ${DISABLED_TEXT_COLOR};
83578
- }
83579
-
83580
- &.primary {
83581
- background-color: ${PRIMARY_BUTTON_BG};
83582
- border-color: ${PRIMARY_BUTTON_BG};
83583
- color: #fff;
83584
- &:hover:enabled {
83585
- color: #fff;
83586
- background-color: ${PRIMARY_BUTTON_HOVER_BG};
83587
- }
83588
- &:active:enabled {
83589
- background-color: ${PRIMARY_BUTTON_ACTIVE_BG};
83590
- color: ${PRIMARY_BUTTON_BG};
83591
- }
83592
- &.o-disabled,
83593
- &:disabled {
83594
- opacity: 0.5;
83595
- }
83596
- }
83597
-
83598
- &:hover:enabled {
83599
- color: ${BUTTON_HOVER_TEXT_COLOR};
83600
- background-color: ${BUTTON_HOVER_BG};
83601
- }
83602
- &:active:enabled {
83603
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83604
- background-color: ${BUTTON_ACTIVE_BG};
83605
- }
83606
-
83607
- &.o-disabled,
83608
- &:disabled {
83609
- opacity: 0.8;
83610
- }
83611
-
83612
- &.o-button-danger:hover {
83613
- color: #ffffff;
83614
- background: ${ALERT_DANGER_BORDER};
83615
- }
83616
- }
83617
-
83618
- .o-button-link {
83619
- cursor: pointer;
83620
- text-decoration: none;
83621
- color: ${ACTION_COLOR};
83622
- font-weight: 500;
83623
- &:hover,
83624
- &:active {
83625
- color: ${ACTION_COLOR_HOVER};
83626
- }
83627
- }
83628
-
83629
- .o-button-icon {
83630
- cursor: pointer;
83631
- color: ${TEXT_BODY_MUTED};
83632
- font-weight: 500;
83633
- &:hover,
83634
- &:active {
83635
- color: ${TEXT_BODY};
83636
- }
83637
- }
83638
-
83639
- .o-spreadsheet-bottombar-wrapper {
83640
- z-index: ${ComponentsImportance.ScrollBar + 1};
83641
- }
83642
- `;
83643
80858
  class Spreadsheet extends Component {
83644
80859
  static template = "o-spreadsheet-Spreadsheet";
83645
80860
  static props = {
@@ -88468,6 +85683,6 @@ const chartHelpers = { ...CHART_HELPERS, ...CHART_RUNTIME_HELPERS };
88468
85683
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
88469
85684
 
88470
85685
 
88471
- __info__.version = "19.1.0-alpha.1";
88472
- __info__.date = "2025-09-12T13:33:41.605Z";
88473
- __info__.hash = "d3e4e7b";
85686
+ __info__.version = "19.1.0-alpha.2";
85687
+ __info__.date = "2025-09-19T07:26:49.306Z";
85688
+ __info__.hash = "8cc543d";