@svgrid/enterprise 3.0.2 → 3.0.3
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/LICENSE +94 -24
- package/README.md +36 -4
- package/dist/SvAdvancedFilter.svelte +1 -1
- package/dist/SvAlertsManager.svelte +2 -1
- package/dist/SvBoard.svelte +2 -1
- package/dist/SvExportMenu.svelte +4 -1
- package/dist/SvExportMenu.svelte.d.ts +0 -13
- package/dist/SvExpressionEditor.svelte +3 -3
- package/dist/SvFormulaBar.svelte +94 -20
- package/dist/SvFormulaBar.svelte.d.ts +7 -0
- package/dist/SvGridAlerts.svelte +49 -9
- package/dist/SvGridBoard.svelte +13 -8
- package/dist/SvGridBulkEditDrawer.svelte +26 -2
- package/dist/SvGridEditPanel.svelte +3 -0
- package/dist/SvGridScheduler.svelte +69 -40
- package/dist/SvGridSelectionBar.svelte +10 -3
- package/dist/SvPivotDesigner.svelte +198 -40
- package/dist/SvPivotDesigner.svelte.d.ts +27 -20
- package/dist/SvSheet.svelte +4043 -243
- package/dist/SvSheet.svelte.d.ts +76 -3
- package/dist/SvSheetChartSetup.svelte +151 -0
- package/dist/SvSheetChartSetup.svelte.d.ts +18 -0
- package/dist/SvSheetComment.svelte +216 -31
- package/dist/SvSheetComment.svelte.d.ts +11 -11
- package/dist/SvSheetConditionalFormat.svelte +28 -31
- package/dist/SvSheetDataValidation.svelte +66 -42
- package/dist/SvSheetEditRanges.svelte +217 -0
- package/dist/SvSheetEditRanges.svelte.d.ts +15 -0
- package/dist/SvSheetErrors.svelte +125 -0
- package/dist/SvSheetErrors.svelte.d.ts +20 -0
- package/dist/SvSheetEvaluate.svelte +133 -0
- package/dist/SvSheetEvaluate.svelte.d.ts +15 -0
- package/dist/SvSheetFilterMenu.svelte +137 -34
- package/dist/SvSheetFilterMenu.svelte.d.ts +5 -0
- package/dist/SvSheetFindReplace.svelte +19 -19
- package/dist/SvSheetFormatCells.svelte +125 -81
- package/dist/SvSheetGoalSeek.svelte +17 -16
- package/dist/SvSheetInsertFunction.svelte +15 -13
- package/dist/SvSheetIteration.svelte +81 -0
- package/dist/SvSheetIteration.svelte.d.ts +10 -0
- package/dist/SvSheetLink.svelte +99 -0
- package/dist/SvSheetLink.svelte.d.ts +17 -0
- package/dist/SvSheetListPicker.svelte +4 -2
- package/dist/SvSheetListPicker.svelte.d.ts +0 -6
- package/dist/SvSheetManageRules.svelte +20 -18
- package/dist/SvSheetNameManager.svelte +17 -15
- package/dist/SvSheetPageSetup.svelte +159 -0
- package/dist/SvSheetPageSetup.svelte.d.ts +13 -0
- package/dist/SvSheetPasteSpecial.svelte +22 -20
- package/dist/SvSheetPivot.svelte +220 -0
- package/dist/SvSheetPivot.svelte.d.ts +21 -0
- package/dist/SvSheetProtectSheet.svelte +81 -0
- package/dist/SvSheetProtectSheet.svelte.d.ts +11 -0
- package/dist/SvSheetRemoveDuplicates.svelte +13 -10
- package/dist/SvSheetRibbon.svelte +104 -51
- package/dist/SvSheetSizeDialog.svelte +4 -2
- package/dist/SvSheetSort.svelte +218 -0
- package/dist/SvSheetSort.svelte.d.ts +28 -0
- package/dist/SvSheetSparklines.svelte +135 -0
- package/dist/SvSheetSparklines.svelte.d.ts +14 -0
- package/dist/SvSheetTable.svelte +160 -0
- package/dist/SvSheetTable.svelte.d.ts +24 -0
- package/dist/SvSheetTabs.svelte +161 -31
- package/dist/SvSheetTabs.svelte.d.ts +22 -8
- package/dist/SvSheetTextToColumns.svelte +20 -20
- package/dist/SvSheetValidationAlert.svelte +8 -6
- package/dist/advanced-filter-enable.js +1 -1
- package/dist/alerts/alert-engine.d.ts +6 -0
- package/dist/alerts/alert-engine.js +21 -4
- package/dist/alerts/alert-formats.js +2 -0
- package/dist/alerts/alert-types.d.ts +1 -1
- package/dist/alerts.d.ts +1 -1
- package/dist/alerts.js +2 -2
- package/dist/board.js +2 -2
- package/dist/bulk-edit.d.ts +3 -1
- package/dist/bulk-edit.js +1 -1
- package/dist/cdn/svgrid-enterprise.svelte-external.js +39827 -16429
- package/dist/designer/assets/GridMenus-8gTNssgV.js +8 -0
- package/dist/designer/assets/{SvChartMenu-D9hEeHar.js → SvChartMenu-BDoeqGz6.js} +1 -1
- package/dist/designer/assets/{SvDateTimePicker-DARvKUL2.js → SvDateTimePicker-DCPg7WGN.js} +1 -1
- package/dist/designer/assets/SvGridCellEditor-DMoWJjEI.js +4 -0
- package/dist/designer/assets/{SvGridChart-B8j1SSy3.js → SvGridChart-Cy1ATrWh.js} +2 -2
- package/dist/designer/assets/SvGridChartBuilder-eQ3mn0L9.js +1 -0
- package/dist/designer/assets/{SvGridChartPanel-pT6ITc2P.js → SvGridChartPanel-CATdVc9X.js} +3 -3
- package/dist/designer/assets/{SvGridChartView-bg281UA1.js → SvGridChartView-CmsZtCED.js} +1 -1
- package/dist/designer/assets/SvGridDropdown-Cjz0H-fI.js +1 -0
- package/dist/designer/assets/{SvTabs-UFCMTHXS.js → SvTabs-2mHC6oaz.js} +1 -1
- package/dist/designer/assets/cell-formatting-BbubJTVz.js +1 -0
- package/dist/designer/assets/{chart-cIPUsbM5.js → chart-Cn7MnNqA.js} +1 -1
- package/dist/designer/assets/{chart-panel-messages-DtTxpBUU.js → chart-panel-messages-Dz7PTIqT.js} +1 -1
- package/dist/designer/assets/{chart-summary-Czu_5epb.js → chart-summary-BD1qYB2R.js} +1 -1
- package/dist/designer/assets/{chart-trend-D5I5VEe8.js → chart-trend-B8xr5LuD.js} +1 -1
- package/dist/designer/assets/{dismissable-BO547MH9.js → dismissable-ChWRPkoa.js} +1 -1
- package/dist/designer/assets/{export-format-D-eP4b2l.js → export-format-DGckmgKr.js} +1 -1
- package/dist/designer/assets/{focus-trap-CAreAhlU.js → focus-trap-V2-6Fy9I.js} +1 -1
- package/dist/designer/assets/{index-DwU7CAMm.js → index-D5bVbuzI.js} +317 -315
- package/dist/designer/assets/index-_JVFxt02.css +1 -0
- package/dist/designer/assets/row-resize-BInFWCpr.js +1 -0
- package/dist/designer/assets/server-block-cache-CXJKkJpy.js +1 -0
- package/dist/designer/assets/src-DUQ4xE3x.js +58 -0
- package/dist/designer/assets/validate-C3B8QKsM.js +1 -0
- package/dist/designer/index.html +17 -16
- package/dist/export-pdf.d.ts +75 -0
- package/dist/export-pdf.js +216 -15
- package/dist/export.js +10 -2
- package/dist/gantt/SvGridGantt.svelte +2890 -0
- package/dist/gantt/SvGridGantt.svelte.d.ts +30 -0
- package/dist/gantt/gantt-config.d.ts +73 -0
- package/dist/gantt/gantt-config.js +1 -0
- package/dist/gantt/gantt-critical-path.d.ts +67 -0
- package/dist/gantt/gantt-critical-path.js +207 -0
- package/dist/gantt/gantt-model.d.ts +257 -0
- package/dist/gantt/gantt-model.js +651 -0
- package/dist/gantt/gantt-resources.d.ts +59 -0
- package/dist/gantt/gantt-resources.js +71 -0
- package/dist/gantt/gantt.d.ts +7 -0
- package/dist/gantt/gantt.js +36 -0
- package/dist/gantt/index.d.ts +15 -0
- package/dist/gantt/index.js +22 -0
- package/dist/gantt/timeline-arrows.d.ts +102 -0
- package/dist/gantt/timeline-arrows.js +181 -0
- package/dist/import.d.ts +2 -2
- package/dist/import.js +1 -1
- package/dist/index.d.ts +34 -7
- package/dist/index.js +44 -7
- package/dist/install.js +8 -1
- package/dist/license-core.d.ts +17 -1
- package/dist/license-core.js +16 -5
- package/dist/license.d.ts +18 -2
- package/dist/license.js +71 -6
- package/dist/node/studio.js +140 -8
- package/dist/pivot-enable.js +2 -2
- package/dist/scheduler-dependencies.d.ts +35 -0
- package/dist/scheduler-dependencies.js +36 -1
- package/dist/scheduler.js +2 -2
- package/dist/selection-bar.js +2 -2
- package/dist/server/SvGroupCell.svelte +213 -0
- package/dist/server/SvGroupCell.svelte.d.ts +62 -0
- package/dist/server/SvRowGroupPanel.svelte +322 -0
- package/dist/server/SvRowGroupPanel.svelte.d.ts +37 -0
- package/dist/server/enable.d.ts +17 -0
- package/dist/server/enable.js +49 -0
- package/dist/server/index.d.ts +22 -0
- package/dist/server/index.js +24 -0
- package/dist/server/messages.d.ts +45 -0
- package/dist/server/messages.js +35 -0
- package/dist/server/server-group-model.d.ts +104 -0
- package/dist/server/server-group-model.js +272 -0
- package/dist/server/server-pivot.d.ts +46 -0
- package/dist/server/server-pivot.js +57 -0
- package/dist/server/server-row-model.d.ts +547 -0
- package/dist/server/server-row-model.js +1551 -0
- package/dist/server/server-selection.d.ts +99 -0
- package/dist/server/server-selection.js +215 -0
- package/dist/server/svgrid-adapter.d.ts +155 -0
- package/dist/server/svgrid-adapter.js +202 -0
- package/dist/sheet/ast.d.ts +45 -1
- package/dist/sheet/ast.js +14 -0
- package/dist/sheet/auto-filter.d.ts +58 -4
- package/dist/sheet/auto-filter.js +159 -11
- package/dist/sheet/autocomplete.d.ts +9 -0
- package/dist/sheet/autocomplete.js +90 -4
- package/dist/sheet/cell-images.d.ts +39 -0
- package/dist/sheet/cell-images.js +90 -0
- package/dist/sheet/cell-types.d.ts +58 -0
- package/dist/sheet/cell-types.js +96 -0
- package/dist/sheet/coerce.d.ts +40 -0
- package/dist/sheet/coerce.js +170 -3
- package/dist/sheet/comments.d.ts +43 -9
- package/dist/sheet/comments.js +85 -27
- package/dist/sheet/conditional-formats.d.ts +29 -6
- package/dist/sheet/conditional-formats.js +37 -12
- package/dist/sheet/csv.d.ts +32 -0
- package/dist/sheet/csv.js +158 -0
- package/dist/sheet/culture.d.ts +87 -0
- package/dist/sheet/culture.js +247 -0
- package/dist/sheet/delta.d.ts +102 -0
- package/dist/sheet/delta.js +203 -0
- package/dist/sheet/deps.d.ts +45 -1
- package/dist/sheet/deps.js +77 -2
- package/dist/sheet/document.d.ts +106 -4
- package/dist/sheet/document.js +204 -3
- package/dist/sheet/engine.d.ts +67 -0
- package/dist/sheet/engine.js +19 -0
- package/dist/sheet/entry.d.ts +8 -4
- package/dist/sheet/entry.js +171 -21
- package/dist/sheet/error-check.d.ts +49 -0
- package/dist/sheet/error-check.js +83 -0
- package/dist/sheet/evaluate-steps.d.ts +48 -0
- package/dist/sheet/evaluate-steps.js +196 -0
- package/dist/sheet/evaluate.d.ts +67 -0
- package/dist/sheet/evaluate.js +725 -13
- package/dist/sheet/filter-files.d.ts +37 -0
- package/dist/sheet/filter-files.js +465 -0
- package/dist/sheet/format-store.d.ts +15 -0
- package/dist/sheet/format-store.js +11 -1
- package/dist/sheet/from-rows.d.ts +14 -0
- package/dist/sheet/from-rows.js +50 -0
- package/dist/sheet/function-catalog.d.ts +1 -1
- package/dist/sheet/function-catalog.js +296 -5
- package/dist/sheet/functions.js +363 -91
- package/dist/sheet/index.d.ts +35 -8
- package/dist/sheet/index.js +35 -8
- package/dist/sheet/links.d.ts +57 -0
- package/dist/sheet/links.js +174 -0
- package/dist/sheet/messages.d.ts +778 -0
- package/dist/sheet/messages.js +806 -0
- package/dist/sheet/number-format.d.ts +52 -5
- package/dist/sheet/number-format.js +465 -68
- package/dist/sheet/objects.d.ts +106 -0
- package/dist/sheet/objects.js +149 -0
- package/dist/sheet/ods-document.d.ts +44 -0
- package/dist/sheet/ods-document.js +1275 -0
- package/dist/sheet/open-file.d.ts +26 -0
- package/dist/sheet/open-file.js +56 -0
- package/dist/sheet/outline.d.ts +82 -0
- package/dist/sheet/outline.js +228 -0
- package/dist/sheet/packs/array.d.ts +16 -0
- package/dist/sheet/packs/array.js +172 -0
- package/dist/sheet/packs/database.d.ts +42 -0
- package/dist/sheet/packs/database.js +142 -0
- package/dist/sheet/packs/engineering.d.ts +2 -0
- package/dist/sheet/packs/engineering.js +296 -0
- package/dist/sheet/packs/financial.d.ts +5 -0
- package/dist/sheet/packs/financial.js +220 -0
- package/dist/sheet/packs/math-stats.d.ts +2 -0
- package/dist/sheet/packs/math-stats.js +372 -0
- package/dist/sheet/packs/special.d.ts +44 -0
- package/dist/sheet/packs/special.js +187 -0
- package/dist/sheet/packs/stats-dist.d.ts +2 -0
- package/dist/sheet/packs/stats-dist.js +785 -0
- package/dist/sheet/packs/text-date.d.ts +2 -0
- package/dist/sheet/packs/text-date.js +332 -0
- package/dist/sheet/packs/trig.d.ts +2 -0
- package/dist/sheet/packs/trig.js +73 -0
- package/dist/sheet/page-setup.d.ts +73 -0
- package/dist/sheet/page-setup.js +73 -0
- package/dist/sheet/parse.js +42 -10
- package/dist/sheet/paste-special.d.ts +22 -0
- package/dist/sheet/paste-special.js +14 -5
- package/dist/sheet/pivot-range.d.ts +160 -0
- package/dist/sheet/pivot-range.js +333 -0
- package/dist/sheet/presence.d.ts +73 -0
- package/dist/sheet/presence.js +79 -0
- package/dist/sheet/print.d.ts +104 -0
- package/dist/sheet/print.js +169 -0
- package/dist/sheet/protection.d.ts +55 -1
- package/dist/sheet/protection.js +55 -2
- package/dist/sheet/rects.d.ts +1 -1
- package/dist/sheet/refs.d.ts +48 -0
- package/dist/sheet/refs.js +155 -8
- package/dist/sheet/ribbon-icons.d.ts +1 -1
- package/dist/sheet/ribbon-icons.js +186 -0
- package/dist/sheet/ribbon.d.ts +1 -1
- package/dist/sheet/ribbon.js +324 -23
- package/dist/sheet/sheet-kinds.d.ts +74 -0
- package/dist/sheet/sheet-kinds.js +91 -0
- package/dist/sheet/shortcuts.d.ts +13 -3
- package/dist/sheet/shortcuts.js +63 -12
- package/dist/sheet/sort.d.ts +51 -0
- package/dist/sheet/sort.js +107 -0
- package/dist/sheet/sparklines.d.ts +111 -0
- package/dist/sheet/sparklines.js +204 -0
- package/dist/sheet/table-styles.d.ts +74 -0
- package/dist/sheet/table-styles.js +152 -0
- package/dist/sheet/tables.d.ts +19 -0
- package/dist/sheet/tables.js +31 -0
- package/dist/sheet/tokenize.d.ts +18 -1
- package/dist/sheet/tokenize.js +60 -9
- package/dist/sheet/validation.d.ts +16 -0
- package/dist/sheet/validation.js +37 -0
- package/dist/sheet/workbook.d.ts +148 -3
- package/dist/sheet/workbook.js +742 -31
- package/dist/sheet/xls-cfb.d.ts +32 -0
- package/dist/sheet/xls-cfb.js +290 -0
- package/dist/sheet/xls-document.d.ts +10 -0
- package/dist/sheet/xls-document.js +1243 -0
- package/dist/sheet/xls-formula.d.ts +40 -0
- package/dist/sheet/xls-formula.js +569 -0
- package/dist/sheet/xlsx-document.d.ts +108 -0
- package/dist/sheet/xlsx-document.js +1849 -0
- package/dist/sheet/xlsx-drawing.d.ts +99 -0
- package/dist/sheet/xlsx-drawing.js +420 -0
- package/dist/sheet-enable.js +6 -7
- package/dist/sheet-text.d.ts +7 -0
- package/dist/sheet-text.js +29 -0
- package/dist/sources/auth-supabase.js +2 -2
- package/dist/sources/realtime-supabase.js +2 -2
- package/dist/sources/rest.d.ts +6 -2
- package/dist/sources/rest.js +42 -7
- package/dist/sources/supabase.d.ts +10 -1
- package/dist/sources/supabase.js +73 -40
- package/dist/studio/emit-project.js +14 -1
- package/dist/studio/index.js +1 -1
- package/dist/studio/project.d.ts +11 -2
- package/dist/studio/project.js +5 -2
- package/dist/studio/ui-components.generated.js +107 -2
- package/dist/sveltekit/in-memory.d.ts +2 -2
- package/dist/sveltekit/in-memory.js +125 -4
- package/dist/sveltekit/index.d.ts +1 -1
- package/dist/sveltekit/index.js +1 -1
- package/dist/sveltekit/query-plan.d.ts +50 -4
- package/dist/sveltekit/query-plan.js +25 -3
- package/dist/sveltekit/sql-source.d.ts +6 -0
- package/dist/sveltekit/sql-source.js +34 -6
- package/dist/sveltekit/sql.d.ts +31 -0
- package/dist/sveltekit/sql.js +135 -25
- package/dist/sveltekit/transport.d.ts +10 -2
- package/dist/sveltekit/transport.js +30 -6
- package/dist/upgrade-prompt.d.ts +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/watermark.js +35 -2
- package/dist/wc/GridMenus-By9vPuq0.js +1088 -0
- package/dist/wc/SvChartMenu-CQNrQGT2.js +308 -0
- package/dist/wc/SvDateRangeInput-DR6m7bSM.js +199 -0
- package/dist/wc/SvDateTimePicker-D-vRnaMo.js +771 -0
- package/dist/wc/SvField-B_kurx_P.js +149 -0
- package/dist/wc/SvGrid.helpers-BdVDtjUm.js +135 -0
- package/dist/wc/SvGridCellEditor-Bnf1Kr5C.js +560 -0
- package/dist/wc/SvGridChart-BqUJh2pG.js +3572 -0
- package/dist/wc/SvGridChartBuilder-CGycC5cn.js +988 -0
- package/dist/wc/SvGridChartPanel-CRnizsHD.js +1746 -0
- package/dist/wc/SvGridChartView-D1pa_xMy.js +47 -0
- package/dist/wc/SvGridDropdown-45WsObLL.js +259 -0
- package/dist/wc/SvModal-DrfOYYyX.js +189 -0
- package/dist/wc/cell-formatting-CBfgahv1.js +86 -0
- package/dist/wc/chart-6OXlybVT.js +4341 -0
- package/dist/wc/chart-export-CeSADGfi.js +135 -0
- package/dist/wc/chart-export-pdf-BGko7MER.js +104 -0
- package/dist/wc/chart-summary-2m3ia1-n.js +137 -0
- package/dist/wc/chart-trend-CQOQtTMl.js +50 -0
- package/dist/wc/chart-validate-CD6ptiwg.js +180 -0
- package/dist/wc/client-DQIzjDBG.js +3064 -0
- package/dist/wc/column-resize-DUPgynvc.js +101 -0
- package/dist/wc/date-format-DS-z_h9v.js +1130 -0
- package/dist/wc/dismissable-CQ6XFXsk.js +45 -0
- package/dist/wc/editor-contract-peBDxir_.js +22 -0
- package/dist/wc/editor-registry-DxGKqcvx.js +24 -0
- package/dist/wc/focus-trap-Dbb2tJxb.js +65 -0
- package/dist/wc/list-option-DrRyivWp.js +82 -0
- package/dist/wc/popover-WsGlvtQv.js +69 -0
- package/dist/wc/positioning-BiKLfu1E.js +112 -0
- package/dist/wc/react.d.ts +41 -0
- package/dist/wc/react.js +90 -0
- package/dist/wc/rolldown-runtime-Dy4uBu1J.js +11 -0
- package/dist/wc/row-drag-touch-CycRR65n.js +93 -0
- package/dist/wc/row-resize-limG_N1z.js +111 -0
- package/dist/wc/sv-sheet-element.d.ts +97 -0
- package/dist/wc/sv-sheet-element.js +44213 -0
- package/dist/wc/svelte-virtualizer.svelte-CXtQy2TQ.js +530 -0
- package/dist/wc/validate-BqDthkNr.js +88 -0
- package/dist/wc/vue.d.ts +31 -0
- package/dist/wc/vue.js +75 -0
- package/package.json +30 -5
- package/dist/designer/assets/GridMenus-BlsvL_aU.js +0 -8
- package/dist/designer/assets/SvGridCellEditor-C7uQXYds.js +0 -4
- package/dist/designer/assets/SvGridChartBuilder-kvyIU_Rl.js +0 -1
- package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +0 -1
- package/dist/designer/assets/cell-formatting-wr5wm7US.js +0 -1
- package/dist/designer/assets/index-CMFgAoVV.css +0 -1
- package/dist/designer/assets/row-resize-DLktcqUK.js +0 -1
- package/dist/designer/assets/src-EdI3Xqds.js +0 -58
- package/dist/designer/assets/validate-h-aslRV9.js +0 -1
package/dist/sheet/index.d.ts
CHANGED
|
@@ -9,18 +9,39 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export { enableSheet } from '../sheet-enable.js';
|
|
11
11
|
export { createTableRegistry, isValidTableName, resolveTableRange, columnIndexOf, rowCountOf, type TableRegion, type TableRegistry, type TableRange, type TableSpecifier, } from './tables.js';
|
|
12
|
+
export { TABLE_STYLES, DEFAULT_TABLE_STYLE, NO_TABLE_STYLE, findTableStyle, tableStyleColours, tableStyleLabel, type TableStyle, type TableStyleTone, type TableStyleColours, } from './table-styles.js';
|
|
12
13
|
export { goalSeek, goalSeekCell, type GoalSeekOptions, type GoalSeekResult, type GoalSeekSheet, type CellAddress as GoalSeekCellAddress, } from './goal-seek.js';
|
|
14
|
+
export { evaluationSteps, printNode, printValue, type EvaluationStep, } from './evaluate-steps.js';
|
|
15
|
+
export { checkSheet, describeFinding, ERROR_MEANINGS, type ErrorFinding, type ErrorFindingKind, type SheetReader, } from './error-check.js';
|
|
16
|
+
export { imageCall, isDrawableImageSource, type ImageCall } from './cell-images.js';
|
|
17
|
+
export { livePresence, presenceOnSheet, presenceAnchor, presenceColour, presenceInitials, PRESENCE_COLOURS, type SheetPresence, } from './presence.js';
|
|
13
18
|
export { default as SvSheetTabs } from '../SvSheetTabs.svelte';
|
|
14
|
-
export { createWorkbook, isValidSheetName, type Workbook, type SheetData, type WorkbookOptions, } from './workbook.js';
|
|
19
|
+
export { createWorkbook, isValidSheetName, cleanIteration, DEFAULT_ITERATION, type Workbook, type SheetData, type WorkbookOptions, type IterationSettings, } from './workbook.js';
|
|
15
20
|
export { setWorkbook, getWorkbook } from './shortcuts.js';
|
|
16
21
|
export { createSheetDocument, type SheetDocument, type SheetDocumentInit, type SheetState, type SheetStateEntry, type PerSheetState, type SheetChangeReason, } from './document.js';
|
|
17
22
|
export { shiftRect, shiftRects, subtractRect, rectContains, rectsIntersect, remapNotes, lineShift, type NotesMap } from './rects.js';
|
|
18
|
-
export { isLocked, rectsHaveLocked, rectsMixLocked, PROTECTED_MESSAGE } from './protection.js';
|
|
19
|
-
export { commentAt, withComment, listComments, nextComment } from './comments.js';
|
|
23
|
+
export { isLocked, cellLocked, inEditRange, rectsHaveLocked, rectsMixLocked, PROTECTED_MESSAGE, PROTECTION_PERMISSIONS, defaultProtection, copyProtection, newEditRangeId, parseRangeText, rangeText, type ProtectionAllow, type ProtectionPermission, type EditRange, type SheetProtection, } from './protection.js';
|
|
24
|
+
export { commentAt, withComment, withThread, threadAt, threadOf, threadText, notesOf, isThreaded, listComments, nextComment, type CommentEntry, type CommentThread, type CommentValue, type CommentsMap, } from './comments.js';
|
|
20
25
|
export { ruleAt, rulesIn, checkEntry, listChoices, shiftValidation, removeValidation, describeRule, dateValue, validationId, DEFAULT_ALERT_MESSAGE, OPERATOR_LABELS, type ValidationRule, type ValidationAllow, type ValidationOperator, type ValidationContext, type ValidationVerdict, type ValidationSpec, } from './validation.js';
|
|
21
|
-
export { ruleStats, evaluateCf, shiftCf, removeCf, cfIn, describeCf, scaleColor, iconIndex, hasStyle, cfId, CF_PRESET_STYLES, COLOR_SCALES, DATA_BAR_COLOR, type CfRule, type CfRuleBody, type CfStyledRule, type CfBody, type CfPreset, type CfStyle, type CfStats, type CfResult, type CfContext, type CfOperator, type CfTextMatch, type CfIconSet, type CfScaleColors, type CfKind, } from './conditional-formats.js';
|
|
26
|
+
export { ruleStats, evaluateCf, shiftCf, removeCf, cfIn, describeCf, scaleColor, iconIndex, hasStyle, cfId, CF_PRESET_STYLES, COLOR_SCALES, DATA_BAR_COLOR, DATA_BAR_NEGATIVE_COLOR, type CfRule, type CfRuleBody, type CfStyledRule, type CfBody, type CfPreset, type CfStyle, type CfStats, type CfResult, type CfContext, type CfOperator, type CfTextMatch, type CfIconSet, type CfScaleColors, type CfKind, } from './conditional-formats.js';
|
|
22
27
|
export { mergePlan, unmergePlan, mergeDropsValues, mergesIn, mergeAt as sheetMergeAt, isCoveredCell, selectionMerged, toGridMerges, sortBlockedByMerges, reorderMerges, normalRect, type MergeKind, type MergePlan, } from './merges.js';
|
|
23
|
-
export { distinctValues, hiddenRowsFor, passesFilter, isFiltering, withColumnFilter, valuesFilter, shiftAutoFilter, describeFilter, type AutoFilterState, type ColumnFilter, type FilterCondition, type FilterValue, } from './auto-filter.js';
|
|
28
|
+
export { distinctValues, hiddenRowsFor, passesFilter, isFiltering, withColumnFilter, valuesFilter, shiftAutoFilter, describeFilter, datePeriodBounds, distinctFills, isDateColumn, type AutoFilterState, type ColumnFilter, type FilterCondition, type FilterValue, type DatePeriod, type FilterContext, } from './auto-filter.js';
|
|
29
|
+
export { sortOrder, guessHeaderRow, type SortKey, type SortDirection } from './sort.js';
|
|
30
|
+
export { documentToXlsxParts, documentFromXlsxParts, documentToXlsx, documentFromXlsx } from './xlsx-document.js';
|
|
31
|
+
export { csvText, csvRows, guessCsvSeparator, sheetStateFromCsv } from './csv.js';
|
|
32
|
+
export { sheetStateFromOds, documentFromOds, documentToOds, documentToOdsParts, formulaFromOdf, formulaToOdf } from './ods-document.js';
|
|
33
|
+
export { sheetStateFromXls, documentFromXls, documentToXls, isXlsFile } from './xls-document.js';
|
|
34
|
+
export { documentFromFile, readSpreadsheetFile, type OpenedFile } from './open-file.js';
|
|
35
|
+
export { defaultPageSetup, copyPageSetup, marginPresetOf, shiftPageSetup, marginsCss, MARGIN_PRESETS, PAPER_SIZES, type PageSetup, type PageMargins, type PageOrientation, type PaperSize, type MarginPreset, } from './page-setup.js';
|
|
36
|
+
export { sheetPrintHtml, printAreas, type SheetPrintInput, type SheetPrintCell } from './print.js';
|
|
37
|
+
export { sheetCellsFromRows, cellTextOf, type SheetField, type SheetFromRowsOptions } from './from-rows.js';
|
|
38
|
+
export { builtinEngine, type SheetEngine, type SheetEngineHost, type SheetEngineCell, type SheetEngineResult } from './engine.js';
|
|
39
|
+
export { chartSpecOf, chartFromRange, shiftObject, shiftObjects, objectAt, copyObject, objectId, SHEET_CHART_TYPES, type SheetObject, type SheetChartObject, type SheetImageObject, type ObjectAnchor, type SheetChartType, } from './objects.js';
|
|
40
|
+
export { sparklineSeries, sparklineAt, sparklineScale, sparklinesFromRange, clearSparklines, shiftSparkline, shiftSparklines, copySparkline, sparklineId, isColumnLocation, SPARKLINE_TYPES, type SparklineGroup, type SheetSparklineType, } from './sparklines.js';
|
|
41
|
+
export { pivotFields, pivotFieldValues, pivotRecords, filteredRecords, pivotBlock, pivotLayout, pivotDrill, pivotFromRange, pivotWrittenRect, flattenPivotColumns, ALL_VALUES, shiftPivot, shiftPivots, copyPivot, pivotId, SHEET_PIVOT_AGGS, type SheetPivot, type SheetPivotValue, type SheetPivotAgg, type SheetPivotFilter, type PivotLayout, type PivotDrill, } from './pivot-range.js';
|
|
42
|
+
export { createDeltaStream, applySheetDelta, partsOfReasons, type SheetDelta, type SheetDeltaStream, type SheetDeltaOptions, type SheetCellWrite, } from './delta.js';
|
|
43
|
+
export { linkAt, setLink, removeLink, listLinks, shiftLinks, copyLinks, parseLinkTarget, isSafeLinkTarget, linkTitle, type SheetLink, type LinksMap, type LinkTarget, } from './links.js';
|
|
44
|
+
export { default as SvSheetSort } from '../SvSheetSort.svelte';
|
|
24
45
|
export { splitText, textToColumns, guessDelimiter, findDuplicates, removeDuplicates, type SplitOptions, type DuplicateOptions, type DuplicateReport, } from './transforms.js';
|
|
25
46
|
export { insertRows, deleteRows, insertColumns, deleteColumns, axisForSelection, setStructureTarget, getStructureTarget, rewriteFormulas, type StructureTarget, } from './structure.js';
|
|
26
47
|
export { findAll, findNext, replaceOne, replaceAll, replaceInText, cellMatches, setFindTarget, getFindTarget, type FindOptions, type FindHit, type FindTarget, } from './find-replace.js';
|
|
@@ -35,19 +56,25 @@ export { RIBBON_ICONS, RIBBON_ICON_NAMES, type RibbonIconName, type IconPath } f
|
|
|
35
56
|
export { THEME_COLOURS, STANDARD_COLOURS, ALL_COLOURS, tint, type PaletteColour } from './palette.js';
|
|
36
57
|
export { default as SvRibbonIcon } from '../SvRibbonIcon.svelte';
|
|
37
58
|
export { move, selectRegion, selectLine, applyFormat, toggleFormat, preset, autoSum, structural, switchSheet, gridOf, } from './shortcuts.js';
|
|
38
|
-
export { compileNumberFormat, formatWithPattern, FORMAT_PRESETS, type CompiledFormat, type FormatPresetName, } from './number-format.js';
|
|
59
|
+
export { compileNumberFormat, formatWithPattern, FORMAT_PRESETS, FORMAT_CATEGORY_PATTERNS, SPECIAL_FORMATS, formatCategory, accountingPattern, accountingParts, type CompiledFormat, type FormatPresetName, type SpecialFormatName, } from './number-format.js';
|
|
39
60
|
export { createFormatStore, entryToStyle, type SheetFormatStore, type CellFormatEntry, type CellAddressLookup, } from './format-store.js';
|
|
40
61
|
export { createNames, isValidName, type SheetNames, type DefinedName, } from './names.js';
|
|
62
|
+
export { defaultSheetMessages, defaultSheetTextMessages, defaultDialogMessages, ribbonMessageDefaults, resolveSheetMessages, formatMessage, type SheetMessages, type SheetTextMessages, type SheetDialogMessages, type SheetLocalization, } from './messages.js';
|
|
41
63
|
export { suggestFunctions, applySuggestion, signatureAt, partialAt, SIGNATURES, type FunctionSuggestion, } from './autocomplete.js';
|
|
42
64
|
export { setFormatTarget, getFormatTarget, setFormatDialogHandler, type SheetFormatTarget, } from './shortcuts.js';
|
|
43
65
|
export { parseFormula, parse, } from './parse.js';
|
|
44
66
|
export { tokenize, type Token } from './tokenize.js';
|
|
45
|
-
export { evaluate, formatValue, type EvalContext } from './evaluate.js';
|
|
67
|
+
export { evaluate, evaluateSpill, formatValue, type EvalContext } from './evaluate.js';
|
|
68
|
+
export { ARRAY_FUNCTIONS, type ArrayFunction, type Grid as SpillGrid } from './packs/array.js';
|
|
46
69
|
export { FUNCTIONS, withCustomFunctions, type SheetFunction, type FnArgs, } from './functions.js';
|
|
47
|
-
export { translateFormula, fixupReferences, renameSheetReferences, formatFormula, referenceSpans, REFERENCE_COLOURS, type StructuralEdit, type EditScope, type ReferenceSpan, } from './refs.js';
|
|
70
|
+
export { translateFormula, fixupReferences, renameSheetReferences, formatFormula, referenceSpans, repointReferences, REFERENCE_COLOURS, type StructuralEdit, type EditScope, type ReferenceSpan, type CellMove, } from './refs.js';
|
|
48
71
|
export { createDependencyGraph, precedentsOf, cellKey, parseCellKey, type DependencyGraph, type CellKey, } from './deps.js';
|
|
49
72
|
export { parseA1, formatA1, colToLetters, lettersToCol, type CellRef, } from './address.js';
|
|
50
73
|
export { isError, type CellValue, type SheetError, type Node as FormulaNode, } from './ast.js';
|
|
51
74
|
export { SHEET_BINDINGS, handleSheetKey, type SheetBinding, type SheetCommand, } from './shortcuts.js';
|
|
52
75
|
export { edgeOfRegion, currentRegion, isWholeSheet, wholeSheet, isBlankValue, type Direction, type Grid, type Cell, type Rect, } from './navigate.js';
|
|
53
76
|
export { fillDown, fillRight, fillSelection, stampDate, stampNow, copyFromAbove, copyValueFromAbove, guessSumRange, looksNumeric, numericAt, targetRect, setFillTranslator, setSheetValueProbe, getSheetValueProbe, type FillTranslator, type SheetValueProbe, } from './commands.js';
|
|
77
|
+
export { cultureFromLocale, formulaToCulture, formulaFromCulture, parseNumberInCulture, formatNumberInCulture, slashDateParts, isInvariant, INVARIANT_CULTURE, type SheetCulture, } from './culture.js';
|
|
78
|
+
export { emptyOutline, groupLines, ungroupLines, clearOutline, toggleCollapsed, showLevel, hiddenByOutline, detailRange, shiftOutline, autoOutline, outlineLevel, isOutlined, deepestLevel, MAX_OUTLINE_LEVEL, type OutlineState, type OutlineSide, } from './outline.js';
|
|
79
|
+
export { cellTypeAt, isChecked, toggledValue, radioIndex, applyCellType, removeCellTypes, shiftCellTypes, checkboxValues, newCellTypeId, copyCellType, CHECKED, UNCHECKED, type CellTypeRegion, type CellTypeKind, } from './cell-types.js';
|
|
80
|
+
export { projectGridSheet, rowOfRecord, recordOfRow, isRecordRow, columnOfField, copyGridSheet, coerceFieldValue, emptyGridSheet, type SheetKind, type GridSheetSpec, type GridSheetField, } from './sheet-kinds.js';
|
package/dist/sheet/index.js
CHANGED
|
@@ -9,18 +9,39 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export { enableSheet } from '../sheet-enable.js';
|
|
11
11
|
export { createTableRegistry, isValidTableName, resolveTableRange, columnIndexOf, rowCountOf, } from './tables.js';
|
|
12
|
+
export { TABLE_STYLES, DEFAULT_TABLE_STYLE, NO_TABLE_STYLE, findTableStyle, tableStyleColours, tableStyleLabel, } from './table-styles.js';
|
|
12
13
|
export { goalSeek, goalSeekCell, } from './goal-seek.js';
|
|
14
|
+
export { evaluationSteps, printNode, printValue, } from './evaluate-steps.js';
|
|
15
|
+
export { checkSheet, describeFinding, ERROR_MEANINGS, } from './error-check.js';
|
|
16
|
+
export { imageCall, isDrawableImageSource } from './cell-images.js';
|
|
17
|
+
export { livePresence, presenceOnSheet, presenceAnchor, presenceColour, presenceInitials, PRESENCE_COLOURS, } from './presence.js';
|
|
13
18
|
export { default as SvSheetTabs } from '../SvSheetTabs.svelte';
|
|
14
|
-
export { createWorkbook, isValidSheetName, } from './workbook.js';
|
|
19
|
+
export { createWorkbook, isValidSheetName, cleanIteration, DEFAULT_ITERATION, } from './workbook.js';
|
|
15
20
|
export { setWorkbook, getWorkbook } from './shortcuts.js';
|
|
16
21
|
export { createSheetDocument, } from './document.js';
|
|
17
22
|
export { shiftRect, shiftRects, subtractRect, rectContains, rectsIntersect, remapNotes, lineShift } from './rects.js';
|
|
18
|
-
export { isLocked, rectsHaveLocked, rectsMixLocked, PROTECTED_MESSAGE } from './protection.js';
|
|
19
|
-
export { commentAt, withComment, listComments, nextComment } from './comments.js';
|
|
23
|
+
export { isLocked, cellLocked, inEditRange, rectsHaveLocked, rectsMixLocked, PROTECTED_MESSAGE, PROTECTION_PERMISSIONS, defaultProtection, copyProtection, newEditRangeId, parseRangeText, rangeText, } from './protection.js';
|
|
24
|
+
export { commentAt, withComment, withThread, threadAt, threadOf, threadText, notesOf, isThreaded, listComments, nextComment, } from './comments.js';
|
|
20
25
|
export { ruleAt, rulesIn, checkEntry, listChoices, shiftValidation, removeValidation, describeRule, dateValue, validationId, DEFAULT_ALERT_MESSAGE, OPERATOR_LABELS, } from './validation.js';
|
|
21
|
-
export { ruleStats, evaluateCf, shiftCf, removeCf, cfIn, describeCf, scaleColor, iconIndex, hasStyle, cfId, CF_PRESET_STYLES, COLOR_SCALES, DATA_BAR_COLOR, } from './conditional-formats.js';
|
|
26
|
+
export { ruleStats, evaluateCf, shiftCf, removeCf, cfIn, describeCf, scaleColor, iconIndex, hasStyle, cfId, CF_PRESET_STYLES, COLOR_SCALES, DATA_BAR_COLOR, DATA_BAR_NEGATIVE_COLOR, } from './conditional-formats.js';
|
|
22
27
|
export { mergePlan, unmergePlan, mergeDropsValues, mergesIn, mergeAt as sheetMergeAt, isCoveredCell, selectionMerged, toGridMerges, sortBlockedByMerges, reorderMerges, normalRect, } from './merges.js';
|
|
23
|
-
export { distinctValues, hiddenRowsFor, passesFilter, isFiltering, withColumnFilter, valuesFilter, shiftAutoFilter, describeFilter, } from './auto-filter.js';
|
|
28
|
+
export { distinctValues, hiddenRowsFor, passesFilter, isFiltering, withColumnFilter, valuesFilter, shiftAutoFilter, describeFilter, datePeriodBounds, distinctFills, isDateColumn, } from './auto-filter.js';
|
|
29
|
+
export { sortOrder, guessHeaderRow } from './sort.js';
|
|
30
|
+
export { documentToXlsxParts, documentFromXlsxParts, documentToXlsx, documentFromXlsx } from './xlsx-document.js';
|
|
31
|
+
export { csvText, csvRows, guessCsvSeparator, sheetStateFromCsv } from './csv.js';
|
|
32
|
+
export { sheetStateFromOds, documentFromOds, documentToOds, documentToOdsParts, formulaFromOdf, formulaToOdf } from './ods-document.js';
|
|
33
|
+
export { sheetStateFromXls, documentFromXls, documentToXls, isXlsFile } from './xls-document.js';
|
|
34
|
+
export { documentFromFile, readSpreadsheetFile } from './open-file.js';
|
|
35
|
+
export { defaultPageSetup, copyPageSetup, marginPresetOf, shiftPageSetup, marginsCss, MARGIN_PRESETS, PAPER_SIZES, } from './page-setup.js';
|
|
36
|
+
export { sheetPrintHtml, printAreas } from './print.js';
|
|
37
|
+
export { sheetCellsFromRows, cellTextOf } from './from-rows.js';
|
|
38
|
+
export { builtinEngine } from './engine.js';
|
|
39
|
+
export { chartSpecOf, chartFromRange, shiftObject, shiftObjects, objectAt, copyObject, objectId, SHEET_CHART_TYPES, } from './objects.js';
|
|
40
|
+
export { sparklineSeries, sparklineAt, sparklineScale, sparklinesFromRange, clearSparklines, shiftSparkline, shiftSparklines, copySparkline, sparklineId, isColumnLocation, SPARKLINE_TYPES, } from './sparklines.js';
|
|
41
|
+
export { pivotFields, pivotFieldValues, pivotRecords, filteredRecords, pivotBlock, pivotLayout, pivotDrill, pivotFromRange, pivotWrittenRect, flattenPivotColumns, ALL_VALUES, shiftPivot, shiftPivots, copyPivot, pivotId, SHEET_PIVOT_AGGS, } from './pivot-range.js';
|
|
42
|
+
export { createDeltaStream, applySheetDelta, partsOfReasons, } from './delta.js';
|
|
43
|
+
export { linkAt, setLink, removeLink, listLinks, shiftLinks, copyLinks, parseLinkTarget, isSafeLinkTarget, linkTitle, } from './links.js';
|
|
44
|
+
export { default as SvSheetSort } from '../SvSheetSort.svelte';
|
|
24
45
|
export { splitText, textToColumns, guessDelimiter, findDuplicates, removeDuplicates, } from './transforms.js';
|
|
25
46
|
export { insertRows, deleteRows, insertColumns, deleteColumns, axisForSelection, setStructureTarget, getStructureTarget, rewriteFormulas, } from './structure.js';
|
|
26
47
|
export { findAll, findNext, replaceOne, replaceAll, replaceInText, cellMatches, setFindTarget, getFindTarget, } from './find-replace.js';
|
|
@@ -35,19 +56,25 @@ export { RIBBON_ICONS, RIBBON_ICON_NAMES } from './ribbon-icons.js';
|
|
|
35
56
|
export { THEME_COLOURS, STANDARD_COLOURS, ALL_COLOURS, tint } from './palette.js';
|
|
36
57
|
export { default as SvRibbonIcon } from '../SvRibbonIcon.svelte';
|
|
37
58
|
export { move, selectRegion, selectLine, applyFormat, toggleFormat, preset, autoSum, structural, switchSheet, gridOf, } from './shortcuts.js';
|
|
38
|
-
export { compileNumberFormat, formatWithPattern, FORMAT_PRESETS, } from './number-format.js';
|
|
59
|
+
export { compileNumberFormat, formatWithPattern, FORMAT_PRESETS, FORMAT_CATEGORY_PATTERNS, SPECIAL_FORMATS, formatCategory, accountingPattern, accountingParts, } from './number-format.js';
|
|
39
60
|
export { createFormatStore, entryToStyle, } from './format-store.js';
|
|
40
61
|
export { createNames, isValidName, } from './names.js';
|
|
62
|
+
export { defaultSheetMessages, defaultSheetTextMessages, defaultDialogMessages, ribbonMessageDefaults, resolveSheetMessages, formatMessage, } from './messages.js';
|
|
41
63
|
export { suggestFunctions, applySuggestion, signatureAt, partialAt, SIGNATURES, } from './autocomplete.js';
|
|
42
64
|
export { setFormatTarget, getFormatTarget, setFormatDialogHandler, } from './shortcuts.js';
|
|
43
65
|
export { parseFormula, parse, } from './parse.js';
|
|
44
66
|
export { tokenize } from './tokenize.js';
|
|
45
|
-
export { evaluate, formatValue } from './evaluate.js';
|
|
67
|
+
export { evaluate, evaluateSpill, formatValue } from './evaluate.js';
|
|
68
|
+
export { ARRAY_FUNCTIONS } from './packs/array.js';
|
|
46
69
|
export { FUNCTIONS, withCustomFunctions, } from './functions.js';
|
|
47
|
-
export { translateFormula, fixupReferences, renameSheetReferences, formatFormula, referenceSpans, REFERENCE_COLOURS, } from './refs.js';
|
|
70
|
+
export { translateFormula, fixupReferences, renameSheetReferences, formatFormula, referenceSpans, repointReferences, REFERENCE_COLOURS, } from './refs.js';
|
|
48
71
|
export { createDependencyGraph, precedentsOf, cellKey, parseCellKey, } from './deps.js';
|
|
49
72
|
export { parseA1, formatA1, colToLetters, lettersToCol, } from './address.js';
|
|
50
73
|
export { isError, } from './ast.js';
|
|
51
74
|
export { SHEET_BINDINGS, handleSheetKey, } from './shortcuts.js';
|
|
52
75
|
export { edgeOfRegion, currentRegion, isWholeSheet, wholeSheet, isBlankValue, } from './navigate.js';
|
|
53
76
|
export { fillDown, fillRight, fillSelection, stampDate, stampNow, copyFromAbove, copyValueFromAbove, guessSumRange, looksNumeric, numericAt, targetRect, setFillTranslator, setSheetValueProbe, getSheetValueProbe, } from './commands.js';
|
|
77
|
+
export { cultureFromLocale, formulaToCulture, formulaFromCulture, parseNumberInCulture, formatNumberInCulture, slashDateParts, isInvariant, INVARIANT_CULTURE, } from './culture.js';
|
|
78
|
+
export { emptyOutline, groupLines, ungroupLines, clearOutline, toggleCollapsed, showLevel, hiddenByOutline, detailRange, shiftOutline, autoOutline, outlineLevel, isOutlined, deepestLevel, MAX_OUTLINE_LEVEL, } from './outline.js';
|
|
79
|
+
export { cellTypeAt, isChecked, toggledValue, radioIndex, applyCellType, removeCellTypes, shiftCellTypes, checkboxValues, newCellTypeId, copyCellType, CHECKED, UNCHECKED, } from './cell-types.js';
|
|
80
|
+
export { projectGridSheet, rowOfRecord, recordOfRow, isRecordRow, columnOfField, copyGridSheet, coerceFieldValue, emptyGridSheet, } from './sheet-kinds.js';
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { StructuralEdit } from './refs.js';
|
|
2
|
+
export type SheetLink = {
|
|
3
|
+
/** Where it goes: a URL, or an address on this workbook. */
|
|
4
|
+
target: string;
|
|
5
|
+
/** Excel's ScreenTip: what hovering says, when it is not the target. */
|
|
6
|
+
tip?: string;
|
|
7
|
+
};
|
|
8
|
+
/** `r4` -> `B` -> the link on B5. */
|
|
9
|
+
export type LinksMap = Record<string, Record<string, SheetLink>>;
|
|
10
|
+
/** The link on a cell, or undefined. */
|
|
11
|
+
export declare function linkAt(links: LinksMap, row: number, col: number): SheetLink | undefined;
|
|
12
|
+
/** A copy with the link set on one cell. */
|
|
13
|
+
export declare function setLink(links: LinksMap, row: number, col: number, link: SheetLink): LinksMap;
|
|
14
|
+
/** A copy with the link removed from one cell, and the row dropped if empty. */
|
|
15
|
+
export declare function removeLink(links: LinksMap, row: number, col: number): LinksMap;
|
|
16
|
+
/** Every link, as rows and columns, for a writer or a test. */
|
|
17
|
+
export declare function listLinks(links: LinksMap): Array<{
|
|
18
|
+
row: number;
|
|
19
|
+
col: number;
|
|
20
|
+
link: SheetLink;
|
|
21
|
+
}>;
|
|
22
|
+
/** The links after an insert or delete: they move with their cells. */
|
|
23
|
+
export declare function shiftLinks(links: LinksMap, edit: StructuralEdit): LinksMap;
|
|
24
|
+
/** A deep enough copy to hand out or save. */
|
|
25
|
+
export declare function copyLinks(links: LinksMap): LinksMap;
|
|
26
|
+
/** Whether a target is one this shell will follow out of the page. */
|
|
27
|
+
export declare function isSafeLinkTarget(target: string): boolean;
|
|
28
|
+
export type LinkTarget = {
|
|
29
|
+
kind: 'external';
|
|
30
|
+
href: string;
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'internal';
|
|
33
|
+
sheet: string | null;
|
|
34
|
+
row: number;
|
|
35
|
+
col: number;
|
|
36
|
+
} | {
|
|
37
|
+
kind: 'name';
|
|
38
|
+
name: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* What a target means. An address wins over a name, so `B4` is a cell and
|
|
42
|
+
* `Sales` is a defined name; `Sheet1!B4` is the cell on that sheet.
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseLinkTarget(target: string): LinkTarget | null;
|
|
45
|
+
/** What a linked cell's title says: the tip, or where it goes. */
|
|
46
|
+
export declare function linkTitle(link: SheetLink): string;
|
|
47
|
+
/**
|
|
48
|
+
* The first argument of a top-level `=HYPERLINK(...)`, as it was written,
|
|
49
|
+
* so the caller can evaluate it and learn where the cell goes.
|
|
50
|
+
*
|
|
51
|
+
* Excel makes a cell holding that formula clickable, and the target is
|
|
52
|
+
* whatever the first argument works out to, which may be an expression
|
|
53
|
+
* (`"…/issues/" & A2`). Null for anything that is not that call, including
|
|
54
|
+
* one nested inside another formula, since only the outermost one decides
|
|
55
|
+
* where the cell goes.
|
|
56
|
+
*/
|
|
57
|
+
export declare function hyperlinkArgument(text: string): string | null;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperlinks: Excel's Insert > Link, and the `HYPERLINK` function.
|
|
3
|
+
*
|
|
4
|
+
* A link belongs to a CELL rather than to its text, the way Excel keeps
|
|
5
|
+
* one: the cell still holds whatever was typed, and the link is kept beside
|
|
6
|
+
* it so that editing the text does not lose the target and clearing the
|
|
7
|
+
* cell does. That also means a link survives a format change, a sort of the
|
|
8
|
+
* text around it and a save, and moves with an insert or a delete.
|
|
9
|
+
*
|
|
10
|
+
* Two kinds of target, told apart by how they read rather than by a flag
|
|
11
|
+
* the user has to set:
|
|
12
|
+
*
|
|
13
|
+
* external `https://…`, `mailto:…`, anything with a scheme, opened in
|
|
14
|
+
* a new tab;
|
|
15
|
+
* internal `Sheet1!B4`, `B4`, or a defined name, which moves the
|
|
16
|
+
* selection instead of leaving the page.
|
|
17
|
+
*
|
|
18
|
+
* The map is keyed the way the comments map is (`r4` -> `B` -> the link),
|
|
19
|
+
* so the same `remapNotes` moves both when a row or column is inserted.
|
|
20
|
+
*/
|
|
21
|
+
import { remapNotes } from './rects.js';
|
|
22
|
+
import { colToLetters, lettersToCol, parseA1 } from './address.js';
|
|
23
|
+
import { lineShift } from './rects.js';
|
|
24
|
+
/** The link on a cell, or undefined. */
|
|
25
|
+
export function linkAt(links, row, col) {
|
|
26
|
+
return links[`r${row}`]?.[colToLetters(col)];
|
|
27
|
+
}
|
|
28
|
+
/** A copy with the link set on one cell. */
|
|
29
|
+
export function setLink(links, row, col, link) {
|
|
30
|
+
const rowId = `r${row}`;
|
|
31
|
+
return { ...links, [rowId]: { ...(links[rowId] ?? {}), [colToLetters(col)]: { ...link } } };
|
|
32
|
+
}
|
|
33
|
+
/** A copy with the link removed from one cell, and the row dropped if empty. */
|
|
34
|
+
export function removeLink(links, row, col) {
|
|
35
|
+
const rowId = `r${row}`;
|
|
36
|
+
const line = links[rowId];
|
|
37
|
+
if (!line || !(colToLetters(col) in line))
|
|
38
|
+
return links;
|
|
39
|
+
const next = { ...line };
|
|
40
|
+
delete next[colToLetters(col)];
|
|
41
|
+
const out = { ...links };
|
|
42
|
+
if (Object.keys(next).length)
|
|
43
|
+
out[rowId] = next;
|
|
44
|
+
else
|
|
45
|
+
delete out[rowId];
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
/** Every link, as rows and columns, for a writer or a test. */
|
|
49
|
+
export function listLinks(links) {
|
|
50
|
+
const out = [];
|
|
51
|
+
for (const [rowId, line] of Object.entries(links)) {
|
|
52
|
+
const row = Number(rowId.slice(1));
|
|
53
|
+
if (!Number.isInteger(row))
|
|
54
|
+
continue;
|
|
55
|
+
for (const [columnId, link] of Object.entries(line)) {
|
|
56
|
+
const col = lettersToCol(columnId);
|
|
57
|
+
if (col >= 0)
|
|
58
|
+
out.push({ row, col, link: { ...link } });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return out.sort((a, b) => a.row - b.row || a.col - b.col);
|
|
62
|
+
}
|
|
63
|
+
/** The links after an insert or delete: they move with their cells. */
|
|
64
|
+
export function shiftLinks(links, edit) {
|
|
65
|
+
const rows = edit.kind === 'insertRows' || edit.kind === 'deleteRows';
|
|
66
|
+
return remapNotes(links, rows ? 'rows' : 'cols', lineShift(edit));
|
|
67
|
+
}
|
|
68
|
+
/** A deep enough copy to hand out or save. */
|
|
69
|
+
export function copyLinks(links) {
|
|
70
|
+
const out = {};
|
|
71
|
+
for (const [rowId, line] of Object.entries(links)) {
|
|
72
|
+
out[rowId] = Object.fromEntries(Object.entries(line).map(([c, link]) => [c, { ...link }]));
|
|
73
|
+
}
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
/** Anything with a scheme, or a bare `www.`, is a link out of the page. */
|
|
77
|
+
const EXTERNAL = /^(?:[a-z][a-z0-9+.-]*:|www\.)/i;
|
|
78
|
+
/**
|
|
79
|
+
* The schemes a cell's link may carry.
|
|
80
|
+
*
|
|
81
|
+
* A link is data: it is typed by a colleague, arrives on a delta stream, or
|
|
82
|
+
* comes out of a file someone sent. Following `javascript:` from one runs
|
|
83
|
+
* that text in the page, so the set of schemes that may be followed is
|
|
84
|
+
* named here rather than assumed, and anything else is not a link at all.
|
|
85
|
+
*/
|
|
86
|
+
const SAFE_SCHEMES = new Set(['http', 'https', 'mailto', 'tel', 'sms', 'ftp', 'ftps']);
|
|
87
|
+
/** Whether a target is one this shell will follow out of the page. */
|
|
88
|
+
export function isSafeLinkTarget(target) {
|
|
89
|
+
const text = target.trim();
|
|
90
|
+
const scheme = /^([a-z][a-z0-9+.-]*):/i.exec(text);
|
|
91
|
+
return scheme ? SAFE_SCHEMES.has(scheme[1].toLowerCase()) : true;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* What a target means. An address wins over a name, so `B4` is a cell and
|
|
95
|
+
* `Sales` is a defined name; `Sheet1!B4` is the cell on that sheet.
|
|
96
|
+
*/
|
|
97
|
+
export function parseLinkTarget(target) {
|
|
98
|
+
// Not a string at all: a state built by hand, or one from a version that
|
|
99
|
+
// spelled a link differently. No link, rather than a thrown TypeError
|
|
100
|
+
// taking a whole Save As with it.
|
|
101
|
+
if (typeof target !== 'string')
|
|
102
|
+
return null;
|
|
103
|
+
const text = target.trim();
|
|
104
|
+
if (text === '')
|
|
105
|
+
return null;
|
|
106
|
+
// A scheme that is not one of the safe ones is not a link: null rather
|
|
107
|
+
// than an address, so nothing downstream can follow it or write it into
|
|
108
|
+
// a file.
|
|
109
|
+
if (!isSafeLinkTarget(text))
|
|
110
|
+
return null;
|
|
111
|
+
if (EXTERNAL.test(text))
|
|
112
|
+
return { kind: 'external', href: text.toLowerCase().startsWith('www.') ? `https://${text}` : text };
|
|
113
|
+
// `Sheet1!B4` and `'Two words'!B4`: the sheet is whatever is before the
|
|
114
|
+
// last `!`, which `parseA1` takes as an argument rather than parsing.
|
|
115
|
+
const bang = text.lastIndexOf('!');
|
|
116
|
+
const sheet = bang < 0 ? null : text.slice(0, bang).replace(/^'(.*)'$/, '$1').replace(/''/g, "'");
|
|
117
|
+
const cell = bang < 0 ? text : text.slice(bang + 1);
|
|
118
|
+
const ref = parseA1(cell, sheet);
|
|
119
|
+
if (ref && ref.row !== null)
|
|
120
|
+
return { kind: 'internal', sheet: ref.sheet, row: ref.row, col: ref.col };
|
|
121
|
+
return { kind: 'name', name: text };
|
|
122
|
+
}
|
|
123
|
+
/** What a linked cell's title says: the tip, or where it goes. */
|
|
124
|
+
export function linkTitle(link) {
|
|
125
|
+
return link.tip?.trim() ? link.tip : link.target;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* The first argument of a top-level `=HYPERLINK(...)`, as it was written,
|
|
129
|
+
* so the caller can evaluate it and learn where the cell goes.
|
|
130
|
+
*
|
|
131
|
+
* Excel makes a cell holding that formula clickable, and the target is
|
|
132
|
+
* whatever the first argument works out to, which may be an expression
|
|
133
|
+
* (`"…/issues/" & A2`). Null for anything that is not that call, including
|
|
134
|
+
* one nested inside another formula, since only the outermost one decides
|
|
135
|
+
* where the cell goes.
|
|
136
|
+
*/
|
|
137
|
+
export function hyperlinkArgument(text) {
|
|
138
|
+
const m = /^=\s*HYPERLINK\s*\(/i.exec(text.trim());
|
|
139
|
+
if (!m)
|
|
140
|
+
return null;
|
|
141
|
+
const inside = text.trim().slice(m[0].length);
|
|
142
|
+
let depth = 0;
|
|
143
|
+
let quoted = false;
|
|
144
|
+
for (let i = 0; i < inside.length; i += 1) {
|
|
145
|
+
const ch = inside[i];
|
|
146
|
+
if (quoted) {
|
|
147
|
+
// `""` inside a string is an escaped quote, not the end of one.
|
|
148
|
+
if (ch === '"') {
|
|
149
|
+
if (inside[i + 1] === '"')
|
|
150
|
+
i += 1;
|
|
151
|
+
else
|
|
152
|
+
quoted = false;
|
|
153
|
+
}
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (ch === '"') {
|
|
157
|
+
quoted = true;
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (ch === '(') {
|
|
161
|
+
depth += 1;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (ch === ')') {
|
|
165
|
+
if (depth === 0)
|
|
166
|
+
return inside.slice(0, i).trim() || null;
|
|
167
|
+
depth -= 1;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (ch === ',' && depth === 0)
|
|
171
|
+
return inside.slice(0, i).trim() || null;
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|