@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.
Files changed (364) hide show
  1. package/LICENSE +94 -24
  2. package/README.md +36 -4
  3. package/dist/SvAdvancedFilter.svelte +1 -1
  4. package/dist/SvAlertsManager.svelte +2 -1
  5. package/dist/SvBoard.svelte +2 -1
  6. package/dist/SvExportMenu.svelte +4 -1
  7. package/dist/SvExportMenu.svelte.d.ts +0 -13
  8. package/dist/SvExpressionEditor.svelte +3 -3
  9. package/dist/SvFormulaBar.svelte +94 -20
  10. package/dist/SvFormulaBar.svelte.d.ts +7 -0
  11. package/dist/SvGridAlerts.svelte +49 -9
  12. package/dist/SvGridBoard.svelte +13 -8
  13. package/dist/SvGridBulkEditDrawer.svelte +26 -2
  14. package/dist/SvGridEditPanel.svelte +3 -0
  15. package/dist/SvGridScheduler.svelte +69 -40
  16. package/dist/SvGridSelectionBar.svelte +10 -3
  17. package/dist/SvPivotDesigner.svelte +198 -40
  18. package/dist/SvPivotDesigner.svelte.d.ts +27 -20
  19. package/dist/SvSheet.svelte +4043 -243
  20. package/dist/SvSheet.svelte.d.ts +76 -3
  21. package/dist/SvSheetChartSetup.svelte +151 -0
  22. package/dist/SvSheetChartSetup.svelte.d.ts +18 -0
  23. package/dist/SvSheetComment.svelte +216 -31
  24. package/dist/SvSheetComment.svelte.d.ts +11 -11
  25. package/dist/SvSheetConditionalFormat.svelte +28 -31
  26. package/dist/SvSheetDataValidation.svelte +66 -42
  27. package/dist/SvSheetEditRanges.svelte +217 -0
  28. package/dist/SvSheetEditRanges.svelte.d.ts +15 -0
  29. package/dist/SvSheetErrors.svelte +125 -0
  30. package/dist/SvSheetErrors.svelte.d.ts +20 -0
  31. package/dist/SvSheetEvaluate.svelte +133 -0
  32. package/dist/SvSheetEvaluate.svelte.d.ts +15 -0
  33. package/dist/SvSheetFilterMenu.svelte +137 -34
  34. package/dist/SvSheetFilterMenu.svelte.d.ts +5 -0
  35. package/dist/SvSheetFindReplace.svelte +19 -19
  36. package/dist/SvSheetFormatCells.svelte +125 -81
  37. package/dist/SvSheetGoalSeek.svelte +17 -16
  38. package/dist/SvSheetInsertFunction.svelte +15 -13
  39. package/dist/SvSheetIteration.svelte +81 -0
  40. package/dist/SvSheetIteration.svelte.d.ts +10 -0
  41. package/dist/SvSheetLink.svelte +99 -0
  42. package/dist/SvSheetLink.svelte.d.ts +17 -0
  43. package/dist/SvSheetListPicker.svelte +4 -2
  44. package/dist/SvSheetListPicker.svelte.d.ts +0 -6
  45. package/dist/SvSheetManageRules.svelte +20 -18
  46. package/dist/SvSheetNameManager.svelte +17 -15
  47. package/dist/SvSheetPageSetup.svelte +159 -0
  48. package/dist/SvSheetPageSetup.svelte.d.ts +13 -0
  49. package/dist/SvSheetPasteSpecial.svelte +22 -20
  50. package/dist/SvSheetPivot.svelte +220 -0
  51. package/dist/SvSheetPivot.svelte.d.ts +21 -0
  52. package/dist/SvSheetProtectSheet.svelte +81 -0
  53. package/dist/SvSheetProtectSheet.svelte.d.ts +11 -0
  54. package/dist/SvSheetRemoveDuplicates.svelte +13 -10
  55. package/dist/SvSheetRibbon.svelte +104 -51
  56. package/dist/SvSheetSizeDialog.svelte +4 -2
  57. package/dist/SvSheetSort.svelte +218 -0
  58. package/dist/SvSheetSort.svelte.d.ts +28 -0
  59. package/dist/SvSheetSparklines.svelte +135 -0
  60. package/dist/SvSheetSparklines.svelte.d.ts +14 -0
  61. package/dist/SvSheetTable.svelte +160 -0
  62. package/dist/SvSheetTable.svelte.d.ts +24 -0
  63. package/dist/SvSheetTabs.svelte +161 -31
  64. package/dist/SvSheetTabs.svelte.d.ts +22 -8
  65. package/dist/SvSheetTextToColumns.svelte +20 -20
  66. package/dist/SvSheetValidationAlert.svelte +8 -6
  67. package/dist/advanced-filter-enable.js +1 -1
  68. package/dist/alerts/alert-engine.d.ts +6 -0
  69. package/dist/alerts/alert-engine.js +21 -4
  70. package/dist/alerts/alert-formats.js +2 -0
  71. package/dist/alerts/alert-types.d.ts +1 -1
  72. package/dist/alerts.d.ts +1 -1
  73. package/dist/alerts.js +2 -2
  74. package/dist/board.js +2 -2
  75. package/dist/bulk-edit.d.ts +3 -1
  76. package/dist/bulk-edit.js +1 -1
  77. package/dist/cdn/svgrid-enterprise.svelte-external.js +39827 -16429
  78. package/dist/designer/assets/GridMenus-8gTNssgV.js +8 -0
  79. package/dist/designer/assets/{SvChartMenu-D9hEeHar.js → SvChartMenu-BDoeqGz6.js} +1 -1
  80. package/dist/designer/assets/{SvDateTimePicker-DARvKUL2.js → SvDateTimePicker-DCPg7WGN.js} +1 -1
  81. package/dist/designer/assets/SvGridCellEditor-DMoWJjEI.js +4 -0
  82. package/dist/designer/assets/{SvGridChart-B8j1SSy3.js → SvGridChart-Cy1ATrWh.js} +2 -2
  83. package/dist/designer/assets/SvGridChartBuilder-eQ3mn0L9.js +1 -0
  84. package/dist/designer/assets/{SvGridChartPanel-pT6ITc2P.js → SvGridChartPanel-CATdVc9X.js} +3 -3
  85. package/dist/designer/assets/{SvGridChartView-bg281UA1.js → SvGridChartView-CmsZtCED.js} +1 -1
  86. package/dist/designer/assets/SvGridDropdown-Cjz0H-fI.js +1 -0
  87. package/dist/designer/assets/{SvTabs-UFCMTHXS.js → SvTabs-2mHC6oaz.js} +1 -1
  88. package/dist/designer/assets/cell-formatting-BbubJTVz.js +1 -0
  89. package/dist/designer/assets/{chart-cIPUsbM5.js → chart-Cn7MnNqA.js} +1 -1
  90. package/dist/designer/assets/{chart-panel-messages-DtTxpBUU.js → chart-panel-messages-Dz7PTIqT.js} +1 -1
  91. package/dist/designer/assets/{chart-summary-Czu_5epb.js → chart-summary-BD1qYB2R.js} +1 -1
  92. package/dist/designer/assets/{chart-trend-D5I5VEe8.js → chart-trend-B8xr5LuD.js} +1 -1
  93. package/dist/designer/assets/{dismissable-BO547MH9.js → dismissable-ChWRPkoa.js} +1 -1
  94. package/dist/designer/assets/{export-format-D-eP4b2l.js → export-format-DGckmgKr.js} +1 -1
  95. package/dist/designer/assets/{focus-trap-CAreAhlU.js → focus-trap-V2-6Fy9I.js} +1 -1
  96. package/dist/designer/assets/{index-DwU7CAMm.js → index-D5bVbuzI.js} +317 -315
  97. package/dist/designer/assets/index-_JVFxt02.css +1 -0
  98. package/dist/designer/assets/row-resize-BInFWCpr.js +1 -0
  99. package/dist/designer/assets/server-block-cache-CXJKkJpy.js +1 -0
  100. package/dist/designer/assets/src-DUQ4xE3x.js +58 -0
  101. package/dist/designer/assets/validate-C3B8QKsM.js +1 -0
  102. package/dist/designer/index.html +17 -16
  103. package/dist/export-pdf.d.ts +75 -0
  104. package/dist/export-pdf.js +216 -15
  105. package/dist/export.js +10 -2
  106. package/dist/gantt/SvGridGantt.svelte +2890 -0
  107. package/dist/gantt/SvGridGantt.svelte.d.ts +30 -0
  108. package/dist/gantt/gantt-config.d.ts +73 -0
  109. package/dist/gantt/gantt-config.js +1 -0
  110. package/dist/gantt/gantt-critical-path.d.ts +67 -0
  111. package/dist/gantt/gantt-critical-path.js +207 -0
  112. package/dist/gantt/gantt-model.d.ts +257 -0
  113. package/dist/gantt/gantt-model.js +651 -0
  114. package/dist/gantt/gantt-resources.d.ts +59 -0
  115. package/dist/gantt/gantt-resources.js +71 -0
  116. package/dist/gantt/gantt.d.ts +7 -0
  117. package/dist/gantt/gantt.js +36 -0
  118. package/dist/gantt/index.d.ts +15 -0
  119. package/dist/gantt/index.js +22 -0
  120. package/dist/gantt/timeline-arrows.d.ts +102 -0
  121. package/dist/gantt/timeline-arrows.js +181 -0
  122. package/dist/import.d.ts +2 -2
  123. package/dist/import.js +1 -1
  124. package/dist/index.d.ts +34 -7
  125. package/dist/index.js +44 -7
  126. package/dist/install.js +8 -1
  127. package/dist/license-core.d.ts +17 -1
  128. package/dist/license-core.js +16 -5
  129. package/dist/license.d.ts +18 -2
  130. package/dist/license.js +71 -6
  131. package/dist/node/studio.js +140 -8
  132. package/dist/pivot-enable.js +2 -2
  133. package/dist/scheduler-dependencies.d.ts +35 -0
  134. package/dist/scheduler-dependencies.js +36 -1
  135. package/dist/scheduler.js +2 -2
  136. package/dist/selection-bar.js +2 -2
  137. package/dist/server/SvGroupCell.svelte +213 -0
  138. package/dist/server/SvGroupCell.svelte.d.ts +62 -0
  139. package/dist/server/SvRowGroupPanel.svelte +322 -0
  140. package/dist/server/SvRowGroupPanel.svelte.d.ts +37 -0
  141. package/dist/server/enable.d.ts +17 -0
  142. package/dist/server/enable.js +49 -0
  143. package/dist/server/index.d.ts +22 -0
  144. package/dist/server/index.js +24 -0
  145. package/dist/server/messages.d.ts +45 -0
  146. package/dist/server/messages.js +35 -0
  147. package/dist/server/server-group-model.d.ts +104 -0
  148. package/dist/server/server-group-model.js +272 -0
  149. package/dist/server/server-pivot.d.ts +46 -0
  150. package/dist/server/server-pivot.js +57 -0
  151. package/dist/server/server-row-model.d.ts +547 -0
  152. package/dist/server/server-row-model.js +1551 -0
  153. package/dist/server/server-selection.d.ts +99 -0
  154. package/dist/server/server-selection.js +215 -0
  155. package/dist/server/svgrid-adapter.d.ts +155 -0
  156. package/dist/server/svgrid-adapter.js +202 -0
  157. package/dist/sheet/ast.d.ts +45 -1
  158. package/dist/sheet/ast.js +14 -0
  159. package/dist/sheet/auto-filter.d.ts +58 -4
  160. package/dist/sheet/auto-filter.js +159 -11
  161. package/dist/sheet/autocomplete.d.ts +9 -0
  162. package/dist/sheet/autocomplete.js +90 -4
  163. package/dist/sheet/cell-images.d.ts +39 -0
  164. package/dist/sheet/cell-images.js +90 -0
  165. package/dist/sheet/cell-types.d.ts +58 -0
  166. package/dist/sheet/cell-types.js +96 -0
  167. package/dist/sheet/coerce.d.ts +40 -0
  168. package/dist/sheet/coerce.js +170 -3
  169. package/dist/sheet/comments.d.ts +43 -9
  170. package/dist/sheet/comments.js +85 -27
  171. package/dist/sheet/conditional-formats.d.ts +29 -6
  172. package/dist/sheet/conditional-formats.js +37 -12
  173. package/dist/sheet/csv.d.ts +32 -0
  174. package/dist/sheet/csv.js +158 -0
  175. package/dist/sheet/culture.d.ts +87 -0
  176. package/dist/sheet/culture.js +247 -0
  177. package/dist/sheet/delta.d.ts +102 -0
  178. package/dist/sheet/delta.js +203 -0
  179. package/dist/sheet/deps.d.ts +45 -1
  180. package/dist/sheet/deps.js +77 -2
  181. package/dist/sheet/document.d.ts +106 -4
  182. package/dist/sheet/document.js +204 -3
  183. package/dist/sheet/engine.d.ts +67 -0
  184. package/dist/sheet/engine.js +19 -0
  185. package/dist/sheet/entry.d.ts +8 -4
  186. package/dist/sheet/entry.js +171 -21
  187. package/dist/sheet/error-check.d.ts +49 -0
  188. package/dist/sheet/error-check.js +83 -0
  189. package/dist/sheet/evaluate-steps.d.ts +48 -0
  190. package/dist/sheet/evaluate-steps.js +196 -0
  191. package/dist/sheet/evaluate.d.ts +67 -0
  192. package/dist/sheet/evaluate.js +725 -13
  193. package/dist/sheet/filter-files.d.ts +37 -0
  194. package/dist/sheet/filter-files.js +465 -0
  195. package/dist/sheet/format-store.d.ts +15 -0
  196. package/dist/sheet/format-store.js +11 -1
  197. package/dist/sheet/from-rows.d.ts +14 -0
  198. package/dist/sheet/from-rows.js +50 -0
  199. package/dist/sheet/function-catalog.d.ts +1 -1
  200. package/dist/sheet/function-catalog.js +296 -5
  201. package/dist/sheet/functions.js +363 -91
  202. package/dist/sheet/index.d.ts +35 -8
  203. package/dist/sheet/index.js +35 -8
  204. package/dist/sheet/links.d.ts +57 -0
  205. package/dist/sheet/links.js +174 -0
  206. package/dist/sheet/messages.d.ts +778 -0
  207. package/dist/sheet/messages.js +806 -0
  208. package/dist/sheet/number-format.d.ts +52 -5
  209. package/dist/sheet/number-format.js +465 -68
  210. package/dist/sheet/objects.d.ts +106 -0
  211. package/dist/sheet/objects.js +149 -0
  212. package/dist/sheet/ods-document.d.ts +44 -0
  213. package/dist/sheet/ods-document.js +1275 -0
  214. package/dist/sheet/open-file.d.ts +26 -0
  215. package/dist/sheet/open-file.js +56 -0
  216. package/dist/sheet/outline.d.ts +82 -0
  217. package/dist/sheet/outline.js +228 -0
  218. package/dist/sheet/packs/array.d.ts +16 -0
  219. package/dist/sheet/packs/array.js +172 -0
  220. package/dist/sheet/packs/database.d.ts +42 -0
  221. package/dist/sheet/packs/database.js +142 -0
  222. package/dist/sheet/packs/engineering.d.ts +2 -0
  223. package/dist/sheet/packs/engineering.js +296 -0
  224. package/dist/sheet/packs/financial.d.ts +5 -0
  225. package/dist/sheet/packs/financial.js +220 -0
  226. package/dist/sheet/packs/math-stats.d.ts +2 -0
  227. package/dist/sheet/packs/math-stats.js +372 -0
  228. package/dist/sheet/packs/special.d.ts +44 -0
  229. package/dist/sheet/packs/special.js +187 -0
  230. package/dist/sheet/packs/stats-dist.d.ts +2 -0
  231. package/dist/sheet/packs/stats-dist.js +785 -0
  232. package/dist/sheet/packs/text-date.d.ts +2 -0
  233. package/dist/sheet/packs/text-date.js +332 -0
  234. package/dist/sheet/packs/trig.d.ts +2 -0
  235. package/dist/sheet/packs/trig.js +73 -0
  236. package/dist/sheet/page-setup.d.ts +73 -0
  237. package/dist/sheet/page-setup.js +73 -0
  238. package/dist/sheet/parse.js +42 -10
  239. package/dist/sheet/paste-special.d.ts +22 -0
  240. package/dist/sheet/paste-special.js +14 -5
  241. package/dist/sheet/pivot-range.d.ts +160 -0
  242. package/dist/sheet/pivot-range.js +333 -0
  243. package/dist/sheet/presence.d.ts +73 -0
  244. package/dist/sheet/presence.js +79 -0
  245. package/dist/sheet/print.d.ts +104 -0
  246. package/dist/sheet/print.js +169 -0
  247. package/dist/sheet/protection.d.ts +55 -1
  248. package/dist/sheet/protection.js +55 -2
  249. package/dist/sheet/rects.d.ts +1 -1
  250. package/dist/sheet/refs.d.ts +48 -0
  251. package/dist/sheet/refs.js +155 -8
  252. package/dist/sheet/ribbon-icons.d.ts +1 -1
  253. package/dist/sheet/ribbon-icons.js +186 -0
  254. package/dist/sheet/ribbon.d.ts +1 -1
  255. package/dist/sheet/ribbon.js +324 -23
  256. package/dist/sheet/sheet-kinds.d.ts +74 -0
  257. package/dist/sheet/sheet-kinds.js +91 -0
  258. package/dist/sheet/shortcuts.d.ts +13 -3
  259. package/dist/sheet/shortcuts.js +63 -12
  260. package/dist/sheet/sort.d.ts +51 -0
  261. package/dist/sheet/sort.js +107 -0
  262. package/dist/sheet/sparklines.d.ts +111 -0
  263. package/dist/sheet/sparklines.js +204 -0
  264. package/dist/sheet/table-styles.d.ts +74 -0
  265. package/dist/sheet/table-styles.js +152 -0
  266. package/dist/sheet/tables.d.ts +19 -0
  267. package/dist/sheet/tables.js +31 -0
  268. package/dist/sheet/tokenize.d.ts +18 -1
  269. package/dist/sheet/tokenize.js +60 -9
  270. package/dist/sheet/validation.d.ts +16 -0
  271. package/dist/sheet/validation.js +37 -0
  272. package/dist/sheet/workbook.d.ts +148 -3
  273. package/dist/sheet/workbook.js +742 -31
  274. package/dist/sheet/xls-cfb.d.ts +32 -0
  275. package/dist/sheet/xls-cfb.js +290 -0
  276. package/dist/sheet/xls-document.d.ts +10 -0
  277. package/dist/sheet/xls-document.js +1243 -0
  278. package/dist/sheet/xls-formula.d.ts +40 -0
  279. package/dist/sheet/xls-formula.js +569 -0
  280. package/dist/sheet/xlsx-document.d.ts +108 -0
  281. package/dist/sheet/xlsx-document.js +1849 -0
  282. package/dist/sheet/xlsx-drawing.d.ts +99 -0
  283. package/dist/sheet/xlsx-drawing.js +420 -0
  284. package/dist/sheet-enable.js +6 -7
  285. package/dist/sheet-text.d.ts +7 -0
  286. package/dist/sheet-text.js +29 -0
  287. package/dist/sources/auth-supabase.js +2 -2
  288. package/dist/sources/realtime-supabase.js +2 -2
  289. package/dist/sources/rest.d.ts +6 -2
  290. package/dist/sources/rest.js +42 -7
  291. package/dist/sources/supabase.d.ts +10 -1
  292. package/dist/sources/supabase.js +73 -40
  293. package/dist/studio/emit-project.js +14 -1
  294. package/dist/studio/index.js +1 -1
  295. package/dist/studio/project.d.ts +11 -2
  296. package/dist/studio/project.js +5 -2
  297. package/dist/studio/ui-components.generated.js +107 -2
  298. package/dist/sveltekit/in-memory.d.ts +2 -2
  299. package/dist/sveltekit/in-memory.js +125 -4
  300. package/dist/sveltekit/index.d.ts +1 -1
  301. package/dist/sveltekit/index.js +1 -1
  302. package/dist/sveltekit/query-plan.d.ts +50 -4
  303. package/dist/sveltekit/query-plan.js +25 -3
  304. package/dist/sveltekit/sql-source.d.ts +6 -0
  305. package/dist/sveltekit/sql-source.js +34 -6
  306. package/dist/sveltekit/sql.d.ts +31 -0
  307. package/dist/sveltekit/sql.js +135 -25
  308. package/dist/sveltekit/transport.d.ts +10 -2
  309. package/dist/sveltekit/transport.js +30 -6
  310. package/dist/upgrade-prompt.d.ts +1 -1
  311. package/dist/version.d.ts +1 -1
  312. package/dist/version.js +1 -1
  313. package/dist/watermark.js +35 -2
  314. package/dist/wc/GridMenus-By9vPuq0.js +1088 -0
  315. package/dist/wc/SvChartMenu-CQNrQGT2.js +308 -0
  316. package/dist/wc/SvDateRangeInput-DR6m7bSM.js +199 -0
  317. package/dist/wc/SvDateTimePicker-D-vRnaMo.js +771 -0
  318. package/dist/wc/SvField-B_kurx_P.js +149 -0
  319. package/dist/wc/SvGrid.helpers-BdVDtjUm.js +135 -0
  320. package/dist/wc/SvGridCellEditor-Bnf1Kr5C.js +560 -0
  321. package/dist/wc/SvGridChart-BqUJh2pG.js +3572 -0
  322. package/dist/wc/SvGridChartBuilder-CGycC5cn.js +988 -0
  323. package/dist/wc/SvGridChartPanel-CRnizsHD.js +1746 -0
  324. package/dist/wc/SvGridChartView-D1pa_xMy.js +47 -0
  325. package/dist/wc/SvGridDropdown-45WsObLL.js +259 -0
  326. package/dist/wc/SvModal-DrfOYYyX.js +189 -0
  327. package/dist/wc/cell-formatting-CBfgahv1.js +86 -0
  328. package/dist/wc/chart-6OXlybVT.js +4341 -0
  329. package/dist/wc/chart-export-CeSADGfi.js +135 -0
  330. package/dist/wc/chart-export-pdf-BGko7MER.js +104 -0
  331. package/dist/wc/chart-summary-2m3ia1-n.js +137 -0
  332. package/dist/wc/chart-trend-CQOQtTMl.js +50 -0
  333. package/dist/wc/chart-validate-CD6ptiwg.js +180 -0
  334. package/dist/wc/client-DQIzjDBG.js +3064 -0
  335. package/dist/wc/column-resize-DUPgynvc.js +101 -0
  336. package/dist/wc/date-format-DS-z_h9v.js +1130 -0
  337. package/dist/wc/dismissable-CQ6XFXsk.js +45 -0
  338. package/dist/wc/editor-contract-peBDxir_.js +22 -0
  339. package/dist/wc/editor-registry-DxGKqcvx.js +24 -0
  340. package/dist/wc/focus-trap-Dbb2tJxb.js +65 -0
  341. package/dist/wc/list-option-DrRyivWp.js +82 -0
  342. package/dist/wc/popover-WsGlvtQv.js +69 -0
  343. package/dist/wc/positioning-BiKLfu1E.js +112 -0
  344. package/dist/wc/react.d.ts +41 -0
  345. package/dist/wc/react.js +90 -0
  346. package/dist/wc/rolldown-runtime-Dy4uBu1J.js +11 -0
  347. package/dist/wc/row-drag-touch-CycRR65n.js +93 -0
  348. package/dist/wc/row-resize-limG_N1z.js +111 -0
  349. package/dist/wc/sv-sheet-element.d.ts +97 -0
  350. package/dist/wc/sv-sheet-element.js +44213 -0
  351. package/dist/wc/svelte-virtualizer.svelte-CXtQy2TQ.js +530 -0
  352. package/dist/wc/validate-BqDthkNr.js +88 -0
  353. package/dist/wc/vue.d.ts +31 -0
  354. package/dist/wc/vue.js +75 -0
  355. package/package.json +30 -5
  356. package/dist/designer/assets/GridMenus-BlsvL_aU.js +0 -8
  357. package/dist/designer/assets/SvGridCellEditor-C7uQXYds.js +0 -4
  358. package/dist/designer/assets/SvGridChartBuilder-kvyIU_Rl.js +0 -1
  359. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +0 -1
  360. package/dist/designer/assets/cell-formatting-wr5wm7US.js +0 -1
  361. package/dist/designer/assets/index-CMFgAoVV.css +0 -1
  362. package/dist/designer/assets/row-resize-DLktcqUK.js +0 -1
  363. package/dist/designer/assets/src-EdI3Xqds.js +0 -58
  364. package/dist/designer/assets/validate-h-aslRV9.js +0 -1
@@ -0,0 +1,806 @@
1
+ /**
2
+ * Every string the spreadsheet shell shows, in one flat map, English by
3
+ * default and any subset overridable through `<SvSheet localization>`.
4
+ *
5
+ * Two kinds of key. The ribbon's come from the ribbon model itself, so a
6
+ * button added to `ribbon.ts` is translatable without a second edit here:
7
+ * `ribbon.tab.<tab>`, `ribbon.group.<group>`, `ribbon.<item>.label`,
8
+ * `ribbon.<item>.title`, `ribbon.<item>.option.<value>` and
9
+ * `ribbon.<item>.none`. The rest are the typed keys below, for the chrome,
10
+ * the tab strip, the formula bar, the menus and the sentences the status
11
+ * bar says, and the dialogs' under `<dialog>.<part>` keys. A sentence with `{placeholders}` lets a translator
12
+ * choose the word order; `formatMessage` fills them.
13
+ */
14
+ import { RIBBON_TABS } from './ribbon.js';
15
+ import { PROTECTED_MESSAGE } from './protection.js';
16
+ /**
17
+ * The dialogs' strings, keyed `<dialog>.<part>`. Declared as a value so the
18
+ * key list is the type: a key added here is typed, defaulted and
19
+ * overridable at once.
20
+ */
21
+ export const defaultDialogMessages = {
22
+ // Format Cells
23
+ 'formatCells.title': 'Format Cells',
24
+ 'formatCells.tabs': 'Format Cells tabs',
25
+ 'formatCells.tab.number': 'Number',
26
+ 'formatCells.tab.alignment': 'Alignment',
27
+ 'formatCells.tab.font': 'Font',
28
+ 'formatCells.tab.border': 'Border',
29
+ 'formatCells.tab.fill': 'Fill',
30
+ 'formatCells.tab.protection': 'Protection',
31
+ 'formatCells.category': 'Category:',
32
+ 'formatCells.categoryList': 'Category',
33
+ 'formatCells.category.general': 'General',
34
+ 'formatCells.category.number': 'Number',
35
+ 'formatCells.category.currency': 'Currency',
36
+ 'formatCells.category.accounting': 'Accounting',
37
+ 'formatCells.category.percent': 'Percentage',
38
+ 'formatCells.category.date': 'Date',
39
+ 'formatCells.category.time': 'Time',
40
+ 'formatCells.category.scientific': 'Scientific',
41
+ 'formatCells.category.special': 'Special',
42
+ 'formatCells.category.custom': 'Custom',
43
+ 'formatCells.sample': 'Sample',
44
+ 'formatCells.decimalPlaces': 'Decimal places:',
45
+ 'formatCells.thousands': 'Use 1000 separator (,)',
46
+ 'formatCells.symbol': 'Symbol:',
47
+ 'formatCells.symbol.none': 'None',
48
+ 'formatCells.symbol.euro': '€ Euro',
49
+ 'formatCells.symbol.pound': '£ Pound',
50
+ 'formatCells.symbol.yen': '¥ Yen',
51
+ 'formatCells.type': 'Type:',
52
+ 'formatCells.special.zip': 'Zip Code',
53
+ 'formatCells.special.zip4': 'Zip Code + 4',
54
+ 'formatCells.special.phone': 'Phone Number',
55
+ 'formatCells.special.ssn': 'Social Security Number',
56
+ 'formatCells.hint.general': 'General format cells have no specific number format.',
57
+ 'formatCells.hint.number': 'Number is used for general display of numbers.',
58
+ 'formatCells.hint.currency': 'Currency formats are used for general monetary values.',
59
+ 'formatCells.hint.accounting': 'Accounting formats line up the currency symbols and decimal points in a column.',
60
+ 'formatCells.hint.special': 'Special formats are useful for tracking list and database values.',
61
+ 'formatCells.hint.percent': 'Percentage formats multiply the cell value by 100 and display the result with a percent symbol.',
62
+ 'formatCells.hint.date': 'Date formats display date serial numbers as dates.',
63
+ 'formatCells.hint.time': 'Time formats display date serial numbers as times.',
64
+ 'formatCells.hint.scientific': 'Scientific formats display numbers in exponential notation.',
65
+ 'formatCells.hint.custom': 'Type the number format code, using one of the existing codes as a starting point.',
66
+ 'formatCells.horizontal': 'Horizontal:',
67
+ 'formatCells.align.general': 'General',
68
+ 'formatCells.align.left': 'Left (Indent)',
69
+ 'formatCells.align.center': 'Center',
70
+ 'formatCells.align.right': 'Right (Indent)',
71
+ 'formatCells.vertical': 'Vertical:',
72
+ 'formatCells.valign.top': 'Top',
73
+ 'formatCells.valign.center': 'Center',
74
+ 'formatCells.valign.bottom': 'Bottom',
75
+ 'formatCells.indent': 'Indent:',
76
+ 'formatCells.textControl': 'Text control',
77
+ 'formatCells.wrap': 'Wrap text',
78
+ 'formatCells.font': 'Font:',
79
+ 'formatCells.size': 'Size:',
80
+ 'formatCells.sizeDefault': 'Default',
81
+ 'formatCells.fontStyle': 'Font style',
82
+ 'formatCells.bold': 'Bold',
83
+ 'formatCells.italic': 'Italic',
84
+ 'formatCells.underline': 'Underline',
85
+ 'formatCells.strikethrough': 'Strikethrough',
86
+ 'formatCells.color': 'Color',
87
+ 'formatCells.automatic': 'Automatic',
88
+ 'formatCells.fontColor': 'Font colour',
89
+ 'formatCells.presets': 'Presets',
90
+ 'formatCells.borderGroup': 'Border',
91
+ 'formatCells.keepAsIs': 'Keep as is',
92
+ 'formatCells.border.none': 'None',
93
+ 'formatCells.border.outside': 'Outline',
94
+ 'formatCells.border.all': 'All borders',
95
+ 'formatCells.border.top': 'Top',
96
+ 'formatCells.border.bottom': 'Bottom',
97
+ 'formatCells.border.left': 'Left',
98
+ 'formatCells.border.right': 'Right',
99
+ 'formatCells.border.thick-bottom': 'Thick bottom',
100
+ 'formatCells.borderHint': 'Bottom, top, left and right go on the edge of the selection; All borders lines every cell; Outline frames the block.',
101
+ 'formatCells.backgroundColor': 'Background Color',
102
+ 'formatCells.noColor': 'No Color',
103
+ 'formatCells.fillGroup': 'Fill colour',
104
+ 'formatCells.locked': 'Locked',
105
+ 'formatCells.lockedHint': 'Locking cells has no effect until you protect the sheet (Review tab, Protect Sheet). Every cell is locked to begin with; unlock the ones that may change, then protect the sheet.',
106
+ // The AutoFilter menu
107
+ 'filter.label': 'Filter {header}',
108
+ 'filter.sortAsc': 'Sort A to Z',
109
+ 'filter.sortDesc': 'Sort Z to A',
110
+ 'filter.sortSmallest': 'Sort Smallest to Largest',
111
+ 'filter.sortLargest': 'Sort Largest to Smallest',
112
+ 'filter.clear': 'Clear Filter From "{header}"',
113
+ 'filter.byColor': 'Filter by Color',
114
+ 'filter.byColorGroup': 'Filter by cell colour',
115
+ 'filter.noFill': 'No Fill',
116
+ 'filter.byFill': 'Filter by {fill}',
117
+ 'filter.byNoFill': 'Filter by no fill',
118
+ 'filter.dateFilters': 'Date Filters',
119
+ 'filter.datePeriod': 'Date period',
120
+ 'filter.date': 'Date',
121
+ 'filter.secondDate': 'Second date',
122
+ 'filter.and': 'and',
123
+ 'filter.numberFilters': 'Number Filters',
124
+ 'filter.textFilters': 'Text Filters',
125
+ 'filter.firstCondition': 'First condition',
126
+ 'filter.firstValue': 'First value',
127
+ 'filter.firstUpperValue': 'First upper value',
128
+ 'filter.joinAnd': 'And',
129
+ 'filter.joinOr': 'Or',
130
+ 'filter.secondCondition': 'Second condition',
131
+ 'filter.none': '(none)',
132
+ 'filter.secondValue': 'Second value',
133
+ 'filter.secondUpperValue': 'Second upper value',
134
+ 'filter.top10': 'Top 10',
135
+ 'filter.topOrBottom': 'Top or bottom',
136
+ 'filter.top': 'Top',
137
+ 'filter.bottom': 'Bottom',
138
+ 'filter.howMany': 'How many',
139
+ 'filter.itemsOrPercent': 'Items or percent',
140
+ 'filter.items': 'Items',
141
+ 'filter.percent': 'Percent',
142
+ 'filter.search': 'Search',
143
+ 'filter.searchValues': 'Search values',
144
+ 'filter.values': 'Values',
145
+ 'filter.selectAll': '(Select All)',
146
+ 'filter.selectAllResults': '(Select All Search Results)',
147
+ 'filter.blanks': '(Blanks)',
148
+ 'filter.noMatches': 'No matches.',
149
+ 'filter.period.equals': 'Equals',
150
+ 'filter.period.before': 'Before',
151
+ 'filter.period.after': 'After',
152
+ 'filter.period.between': 'Between',
153
+ 'filter.period.tomorrow': 'Tomorrow',
154
+ 'filter.period.today': 'Today',
155
+ 'filter.period.yesterday': 'Yesterday',
156
+ 'filter.period.nextWeek': 'Next Week',
157
+ 'filter.period.thisWeek': 'This Week',
158
+ 'filter.period.lastWeek': 'Last Week',
159
+ 'filter.period.nextMonth': 'Next Month',
160
+ 'filter.period.thisMonth': 'This Month',
161
+ 'filter.period.lastMonth': 'Last Month',
162
+ 'filter.period.nextQuarter': 'Next Quarter',
163
+ 'filter.period.thisQuarter': 'This Quarter',
164
+ 'filter.period.lastQuarter': 'Last Quarter',
165
+ 'filter.period.nextYear': 'Next Year',
166
+ 'filter.period.thisYear': 'This Year',
167
+ 'filter.period.lastYear': 'Last Year',
168
+ 'filter.period.yearToDate': 'Year to Date',
169
+ 'filter.op.equals': 'Equals',
170
+ 'filter.op.notEquals': 'Does Not Equal',
171
+ 'filter.op.startsWith': 'Begins With',
172
+ 'filter.op.endsWith': 'Ends With',
173
+ 'filter.op.contains': 'Contains',
174
+ 'filter.op.notContains': 'Does Not Contain',
175
+ 'filter.op.isBlank': 'Is Blank',
176
+ 'filter.op.isNotBlank': 'Is Not Blank',
177
+ 'filter.op.greaterThan': 'Greater Than',
178
+ 'filter.op.lessThan': 'Less Than',
179
+ 'filter.op.between': 'Between',
180
+ // Name Manager
181
+ 'nameManager.title': 'Name Manager',
182
+ 'nameManager.name': 'Name',
183
+ 'nameManager.refersTo': 'Refers to',
184
+ 'nameManager.value': 'Value',
185
+ 'nameManager.edit': 'Edit',
186
+ 'nameManager.empty': 'No defined names. Add one below.',
187
+ 'nameManager.nameField': 'Name:',
188
+ 'nameManager.refersToField': 'Refers to:',
189
+ 'nameManager.namePlaceholder': 'TaxRate',
190
+ 'nameManager.refersToPlaceholder': 'Inputs!B3 or B2:B13',
191
+ 'nameManager.new': 'New',
192
+ // Conditional Formatting Rules Manager
193
+ 'manageRules.title': 'Conditional Formatting Rules Manager',
194
+ 'manageRules.showFor': 'Show formatting rules for:',
195
+ 'manageRules.thisSheet': 'This Worksheet',
196
+ 'manageRules.selection': 'Current Selection',
197
+ 'manageRules.editRule': 'Edit Rule...',
198
+ 'manageRules.deleteRule': 'Delete Rule',
199
+ 'manageRules.moveUp': 'Move Up',
200
+ 'manageRules.moveDown': 'Move Down',
201
+ 'manageRules.rules': 'Rules',
202
+ 'manageRules.rule': 'Rule (applied in order shown)',
203
+ 'manageRules.format': 'Format',
204
+ 'manageRules.appliesTo': 'Applies to',
205
+ 'manageRules.stopIfTrue': 'Stop If True',
206
+ 'manageRules.noneOnSheet': 'No rules on this sheet.',
207
+ 'manageRules.noneInSelection': 'No rules over the selection.',
208
+ 'manageRules.iconSet': 'Icon Set',
209
+ // Data Validation
210
+ 'validation.title': 'Data Validation',
211
+ 'validation.tabs': 'Data Validation tabs',
212
+ 'validation.tab.settings': 'Settings',
213
+ 'validation.tab.input': 'Input Message',
214
+ 'validation.tab.alert': 'Error Alert',
215
+ 'validation.criteria': 'Validation criteria',
216
+ 'validation.allow': 'Allow:',
217
+ 'validation.allow.any': 'Any value',
218
+ 'validation.allow.whole': 'Whole number',
219
+ 'validation.allow.decimal': 'Decimal',
220
+ 'validation.allow.list': 'List',
221
+ 'validation.allow.date': 'Date',
222
+ 'validation.allow.textLength': 'Text length',
223
+ 'validation.allow.custom': 'Custom',
224
+ 'validation.data': 'Data:',
225
+ 'validation.operator.between': 'between',
226
+ 'validation.operator.notBetween': 'not between',
227
+ 'validation.operator.equal': 'equal to',
228
+ 'validation.operator.notEqual': 'not equal to',
229
+ 'validation.operator.greater': 'greater than',
230
+ 'validation.operator.less': 'less than',
231
+ 'validation.operator.greaterOrEqual': 'greater than or equal to',
232
+ 'validation.operator.lessOrEqual': 'less than or equal to',
233
+ 'validation.source': 'Source:',
234
+ 'validation.formula': 'Formula:',
235
+ 'validation.startDate': 'Start date:',
236
+ 'validation.endDate': 'End date:',
237
+ 'validation.minimum': 'Minimum:',
238
+ 'validation.maximum': 'Maximum:',
239
+ 'validation.date': 'Date:',
240
+ 'validation.length': 'Length:',
241
+ 'validation.value': 'Value:',
242
+ 'validation.listPlaceholder': 'Red, Green, Blue or =$D$1:$D$5',
243
+ 'validation.ignoreBlank': 'Ignore blank',
244
+ 'validation.inCellDropdown': 'In-cell dropdown',
245
+ 'validation.customHint': 'Written for the top-left cell of the selection; it moves with each cell, as a copied formula would. TRUE (or a number other than 0) allows the entry.',
246
+ 'validation.listHint': 'A comma-separated list, or a range or a defined name starting with =.',
247
+ 'validation.boundHint': 'A bound can be a formula, so =$B$1 follows B1.',
248
+ 'validation.showInput': 'Show input message when cell is selected',
249
+ 'validation.inputLead': 'When cell is selected, show this input message:',
250
+ 'validation.inputTitle': 'Title:',
251
+ 'validation.inputMessage': 'Input message:',
252
+ 'validation.alertLead': 'When the user enters invalid data, show this alert:',
253
+ 'validation.style': 'Style:',
254
+ 'validation.stop': 'Stop',
255
+ 'validation.warning': 'Warning',
256
+ 'validation.errorTitle': 'Title:',
257
+ 'validation.errorMessage': 'Error message:',
258
+ 'validation.alertHint': 'Stop refuses the entry and offers Retry; Warning asks whether to keep it anyway.',
259
+ 'validation.clearAll': 'Clear All',
260
+ // Find and Replace
261
+ 'findReplace.title': 'Find and Replace',
262
+ 'findReplace.findWhat': 'Find what:',
263
+ 'findReplace.replaceWith': 'Replace with:',
264
+ 'findReplace.matchCase': 'Match case',
265
+ 'findReplace.entireCell': 'Match entire cell contents',
266
+ 'findReplace.lookIn': 'Look in:',
267
+ 'findReplace.values': 'Values',
268
+ 'findReplace.formulas': 'Formulas',
269
+ 'findReplace.replaceAll': 'Replace All',
270
+ 'findReplace.replace': 'Replace',
271
+ 'findReplace.findAll': 'Find All',
272
+ 'findReplace.findNext': 'Find Next',
273
+ 'findReplace.notFound': "We couldn't find what you were looking for.",
274
+ 'findReplace.cellFound': '{count} cell found',
275
+ 'findReplace.cellsFound': '{count} cells found',
276
+ 'findReplace.nothingToReplace': "We couldn't find anything to replace.",
277
+ 'findReplace.replacedOne': 'All done. We made {count} replacement.',
278
+ 'findReplace.replacedMany': 'All done. We made {count} replacements.',
279
+ // Insert Function
280
+ 'insertFunction.title': 'Insert Function',
281
+ 'insertFunction.search': 'Search for a function:',
282
+ 'insertFunction.searchPlaceholder': 'Type a name or what you want to do',
283
+ 'insertFunction.category': 'Or select a category:',
284
+ 'insertFunction.all': 'All',
285
+ 'insertFunction.select': 'Select a function:',
286
+ 'insertFunction.functions': 'Functions',
287
+ 'insertFunction.noMatch': 'No function matches.',
288
+ 'insertFunction.noDescription': 'No description.',
289
+ 'insertFunction.group.Financial': 'Financial',
290
+ 'insertFunction.group.Math': 'Math',
291
+ 'insertFunction.group.Statistical': 'Statistical',
292
+ 'insertFunction.group.Logical': 'Logical',
293
+ 'insertFunction.group.Information': 'Information',
294
+ 'insertFunction.group.Text': 'Text',
295
+ 'insertFunction.group.Date & Time': 'Date & Time',
296
+ 'insertFunction.group.Lookup & Reference': 'Lookup & Reference',
297
+ 'insertFunction.group.Other': 'Other',
298
+ // Conditional formatting rule dialog
299
+ 'cf.title.greater': 'Greater Than',
300
+ 'cf.title.less': 'Less Than',
301
+ 'cf.title.between': 'Between',
302
+ 'cf.title.equal': 'Equal To',
303
+ 'cf.title.text': 'Text That Contains',
304
+ 'cf.title.duplicates': 'Duplicate Values',
305
+ 'cf.title.top10': 'Top 10 Items',
306
+ 'cf.title.bottom10': 'Bottom 10 Items',
307
+ 'cf.title.aboveAverage': 'Above Average',
308
+ 'cf.title.belowAverage': 'Below Average',
309
+ 'cf.title.formula': 'New Formatting Rule',
310
+ 'cf.lead.greater': 'Format cells that are GREATER THAN:',
311
+ 'cf.lead.less': 'Format cells that are LESS THAN:',
312
+ 'cf.lead.between': 'Format cells that are BETWEEN:',
313
+ 'cf.lead.equal': 'Format cells that are EQUAL TO:',
314
+ 'cf.lead.text': 'Format cells that contain the text:',
315
+ 'cf.lead.duplicates': 'Format cells that contain:',
316
+ 'cf.lead.top10': 'Format cells that rank in the TOP:',
317
+ 'cf.lead.bottom10': 'Format cells that rank in the BOTTOM:',
318
+ 'cf.lead.aboveAverage': 'Format cells that are ABOVE AVERAGE for the selected range:',
319
+ 'cf.lead.belowAverage': 'Format cells that are BELOW AVERAGE for the selected range:',
320
+ 'cf.lead.formula': 'Format values where this formula is true:',
321
+ 'cf.lowerValue': 'Lower value',
322
+ 'cf.upperValue': 'Upper value',
323
+ 'cf.and': 'and',
324
+ 'cf.formula': 'Formula',
325
+ 'cf.value': 'Value',
326
+ 'cf.textPlaceholder': 'text',
327
+ 'cf.valuePlaceholder': 'value or =formula',
328
+ 'cf.duplicateOrUnique': 'Duplicate or unique',
329
+ 'cf.duplicate': 'Duplicate',
330
+ 'cf.unique': 'Unique',
331
+ 'cf.values': 'values',
332
+ 'cf.howMany': 'How many',
333
+ 'cf.percentOfRange': '% of selected range',
334
+ 'cf.with': 'with',
335
+ 'cf.formatStyle': 'Format style',
336
+ 'cf.style.light-red': 'Light Red Fill with Dark Red Text',
337
+ 'cf.style.yellow': 'Yellow Fill with Dark Yellow Text',
338
+ 'cf.style.green': 'Green Fill with Dark Green Text',
339
+ 'cf.style.red-fill': 'Light Red Fill',
340
+ 'cf.style.red-text': 'Red Text',
341
+ 'cf.formulaHint': "Written for the top-left cell of the range; it moves with each cell as a copied formula would, so =$B2>100 on A2:A9 reads each row's B. TRUE formats.",
342
+ // Text to Columns
343
+ 'textToColumns.title': 'Convert Text to Columns Wizard',
344
+ 'textToColumns.group': 'Convert Text to Columns',
345
+ 'textToColumns.lead': 'Choose the delimiter your data contains. The preview shows how it splits.',
346
+ 'textToColumns.delimiters': 'Delimiters',
347
+ 'textToColumns.tab': 'Tab',
348
+ 'textToColumns.semicolon': 'Semicolon',
349
+ 'textToColumns.comma': 'Comma',
350
+ 'textToColumns.space': 'Space',
351
+ 'textToColumns.other': 'Other',
352
+ 'textToColumns.otherDelimiter': 'Other delimiter',
353
+ 'textToColumns.collapse': 'Treat consecutive delimiters as one',
354
+ 'textToColumns.trim': 'Trim spaces around each field',
355
+ 'textToColumns.preview': 'Data preview',
356
+ /** "{rows} rows in column {from} become {count} {unit} from column {from}. ..." */
357
+ 'textToColumns.status': '{rows} rows in column {from} become {count} {unit} from column {from}. Anything already in those columns is replaced.',
358
+ 'textToColumns.column': 'column',
359
+ 'textToColumns.columns': 'columns',
360
+ 'textToColumns.finish': 'Finish',
361
+ 'textToColumns.done': 'Split {rows} rows into {columns} columns.',
362
+ // Sort
363
+ 'sort.title': 'Sort',
364
+ 'sort.addLevel': 'Add Level',
365
+ 'sort.deleteLevel': 'Delete Level',
366
+ 'sort.hasHeaders': 'My data has headers',
367
+ 'sort.levels': 'Sort levels',
368
+ 'sort.sortBy': 'Sort by',
369
+ 'sort.thenBy': 'Then by',
370
+ 'sort.column': '{by} column',
371
+ 'sort.order': '{by} order',
372
+ 'sort.asc': 'A to Z',
373
+ 'sort.desc': 'Z to A',
374
+ 'sort.columnLetter': 'Column {letter}',
375
+ 'sort.on': 'Sort on, for {by}',
376
+ 'sort.onValue': 'Values',
377
+ 'sort.onFill': 'Cell Colour',
378
+ 'sort.onFont': 'Font Colour',
379
+ 'sort.onTop': 'On Top',
380
+ 'sort.onBottom': 'On Bottom',
381
+ 'sort.colour': 'Colour:',
382
+ 'sort.noColours': 'This column carries no colour of that kind.',
383
+ 'sort.hint': 'Sorting {range}. Numbers sort before text, blanks go last, and formats move with their rows.',
384
+ // Remove Duplicates
385
+ 'removeDuplicates.title': 'Remove Duplicates',
386
+ 'removeDuplicates.lead': 'To delete duplicate values, select one or more columns that contain duplicates.',
387
+ 'removeDuplicates.selectAll': 'Select All',
388
+ 'removeDuplicates.unselectAll': 'Unselect All',
389
+ 'removeDuplicates.hasHeaders': 'My data has headers',
390
+ 'removeDuplicates.columns': 'Columns',
391
+ 'removeDuplicates.columnLetter': 'Column {letter}',
392
+ // Paste Special
393
+ 'pasteSpecial.title': 'Paste Special',
394
+ 'pasteSpecial.empty': 'Nothing to paste yet. Copy cells on the sheet, or a table in another program, then Paste Special.',
395
+ 'pasteSpecial.paste': 'Paste',
396
+ 'pasteSpecial.all': 'All',
397
+ 'pasteSpecial.formulas': 'Formulas',
398
+ 'pasteSpecial.values': 'Values',
399
+ 'pasteSpecial.formats': 'Formats',
400
+ 'pasteSpecial.operation': 'Operation',
401
+ 'pasteSpecial.none': 'None',
402
+ 'pasteSpecial.add': 'Add',
403
+ 'pasteSpecial.subtract': 'Subtract',
404
+ 'pasteSpecial.multiply': 'Multiply',
405
+ 'pasteSpecial.divide': 'Divide',
406
+ 'pasteSpecial.skipBlanks': 'Skip blanks',
407
+ 'pasteSpecial.transpose': 'Transpose',
408
+ // Protect Sheet
409
+ 'protectSheet.title': 'Protect Sheet',
410
+ 'protectSheet.lead': 'Allow all users of this worksheet to:',
411
+ 'protectSheet.formatCells': 'Format cells',
412
+ 'protectSheet.formatColumns': 'Format columns',
413
+ 'protectSheet.formatRows': 'Format rows',
414
+ 'protectSheet.insertColumns': 'Insert columns',
415
+ 'protectSheet.insertRows': 'Insert rows',
416
+ 'protectSheet.deleteColumns': 'Delete columns',
417
+ 'protectSheet.deleteRows': 'Delete rows',
418
+ 'protectSheet.sort': 'Sort',
419
+ 'protectSheet.autoFilter': 'Use AutoFilter',
420
+ 'protectSheet.hint': 'Locked cells hold; what is ticked stays open. The ranges under Allow Edit Ranges take an edit whatever is ticked.',
421
+ // Allow Users to Edit Ranges
422
+ 'editRanges.title': 'Allow Users to Edit Ranges',
423
+ 'editRanges.lead': 'Ranges unlocked when the sheet is protected:',
424
+ 'editRanges.name': 'Title',
425
+ 'editRanges.refersTo': 'Refers to cells',
426
+ 'editRanges.modify': 'Modify',
427
+ 'editRanges.empty': 'No ranges yet. Add one below.',
428
+ 'editRanges.titleField': 'Title:',
429
+ 'editRanges.refersField': 'Refers to cells:',
430
+ 'editRanges.titlePlaceholder': 'Range1',
431
+ 'editRanges.refersPlaceholder': 'B2:B10 or A1, C3:C5',
432
+ 'editRanges.invalidRef': '"{text}" is not a cell or range',
433
+ 'editRanges.new': 'New',
434
+ 'editRanges.protectSheet': 'Protect Sheet...',
435
+ // Chart Setup
436
+ 'chartSetup.title': 'Chart',
437
+ 'chartSetup.range': 'Reading {range}',
438
+ 'chartSetup.type': 'Type:',
439
+ 'chartSetup.type.bar': 'Column',
440
+ 'chartSetup.type.line': 'Line',
441
+ 'chartSetup.type.area': 'Area',
442
+ 'chartSetup.type.pie': 'Pie',
443
+ 'chartSetup.type.scatter': 'Scatter',
444
+ 'chartSetup.chartTitle': 'Title:',
445
+ 'chartSetup.titlePlaceholder': 'None',
446
+ 'chartSetup.series': 'Series in:',
447
+ 'chartSetup.series.columns': 'Columns',
448
+ 'chartSetup.series.rows': 'Rows',
449
+ 'chartSetup.headers': 'First row and column are labels',
450
+ 'chartSetup.stacked': 'Stack the series',
451
+ 'chartSetup.trend': 'Trendline:',
452
+ 'chartSetup.trend.none': 'None',
453
+ 'chartSetup.trend.linear': 'Linear',
454
+ 'chartSetup.trend.sma3': 'Moving average (3)',
455
+ 'chartSetup.secondary': 'Secondary axis:',
456
+ 'chartSetup.secondary.none': 'None',
457
+ 'chartSetup.hint': 'The chart reads the range, so editing a cell redraws it. Drag the chart to move it, its corner to resize it, and press Delete to remove it.',
458
+ // Create Table
459
+ 'table.title': 'Create Table',
460
+ 'table.editTitle': 'Table',
461
+ 'table.range': 'Where are the cells?',
462
+ 'table.rangePlaceholder': 'A1:D20',
463
+ 'table.name': 'Name:',
464
+ 'table.namePlaceholder': 'Table1',
465
+ 'table.headers': 'My table has headers',
466
+ 'table.totals': 'Show a totals row',
467
+ /** The word in the first cell of Excel's Total Row. */
468
+ 'table.totalLabel': 'Total',
469
+ 'table.hint': 'A table names its columns, so a formula can say Orders[Amount] and keep meaning it as rows are added. Typing under the last row grows it.',
470
+ 'table.style': 'Style:',
471
+ 'table.styleNone': 'None: keep the cells as they are',
472
+ /** The same choice named in a sentence, where the explanation does not fit. */
473
+ 'table.styleNoneShort': 'no style',
474
+ 'table.badRange': 'That is not a range on this sheet.',
475
+ 'table.badName': 'A table name starts with a letter and holds no spaces.',
476
+ // Evaluate Formula
477
+ 'evaluate.title': 'Evaluate Formula',
478
+ 'evaluate.reference': 'Reference:',
479
+ 'evaluate.evaluation': 'Evaluation:',
480
+ 'evaluate.evaluate': 'Evaluate',
481
+ 'evaluate.stepBack': 'Step Back',
482
+ 'evaluate.restart': 'Restart',
483
+ 'evaluate.result': 'Result:',
484
+ 'evaluate.hint': 'The underlined part is what the next click works out. Keep clicking to reach the cell\'s own answer, and Restart to walk it again.',
485
+ 'evaluate.done': 'Nothing left to work out: this is the cell\'s answer.',
486
+ 'evaluate.noFormula': 'Select a cell with a formula in it, then open this again.',
487
+ // Error Checking
488
+ 'errors.title': 'Error Checking',
489
+ 'errors.previous': 'Previous',
490
+ 'errors.next': 'Next',
491
+ 'errors.steps': 'Show Calculation Steps...',
492
+ 'errors.position': 'Problem {index} of {count}',
493
+ 'errors.none': 'No errors were found on this sheet.',
494
+ 'errors.inconsistent': 'Inconsistent formula',
495
+ 'errors.hint': 'Every cell on this sheet whose formula reports an error, and every formula that breaks the pattern of the ones above and below it.',
496
+ // Calculation Options
497
+ 'iteration.title': 'Calculation Options',
498
+ 'iteration.enable': 'Enable iterative calculation',
499
+ 'iteration.maxIterations': 'Maximum iterations:',
500
+ 'iteration.maxChange': 'Maximum change:',
501
+ 'iteration.hint': 'A circular reference is normally an error. Some models are one on purpose, because the answer is a fixed point: a bonus that is a share of the profit it is taken out of. With this on, the loop runs until it stops moving or the passes run out.',
502
+ 'iteration.badNumbers': 'Iterations is a whole number of at least 1, and the change is not negative.',
503
+ // Insert Link
504
+ 'link.title': 'Link',
505
+ 'link.address': 'Address:',
506
+ 'link.addressPlaceholder': 'https://example.com, or Sheet2!B4',
507
+ 'link.text': 'Text to display:',
508
+ 'link.textPlaceholder': 'The cell as it stands',
509
+ 'link.tip': 'ScreenTip:',
510
+ 'link.tipPlaceholder': 'None, so hovering shows the address',
511
+ 'link.hint': 'A link on a cell, not on its text: editing the cell keeps it, clearing the cell takes it away. An address on this workbook moves the selection instead of leaving the page.',
512
+ 'link.remove': 'Remove Link',
513
+ 'link.badAddress': 'Type an address: a URL, or a cell like Sheet2!B4.',
514
+ 'link.unsafeScheme': 'That kind of address is not opened from a cell. Use http, https, mailto, tel, sms or ftp, or an address on this workbook.',
515
+ // Create PivotTable
516
+ 'pivot.title': 'PivotTable',
517
+ 'pivot.source': 'Source block:',
518
+ 'pivot.sourcePlaceholder': 'A1:D200',
519
+ 'pivot.target': 'Put it at:',
520
+ 'pivot.targetPlaceholder': 'F1',
521
+ 'pivot.field': 'Field',
522
+ 'pivot.place': 'Use as',
523
+ 'pivot.summarise': 'Summarise by',
524
+ 'pivot.place.none': 'Not used',
525
+ 'pivot.place.rows': 'Rows',
526
+ 'pivot.place.cols': 'Columns',
527
+ 'pivot.place.values': 'Values',
528
+ 'pivot.place.filters': 'Filter',
529
+ 'pivot.filterValue': 'Value for {field}',
530
+ 'pivot.agg.sum': 'Sum',
531
+ 'pivot.agg.avg': 'Average',
532
+ 'pivot.agg.count': 'Count',
533
+ 'pivot.agg.countDistinct': 'Distinct count',
534
+ 'pivot.agg.min': 'Min',
535
+ 'pivot.agg.max': 'Max',
536
+ 'pivot.grandTotal': 'Grand total row',
537
+ 'pivot.subtotals': 'Subtotal rows',
538
+ 'pivot.hint': 'The result is written as cells, so it can be formatted, charted and saved like any other block. Refresh rebuilds it from the source.',
539
+ 'pivot.badRange': 'That is not a range and a cell on this sheet.',
540
+ 'pivot.needValue': 'Pick at least one field to summarise.',
541
+ // Create Sparklines
542
+ 'sparklines.title': 'Create Sparklines',
543
+ 'sparklines.type': 'Type:',
544
+ 'sparklines.type.line': 'Line',
545
+ 'sparklines.type.column': 'Column',
546
+ 'sparklines.type.winloss': 'Win/Loss',
547
+ 'sparklines.data': 'Data range:',
548
+ 'sparklines.dataPlaceholder': 'B2:E5',
549
+ 'sparklines.location': 'Location range:',
550
+ 'sparklines.locationPlaceholder': 'F2:F5',
551
+ 'sparklines.colour': 'Colour:',
552
+ 'sparklines.negativeColour': 'Negative:',
553
+ 'sparklines.sameScale': 'One value scale for the whole group',
554
+ 'sparklines.markers': 'Mark the last point',
555
+ 'sparklines.hint': 'One sparkline per row of the data, drawn in the cells of the location. They read the range, so editing a number redraws them.',
556
+ 'sparklines.badRange': 'That is not a range on this sheet.',
557
+ 'sparklines.mismatch': 'The location needs one cell per line of the data.',
558
+ // Page Setup
559
+ 'pageSetup.title': 'Page Setup',
560
+ 'pageSetup.orientation': 'Orientation:',
561
+ 'pageSetup.portrait': 'Portrait',
562
+ 'pageSetup.landscape': 'Landscape',
563
+ 'pageSetup.paper': 'Paper size:',
564
+ 'pageSetup.margins': 'Margins:',
565
+ 'pageSetup.margins.normal': 'Normal',
566
+ 'pageSetup.margins.narrow': 'Narrow',
567
+ 'pageSetup.margins.wide': 'Wide',
568
+ 'pageSetup.margins.custom': 'Custom',
569
+ 'pageSetup.scale': 'Scale (%):',
570
+ 'pageSetup.printArea': 'Print area:',
571
+ 'pageSetup.printAreaPlaceholder': 'Whole sheet, or B2:F20',
572
+ 'pageSetup.titleRows': 'Rows to repeat at top:',
573
+ 'pageSetup.titleRowsPlaceholder': 'None, or 1:2',
574
+ 'pageSetup.gridlines': 'Print gridlines',
575
+ 'pageSetup.headings': 'Print row and column headings',
576
+ 'pageSetup.invalidArea': '"{text}" is not a cell or range',
577
+ 'pageSetup.invalidRows': '"{text}" is not a row range like 1:2',
578
+ 'pageSetup.print': 'Print...',
579
+ // Goal Seek
580
+ 'goalSeek.title': 'Goal Seek',
581
+ 'goalSeek.statusTitle': 'Goal Seek Status',
582
+ 'goalSeek.setCell': 'Set cell:',
583
+ 'goalSeek.toValue': 'To value:',
584
+ 'goalSeek.byChanging': 'By changing cell:',
585
+ 'goalSeek.notAddress': '"{text}" is not a cell address',
586
+ 'goalSeek.toValueNumber': 'To value must be a number',
587
+ 'goalSeek.needsFormula': '{cell} must contain a formula',
588
+ 'goalSeek.found': 'Goal Seeking with Cell {cell} found a solution.',
589
+ 'goalSeek.notFound': 'Goal Seeking with Cell {cell} may not have found a solution.',
590
+ 'goalSeek.target': 'Target value:',
591
+ 'goalSeek.current': 'Current value:',
592
+ 'goalSeek.becomes': '{cell} becomes:',
593
+ 'goalSeek.iterations': '{count} iterations.',
594
+ };
595
+ /** The ribbon's strings, read off the model so they are always complete. */
596
+ export function ribbonMessageDefaults() {
597
+ var _a;
598
+ const out = {};
599
+ for (const tab of RIBBON_TABS) {
600
+ out[`ribbon.tab.${tab.id}`] = tab.label;
601
+ for (const group of tab.groups) {
602
+ out[`ribbon.group.${group.id}`] = group.label;
603
+ for (const item of group.items) {
604
+ out[`ribbon.${item.id}.label`] = item.label;
605
+ out[`ribbon.${item.id}.title`] = item.title;
606
+ if (item.none)
607
+ out[`ribbon.${item.id}.none`] = item.none.label;
608
+ // A colour palette lists a hex twice (a theme colour and a standard
609
+ // one can share it); the first keeps the key, `optionLabel` shows
610
+ // the other by its own label.
611
+ for (const option of item.options ?? [])
612
+ out[_a = `ribbon.${item.id}.option.${option.value}`] ?? (out[_a] = option.label);
613
+ }
614
+ }
615
+ }
616
+ return out;
617
+ }
618
+ export const defaultSheetTextMessages = {
619
+ statusReady: 'Ready',
620
+ statusAverage: 'Average:',
621
+ statusCount: 'Count:',
622
+ statusSum: 'Sum:',
623
+ statusRecordsFound: '{shown} of {total} records found',
624
+ ribbonLabel: 'Spreadsheet ribbon',
625
+ ribbonTabs: 'Ribbon tabs',
626
+ ribbonExpand: 'Expand the Ribbon',
627
+ ribbonCollapse: 'Collapse the Ribbon',
628
+ ribbonPin: 'Pin the Ribbon',
629
+ groupSettings: '{group} settings',
630
+ paletteThemeColors: 'Theme Colors',
631
+ paletteStandardColors: 'Standard Colors',
632
+ menuOptions: '{title} options',
633
+ formulaBar: 'Formula bar',
634
+ nameBox: 'Name box',
635
+ definedNames: 'Defined names',
636
+ namesHeading: 'Names',
637
+ formulaBarCancel: 'Cancel',
638
+ formulaBarEnter: 'Enter',
639
+ insertFunction: 'Insert Function',
640
+ formula: 'Formula',
641
+ expandFormulaBar: 'Expand the formula bar',
642
+ collapseFormulaBar: 'Collapse the formula bar',
643
+ functionSuggestions: 'Function suggestions',
644
+ scrollTabsLeft: 'Scroll tabs left',
645
+ scrollTabsRight: 'Scroll tabs right',
646
+ sheets: 'Sheets',
647
+ sheetName: 'Sheet name',
648
+ newSheet: 'New sheet',
649
+ tabInsert: 'Insert...',
650
+ tabDelete: 'Delete',
651
+ tabRename: 'Rename',
652
+ tabDuplicate: 'Duplicate',
653
+ tabMoveLeft: 'Move Left',
654
+ tabMoveRight: 'Move Right',
655
+ tabHide: 'Hide',
656
+ tabUnhide: 'Unhide',
657
+ deleteSheetTitle: 'Delete sheet',
658
+ deleteSheetMessage: 'This sheet holds data. Deleting it cannot be undone. Delete "{name}"?',
659
+ invalidSheetName: '"{name}" is not a valid sheet name',
660
+ duplicateSheetName: 'a sheet named "{name}" already exists',
661
+ ok: 'OK',
662
+ cancel: 'Cancel',
663
+ delete: 'Delete',
664
+ close: 'Close',
665
+ yes: 'Yes',
666
+ no: 'No',
667
+ retry: 'Retry',
668
+ save: 'Save',
669
+ menuPasteSpecial: 'Paste Special...',
670
+ menuInsertRows: 'Insert Rows',
671
+ menuInsertColumns: 'Insert Columns',
672
+ menuDeleteRows: 'Delete Rows',
673
+ menuDeleteColumns: 'Delete Columns',
674
+ menuClearContents: 'Clear Contents',
675
+ menuClearFormats: 'Clear Formats',
676
+ menuMergeCenter: 'Merge & Center',
677
+ menuUnmergeCells: 'Unmerge Cells',
678
+ menuNewComment: 'New Comment',
679
+ menuEditComment: 'Edit Comment',
680
+ menuDeleteComment: 'Delete Comment',
681
+ menuLink: 'Link...',
682
+ menuEditLink: 'Edit Link...',
683
+ menuOpenLink: 'Open Link',
684
+ menuRemoveLink: 'Remove Link',
685
+ menuFormatCells: 'Format Cells...',
686
+ menuColumnWidth: 'Column Width...',
687
+ menuRowHeight: 'Row Height...',
688
+ menuHide: 'Hide',
689
+ menuUnhide: 'Unhide',
690
+ invalidCellMark: 'Breaks its validation rule',
691
+ openList: 'Open the list',
692
+ listEmpty: 'The list is empty.',
693
+ choices: 'Choices',
694
+ filter: 'Filter',
695
+ comment: 'Comment',
696
+ commentPlaceholder: 'Type a comment',
697
+ commentReply: 'Reply',
698
+ commentReplyPlaceholder: 'Reply...',
699
+ commentPosts: 'Ctrl+Enter posts',
700
+ commentEdit: 'Edit',
701
+ commentResolve: 'Resolve thread',
702
+ commentReopen: 'Reopen',
703
+ commentResolved: 'Resolved',
704
+ dataValidationTitle: 'Data validation',
705
+ commentOn: 'Comment on {address}',
706
+ commentSaves: 'Ctrl+Enter saves',
707
+ commentsOnSheet: 'Comments on this sheet',
708
+ noComments: 'No comments on this sheet.',
709
+ newWorkbookTitle: 'New workbook',
710
+ newWorkbookMessage: 'Start a new workbook? What is on these sheets goes away unless it was saved.',
711
+ newWorkbookButton: 'New workbook',
712
+ mergeCellsTitle: 'Merge cells',
713
+ mergeCellsMessage: 'Merging cells only keeps the upper-left cell value and discards the other values.',
714
+ rowHeightTitle: 'Row Height',
715
+ columnWidthTitle: 'Column Width',
716
+ rowHeightLabel: 'Row height (px):',
717
+ columnWidthLabel: 'Column width (px):',
718
+ validationContinue: 'Continue?',
719
+ openedFile: 'Opened {name}.',
720
+ couldNotOpen: 'Could not open {name}.',
721
+ couldNotSave: 'Could not save the workbook.',
722
+ couldNotExport: 'Could not export the sheet.',
723
+ couldNotCopySheet: 'Could not copy {name}.',
724
+ noPrecedents: 'The Trace Precedents command found no formula references in the active cell.',
725
+ noDependents: 'The Trace Dependents command found no formulas that refer to the active cell.',
726
+ sheetProtected: 'Sheet protected. Locked cells can no longer be changed.',
727
+ sheetUnprotected: 'Sheet unprotected.',
728
+ protectedCell: PROTECTED_MESSAGE,
729
+ nothingToHide: 'Nothing to hide',
730
+ selectLinesToGroup: 'Select the rows or columns to group first',
731
+ noGroupHere: 'No group at the selection',
732
+ outlineBar: 'Outline',
733
+ outlineLevels: 'Outline levels',
734
+ outlineShowLevel: 'Show level {level}',
735
+ outlineExpand: 'Expand the group',
736
+ outlineCollapse: 'Collapse the group',
737
+ selectCellsForControl: 'Select the cells to draw as a control first',
738
+ nothingHidden: 'Nothing hidden in the selection',
739
+ linesToggled: '{count} {unit} {state}',
740
+ sortKeptHidden: '{count} hidden {unit} left in place',
741
+ unitRow: 'row',
742
+ unitRows: 'rows',
743
+ unitColumn: 'column',
744
+ unitColumns: 'columns',
745
+ stateHidden: 'hidden',
746
+ stateShown: 'shown',
747
+ mergeSameSize: 'To do this, all the merged cells need to be the same size.',
748
+ selectBlockToSort: 'Select a block with more than one row to sort.',
749
+ noInvalidData: 'No invalid data was found.',
750
+ invalidCellFound: '{count} cell breaks a validation rule.',
751
+ invalidCellsFound: '{count} cells break a validation rule.',
752
+ formatPainterHint: 'Select where to paste the format, or press Esc',
753
+ selectBlockToChart: 'Select the cells to chart, headers included.',
754
+ selectChartFirst: 'Select a chart first.',
755
+ couldNotReadPicture: 'Could not read the picture.',
756
+ nothingToPaste: 'Nothing to paste. Copy cells first, or press Ctrl+V.',
757
+ nameDefined: '{name} now refers to {refersTo}',
758
+ nameBoxBadName: '"{name}" is not a valid name: letters, digits and underscores, and not a cell address',
759
+ picturesNotSaved: '{count} {unit} left out of the file: a web address, or a type the file cannot hold',
760
+ unitPicture: 'picture',
761
+ unitPictures: 'pictures',
762
+ chartObject: 'Chart',
763
+ pictureObject: 'Picture',
764
+ sparklineObject: '{type} sparkline',
765
+ selectBlockToPivot: 'Select the block to summarise, its header row included.',
766
+ noPivotHere: 'No PivotTable here. Select a cell inside one.',
767
+ noPivotDetails: 'That cell has no source rows behind it.',
768
+ pivotDetails: '{count} rows behind that cell, on "{name}".',
769
+ pivotDetailsSheet: 'Details',
770
+ linkRemoved: 'Link removed.',
771
+ noLinkHere: 'No link in the selection.',
772
+ selectBlockToTable: 'Select the cells to make a table of, headers included.',
773
+ noTableHere: 'No table here. Select a cell inside one.',
774
+ tableRemoved: '{name} is ordinary cells again.',
775
+ tableMade: '{name} covers {range}.',
776
+ tableUpdated: '{name} covers {range}, in {style}.',
777
+ tableNameTaken: 'A table called {name} already exists.',
778
+ cannotOpenLink: 'That link goes nowhere on this workbook.',
779
+ linkNotFollowed: 'That kind of address is not opened from a cell.',
780
+ pivotRefreshed: 'PivotTable refreshed.',
781
+ pivotWritten: 'PivotTable written to {range}.',
782
+ selectRangeForSparklines: 'Select the numbers the sparklines read.',
783
+ sparklinesCleared: 'Sparklines cleared.',
784
+ noSparklinesHere: 'No sparklines in the selection.',
785
+ printAreaSet: 'Print area set to {range}.',
786
+ printAreaCleared: 'Print area cleared.',
787
+ couldNotPrint: 'Could not open the print window; the browser blocked the popup.',
788
+ };
789
+ /** The full English map: the typed strings plus the ribbon's. */
790
+ export const defaultSheetMessages = { ...ribbonMessageDefaults(), ...defaultDialogMessages, ...defaultSheetTextMessages };
791
+ /** The defaults with `overrides` laid over them; an undefined override is ignored. */
792
+ export function resolveSheetMessages(overrides) {
793
+ if (!overrides)
794
+ return defaultSheetMessages;
795
+ const out = { ...defaultSheetMessages };
796
+ for (const [key, value] of Object.entries(overrides))
797
+ if (typeof value === 'string')
798
+ out[key] = value;
799
+ return out;
800
+ }
801
+ /** Fill `{name}` placeholders; a placeholder with no value is left as is. */
802
+ export function formatMessage(template, vars) {
803
+ if (!vars)
804
+ return template;
805
+ return template.replace(/\{(\w+)\}/g, (whole, name) => (name in vars ? String(vars[name]) : whole));
806
+ }