@odoo/o-spreadsheet 19.2.28 → 19.2.29
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.
package/dist/o_spreadsheet.css
CHANGED
|
@@ -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.2.
|
|
6
|
-
* @date 2026-09-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.29
|
|
6
|
+
* @date 2026-09-10T05:38:17.282Z
|
|
7
|
+
* @hash a3d2956
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f9fafb, #1b1d26);
|
|
@@ -2647,6 +2647,9 @@
|
|
|
2647
2647
|
position: absolute;
|
|
2648
2648
|
cursor: pointer;
|
|
2649
2649
|
}
|
|
2650
|
+
.o-grid.o-dashboard-grid {
|
|
2651
|
+
background: #ffffff;
|
|
2652
|
+
}
|
|
2650
2653
|
}
|
|
2651
2654
|
|
|
2652
2655
|
/* Originates from src/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.css */
|
|
@@ -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.2.
|
|
6
|
-
* @date 2026-09-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.29
|
|
6
|
+
* @date 2026-09-10T05:38:15.721Z
|
|
7
|
+
* @hash a3d2956
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { App, Component, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, whenReady, xml } from "@odoo/owl";
|
|
@@ -8372,7 +8372,7 @@ function drawLineOrBarOrRadarChartValues(chart, options, ctx) {
|
|
|
8372
8372
|
const point = dataset.data[i];
|
|
8373
8373
|
const xPosition = point.x;
|
|
8374
8374
|
let yPosition = 0;
|
|
8375
|
-
if (
|
|
8375
|
+
if (dataset.type === "line" || dataset.type === "radar") yPosition = value < 0 ? point.y + 10 : point.y - 10;
|
|
8376
8376
|
else {
|
|
8377
8377
|
const yZeroLine = yAxisScale.getPixelForValue(0);
|
|
8378
8378
|
const distanceFromAxisOrigin = Math.abs(yZeroLine - point.y);
|
|
@@ -11262,7 +11262,7 @@ const RemoveDuplicateTerms = { Errors: {
|
|
|
11262
11262
|
["MoreThanOneRangeSelected"]: _t("Please select only one range of cells"),
|
|
11263
11263
|
["EmptySelectedRange"]: _t("Please select a range of cells containing values."),
|
|
11264
11264
|
["NoColumnsProvided"]: _t("Please select at latest one column to analyze."),
|
|
11265
|
-
["WillRemoveExistingMerge"]: _t("
|
|
11265
|
+
["WillRemoveExistingMerge"]: _t("Cannot perform this action on merged cells. Unmerge the cells and try again.")
|
|
11266
11266
|
} };
|
|
11267
11267
|
const DVTerms = {
|
|
11268
11268
|
DateIs: {
|
|
@@ -33966,7 +33966,7 @@ var AbstractComposerStore = class extends SpreadsheetStore {
|
|
|
33966
33966
|
col: range.zone.left,
|
|
33967
33967
|
row: range.zone.top
|
|
33968
33968
|
});
|
|
33969
|
-
if (spreadZone) return this.getters.getRangeFromZone(sheetId, spreadZone);
|
|
33969
|
+
if (spreadZone) return this.getters.getRangeFromZone(range.sheetId, spreadZone);
|
|
33970
33970
|
return range;
|
|
33971
33971
|
}
|
|
33972
33972
|
async updateAutoCompleteProvider() {
|
|
@@ -39709,43 +39709,6 @@ var CalendarChartConfigPanel = class extends GenericChartConfigPanel {
|
|
|
39709
39709
|
onChange: this.onUpdateDataSetsHaveTitle.bind(this)
|
|
39710
39710
|
}];
|
|
39711
39711
|
}
|
|
39712
|
-
getGroupByOptions() {
|
|
39713
|
-
const sheetId = this.env.model.getters.getFigureSheetId(this.env.model.getters.getFigureIdFromChartId(this.props.chartId));
|
|
39714
|
-
const dataSets = createDataSets(this.env.model.getters, this.props.definition.dataSets, sheetId, this.props.definition.dataSetsHaveTitle);
|
|
39715
|
-
if (dataSets.length === 0) return [];
|
|
39716
|
-
const labelRange = createValidRange(this.env.model.getters, sheetId, this.props.definition.labelRange);
|
|
39717
|
-
const labels = getBarChartData(this.props.definition, dataSets, labelRange, this.env.model.getters).labels.filter((l) => isDateTime(l, DEFAULT_LOCALE));
|
|
39718
|
-
if (labels.length === 0) return [];
|
|
39719
|
-
const dates = labels.map((label) => toJsDate(label, this.env.model.getters.getLocale()));
|
|
39720
|
-
const uniqueYears = /* @__PURE__ */ new Set();
|
|
39721
|
-
const uniqueMonths = /* @__PURE__ */ new Set();
|
|
39722
|
-
const uniqueDays = /* @__PURE__ */ new Set();
|
|
39723
|
-
const uniqueHours = /* @__PURE__ */ new Set();
|
|
39724
|
-
const uniqueMinutes = /* @__PURE__ */ new Set();
|
|
39725
|
-
const uniqueSeconds = /* @__PURE__ */ new Set();
|
|
39726
|
-
for (const date of dates) {
|
|
39727
|
-
uniqueYears.add(date.getFullYear());
|
|
39728
|
-
uniqueMonths.add(date.getMonth());
|
|
39729
|
-
uniqueDays.add(date.getDate());
|
|
39730
|
-
uniqueHours.add(date.getHours());
|
|
39731
|
-
uniqueMinutes.add(date.getMinutes());
|
|
39732
|
-
uniqueSeconds.add(date.getSeconds());
|
|
39733
|
-
}
|
|
39734
|
-
return this.groupByChoices.filter((groupBy) => {
|
|
39735
|
-
switch (groupBy.value) {
|
|
39736
|
-
case "year": return uniqueYears.size > 1;
|
|
39737
|
-
case "quarter_number":
|
|
39738
|
-
case "month_number": return uniqueMonths.size > 1;
|
|
39739
|
-
case "iso_week_number":
|
|
39740
|
-
case "day_of_month":
|
|
39741
|
-
case "day_of_week": return uniqueDays.size > 1;
|
|
39742
|
-
case "hour_number": return uniqueHours.size > 1;
|
|
39743
|
-
case "minute_number": return uniqueMinutes.size > 1;
|
|
39744
|
-
case "second_number": return uniqueSeconds.size > 1;
|
|
39745
|
-
default: return false;
|
|
39746
|
-
}
|
|
39747
|
-
});
|
|
39748
|
-
}
|
|
39749
39712
|
getGroupByType(currentAxis) {
|
|
39750
39713
|
return (currentAxis === "horizontal" ? this.props.definition.horizontalGroupBy : this.props.definition.verticalGroupBy) || "year";
|
|
39751
39714
|
}
|
|
@@ -42336,7 +42299,7 @@ var FindAndReplacePanel = class extends Component {
|
|
|
42336
42299
|
}
|
|
42337
42300
|
get specificRangeMatchesCount() {
|
|
42338
42301
|
const range = this.searchOptions.specificRange;
|
|
42339
|
-
if (!range) return "";
|
|
42302
|
+
if (!range || range.invalidSheetName || range.invalidXc) return "";
|
|
42340
42303
|
const { sheetId, zone } = range;
|
|
42341
42304
|
return _t("%(matches)s matches in range %(range)s of %(sheetName)s", {
|
|
42342
42305
|
matches: this.store.specificRangeMatchesCount,
|
|
@@ -52200,6 +52163,11 @@ var GridOverlay = class extends Component {
|
|
|
52200
52163
|
});
|
|
52201
52164
|
return icon?.onClick ? icon : void 0;
|
|
52202
52165
|
}
|
|
52166
|
+
get isFooterVisible() {
|
|
52167
|
+
const { y } = this.env.model.getters.getMainViewportCoordinates();
|
|
52168
|
+
const { height } = this.env.model.getters.getSheetViewDimension();
|
|
52169
|
+
return !this.env.model.getters.isReadonly() && height - y > 46;
|
|
52170
|
+
}
|
|
52203
52171
|
};
|
|
52204
52172
|
|
|
52205
52173
|
//#endregion
|
|
@@ -66926,7 +66894,8 @@ var GeoFeaturePlugin = class extends UIPlugin {
|
|
|
66926
66894
|
static getters = [
|
|
66927
66895
|
"getGeoJsonFeatures",
|
|
66928
66896
|
"geoFeatureNameToId",
|
|
66929
|
-
"getGeoChartAvailableRegions"
|
|
66897
|
+
"getGeoChartAvailableRegions",
|
|
66898
|
+
"loadUsedGeoJsonFeatures"
|
|
66930
66899
|
];
|
|
66931
66900
|
geoJsonService;
|
|
66932
66901
|
geoJsonCache = {};
|
|
@@ -66963,6 +66932,23 @@ var GeoFeaturePlugin = class extends UIPlugin {
|
|
|
66963
66932
|
}
|
|
66964
66933
|
return this.geoJsonService.geoFeatureNameToId(region, featureName);
|
|
66965
66934
|
}
|
|
66935
|
+
loadUsedGeoJsonFeatures() {
|
|
66936
|
+
const regions = this.getters.getSheetIds().flatMap((sheetId) => this.getters.getChartIds(sheetId).map((chartId) => {
|
|
66937
|
+
const definition = this.getters.getChartDefinition(chartId);
|
|
66938
|
+
return definition.type === "geo" ? definition.region || this.getters.getGeoChartAvailableRegions()[0]?.id : void 0;
|
|
66939
|
+
})).filter(isDefined);
|
|
66940
|
+
const uniqueRegions = Array.from(new Set(regions));
|
|
66941
|
+
if (uniqueRegions.length && !this.geoJsonService) {
|
|
66942
|
+
console.error("No geoJsonService provided to the model");
|
|
66943
|
+
return Promise.resolve();
|
|
66944
|
+
}
|
|
66945
|
+
for (const region of uniqueRegions) this.getGeoJsonFeatures(region);
|
|
66946
|
+
const promises = uniqueRegions.map((region) => {
|
|
66947
|
+
const cachedGeoJson = this.geoJsonCache[region];
|
|
66948
|
+
return cachedGeoJson instanceof Promise ? cachedGeoJson : Promise.resolve();
|
|
66949
|
+
});
|
|
66950
|
+
return Promise.all(promises).then(() => {});
|
|
66951
|
+
}
|
|
66966
66952
|
convertToGeoJson(json) {
|
|
66967
66953
|
if (!json) return null;
|
|
66968
66954
|
if (json.type === "Topology") {
|
|
@@ -69946,7 +69932,7 @@ var InternalViewport = class {
|
|
|
69946
69932
|
let height = lastRowEnd - this.offsetCorrectionY;
|
|
69947
69933
|
if (this.canScrollVertically) {
|
|
69948
69934
|
height = Math.max(height, this.viewportHeight);
|
|
69949
|
-
if (lastRowEnd + 46 > height && !this.getters.isReadonly()) height += 46;
|
|
69935
|
+
if (lastRowEnd + 46 > height && !this.getters.isReadonly() && this.viewportHeight > 46) height += 46;
|
|
69950
69936
|
}
|
|
69951
69937
|
return {
|
|
69952
69938
|
width,
|
|
@@ -81836,6 +81822,6 @@ const chartHelpers = {
|
|
|
81836
81822
|
//#endregion
|
|
81837
81823
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CompiledFormula, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, canExecuteInReadonly, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isSheetDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
81838
81824
|
|
|
81839
|
-
__info__.version = "19.2.
|
|
81840
|
-
__info__.date = "2026-09-
|
|
81841
|
-
__info__.hash = "
|
|
81825
|
+
__info__.version = "19.2.29";
|
|
81826
|
+
__info__.date = "2026-09-10T05:38:15.721Z";
|
|
81827
|
+
__info__.hash = "a3d2956";
|
|
@@ -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.2.
|
|
6
|
-
* @date 2026-09-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.29
|
|
6
|
+
* @date 2026-09-10T05:38:15.721Z
|
|
7
|
+
* @hash a3d2956
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -8374,7 +8374,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8374
8374
|
const point = dataset.data[i];
|
|
8375
8375
|
const xPosition = point.x;
|
|
8376
8376
|
let yPosition = 0;
|
|
8377
|
-
if (
|
|
8377
|
+
if (dataset.type === "line" || dataset.type === "radar") yPosition = value < 0 ? point.y + 10 : point.y - 10;
|
|
8378
8378
|
else {
|
|
8379
8379
|
const yZeroLine = yAxisScale.getPixelForValue(0);
|
|
8380
8380
|
const distanceFromAxisOrigin = Math.abs(yZeroLine - point.y);
|
|
@@ -11264,7 +11264,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
11264
11264
|
["MoreThanOneRangeSelected"]: _t("Please select only one range of cells"),
|
|
11265
11265
|
["EmptySelectedRange"]: _t("Please select a range of cells containing values."),
|
|
11266
11266
|
["NoColumnsProvided"]: _t("Please select at latest one column to analyze."),
|
|
11267
|
-
["WillRemoveExistingMerge"]: _t("
|
|
11267
|
+
["WillRemoveExistingMerge"]: _t("Cannot perform this action on merged cells. Unmerge the cells and try again.")
|
|
11268
11268
|
} };
|
|
11269
11269
|
const DVTerms = {
|
|
11270
11270
|
DateIs: {
|
|
@@ -33968,7 +33968,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
33968
33968
|
col: range.zone.left,
|
|
33969
33969
|
row: range.zone.top
|
|
33970
33970
|
});
|
|
33971
|
-
if (spreadZone) return this.getters.getRangeFromZone(sheetId, spreadZone);
|
|
33971
|
+
if (spreadZone) return this.getters.getRangeFromZone(range.sheetId, spreadZone);
|
|
33972
33972
|
return range;
|
|
33973
33973
|
}
|
|
33974
33974
|
async updateAutoCompleteProvider() {
|
|
@@ -39711,43 +39711,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
39711
39711
|
onChange: this.onUpdateDataSetsHaveTitle.bind(this)
|
|
39712
39712
|
}];
|
|
39713
39713
|
}
|
|
39714
|
-
getGroupByOptions() {
|
|
39715
|
-
const sheetId = this.env.model.getters.getFigureSheetId(this.env.model.getters.getFigureIdFromChartId(this.props.chartId));
|
|
39716
|
-
const dataSets = createDataSets(this.env.model.getters, this.props.definition.dataSets, sheetId, this.props.definition.dataSetsHaveTitle);
|
|
39717
|
-
if (dataSets.length === 0) return [];
|
|
39718
|
-
const labelRange = createValidRange(this.env.model.getters, sheetId, this.props.definition.labelRange);
|
|
39719
|
-
const labels = getBarChartData(this.props.definition, dataSets, labelRange, this.env.model.getters).labels.filter((l) => isDateTime(l, DEFAULT_LOCALE));
|
|
39720
|
-
if (labels.length === 0) return [];
|
|
39721
|
-
const dates = labels.map((label) => toJsDate(label, this.env.model.getters.getLocale()));
|
|
39722
|
-
const uniqueYears = /* @__PURE__ */ new Set();
|
|
39723
|
-
const uniqueMonths = /* @__PURE__ */ new Set();
|
|
39724
|
-
const uniqueDays = /* @__PURE__ */ new Set();
|
|
39725
|
-
const uniqueHours = /* @__PURE__ */ new Set();
|
|
39726
|
-
const uniqueMinutes = /* @__PURE__ */ new Set();
|
|
39727
|
-
const uniqueSeconds = /* @__PURE__ */ new Set();
|
|
39728
|
-
for (const date of dates) {
|
|
39729
|
-
uniqueYears.add(date.getFullYear());
|
|
39730
|
-
uniqueMonths.add(date.getMonth());
|
|
39731
|
-
uniqueDays.add(date.getDate());
|
|
39732
|
-
uniqueHours.add(date.getHours());
|
|
39733
|
-
uniqueMinutes.add(date.getMinutes());
|
|
39734
|
-
uniqueSeconds.add(date.getSeconds());
|
|
39735
|
-
}
|
|
39736
|
-
return this.groupByChoices.filter((groupBy) => {
|
|
39737
|
-
switch (groupBy.value) {
|
|
39738
|
-
case "year": return uniqueYears.size > 1;
|
|
39739
|
-
case "quarter_number":
|
|
39740
|
-
case "month_number": return uniqueMonths.size > 1;
|
|
39741
|
-
case "iso_week_number":
|
|
39742
|
-
case "day_of_month":
|
|
39743
|
-
case "day_of_week": return uniqueDays.size > 1;
|
|
39744
|
-
case "hour_number": return uniqueHours.size > 1;
|
|
39745
|
-
case "minute_number": return uniqueMinutes.size > 1;
|
|
39746
|
-
case "second_number": return uniqueSeconds.size > 1;
|
|
39747
|
-
default: return false;
|
|
39748
|
-
}
|
|
39749
|
-
});
|
|
39750
|
-
}
|
|
39751
39714
|
getGroupByType(currentAxis) {
|
|
39752
39715
|
return (currentAxis === "horizontal" ? this.props.definition.horizontalGroupBy : this.props.definition.verticalGroupBy) || "year";
|
|
39753
39716
|
}
|
|
@@ -42338,7 +42301,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
42338
42301
|
}
|
|
42339
42302
|
get specificRangeMatchesCount() {
|
|
42340
42303
|
const range = this.searchOptions.specificRange;
|
|
42341
|
-
if (!range) return "";
|
|
42304
|
+
if (!range || range.invalidSheetName || range.invalidXc) return "";
|
|
42342
42305
|
const { sheetId, zone } = range;
|
|
42343
42306
|
return _t("%(matches)s matches in range %(range)s of %(sheetName)s", {
|
|
42344
42307
|
matches: this.store.specificRangeMatchesCount,
|
|
@@ -52202,6 +52165,11 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
52202
52165
|
});
|
|
52203
52166
|
return icon?.onClick ? icon : void 0;
|
|
52204
52167
|
}
|
|
52168
|
+
get isFooterVisible() {
|
|
52169
|
+
const { y } = this.env.model.getters.getMainViewportCoordinates();
|
|
52170
|
+
const { height } = this.env.model.getters.getSheetViewDimension();
|
|
52171
|
+
return !this.env.model.getters.isReadonly() && height - y > 46;
|
|
52172
|
+
}
|
|
52205
52173
|
};
|
|
52206
52174
|
|
|
52207
52175
|
//#endregion
|
|
@@ -66928,7 +66896,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
66928
66896
|
static getters = [
|
|
66929
66897
|
"getGeoJsonFeatures",
|
|
66930
66898
|
"geoFeatureNameToId",
|
|
66931
|
-
"getGeoChartAvailableRegions"
|
|
66899
|
+
"getGeoChartAvailableRegions",
|
|
66900
|
+
"loadUsedGeoJsonFeatures"
|
|
66932
66901
|
];
|
|
66933
66902
|
geoJsonService;
|
|
66934
66903
|
geoJsonCache = {};
|
|
@@ -66965,6 +66934,23 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
66965
66934
|
}
|
|
66966
66935
|
return this.geoJsonService.geoFeatureNameToId(region, featureName);
|
|
66967
66936
|
}
|
|
66937
|
+
loadUsedGeoJsonFeatures() {
|
|
66938
|
+
const regions = this.getters.getSheetIds().flatMap((sheetId) => this.getters.getChartIds(sheetId).map((chartId) => {
|
|
66939
|
+
const definition = this.getters.getChartDefinition(chartId);
|
|
66940
|
+
return definition.type === "geo" ? definition.region || this.getters.getGeoChartAvailableRegions()[0]?.id : void 0;
|
|
66941
|
+
})).filter(isDefined);
|
|
66942
|
+
const uniqueRegions = Array.from(new Set(regions));
|
|
66943
|
+
if (uniqueRegions.length && !this.geoJsonService) {
|
|
66944
|
+
console.error("No geoJsonService provided to the model");
|
|
66945
|
+
return Promise.resolve();
|
|
66946
|
+
}
|
|
66947
|
+
for (const region of uniqueRegions) this.getGeoJsonFeatures(region);
|
|
66948
|
+
const promises = uniqueRegions.map((region) => {
|
|
66949
|
+
const cachedGeoJson = this.geoJsonCache[region];
|
|
66950
|
+
return cachedGeoJson instanceof Promise ? cachedGeoJson : Promise.resolve();
|
|
66951
|
+
});
|
|
66952
|
+
return Promise.all(promises).then(() => {});
|
|
66953
|
+
}
|
|
66968
66954
|
convertToGeoJson(json) {
|
|
66969
66955
|
if (!json) return null;
|
|
66970
66956
|
if (json.type === "Topology") {
|
|
@@ -69948,7 +69934,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
69948
69934
|
let height = lastRowEnd - this.offsetCorrectionY;
|
|
69949
69935
|
if (this.canScrollVertically) {
|
|
69950
69936
|
height = Math.max(height, this.viewportHeight);
|
|
69951
|
-
if (lastRowEnd + 46 > height && !this.getters.isReadonly()) height += 46;
|
|
69937
|
+
if (lastRowEnd + 46 > height && !this.getters.isReadonly() && this.viewportHeight > 46) height += 46;
|
|
69952
69938
|
}
|
|
69953
69939
|
return {
|
|
69954
69940
|
width,
|
|
@@ -81896,8 +81882,8 @@ exports.stores = stores;
|
|
|
81896
81882
|
exports.tokenColors = tokenColors;
|
|
81897
81883
|
exports.tokenize = tokenize;
|
|
81898
81884
|
|
|
81899
|
-
__info__.version = "19.2.
|
|
81900
|
-
__info__.date = "2026-09-
|
|
81901
|
-
__info__.hash = "
|
|
81885
|
+
__info__.version = "19.2.29";
|
|
81886
|
+
__info__.date = "2026-09-10T05:38:15.721Z";
|
|
81887
|
+
__info__.hash = "a3d2956";
|
|
81902
81888
|
|
|
81903
81889
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|