@trebco/treb 36.1.4 → 37.0.1
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/api-config.json +1 -1
- package/build/package.json +119 -0
- package/build/treb-base-types/src/api_types.d.ts +11 -0
- package/build/treb-base-types/src/api_types.js +22 -0
- package/build/treb-base-types/src/api_types.js.map +1 -0
- package/build/treb-base-types/src/area-utils.d.ts +9 -0
- package/build/treb-base-types/src/area-utils.js +50 -0
- package/build/treb-base-types/src/area-utils.js.map +1 -0
- package/build/treb-base-types/src/area.d.ts +182 -0
- package/build/treb-base-types/src/area.js +715 -0
- package/build/treb-base-types/src/area.js.map +1 -0
- package/build/treb-base-types/src/basic_types.d.ts +20 -0
- package/build/treb-base-types/src/basic_types.js +22 -0
- package/build/treb-base-types/src/basic_types.js.map +1 -0
- package/build/treb-base-types/src/cell.d.ts +167 -0
- package/build/treb-base-types/src/cell.js +432 -0
- package/build/treb-base-types/src/cell.js.map +1 -0
- package/build/treb-base-types/src/cells.d.ts +251 -0
- package/build/treb-base-types/src/cells.js +1136 -0
- package/build/treb-base-types/src/cells.js.map +1 -0
- package/build/treb-base-types/src/color.d.ts +35 -0
- package/build/treb-base-types/src/color.js +162 -0
- package/build/treb-base-types/src/color.js.map +1 -0
- package/build/treb-base-types/src/dom-utilities.d.ts +70 -0
- package/build/treb-base-types/src/dom-utilities.js +144 -0
- package/build/treb-base-types/src/dom-utilities.js.map +1 -0
- package/build/treb-base-types/src/evaluate-options.d.ts +35 -0
- package/build/treb-base-types/src/evaluate-options.js +22 -0
- package/build/treb-base-types/src/evaluate-options.js.map +1 -0
- package/build/treb-base-types/src/font-stack.d.ts +37 -0
- package/build/treb-base-types/src/font-stack.js +93 -0
- package/build/treb-base-types/src/font-stack.js.map +1 -0
- package/build/treb-base-types/src/gradient.d.ts +18 -0
- package/build/treb-base-types/src/gradient.js +86 -0
- package/build/treb-base-types/src/gradient.js.map +1 -0
- package/build/treb-base-types/src/import.d.ts +48 -0
- package/build/treb-base-types/src/import.js +22 -0
- package/build/treb-base-types/src/import.js.map +1 -0
- package/build/treb-base-types/src/index-standalone.d.ts +6 -0
- package/build/treb-base-types/src/index-standalone.js +27 -0
- package/build/treb-base-types/src/index-standalone.js.map +1 -0
- package/build/treb-base-types/src/index.d.ts +22 -0
- package/build/treb-base-types/src/index.js +45 -0
- package/build/treb-base-types/src/index.js.map +1 -0
- package/build/treb-base-types/src/layout.d.ts +22 -0
- package/build/treb-base-types/src/layout.js +22 -0
- package/build/treb-base-types/src/layout.js.map +1 -0
- package/build/treb-base-types/src/localization.d.ts +37 -0
- package/build/treb-base-types/src/localization.js +157 -0
- package/build/treb-base-types/src/localization.js.map +1 -0
- package/build/treb-base-types/src/rectangle.d.ts +51 -0
- package/build/treb-base-types/src/rectangle.js +123 -0
- package/build/treb-base-types/src/rectangle.js.map +1 -0
- package/build/treb-base-types/src/render_text.d.ts +34 -0
- package/build/treb-base-types/src/render_text.js +22 -0
- package/build/treb-base-types/src/render_text.js.map +1 -0
- package/build/treb-base-types/src/style.d.ts +214 -0
- package/build/treb-base-types/src/style.js +373 -0
- package/build/treb-base-types/src/style.js.map +1 -0
- package/build/treb-base-types/src/table.d.ts +58 -0
- package/build/treb-base-types/src/table.js +27 -0
- package/build/treb-base-types/src/table.js.map +1 -0
- package/build/treb-base-types/src/text_part.d.ts +26 -0
- package/build/treb-base-types/src/text_part.js +47 -0
- package/build/treb-base-types/src/text_part.js.map +1 -0
- package/build/treb-base-types/src/theme.d.ts +120 -0
- package/build/treb-base-types/src/theme.js +460 -0
- package/build/treb-base-types/src/theme.js.map +1 -0
- package/build/treb-base-types/src/union.d.ts +73 -0
- package/build/treb-base-types/src/union.js +61 -0
- package/build/treb-base-types/src/union.js.map +1 -0
- package/build/treb-base-types/src/value-type.d.ts +86 -0
- package/build/treb-base-types/src/value-type.js +168 -0
- package/build/treb-base-types/src/value-type.js.map +1 -0
- package/build/treb-base-types/src/worker-proxy.d.ts +95 -0
- package/build/treb-base-types/src/worker-proxy.js +221 -0
- package/build/treb-base-types/src/worker-proxy.js.map +1 -0
- package/build/treb-calculator/src/calculator.d.ts +249 -0
- package/build/treb-calculator/src/calculator.js +2755 -0
- package/build/treb-calculator/src/calculator.js.map +1 -0
- package/build/treb-calculator/src/complex-math.d.ts +75 -0
- package/build/treb-calculator/src/complex-math.js +559 -0
- package/build/treb-calculator/src/complex-math.js.map +1 -0
- package/build/treb-calculator/src/dag/array-vertex.d.ts +71 -0
- package/build/treb-calculator/src/dag/array-vertex.js +156 -0
- package/build/treb-calculator/src/dag/array-vertex.js.map +1 -0
- package/build/treb-calculator/src/dag/calculation_leaf_vertex.d.ts +48 -0
- package/build/treb-calculator/src/dag/calculation_leaf_vertex.js +84 -0
- package/build/treb-calculator/src/dag/calculation_leaf_vertex.js.map +1 -0
- package/build/treb-calculator/src/dag/graph.d.ts +134 -0
- package/build/treb-calculator/src/dag/graph.js +842 -0
- package/build/treb-calculator/src/dag/graph.js.map +1 -0
- package/build/treb-calculator/src/dag/spreadsheet_vertex.d.ts +58 -0
- package/build/treb-calculator/src/dag/spreadsheet_vertex.js +232 -0
- package/build/treb-calculator/src/dag/spreadsheet_vertex.js.map +1 -0
- package/build/treb-calculator/src/dag/spreadsheet_vertex_base.d.ts +20 -0
- package/build/treb-calculator/src/dag/spreadsheet_vertex_base.js +25 -0
- package/build/treb-calculator/src/dag/spreadsheet_vertex_base.js.map +1 -0
- package/build/treb-calculator/src/dag/state_leaf_vertex.d.ts +43 -0
- package/build/treb-calculator/src/dag/state_leaf_vertex.js +81 -0
- package/build/treb-calculator/src/dag/state_leaf_vertex.js.map +1 -0
- package/build/treb-calculator/src/dag/vertex.d.ts +71 -0
- package/build/treb-calculator/src/dag/vertex.js +274 -0
- package/build/treb-calculator/src/dag/vertex.js.map +1 -0
- package/build/treb-calculator/src/descriptors.d.ts +189 -0
- package/build/treb-calculator/src/descriptors.js +22 -0
- package/build/treb-calculator/src/descriptors.js.map +1 -0
- package/build/treb-calculator/src/expression-calculator.d.ts +127 -0
- package/build/treb-calculator/src/expression-calculator.js +1033 -0
- package/build/treb-calculator/src/expression-calculator.js.map +1 -0
- package/build/treb-calculator/src/function-error.d.ts +35 -0
- package/build/treb-calculator/src/function-error.js +85 -0
- package/build/treb-calculator/src/function-error.js.map +1 -0
- package/build/treb-calculator/src/function-library.d.ts +22 -0
- package/build/treb-calculator/src/function-library.js +96 -0
- package/build/treb-calculator/src/function-library.js.map +1 -0
- package/build/treb-calculator/src/functions/base-functions.d.ts +7 -0
- package/build/treb-calculator/src/functions/base-functions.js +2611 -0
- package/build/treb-calculator/src/functions/base-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/beta.d.ts +17 -0
- package/build/treb-calculator/src/functions/beta.js +201 -0
- package/build/treb-calculator/src/functions/beta.js.map +1 -0
- package/build/treb-calculator/src/functions/checkbox.d.ts +3 -0
- package/build/treb-calculator/src/functions/checkbox.js +128 -0
- package/build/treb-calculator/src/functions/checkbox.js.map +1 -0
- package/build/treb-calculator/src/functions/complex-functions.d.ts +2 -0
- package/build/treb-calculator/src/functions/complex-functions.js +217 -0
- package/build/treb-calculator/src/functions/complex-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/date-utils.d.ts +3 -0
- package/build/treb-calculator/src/functions/date-utils.js +59 -0
- package/build/treb-calculator/src/functions/date-utils.js.map +1 -0
- package/build/treb-calculator/src/functions/finance-functions.d.ts +2 -0
- package/build/treb-calculator/src/functions/finance-functions.js +547 -0
- package/build/treb-calculator/src/functions/finance-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/fp.d.ts +2 -0
- package/build/treb-calculator/src/functions/fp.js +463 -0
- package/build/treb-calculator/src/functions/fp.js.map +1 -0
- package/build/treb-calculator/src/functions/function-utilities.d.ts +2 -0
- package/build/treb-calculator/src/functions/function-utilities.js +36 -0
- package/build/treb-calculator/src/functions/function-utilities.js.map +1 -0
- package/build/treb-calculator/src/functions/gamma.d.ts +20 -0
- package/build/treb-calculator/src/functions/gamma.js +142 -0
- package/build/treb-calculator/src/functions/gamma.js.map +1 -0
- package/build/treb-calculator/src/functions/information-functions.d.ts +2 -0
- package/build/treb-calculator/src/functions/information-functions.js +71 -0
- package/build/treb-calculator/src/functions/information-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/lambda-functions.d.ts +2 -0
- package/build/treb-calculator/src/functions/lambda-functions.js +85 -0
- package/build/treb-calculator/src/functions/lambda-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/matrix-functions.d.ts +2 -0
- package/build/treb-calculator/src/functions/matrix-functions.js +144 -0
- package/build/treb-calculator/src/functions/matrix-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/normal.d.ts +2 -0
- package/build/treb-calculator/src/functions/normal.js +32 -0
- package/build/treb-calculator/src/functions/normal.js.map +1 -0
- package/build/treb-calculator/src/functions/regex-functions.d.ts +2 -0
- package/build/treb-calculator/src/functions/regex-functions.js +188 -0
- package/build/treb-calculator/src/functions/regex-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/sparkline.d.ts +37 -0
- package/build/treb-calculator/src/functions/sparkline.js +264 -0
- package/build/treb-calculator/src/functions/sparkline.js.map +1 -0
- package/build/treb-calculator/src/functions/statistics-functions.d.ts +6 -0
- package/build/treb-calculator/src/functions/statistics-functions.js +989 -0
- package/build/treb-calculator/src/functions/statistics-functions.js.map +1 -0
- package/build/treb-calculator/src/functions/students-t.d.ts +3 -0
- package/build/treb-calculator/src/functions/students-t.js +64 -0
- package/build/treb-calculator/src/functions/students-t.js.map +1 -0
- package/build/treb-calculator/src/functions/text-functions.d.ts +3 -0
- package/build/treb-calculator/src/functions/text-functions.js +320 -0
- package/build/treb-calculator/src/functions/text-functions.js.map +1 -0
- package/build/treb-calculator/src/index.d.ts +2 -0
- package/build/treb-calculator/src/index.js +22 -0
- package/build/treb-calculator/src/index.js.map +1 -0
- package/build/treb-calculator/src/notifier-types.d.ts +26 -0
- package/build/treb-calculator/src/notifier-types.js +22 -0
- package/build/treb-calculator/src/notifier-types.js.map +1 -0
- package/build/treb-calculator/src/primitives.d.ts +15 -0
- package/build/treb-calculator/src/primitives.js +398 -0
- package/build/treb-calculator/src/primitives.js.map +1 -0
- package/build/treb-calculator/src/utilities.d.ts +68 -0
- package/build/treb-calculator/src/utilities.js +324 -0
- package/build/treb-calculator/src/utilities.js.map +1 -0
- package/build/treb-charts/src/chart-functions.d.ts +8 -0
- package/build/treb-charts/src/chart-functions.js +209 -0
- package/build/treb-charts/src/chart-functions.js.map +1 -0
- package/build/treb-charts/src/chart-types.d.ts +233 -0
- package/build/treb-charts/src/chart-types.js +57 -0
- package/build/treb-charts/src/chart-types.js.map +1 -0
- package/build/treb-charts/src/chart-utils.d.ts +106 -0
- package/build/treb-charts/src/chart-utils.js +1060 -0
- package/build/treb-charts/src/chart-utils.js.map +1 -0
- package/build/treb-charts/src/chart.d.ts +23 -0
- package/build/treb-charts/src/chart.js +94 -0
- package/build/treb-charts/src/chart.js.map +1 -0
- package/build/treb-charts/src/default-chart-renderer.d.ts +16 -0
- package/build/treb-charts/src/default-chart-renderer.js +533 -0
- package/build/treb-charts/src/default-chart-renderer.js.map +1 -0
- package/build/treb-charts/src/index.d.ts +5 -0
- package/build/treb-charts/src/index.js +24 -0
- package/build/treb-charts/src/index.js.map +1 -0
- package/build/treb-charts/src/main.d.ts +1 -0
- package/build/treb-charts/src/main.js +34 -0
- package/build/treb-charts/src/main.js.map +1 -0
- package/build/treb-charts/src/quicksort.d.ts +1 -0
- package/build/treb-charts/src/quicksort.js +49 -0
- package/build/treb-charts/src/quicksort.js.map +1 -0
- package/build/treb-charts/src/rectangle.d.ts +18 -0
- package/build/treb-charts/src/rectangle.js +41 -0
- package/build/treb-charts/src/rectangle.js.map +1 -0
- package/build/treb-charts/src/renderer-type.d.ts +24 -0
- package/build/treb-charts/src/renderer-type.js +22 -0
- package/build/treb-charts/src/renderer-type.js.map +1 -0
- package/build/treb-charts/src/renderer.d.ts +127 -0
- package/build/treb-charts/src/renderer.js +1518 -0
- package/build/treb-charts/src/renderer.js.map +1 -0
- package/build/treb-charts/src/util.d.ts +18 -0
- package/build/treb-charts/src/util.js +71 -0
- package/build/treb-charts/src/util.js.map +1 -0
- package/build/treb-data-model/src/annotation.d.ts +167 -0
- package/build/treb-data-model/src/annotation.js +120 -0
- package/build/treb-data-model/src/annotation.js.map +1 -0
- package/build/treb-data-model/src/conditional_format.d.ts +155 -0
- package/build/treb-data-model/src/conditional_format.js +62 -0
- package/build/treb-data-model/src/conditional_format.js.map +1 -0
- package/build/treb-data-model/src/data-validation.d.ts +28 -0
- package/build/treb-data-model/src/data-validation.js +22 -0
- package/build/treb-data-model/src/data-validation.js.map +1 -0
- package/build/treb-data-model/src/data_model.d.ts +173 -0
- package/build/treb-data-model/src/data_model.js +637 -0
- package/build/treb-data-model/src/data_model.js.map +1 -0
- package/build/treb-data-model/src/index.d.ts +13 -0
- package/build/treb-data-model/src/index.js +28 -0
- package/build/treb-data-model/src/index.js.map +1 -0
- package/build/treb-data-model/src/language-model.d.ts +22 -0
- package/build/treb-data-model/src/language-model.js +22 -0
- package/build/treb-data-model/src/language-model.js.map +1 -0
- package/build/treb-data-model/src/named.d.ts +124 -0
- package/build/treb-data-model/src/named.js +372 -0
- package/build/treb-data-model/src/named.js.map +1 -0
- package/build/treb-data-model/src/serialize_options.d.ts +49 -0
- package/build/treb-data-model/src/serialize_options.js +22 -0
- package/build/treb-data-model/src/serialize_options.js.map +1 -0
- package/build/treb-data-model/src/sheet.d.ts +499 -0
- package/build/treb-data-model/src/sheet.js +2904 -0
- package/build/treb-data-model/src/sheet.js.map +1 -0
- package/build/treb-data-model/src/sheet_collection.d.ts +58 -0
- package/build/treb-data-model/src/sheet_collection.js +112 -0
- package/build/treb-data-model/src/sheet_collection.js.map +1 -0
- package/build/treb-data-model/src/sheet_selection.d.ts +42 -0
- package/build/treb-data-model/src/sheet_selection.js +39 -0
- package/build/treb-data-model/src/sheet_selection.js.map +1 -0
- package/build/treb-data-model/src/sheet_types.d.ts +104 -0
- package/build/treb-data-model/src/sheet_types.js +22 -0
- package/build/treb-data-model/src/sheet_types.js.map +1 -0
- package/build/treb-data-model/src/types.d.ts +59 -0
- package/build/treb-data-model/src/types.js +22 -0
- package/build/treb-data-model/src/types.js.map +1 -0
- package/build/treb-embed/src/custom-element/spreadsheet-constructor.d.ts +75 -0
- package/build/treb-embed/src/custom-element/spreadsheet-constructor.js +1144 -0
- package/build/treb-embed/src/custom-element/spreadsheet-constructor.js.map +1 -0
- package/build/treb-embed/src/custom-element/treb-global.d.ts +36 -0
- package/build/treb-embed/src/custom-element/treb-global.js +64 -0
- package/build/treb-embed/src/custom-element/treb-global.js.map +1 -0
- package/build/treb-embed/src/custom-element/treb-spreadsheet-element.d.ts +1 -0
- package/build/treb-embed/src/custom-element/treb-spreadsheet-element.js +61 -0
- package/build/treb-embed/src/custom-element/treb-spreadsheet-element.js.map +1 -0
- package/build/treb-embed/src/embedded-spreadsheet.d.ts +1358 -0
- package/build/treb-embed/src/embedded-spreadsheet.js +5205 -0
- package/build/treb-embed/src/embedded-spreadsheet.js.map +1 -0
- package/build/treb-embed/src/index.d.ts +12 -0
- package/build/treb-embed/src/index.js +34 -0
- package/build/treb-embed/src/index.js.map +1 -0
- package/build/treb-embed/src/options.d.ts +266 -0
- package/build/treb-embed/src/options.js +56 -0
- package/build/treb-embed/src/options.js.map +1 -0
- package/build/treb-embed/src/plugin.d.ts +9 -0
- package/build/treb-embed/src/plugin.js +22 -0
- package/build/treb-embed/src/plugin.js.map +1 -0
- package/build/treb-embed/src/progress-dialog.d.ts +49 -0
- package/build/treb-embed/src/progress-dialog.js +178 -0
- package/build/treb-embed/src/progress-dialog.js.map +1 -0
- package/build/treb-embed/src/selection-state.d.ts +15 -0
- package/build/treb-embed/src/selection-state.js +22 -0
- package/build/treb-embed/src/selection-state.js.map +1 -0
- package/build/treb-embed/src/spinner.d.ts +8 -0
- package/build/treb-embed/src/spinner.js +40 -0
- package/build/treb-embed/src/spinner.js.map +1 -0
- package/build/treb-embed/src/toolbar-message.d.ts +72 -0
- package/build/treb-embed/src/toolbar-message.js +22 -0
- package/build/treb-embed/src/toolbar-message.js.map +1 -0
- package/build/treb-embed/src/types.d.ts +185 -0
- package/build/treb-embed/src/types.js +45 -0
- package/build/treb-embed/src/types.js.map +1 -0
- package/build/treb-embed/tsconfig.tsbuildinfo +1 -0
- package/build/treb-export/src/address-type.d.ts +34 -0
- package/build/treb-export/src/address-type.js +53 -0
- package/build/treb-export/src/address-type.js.map +1 -0
- package/build/treb-export/src/base-template.d.ts +1 -0
- package/build/treb-export/src/base-template.js +22 -0
- package/build/treb-export/src/base-template.js.map +1 -0
- package/build/treb-export/src/column-width.d.ts +2 -0
- package/build/treb-export/src/column-width.js +80 -0
- package/build/treb-export/src/column-width.js.map +1 -0
- package/build/treb-export/src/drawing/bubble-chart-template.d.ts +514 -0
- package/build/treb-export/src/drawing/bubble-chart-template.js +544 -0
- package/build/treb-export/src/drawing/bubble-chart-template.js.map +1 -0
- package/build/treb-export/src/drawing/chart-template-components2.d.ts +365 -0
- package/build/treb-export/src/drawing/chart-template-components2.js +386 -0
- package/build/treb-export/src/drawing/chart-template-components2.js.map +1 -0
- package/build/treb-export/src/drawing/chart.d.ts +26 -0
- package/build/treb-export/src/drawing/chart.js +247 -0
- package/build/treb-export/src/drawing/chart.js.map +1 -0
- package/build/treb-export/src/drawing/column-chart-template2.d.ts +490 -0
- package/build/treb-export/src/drawing/column-chart-template2.js +518 -0
- package/build/treb-export/src/drawing/column-chart-template2.js.map +1 -0
- package/build/treb-export/src/drawing/donut-chart-template2.d.ts +272 -0
- package/build/treb-export/src/drawing/donut-chart-template2.js +293 -0
- package/build/treb-export/src/drawing/donut-chart-template2.js.map +1 -0
- package/build/treb-export/src/drawing/drawing.d.ts +49 -0
- package/build/treb-export/src/drawing/drawing.js +193 -0
- package/build/treb-export/src/drawing/drawing.js.map +1 -0
- package/build/treb-export/src/drawing/embedded-image.d.ts +12 -0
- package/build/treb-export/src/drawing/embedded-image.js +54 -0
- package/build/treb-export/src/drawing/embedded-image.js.map +1 -0
- package/build/treb-export/src/drawing/scatter-chart-template2.d.ts +520 -0
- package/build/treb-export/src/drawing/scatter-chart-template2.js +551 -0
- package/build/treb-export/src/drawing/scatter-chart-template2.js.map +1 -0
- package/build/treb-export/src/export.d.ts +72 -0
- package/build/treb-export/src/export.js +2039 -0
- package/build/treb-export/src/export.js.map +1 -0
- package/build/treb-export/src/import-export-messages.d.ts +31 -0
- package/build/treb-export/src/import-export-messages.js +22 -0
- package/build/treb-export/src/import-export-messages.js.map +1 -0
- package/build/treb-export/src/import.d.ts +33 -0
- package/build/treb-export/src/import.js +1258 -0
- package/build/treb-export/src/import.js.map +1 -0
- package/build/treb-export/src/index.worker.d.ts +1 -0
- package/build/treb-export/src/index.worker.js +93 -0
- package/build/treb-export/src/index.worker.js.map +1 -0
- package/build/treb-export/src/metadata.d.ts +51 -0
- package/build/treb-export/src/metadata.js +153 -0
- package/build/treb-export/src/metadata.js.map +1 -0
- package/build/treb-export/src/ooxml.d.ts +7 -0
- package/build/treb-export/src/ooxml.js +41 -0
- package/build/treb-export/src/ooxml.js.map +1 -0
- package/build/treb-export/src/relationship.d.ts +8 -0
- package/build/treb-export/src/relationship.js +27 -0
- package/build/treb-export/src/relationship.js.map +1 -0
- package/build/treb-export/src/shared-strings.d.ts +11 -0
- package/build/treb-export/src/shared-strings.js +105 -0
- package/build/treb-export/src/shared-strings.js.map +1 -0
- package/build/treb-export/src/template-2.d.ts +1 -0
- package/build/treb-export/src/template-2.js +22 -0
- package/build/treb-export/src/template-2.js.map +1 -0
- package/build/treb-export/src/unescape_xml.d.ts +1 -0
- package/build/treb-export/src/unescape_xml.js +61 -0
- package/build/treb-export/src/unescape_xml.js.map +1 -0
- package/build/treb-export/src/workbook-sheet.d.ts +75 -0
- package/build/treb-export/src/workbook-sheet.js +128 -0
- package/build/treb-export/src/workbook-sheet.js.map +1 -0
- package/build/treb-export/src/workbook-style.d.ts +110 -0
- package/build/treb-export/src/workbook-style.js +1134 -0
- package/build/treb-export/src/workbook-style.js.map +1 -0
- package/build/treb-export/src/workbook-theme.d.ts +13 -0
- package/build/treb-export/src/workbook-theme.js +85 -0
- package/build/treb-export/src/workbook-theme.js.map +1 -0
- package/build/treb-export/src/workbook.d.ts +123 -0
- package/build/treb-export/src/workbook.js +644 -0
- package/build/treb-export/src/workbook.js.map +1 -0
- package/build/treb-export/src/xml-test.d.ts +9 -0
- package/build/treb-export/src/xml-test.js +52 -0
- package/build/treb-export/src/xml-test.js.map +1 -0
- package/build/treb-export/src/xml-utils.d.ts +76 -0
- package/build/treb-export/src/xml-utils.js +223 -0
- package/build/treb-export/src/xml-utils.js.map +1 -0
- package/build/treb-export/src/zip-wrapper.d.ts +22 -0
- package/build/treb-export/src/zip-wrapper.js +93 -0
- package/build/treb-export/src/zip-wrapper.js.map +1 -0
- package/build/treb-format/src/format.d.ts +130 -0
- package/build/treb-format/src/format.js +805 -0
- package/build/treb-format/src/format.js.map +1 -0
- package/build/treb-format/src/format_cache.d.ts +55 -0
- package/build/treb-format/src/format_cache.js +166 -0
- package/build/treb-format/src/format_cache.js.map +1 -0
- package/build/treb-format/src/format_parser.d.ts +70 -0
- package/build/treb-format/src/format_parser.js +618 -0
- package/build/treb-format/src/format_parser.js.map +1 -0
- package/build/treb-format/src/index.d.ts +4 -0
- package/build/treb-format/src/index.js +25 -0
- package/build/treb-format/src/index.js.map +1 -0
- package/build/treb-format/src/number_format_section.d.ts +58 -0
- package/build/treb-format/src/number_format_section.js +78 -0
- package/build/treb-format/src/number_format_section.js.map +1 -0
- package/build/treb-format/src/value_parser.d.ts +48 -0
- package/build/treb-format/src/value_parser.js +244 -0
- package/build/treb-format/src/value_parser.js.map +1 -0
- package/build/treb-grid/src/editors/autocomplete.d.ts +39 -0
- package/build/treb-grid/src/editors/autocomplete.js +316 -0
- package/build/treb-grid/src/editors/autocomplete.js.map +1 -0
- package/build/treb-grid/src/editors/autocomplete_matcher.d.ts +74 -0
- package/build/treb-grid/src/editors/autocomplete_matcher.js +212 -0
- package/build/treb-grid/src/editors/autocomplete_matcher.js.map +1 -0
- package/build/treb-grid/src/editors/editor.d.ts +214 -0
- package/build/treb-grid/src/editors/editor.js +879 -0
- package/build/treb-grid/src/editors/editor.js.map +1 -0
- package/build/treb-grid/src/editors/external_editor.d.ts +11 -0
- package/build/treb-grid/src/editors/external_editor.js +118 -0
- package/build/treb-grid/src/editors/external_editor.js.map +1 -0
- package/build/treb-grid/src/editors/formula_bar.d.ts +85 -0
- package/build/treb-grid/src/editors/formula_bar.js +444 -0
- package/build/treb-grid/src/editors/formula_bar.js.map +1 -0
- package/build/treb-grid/src/editors/overlay_editor.d.ts +85 -0
- package/build/treb-grid/src/editors/overlay_editor.js +353 -0
- package/build/treb-grid/src/editors/overlay_editor.js.map +1 -0
- package/build/treb-grid/src/index.d.ts +12 -0
- package/build/treb-grid/src/index.js +28 -0
- package/build/treb-grid/src/index.js.map +1 -0
- package/build/treb-grid/src/layout/base_layout.d.ts +346 -0
- package/build/treb-grid/src/layout/base_layout.js +2050 -0
- package/build/treb-grid/src/layout/base_layout.js.map +1 -0
- package/build/treb-grid/src/layout/grid_layout.d.ts +19 -0
- package/build/treb-grid/src/layout/grid_layout.js +235 -0
- package/build/treb-grid/src/layout/grid_layout.js.map +1 -0
- package/build/treb-grid/src/layout/mock-layout.d.ts +10 -0
- package/build/treb-grid/src/layout/mock-layout.js +37 -0
- package/build/treb-grid/src/layout/mock-layout.js.map +1 -0
- package/build/treb-grid/src/render/selection-renderer.d.ts +97 -0
- package/build/treb-grid/src/render/selection-renderer.js +315 -0
- package/build/treb-grid/src/render/selection-renderer.js.map +1 -0
- package/build/treb-grid/src/render/svg_header_overlay.d.ts +20 -0
- package/build/treb-grid/src/render/svg_header_overlay.js +76 -0
- package/build/treb-grid/src/render/svg_header_overlay.js.map +1 -0
- package/build/treb-grid/src/render/svg_selection_block.d.ts +27 -0
- package/build/treb-grid/src/render/svg_selection_block.js +106 -0
- package/build/treb-grid/src/render/svg_selection_block.js.map +1 -0
- package/build/treb-grid/src/render/tile_renderer.d.ts +121 -0
- package/build/treb-grid/src/render/tile_renderer.js +1609 -0
- package/build/treb-grid/src/render/tile_renderer.js.map +1 -0
- package/build/treb-grid/src/types/border_constants.d.ts +9 -0
- package/build/treb-grid/src/types/border_constants.js +34 -0
- package/build/treb-grid/src/types/border_constants.js.map +1 -0
- package/build/treb-grid/src/types/clipboard_data.d.ts +11 -0
- package/build/treb-grid/src/types/clipboard_data.js +22 -0
- package/build/treb-grid/src/types/clipboard_data.js.map +1 -0
- package/build/treb-grid/src/types/clipboard_data2.d.ts +46 -0
- package/build/treb-grid/src/types/clipboard_data2.js +22 -0
- package/build/treb-grid/src/types/clipboard_data2.js.map +1 -0
- package/build/treb-grid/src/types/drag_mask.d.ts +10 -0
- package/build/treb-grid/src/types/drag_mask.js +78 -0
- package/build/treb-grid/src/types/drag_mask.js.map +1 -0
- package/build/treb-grid/src/types/external_editor_config.d.ts +33 -0
- package/build/treb-grid/src/types/external_editor_config.js +22 -0
- package/build/treb-grid/src/types/external_editor_config.js.map +1 -0
- package/build/treb-grid/src/types/grid.d.ts +806 -0
- package/build/treb-grid/src/types/grid.js +6410 -0
- package/build/treb-grid/src/types/grid.js.map +1 -0
- package/build/treb-grid/src/types/grid_base.d.ts +442 -0
- package/build/treb-grid/src/types/grid_base.js +3523 -0
- package/build/treb-grid/src/types/grid_base.js.map +1 -0
- package/build/treb-grid/src/types/grid_command.d.ts +408 -0
- package/build/treb-grid/src/types/grid_command.js +75 -0
- package/build/treb-grid/src/types/grid_command.js.map +1 -0
- package/build/treb-grid/src/types/grid_events.d.ts +93 -0
- package/build/treb-grid/src/types/grid_events.js +36 -0
- package/build/treb-grid/src/types/grid_events.js.map +1 -0
- package/build/treb-grid/src/types/grid_options.d.ts +50 -0
- package/build/treb-grid/src/types/grid_options.js +34 -0
- package/build/treb-grid/src/types/grid_options.js.map +1 -0
- package/build/treb-grid/src/types/scale-control.d.ts +21 -0
- package/build/treb-grid/src/types/scale-control.js +148 -0
- package/build/treb-grid/src/types/scale-control.js.map +1 -0
- package/build/treb-grid/src/types/set_range_options.d.ts +24 -0
- package/build/treb-grid/src/types/set_range_options.js +22 -0
- package/build/treb-grid/src/types/set_range_options.js.map +1 -0
- package/build/treb-grid/src/types/tab_bar.d.ts +84 -0
- package/build/treb-grid/src/types/tab_bar.js +426 -0
- package/build/treb-grid/src/types/tab_bar.js.map +1 -0
- package/build/treb-grid/src/types/tile.d.ts +29 -0
- package/build/treb-grid/src/types/tile.js +22 -0
- package/build/treb-grid/src/types/tile.js.map +1 -0
- package/build/treb-grid/src/types/update_flags.d.ts +48 -0
- package/build/treb-grid/src/types/update_flags.js +22 -0
- package/build/treb-grid/src/types/update_flags.js.map +1 -0
- package/build/treb-grid/src/util/fontmetrics.d.ts +21 -0
- package/build/treb-grid/src/util/fontmetrics.js +82 -0
- package/build/treb-grid/src/util/fontmetrics.js.map +1 -0
- package/build/treb-grid/src/util/ua.d.ts +33 -0
- package/build/treb-grid/src/util/ua.js +86 -0
- package/build/treb-grid/src/util/ua.js.map +1 -0
- package/build/treb-parser/src/csv-parser.d.ts +13 -0
- package/build/treb-parser/src/csv-parser.js +107 -0
- package/build/treb-parser/src/csv-parser.js.map +1 -0
- package/build/treb-parser/src/index.d.ts +4 -0
- package/build/treb-parser/src/index.js +25 -0
- package/build/treb-parser/src/index.js.map +1 -0
- package/build/treb-parser/src/md-parser.d.ts +97 -0
- package/build/treb-parser/src/md-parser.js +403 -0
- package/build/treb-parser/src/md-parser.js.map +1 -0
- package/build/treb-parser/src/parser-types.d.ts +345 -0
- package/build/treb-parser/src/parser-types.js +53 -0
- package/build/treb-parser/src/parser-types.js.map +1 -0
- package/build/treb-parser/src/parser.d.ts +422 -0
- package/build/treb-parser/src/parser.js +2418 -0
- package/build/treb-parser/src/parser.js.map +1 -0
- package/build/treb-utils/src/event_source.d.ts +34 -0
- package/build/treb-utils/src/event_source.js +110 -0
- package/build/treb-utils/src/event_source.js.map +1 -0
- package/build/treb-utils/src/ievent_source.d.ts +9 -0
- package/build/treb-utils/src/ievent_source.js +22 -0
- package/build/treb-utils/src/ievent_source.js.map +1 -0
- package/build/treb-utils/src/index.d.ts +6 -0
- package/build/treb-utils/src/index.js +30 -0
- package/build/treb-utils/src/index.js.map +1 -0
- package/build/treb-utils/src/measurement.d.ts +42 -0
- package/build/treb-utils/src/measurement.js +145 -0
- package/build/treb-utils/src/measurement.js.map +1 -0
- package/build/treb-utils/src/scale.d.ts +16 -0
- package/build/treb-utils/src/scale.js +106 -0
- package/build/treb-utils/src/scale.js.map +1 -0
- package/build/treb-utils/src/serialize_html.d.ts +5 -0
- package/build/treb-utils/src/serialize_html.js +128 -0
- package/build/treb-utils/src/serialize_html.js.map +1 -0
- package/build/treb-utils/src/validate_uri.d.ts +20 -0
- package/build/treb-utils/src/validate_uri.js +55 -0
- package/build/treb-utils/src/validate_uri.js.map +1 -0
- package/dist/{chunk-Z4XFMZ2X.mjs → chunk-E35ONJUS.mjs} +1 -1
- package/dist/treb-export-worker.mjs +2 -2
- package/dist/treb-spreadsheet.mjs +4 -4
- package/dist/treb.d.ts +1 -1
- package/esbuild-composite.mjs +5 -1
- package/package.json +67 -3
- package/treb-embed/src/custom-element/spreadsheet-constructor.ts +7 -3
- package/treb-embed/src/embedded-spreadsheet.ts +1 -1
- package/treb-grid/src/types/grid_options.ts +1 -1
- package/tsproject.json +1 -2
- package/dist/chunk-43DLP2OX.mjs +0 -11
- package/dist/chunk-4CKS56PE.mjs +0 -11
- package/dist/chunk-75PARUQE.mjs +0 -11
- package/dist/chunk-7QD63AZS.mjs +0 -24601
- package/dist/chunk-A55ARVRD.mjs +0 -11
- package/dist/chunk-DESAKYW4.mjs +0 -11
- package/dist/chunk-EQ2R5W6P.mjs +0 -24565
- package/dist/chunk-IYJU2J6D.mjs +0 -24601
- package/dist/chunk-KSJFPGXT.mjs +0 -11
- package/dist/chunk-MQK4DNXI.mjs +0 -11
- package/dist/chunk-ORQFKLXM.mjs +0 -24601
- package/dist/chunk-SFDNNDHY.mjs +0 -11
- package/dist/chunk-T47DX5MI.mjs +0 -11
- package/dist/chunk-T6ILBVEX.mjs +0 -11
- package/dist/chunk-TPRCDYYG.mjs +0 -11
- package/dist/chunk-YAHNOOHO.mjs +0 -11
- package/dist/chunk-YLCFKX2G.mjs +0 -24601
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of TREB.
|
|
3
|
+
*
|
|
4
|
+
* TREB is free software: you can redistribute it and/or modify it under the
|
|
5
|
+
* terms of the GNU General Public License as published by the Free Software
|
|
6
|
+
* Foundation, either version 3 of the License, or (at your option) any
|
|
7
|
+
* later version.
|
|
8
|
+
*
|
|
9
|
+
* TREB is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
10
|
+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
11
|
+
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
12
|
+
* details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License along
|
|
15
|
+
* with TREB. If not, see <https://www.gnu.org/licenses/>.
|
|
16
|
+
*
|
|
17
|
+
* Copyright 2022-2026 trebco, llc.
|
|
18
|
+
* info@treb.app
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* type guard function
|
|
23
|
+
* FIXME: is there a naming convention for these?
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export const IsCellAddress = (obj) => {
|
|
28
|
+
return (obj !== null
|
|
29
|
+
&& typeof obj === 'object'
|
|
30
|
+
&& 'row' in obj
|
|
31
|
+
&& 'column' in obj);
|
|
32
|
+
};
|
|
33
|
+
/** @internal */
|
|
34
|
+
export const IsArea = (obj) => {
|
|
35
|
+
return (obj !== null
|
|
36
|
+
&& typeof obj === 'object'
|
|
37
|
+
&& 'start' in obj
|
|
38
|
+
&& IsCellAddress(obj.start)
|
|
39
|
+
&& 'end' in obj
|
|
40
|
+
&& IsCellAddress(obj.end));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* class represents a rectangular area on a sheet. can be a range,
|
|
44
|
+
* single cell, entire row/column, or entire sheet.
|
|
45
|
+
*
|
|
46
|
+
* "entire" row/column/sheet is represented with an infinity in the
|
|
47
|
+
* start/end value for row/column/both, so watch out on loops. the
|
|
48
|
+
* sheet class has a method for reducing infinite ranges to actual
|
|
49
|
+
* populated ranges.
|
|
50
|
+
*
|
|
51
|
+
* infinitiy is turning into a headache because it doesn't serialize
|
|
52
|
+
* to json properly. should we switch to a flag, or -1, or something?
|
|
53
|
+
*/
|
|
54
|
+
export class Area {
|
|
55
|
+
// tslint:disable-next-line:variable-name
|
|
56
|
+
start_;
|
|
57
|
+
// tslint:disable-next-line:variable-name
|
|
58
|
+
end_;
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @param start
|
|
62
|
+
* @param end
|
|
63
|
+
* @param normalize: calls the normalize function
|
|
64
|
+
*/
|
|
65
|
+
constructor(start, end = start, normalize = false) {
|
|
66
|
+
/*
|
|
67
|
+
// copy
|
|
68
|
+
this.start_ = {
|
|
69
|
+
row: start.row, column: start.column,
|
|
70
|
+
absolute_column: !!start.absolute_column,
|
|
71
|
+
absolute_row: !!start.absolute_row };
|
|
72
|
+
|
|
73
|
+
this.end_ = {
|
|
74
|
+
row: end.row, column: end.column,
|
|
75
|
+
absolute_column: !!end.absolute_column,
|
|
76
|
+
absolute_row: !!end.absolute_row };
|
|
77
|
+
*/
|
|
78
|
+
// patch nulls. this is an effect of transferring via JSON,
|
|
79
|
+
// infinities are -> null. make sure to strict === null.
|
|
80
|
+
// NOTE that the patch function returns a clone, so we can store the
|
|
81
|
+
// returned object (instead of copying, which we used to do).
|
|
82
|
+
this.end_ = this.PatchNull(end);
|
|
83
|
+
this.start_ = this.PatchNull(start);
|
|
84
|
+
if (normalize)
|
|
85
|
+
this.Normalize();
|
|
86
|
+
// this.ResetIterator();
|
|
87
|
+
}
|
|
88
|
+
static FromColumn(column) {
|
|
89
|
+
return new Area({ row: Infinity, column });
|
|
90
|
+
}
|
|
91
|
+
static FromRow(row) {
|
|
92
|
+
return new Area({ row, column: Infinity });
|
|
93
|
+
}
|
|
94
|
+
static ColumnToLabel(c) {
|
|
95
|
+
let s = String.fromCharCode(65 + c % 26);
|
|
96
|
+
while (c > 25) {
|
|
97
|
+
c = Math.floor(c / 26) - 1;
|
|
98
|
+
s = String.fromCharCode(65 + c % 26) + s;
|
|
99
|
+
}
|
|
100
|
+
return s;
|
|
101
|
+
}
|
|
102
|
+
static CellAddressToLabel(address, sheet_id = false) {
|
|
103
|
+
if (address.row === Infinity && address.column === Infinity) {
|
|
104
|
+
throw new Error('this is going to break something');
|
|
105
|
+
}
|
|
106
|
+
const prefix = sheet_id ? `${address.sheet_id || 0}!` : '';
|
|
107
|
+
if (address.row === Infinity) {
|
|
108
|
+
return prefix
|
|
109
|
+
+ (address.absolute_column ? '$' : '')
|
|
110
|
+
+ this.ColumnToLabel(address.column);
|
|
111
|
+
}
|
|
112
|
+
if (address.column === Infinity) {
|
|
113
|
+
return prefix
|
|
114
|
+
// + (address.absolute_column ? '$' : '')
|
|
115
|
+
// + this.ColumnToLabel(address.column)
|
|
116
|
+
+ (address.absolute_row ? '$' : '')
|
|
117
|
+
+ (address.row + 1);
|
|
118
|
+
}
|
|
119
|
+
return prefix
|
|
120
|
+
+ (address.absolute_column ? '$' : '')
|
|
121
|
+
+ this.ColumnToLabel(address.column)
|
|
122
|
+
+ (address.absolute_row ? '$' : '')
|
|
123
|
+
+ (address.row + 1)
|
|
124
|
+
+ (address.spill ? '#' : '');
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* merge two areas and return a new area.
|
|
128
|
+
* UPDATE to support arbitrary arguments
|
|
129
|
+
*/
|
|
130
|
+
static Join(base, ...args) {
|
|
131
|
+
const area = new Area(base.start, base.end);
|
|
132
|
+
for (const arg of args) {
|
|
133
|
+
if (arg) {
|
|
134
|
+
area.ConsumeAddress(arg.start);
|
|
135
|
+
area.ConsumeAddress(arg.end);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return area;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* creates an area that expands the original area in all directions
|
|
142
|
+
* (except at the top/left edges)
|
|
143
|
+
*/
|
|
144
|
+
static Bleed(area, length = 1) {
|
|
145
|
+
return new Area({
|
|
146
|
+
row: Math.max(0, area.start.row - length),
|
|
147
|
+
column: Math.max(0, area.start.column - length),
|
|
148
|
+
sheet_id: area.start.sheet_id,
|
|
149
|
+
}, {
|
|
150
|
+
row: area.end.row + length,
|
|
151
|
+
column: area.end.column + length,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* adjust an area in response to an insert/delete operation.
|
|
156
|
+
* I noticed we were doing this in several places. moved here to unify.
|
|
157
|
+
*
|
|
158
|
+
* @param source - the starting area. we'll create a new object to return
|
|
159
|
+
* (we will not mutate in place)
|
|
160
|
+
*/
|
|
161
|
+
static PatchArea(source, options) {
|
|
162
|
+
const { before_column, column_count, before_row, row_count } = options;
|
|
163
|
+
let area = new Area(source.start, source.end);
|
|
164
|
+
const sheet_id = source.start.sheet_id;
|
|
165
|
+
if (column_count && before_column <= area.end.column) {
|
|
166
|
+
/*
|
|
167
|
+
// (1) we are before the insert point, not affected
|
|
168
|
+
|
|
169
|
+
if (before_column > range.end.column) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
*/
|
|
173
|
+
if (column_count > 0) {
|
|
174
|
+
// (2) it's an insert and we are past the insert point:
|
|
175
|
+
// increment [start] and [end] by [count]
|
|
176
|
+
if (before_column <= area.start.column) {
|
|
177
|
+
area.Shift(0, column_count);
|
|
178
|
+
}
|
|
179
|
+
// (3) it's an insert and we contain the insert point:
|
|
180
|
+
// increment [end] by [count]
|
|
181
|
+
else if (before_column > area.start.column && before_column <= area.end.column) {
|
|
182
|
+
area.ConsumeAddress({ row: area.end.row, column: area.end.column + column_count });
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.warn(`AA X case 1`, before_column, column_count, JSON.stringify(area));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else if (column_count < 0) {
|
|
189
|
+
// (4) it's a delete and we are past the delete point (before+count):
|
|
190
|
+
// decrement [start] and [end] by [count]
|
|
191
|
+
if (before_column - column_count <= area.start.column) {
|
|
192
|
+
area.Shift(0, column_count);
|
|
193
|
+
}
|
|
194
|
+
// (5) it's a delete and contains the entire range
|
|
195
|
+
else if (before_column <= area.start.column && before_column - column_count > area.end.column) {
|
|
196
|
+
// we can actually just return at this point
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
// (6) it's a delete and contains part of the range. clip the range.
|
|
200
|
+
else if (before_column <= area.start.column) {
|
|
201
|
+
const last_column = before_column - column_count - 1;
|
|
202
|
+
area = new Area({
|
|
203
|
+
row: area.start.row, column: last_column + 1 + column_count, sheet_id
|
|
204
|
+
}, {
|
|
205
|
+
row: area.end.row, column: area.end.column + column_count
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
else if (before_column <= area.end.column) {
|
|
209
|
+
const last_column = before_column - column_count - 1;
|
|
210
|
+
if (last_column >= area.end.column) {
|
|
211
|
+
area = new Area({
|
|
212
|
+
row: area.start.row, column: area.start.column, sheet_id
|
|
213
|
+
}, {
|
|
214
|
+
row: area.end.row, column: before_column - 1
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
area = new Area({
|
|
219
|
+
row: area.start.row, column: area.start.column, sheet_id
|
|
220
|
+
}, {
|
|
221
|
+
row: area.end.row, column: area.start.column + area.columns + column_count - 1
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
console.warn(`AA X case 2`, before_column, column_count, JSON.stringify(area));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (row_count && before_row <= area.end.row) {
|
|
231
|
+
/*
|
|
232
|
+
// (1) we are before the insert point, not affected
|
|
233
|
+
|
|
234
|
+
if (before_column > range.end.column) {
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
*/
|
|
238
|
+
if (row_count > 0) {
|
|
239
|
+
// (2) it's an insert and we are past the insert point:
|
|
240
|
+
// increment [start] and [end] by [count]
|
|
241
|
+
if (before_row <= area.start.row) {
|
|
242
|
+
area.Shift(row_count, 0);
|
|
243
|
+
}
|
|
244
|
+
// (3) it's an insert and we contain the insert point:
|
|
245
|
+
// increment [end] by [count]
|
|
246
|
+
else if (before_row > area.start.row && before_row <= area.end.row) {
|
|
247
|
+
area.ConsumeAddress({ row: area.end.row + row_count, column: area.end.column });
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.warn(`AA X case 3`, before_row, row_count, JSON.stringify(area));
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else if (row_count < 0) {
|
|
254
|
+
// (4) it's a delete and we are past the delete point (before+count):
|
|
255
|
+
// decrement [start] and [end] by [count]
|
|
256
|
+
if (before_row - row_count <= area.start.row) {
|
|
257
|
+
area.Shift(row_count, 0);
|
|
258
|
+
}
|
|
259
|
+
// (5) it's a delete and contains the entire range
|
|
260
|
+
else if (before_row <= area.start.row && before_row - row_count > area.end.row) {
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
// (6) it's a delete and contains part of the range. clip the range.
|
|
264
|
+
else if (before_row <= area.start.row) {
|
|
265
|
+
const last_row = before_row - row_count - 1;
|
|
266
|
+
area = new Area({
|
|
267
|
+
column: area.start.column, row: last_row + 1 + row_count, sheet_id
|
|
268
|
+
}, {
|
|
269
|
+
column: area.end.column, row: area.end.row + row_count
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
else if (before_row <= area.end.row) {
|
|
273
|
+
const last_row = before_row - row_count - 1;
|
|
274
|
+
if (last_row >= area.end.row) {
|
|
275
|
+
area = new Area({
|
|
276
|
+
column: area.start.column, row: area.start.row, sheet_id
|
|
277
|
+
}, {
|
|
278
|
+
column: area.end.column, row: before_row - 1
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
area = new Area({
|
|
283
|
+
column: area.start.column, row: area.start.row, sheet_id
|
|
284
|
+
}, {
|
|
285
|
+
column: area.end.column, row: area.start.row + area.rows + row_count - 1
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
console.warn(`AA X case 4`, before_row, row_count, JSON.stringify(area));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return area;
|
|
295
|
+
}
|
|
296
|
+
/** accessor returns a _copy_ of the start address */
|
|
297
|
+
get start() {
|
|
298
|
+
return { ...this.start_ };
|
|
299
|
+
}
|
|
300
|
+
/** accessor */
|
|
301
|
+
set start(value) { this.start_ = value; }
|
|
302
|
+
/** accessor returns a _copy_ of the end address */
|
|
303
|
+
get end() {
|
|
304
|
+
return { ...this.end_ };
|
|
305
|
+
}
|
|
306
|
+
/** accessor */
|
|
307
|
+
set end(value) { this.end_ = value; }
|
|
308
|
+
/** returns number of rows, possibly infinity */
|
|
309
|
+
get rows() {
|
|
310
|
+
if (this.start_.row === Infinity || this.end_.row === Infinity)
|
|
311
|
+
return Infinity;
|
|
312
|
+
return this.end_.row - this.start_.row + 1;
|
|
313
|
+
}
|
|
314
|
+
/** returns number of columns, possibly infinity */
|
|
315
|
+
get columns() {
|
|
316
|
+
if (this.start_.column === Infinity || this.end_.column === Infinity)
|
|
317
|
+
return Infinity;
|
|
318
|
+
return this.end_.column - this.start_.column + 1;
|
|
319
|
+
}
|
|
320
|
+
/** returns number of cells, possibly infinity */
|
|
321
|
+
get count() {
|
|
322
|
+
return this.rows * this.columns;
|
|
323
|
+
}
|
|
324
|
+
/** returns flag indicating this is the entire sheet, usually after "select all" */
|
|
325
|
+
get entire_sheet() {
|
|
326
|
+
return this.entire_row && this.entire_column;
|
|
327
|
+
}
|
|
328
|
+
/** returns flag indicating this range includes infinite rows */
|
|
329
|
+
get entire_column() {
|
|
330
|
+
return (this.start_.row === Infinity);
|
|
331
|
+
}
|
|
332
|
+
/** returns flag indicating this range includes infinite columns */
|
|
333
|
+
get entire_row() {
|
|
334
|
+
return (this.start_.column === Infinity);
|
|
335
|
+
}
|
|
336
|
+
PatchNull(address) {
|
|
337
|
+
const copy = { ...address };
|
|
338
|
+
if (copy.row === null) {
|
|
339
|
+
copy.row = Infinity;
|
|
340
|
+
}
|
|
341
|
+
if (copy.column === null) {
|
|
342
|
+
copy.column = Infinity;
|
|
343
|
+
}
|
|
344
|
+
return copy;
|
|
345
|
+
}
|
|
346
|
+
SetSheetID(id) {
|
|
347
|
+
this.start_.sheet_id = id;
|
|
348
|
+
}
|
|
349
|
+
Normalize() {
|
|
350
|
+
/*
|
|
351
|
+
let columns = [this.start.column, this.end.column].sort((a, b) => a-b);
|
|
352
|
+
let rows = [this.start.row, this.end.row].sort((a, b) => a-b);
|
|
353
|
+
|
|
354
|
+
this.start_ = {row: rows[0], column: columns[0]};
|
|
355
|
+
this.end = {row:rows[1], column: columns[1]};
|
|
356
|
+
*/
|
|
357
|
+
// we need to bind the element and the absolute/relative status
|
|
358
|
+
// so sorting is too simple
|
|
359
|
+
const start = { ...this.start_ };
|
|
360
|
+
const end = { ...this.end_ };
|
|
361
|
+
/*
|
|
362
|
+
const start = {
|
|
363
|
+
sheet_id: this.start_.sheet_id,
|
|
364
|
+
row: this.start_.row,
|
|
365
|
+
column: this.start_.column,
|
|
366
|
+
absolute_column: this.start_.absolute_column,
|
|
367
|
+
absolute_row: this.start_.absolute_row };
|
|
368
|
+
|
|
369
|
+
const end = {
|
|
370
|
+
sheet_id: this.end_.sheet_id, // we don't ever use this, but copy JIC
|
|
371
|
+
row: this.end_.row,
|
|
372
|
+
column: this.end_.column,
|
|
373
|
+
absolute_column: this.end_.absolute_column,
|
|
374
|
+
absolute_row: this.end_.absolute_row };
|
|
375
|
+
*/
|
|
376
|
+
// swap row
|
|
377
|
+
if (start.row === Infinity || end.row === Infinity) {
|
|
378
|
+
start.row = end.row = Infinity;
|
|
379
|
+
}
|
|
380
|
+
else if (start.row > end.row) {
|
|
381
|
+
start.row = this.end_.row;
|
|
382
|
+
start.absolute_row = this.end_.absolute_row;
|
|
383
|
+
end.row = this.start_.row;
|
|
384
|
+
end.absolute_row = this.start_.absolute_row;
|
|
385
|
+
}
|
|
386
|
+
// swap column
|
|
387
|
+
if (start.column === Infinity || end.column === Infinity) {
|
|
388
|
+
start.column = end.column = Infinity;
|
|
389
|
+
}
|
|
390
|
+
else if (start.column > end.column) {
|
|
391
|
+
start.column = this.end_.column;
|
|
392
|
+
start.absolute_column = this.end_.absolute_column;
|
|
393
|
+
end.column = this.start_.column;
|
|
394
|
+
end.absolute_column = this.start_.absolute_column;
|
|
395
|
+
}
|
|
396
|
+
this.start_ = start;
|
|
397
|
+
this.end_ = end;
|
|
398
|
+
}
|
|
399
|
+
/** returns the top-left cell in the area */
|
|
400
|
+
TopLeft() {
|
|
401
|
+
const address = { row: 0, column: 0 };
|
|
402
|
+
if (!this.entire_row)
|
|
403
|
+
address.column = this.start.column;
|
|
404
|
+
if (!this.entire_column)
|
|
405
|
+
address.row = this.start.row;
|
|
406
|
+
return address;
|
|
407
|
+
}
|
|
408
|
+
/** returns the bottom-right cell in the area */
|
|
409
|
+
BottomRight() {
|
|
410
|
+
const address = { row: 0, column: 0 };
|
|
411
|
+
if (!this.entire_row)
|
|
412
|
+
address.column = this.end.column;
|
|
413
|
+
if (!this.entire_column)
|
|
414
|
+
address.row = this.end.row;
|
|
415
|
+
return address;
|
|
416
|
+
}
|
|
417
|
+
ContainsRow(row) {
|
|
418
|
+
return this.entire_column || (row >= this.start_.row && row <= this.end_.row);
|
|
419
|
+
}
|
|
420
|
+
ContainsColumn(column) {
|
|
421
|
+
return this.entire_row || (column >= this.start_.column && column <= this.end_.column);
|
|
422
|
+
}
|
|
423
|
+
Contains(address) {
|
|
424
|
+
return (this.entire_column || (address.row >= this.start_.row && address.row <= this.end_.row))
|
|
425
|
+
&& (this.entire_row || (address.column >= this.start_.column && address.column <= this.end_.column));
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* returns true if this area completely contains the argument area
|
|
429
|
+
* (also if areas are ===, as a side effect). note that this returns
|
|
430
|
+
* true if A contains B, but not vice-versa
|
|
431
|
+
*/
|
|
432
|
+
ContainsArea(area) {
|
|
433
|
+
return this.start.column <= area.start.column
|
|
434
|
+
&& this.end.column >= area.end.column
|
|
435
|
+
&& this.start.row <= area.start.row
|
|
436
|
+
&& this.end.row >= area.end.row;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* returns true if there's an intersection. note that this won't work
|
|
440
|
+
* if there are infinities -- needs real area ?
|
|
441
|
+
*/
|
|
442
|
+
Intersects(area) {
|
|
443
|
+
return !(area.start.column > this.end.column
|
|
444
|
+
|| this.start.column > area.end.column
|
|
445
|
+
|| area.start.row > this.end.row
|
|
446
|
+
|| this.start.row > area.end.row);
|
|
447
|
+
}
|
|
448
|
+
Equals(area) {
|
|
449
|
+
return area.start_.row === this.start_.row
|
|
450
|
+
&& area.start_.column === this.start_.column
|
|
451
|
+
&& area.end_.row === this.end_.row
|
|
452
|
+
&& area.end_.column === this.end_.column;
|
|
453
|
+
}
|
|
454
|
+
Equals2(area) {
|
|
455
|
+
return area.start.row === this.start_.row
|
|
456
|
+
&& area.start.column === this.start_.column
|
|
457
|
+
&& area.end.row === this.end_.row
|
|
458
|
+
&& area.end.column === this.end_.column;
|
|
459
|
+
}
|
|
460
|
+
Clone() {
|
|
461
|
+
return new Area(this.start, this.end); // ensure copies
|
|
462
|
+
}
|
|
463
|
+
/* removed, use iterator
|
|
464
|
+
public Array(): ICellAddress[] {
|
|
465
|
+
if (this.entire_column || this.entire_row) throw new Error('can\'t convert infinite area to array');
|
|
466
|
+
const array: ICellAddress[] = new Array<ICellAddress>(this.rows * this.columns);
|
|
467
|
+
|
|
468
|
+
const sheet_id = this.start_.sheet_id;
|
|
469
|
+
let index = 0;
|
|
470
|
+
|
|
471
|
+
// does this need sheet ID?
|
|
472
|
+
|
|
473
|
+
for (let row = this.start_.row; row <= this.end_.row; row++){
|
|
474
|
+
for (let column = this.start_.column; column <= this.end_.column; column++){
|
|
475
|
+
array[index++] = { row, column, sheet_id };
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return array;
|
|
479
|
+
}
|
|
480
|
+
*/
|
|
481
|
+
get left() {
|
|
482
|
+
const area = new Area(this.start_, this.end_);
|
|
483
|
+
area.end_.column = area.start_.column;
|
|
484
|
+
return area;
|
|
485
|
+
}
|
|
486
|
+
get right() {
|
|
487
|
+
const area = new Area(this.start_, this.end_);
|
|
488
|
+
area.start_.column = area.end_.column;
|
|
489
|
+
return area;
|
|
490
|
+
}
|
|
491
|
+
get top() {
|
|
492
|
+
const area = new Area(this.start_, this.end_);
|
|
493
|
+
area.end_.row = area.start_.row;
|
|
494
|
+
return area;
|
|
495
|
+
}
|
|
496
|
+
get bottom() {
|
|
497
|
+
const area = new Area(this.start_, this.end_);
|
|
498
|
+
area.start_.row = area.end_.row;
|
|
499
|
+
return area;
|
|
500
|
+
}
|
|
501
|
+
/** shifts range in place */
|
|
502
|
+
Shift(rows, columns) {
|
|
503
|
+
this.start_.row += rows;
|
|
504
|
+
this.start_.column += columns;
|
|
505
|
+
this.end_.row += rows;
|
|
506
|
+
this.end_.column += columns;
|
|
507
|
+
return this; // fluent
|
|
508
|
+
}
|
|
509
|
+
/** Resizes range in place so that it includes the given address */
|
|
510
|
+
ConsumeAddress(addr) {
|
|
511
|
+
if (!this.entire_row) {
|
|
512
|
+
if (addr.column < this.start_.column)
|
|
513
|
+
this.start_.column = addr.column;
|
|
514
|
+
if (addr.column > this.end_.column)
|
|
515
|
+
this.end_.column = addr.column;
|
|
516
|
+
}
|
|
517
|
+
if (!this.entire_column) {
|
|
518
|
+
if (addr.row < this.start_.row)
|
|
519
|
+
this.start_.row = addr.row;
|
|
520
|
+
if (addr.row > this.end_.row)
|
|
521
|
+
this.end_.row = addr.row;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
/** Resizes range in place to be the requested shape */
|
|
525
|
+
Reshape(rows, columns) {
|
|
526
|
+
this.end_.row = this.start_.row + rows - 1;
|
|
527
|
+
this.end_.column = this.start_.column + columns - 1;
|
|
528
|
+
return this; // fluent
|
|
529
|
+
}
|
|
530
|
+
/** Resizes range in place so that it includes the given area (merge) */
|
|
531
|
+
ConsumeArea(area) {
|
|
532
|
+
this.ConsumeAddress(area.start);
|
|
533
|
+
this.ConsumeAddress(area.end);
|
|
534
|
+
}
|
|
535
|
+
/** resizes range in place (updates end) */
|
|
536
|
+
Resize(rows, columns) {
|
|
537
|
+
this.end_.row = this.start_.row + rows - 1;
|
|
538
|
+
this.end_.column = this.start_.column + columns - 1;
|
|
539
|
+
return this; // fluent
|
|
540
|
+
}
|
|
541
|
+
/* *
|
|
542
|
+
* preferred to straight iterator. actually in this class iterator
|
|
543
|
+
* is OK but in some other cases we'll want to generate like this
|
|
544
|
+
*
|
|
545
|
+
* eh I don't know about this inline function, is that going to be
|
|
546
|
+
* optimized out? ...
|
|
547
|
+
* /
|
|
548
|
+
public get contents(): Generator<{ row: number, column: number, sheet_id?: number }> {
|
|
549
|
+
|
|
550
|
+
if (this.entire_row || this.entire_column) {
|
|
551
|
+
throw new Error(`don't iterate infinite area`);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
const sheet_id = this.start_.sheet_id;
|
|
555
|
+
const start_column = this.start_.column;
|
|
556
|
+
const end_column = this.end_.column;
|
|
557
|
+
const start_row = this.start_.row;
|
|
558
|
+
const end_row = this.end_.row;
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
function *generator() {
|
|
562
|
+
for (let column = start_column; column <= end_column; column++){
|
|
563
|
+
for (let row = start_row; row <= end_row; row++){
|
|
564
|
+
yield {column, row, sheet_id};
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
return generator();
|
|
570
|
+
|
|
571
|
+
}
|
|
572
|
+
*/
|
|
573
|
+
/**
|
|
574
|
+
* modernizing. this is a proper iterator. generators are prettier
|
|
575
|
+
* but there's at least some performance cost -- I'm not sure how
|
|
576
|
+
* much, but it's non-zero.
|
|
577
|
+
*/
|
|
578
|
+
[Symbol.iterator]() {
|
|
579
|
+
if (this.entire_row || this.entire_column) {
|
|
580
|
+
throw new Error(`don't iterate infinite area`);
|
|
581
|
+
}
|
|
582
|
+
let row = this.start_.row;
|
|
583
|
+
let column = this.start_.column;
|
|
584
|
+
// this now uses "live" references, so if the object were mutated
|
|
585
|
+
// during iteration the iterator would reflect those changes. which
|
|
586
|
+
// seems bad, but also correct.
|
|
587
|
+
return {
|
|
588
|
+
next: () => {
|
|
589
|
+
const value = { column, row, sheet_id: this.start_.sheet_id };
|
|
590
|
+
if (column > this.end_.column) {
|
|
591
|
+
return {
|
|
592
|
+
done: true,
|
|
593
|
+
value: undefined,
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
if (++row > this.end_.row) {
|
|
597
|
+
row = this.start_.row;
|
|
598
|
+
column++;
|
|
599
|
+
}
|
|
600
|
+
return { value };
|
|
601
|
+
},
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
/* * @deprecated * /
|
|
605
|
+
public Iterate(f: (...args: any[]) => any): void {
|
|
606
|
+
if (this.entire_column || this.entire_row) {
|
|
607
|
+
console.warn(`don't iterate infinite area`);
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
for (let c = this.start_.column; c <= this.end_.column; c++){
|
|
611
|
+
for (let r = this.start_.row; r <= this.end_.row; r++){
|
|
612
|
+
f({column: c, row: r, sheet_id: this.start_.sheet_id});
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
*/
|
|
617
|
+
/* *
|
|
618
|
+
* testing: we may have to polyfill for IE11, or just not use it at
|
|
619
|
+
* all, depending on support level... but it works OK (kind of a clumsy
|
|
620
|
+
* implementation though).
|
|
621
|
+
*
|
|
622
|
+
* as it turns out we don't really use iteration that much (I thought
|
|
623
|
+
* we did) so it's probably not worth the polyfill...
|
|
624
|
+
*
|
|
625
|
+
* /
|
|
626
|
+
public next(): IteratorResult<ICellAddress> {
|
|
627
|
+
|
|
628
|
+
// sanity
|
|
629
|
+
|
|
630
|
+
if (this.entire_column || this.entire_row) {
|
|
631
|
+
console.warn('don\'t iterate over infinte range');
|
|
632
|
+
return { value: undefined, done: true };
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// return current, unless it's OOB; if so, advance
|
|
636
|
+
|
|
637
|
+
if (this.iterator_index.column > this.end.column) {
|
|
638
|
+
this.iterator_index.column = this.start_.column;
|
|
639
|
+
this.iterator_index.row++;
|
|
640
|
+
|
|
641
|
+
if (this.iterator_index.row > this.end.row) {
|
|
642
|
+
this.ResetIterator();
|
|
643
|
+
return { value: undefined, done: true };
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
const result = { value: { ...this.iterator_index }, done: false };
|
|
649
|
+
this.iterator_index.column++;
|
|
650
|
+
|
|
651
|
+
return result;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
public [Symbol.iterator](): IterableIterator <ICellAddress> {
|
|
655
|
+
return this;
|
|
656
|
+
}
|
|
657
|
+
*/
|
|
658
|
+
/**
|
|
659
|
+
* returns the range in A1-style spreadsheet addressing. if the
|
|
660
|
+
* entire sheet is selected, returns nothing (there's no way to
|
|
661
|
+
* express that in A1 notation). returns the row numbers for entire
|
|
662
|
+
* columns and vice-versa for rows.
|
|
663
|
+
*/
|
|
664
|
+
get spreadsheet_label() {
|
|
665
|
+
let s;
|
|
666
|
+
if (this.entire_sheet)
|
|
667
|
+
return '';
|
|
668
|
+
if (this.entire_column) {
|
|
669
|
+
s = Area.ColumnToLabel(this.start_.column);
|
|
670
|
+
s += ':' + Area.ColumnToLabel(this.end_.column);
|
|
671
|
+
return s;
|
|
672
|
+
}
|
|
673
|
+
if (this.entire_row) {
|
|
674
|
+
s = String(this.start_.row + 1);
|
|
675
|
+
s += ':' + (this.end_.row + 1);
|
|
676
|
+
return s;
|
|
677
|
+
}
|
|
678
|
+
s = Area.CellAddressToLabel(this.start_);
|
|
679
|
+
if (this.columns > 1 || this.rows > 1)
|
|
680
|
+
return s + ':' + Area.CellAddressToLabel(this.end_);
|
|
681
|
+
return s;
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* FIXME: is this different than what would be returned if
|
|
685
|
+
* we just used the default json serializer? (...)
|
|
686
|
+
*
|
|
687
|
+
* NOTE: we could return just the start if size === 1. if
|
|
688
|
+
* you pass an undefined to the Area class ctor it will reuse
|
|
689
|
+
* the start.
|
|
690
|
+
*
|
|
691
|
+
*/
|
|
692
|
+
toJSON() {
|
|
693
|
+
return {
|
|
694
|
+
start: { ...this.start_ },
|
|
695
|
+
end: { ...this.end_ },
|
|
696
|
+
};
|
|
697
|
+
/*
|
|
698
|
+
return {
|
|
699
|
+
start: {
|
|
700
|
+
row: this.start.row,
|
|
701
|
+
absolute_row: this.start.absolute_row,
|
|
702
|
+
column: this.start.column,
|
|
703
|
+
absolute_column: this.start.absolute_column,
|
|
704
|
+
},
|
|
705
|
+
end: {
|
|
706
|
+
row: this.end.row,
|
|
707
|
+
absolute_row: this.end.absolute_row,
|
|
708
|
+
column: this.end.column,
|
|
709
|
+
absolute_column: this.end.absolute_column,
|
|
710
|
+
},
|
|
711
|
+
};
|
|
712
|
+
*/
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
//# sourceMappingURL=area.js.map
|