@gridsheet/react-core 1.4.0 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/Cell.d.ts +3 -3
- package/dist/components/Cell.d.ts.map +1 -1
- package/dist/components/ContextMenu.d.ts +19 -2
- package/dist/components/ContextMenu.d.ts.map +1 -1
- package/dist/components/Editor.d.ts +4 -4
- package/dist/components/Editor.d.ts.map +1 -1
- package/dist/components/Emitter.d.ts +2 -2
- package/dist/components/Emitter.d.ts.map +1 -1
- package/dist/components/Fixed.d.ts +3 -3
- package/dist/components/Fixed.d.ts.map +1 -1
- package/dist/components/FormulaBar.d.ts +1 -2
- package/dist/components/FormulaBar.d.ts.map +1 -1
- package/dist/components/GridSheet.d.ts +1 -2
- package/dist/components/GridSheet.d.ts.map +1 -1
- package/dist/components/HeaderCellLeft.d.ts +2 -2
- package/dist/components/HeaderCellLeft.d.ts.map +1 -1
- package/dist/components/HeaderCellTop.d.ts +2 -2
- package/dist/components/HeaderCellTop.d.ts.map +1 -1
- package/dist/components/PluginBase.d.ts +4 -4
- package/dist/components/PluginBase.d.ts.map +1 -1
- package/dist/components/Resizer.d.ts +1 -2
- package/dist/components/Resizer.d.ts.map +1 -1
- package/dist/components/ScrollHandle.d.ts +9 -0
- package/dist/components/ScrollHandle.d.ts.map +1 -0
- package/dist/components/SearchBar.d.ts +1 -2
- package/dist/components/SearchBar.d.ts.map +1 -1
- package/dist/components/StoreObserver.d.ts +11 -0
- package/dist/components/StoreObserver.d.ts.map +1 -0
- package/dist/components/Tabular.d.ts +3 -3
- package/dist/components/Tabular.d.ts.map +1 -1
- package/dist/components/hooks.d.ts +2 -0
- package/dist/components/hooks.d.ts.map +1 -1
- package/dist/components/svg/AddIcon.d.ts +1 -2
- package/dist/components/svg/AddIcon.d.ts.map +1 -1
- package/dist/components/svg/Base.d.ts +4 -4
- package/dist/components/svg/Base.d.ts.map +1 -1
- package/dist/components/svg/CloseIcon.d.ts +1 -2
- package/dist/components/svg/CloseIcon.d.ts.map +1 -1
- package/dist/components/svg/SearchIcon.d.ts +1 -2
- package/dist/components/svg/SearchIcon.d.ts.map +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/formula/evaluator.d.ts +42 -18
- package/dist/formula/evaluator.d.ts.map +1 -1
- package/dist/formula/functions/__base.d.ts.map +1 -1
- package/dist/formula/functions/__utils.d.ts +5 -2
- package/dist/formula/functions/__utils.d.ts.map +1 -1
- package/dist/formula/functions/abs.d.ts.map +1 -1
- package/dist/formula/functions/acos.d.ts.map +1 -1
- package/dist/formula/functions/add.d.ts +1 -1
- package/dist/formula/functions/add.d.ts.map +1 -1
- package/dist/formula/functions/and.d.ts.map +1 -1
- package/dist/formula/functions/asin.d.ts.map +1 -1
- package/dist/formula/functions/atan.d.ts.map +1 -1
- package/dist/formula/functions/atan2.d.ts.map +1 -1
- package/dist/formula/functions/average.d.ts.map +1 -1
- package/dist/formula/functions/col.d.ts.map +1 -1
- package/dist/formula/functions/concat.d.ts.map +1 -1
- package/dist/formula/functions/concatenate.d.ts.map +1 -1
- package/dist/formula/functions/cos.d.ts.map +1 -1
- package/dist/formula/functions/count.d.ts.map +1 -1
- package/dist/formula/functions/counta.d.ts.map +1 -1
- package/dist/formula/functions/countif.d.ts.map +1 -1
- package/dist/formula/functions/divide.d.ts.map +1 -1
- package/dist/formula/functions/eq.d.ts.map +1 -1
- package/dist/formula/functions/exp.d.ts.map +1 -1
- package/dist/formula/functions/gt.d.ts.map +1 -1
- package/dist/formula/functions/gte.d.ts.map +1 -1
- package/dist/formula/functions/hlookup.d.ts.map +1 -1
- package/dist/formula/functions/if.d.ts.map +1 -1
- package/dist/formula/functions/iferror.d.ts.map +1 -1
- package/dist/formula/functions/index.d.ts +18 -0
- package/dist/formula/functions/index.d.ts.map +1 -0
- package/dist/formula/functions/len.d.ts.map +1 -1
- package/dist/formula/functions/lenb.d.ts.map +1 -1
- package/dist/formula/functions/ln.d.ts.map +1 -1
- package/dist/formula/functions/log.d.ts.map +1 -1
- package/dist/formula/functions/log10.d.ts.map +1 -1
- package/dist/formula/functions/lt.d.ts.map +1 -1
- package/dist/formula/functions/lte.d.ts.map +1 -1
- package/dist/formula/functions/match.d.ts +18 -0
- package/dist/formula/functions/match.d.ts.map +1 -0
- package/dist/formula/functions/match.test.d.ts +2 -0
- package/dist/formula/functions/match.test.d.ts.map +1 -0
- package/dist/formula/functions/max.d.ts.map +1 -1
- package/dist/formula/functions/min.d.ts.map +1 -1
- package/dist/formula/functions/minus.d.ts.map +1 -1
- package/dist/formula/functions/mod.d.ts.map +1 -1
- package/dist/formula/functions/multiply.d.ts.map +1 -1
- package/dist/formula/functions/ne.d.ts.map +1 -1
- package/dist/formula/functions/not.d.ts.map +1 -1
- package/dist/formula/functions/now.d.ts.map +1 -1
- package/dist/formula/functions/or.d.ts.map +1 -1
- package/dist/formula/functions/pi.d.ts.map +1 -1
- package/dist/formula/functions/power.d.ts.map +1 -1
- package/dist/formula/functions/product.d.ts.map +1 -1
- package/dist/formula/functions/radians.d.ts.map +1 -1
- package/dist/formula/functions/rand.d.ts.map +1 -1
- package/dist/formula/functions/round.d.ts.map +1 -1
- package/dist/formula/functions/rounddown.d.ts.map +1 -1
- package/dist/formula/functions/roundup.d.ts.map +1 -1
- package/dist/formula/functions/row.d.ts.map +1 -1
- package/dist/formula/functions/sin.d.ts.map +1 -1
- package/dist/formula/functions/sqrt.d.ts.map +1 -1
- package/dist/formula/functions/sum.d.ts.map +1 -1
- package/dist/formula/functions/sumif.d.ts.map +1 -1
- package/dist/formula/functions/tan.d.ts.map +1 -1
- package/dist/formula/functions/uminus.d.ts.map +1 -1
- package/dist/formula/functions/vlookup.d.ts.map +1 -1
- package/dist/formula/mapping.d.ts.map +1 -1
- package/dist/formula/solver.d.ts +10 -7
- package/dist/formula/solver.d.ts.map +1 -1
- package/dist/index.d.ts +15 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10330 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/autofill.d.ts +2 -2
- package/dist/lib/autofill.d.ts.map +1 -1
- package/dist/lib/clipboard.d.ts.map +1 -1
- package/dist/lib/converters.d.ts +3 -4
- package/dist/lib/converters.d.ts.map +1 -1
- package/dist/lib/events.d.ts +6 -0
- package/dist/lib/events.d.ts.map +1 -0
- package/dist/lib/hub.d.ts +72 -0
- package/dist/lib/hub.d.ts.map +1 -0
- package/dist/lib/input.d.ts +12 -2
- package/dist/lib/input.d.ts.map +1 -1
- package/dist/lib/operation.d.ts +27 -0
- package/dist/lib/operation.d.ts.map +1 -0
- package/dist/lib/palette.d.ts +1 -1
- package/dist/lib/palette.d.ts.map +1 -1
- package/dist/lib/paste.d.ts +4 -0
- package/dist/lib/paste.d.ts.map +1 -0
- package/dist/lib/reference.d.ts +13 -0
- package/dist/lib/reference.d.ts.map +1 -0
- package/dist/lib/sheet.d.ts +3 -0
- package/dist/lib/sheet.d.ts.map +1 -0
- package/dist/lib/structs.d.ts +12 -3
- package/dist/lib/structs.d.ts.map +1 -1
- package/dist/lib/table.d.ts +152 -91
- package/dist/lib/table.d.ts.map +1 -1
- package/dist/lib/time.d.ts +1 -0
- package/dist/lib/time.d.ts.map +1 -1
- package/dist/lib/virtualization.d.ts +3 -2
- package/dist/lib/virtualization.d.ts.map +1 -1
- package/dist/parsers/core.d.ts +2 -0
- package/dist/parsers/core.d.ts.map +1 -1
- package/dist/policy/core.d.ts +47 -0
- package/dist/policy/core.d.ts.map +1 -0
- package/dist/renderers/checkbox.d.ts +2 -2
- package/dist/renderers/checkbox.d.ts.map +1 -1
- package/dist/renderers/core.d.ts +39 -25
- package/dist/renderers/core.d.ts.map +1 -1
- package/dist/renderers/thousand_separator.d.ts +2 -3
- package/dist/renderers/thousand_separator.d.ts.map +1 -1
- package/dist/store/actions.d.ts +141 -49
- package/dist/store/actions.d.ts.map +1 -1
- package/dist/store/dispatchers.d.ts +13 -0
- package/dist/store/dispatchers.d.ts.map +1 -0
- package/dist/store/helpers.d.ts +1 -0
- package/dist/store/helpers.d.ts.map +1 -1
- package/dist/store/index.d.ts +1 -2
- package/dist/store/index.d.ts.map +1 -1
- package/dist/styles/embedder.d.ts.map +1 -1
- package/dist/styles/minified.d.ts +2 -2
- package/dist/styles/minified.d.ts.map +1 -1
- package/dist/styles/utils.d.ts +52 -0
- package/dist/styles/utils.d.ts.map +1 -0
- package/dist/types.d.ts +112 -55
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/package.json +7 -10
- package/dist/_virtual/_commonjsHelpers.js +0 -7
- package/dist/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/_virtual/dayjs.min.js +0 -8
- package/dist/_virtual/dayjs.min.js.map +0 -1
- package/dist/_virtual/dayjs.min2.js +0 -5
- package/dist/_virtual/dayjs.min2.js.map +0 -1
- package/dist/_virtual/timezone.js +0 -8
- package/dist/_virtual/timezone.js.map +0 -1
- package/dist/_virtual/timezone2.js +0 -5
- package/dist/_virtual/timezone2.js.map +0 -1
- package/dist/_virtual/utc.js +0 -8
- package/dist/_virtual/utc.js.map +0 -1
- package/dist/_virtual/utc2.js +0 -5
- package/dist/_virtual/utc2.js.map +0 -1
- package/dist/components/Cell.js +0 -234
- package/dist/components/Cell.js.map +0 -1
- package/dist/components/ContextMenu.js +0 -297
- package/dist/components/ContextMenu.js.map +0 -1
- package/dist/components/Editor.js +0 -464
- package/dist/components/Editor.js.map +0 -1
- package/dist/components/Emitter.js +0 -26
- package/dist/components/Emitter.js.map +0 -1
- package/dist/components/Fixed.js +0 -17
- package/dist/components/Fixed.js.map +0 -1
- package/dist/components/FormulaBar.js +0 -150
- package/dist/components/FormulaBar.js.map +0 -1
- package/dist/components/GridSheet.js +0 -247
- package/dist/components/GridSheet.js.map +0 -1
- package/dist/components/HeaderCellLeft.js +0 -131
- package/dist/components/HeaderCellLeft.js.map +0 -1
- package/dist/components/HeaderCellTop.js +0 -132
- package/dist/components/HeaderCellTop.js.map +0 -1
- package/dist/components/PluginBase.js +0 -35
- package/dist/components/PluginBase.js.map +0 -1
- package/dist/components/Resizer.js +0 -98
- package/dist/components/Resizer.js.map +0 -1
- package/dist/components/SearchBar.js +0 -108
- package/dist/components/SearchBar.js.map +0 -1
- package/dist/components/SheetProvider.d.ts +0 -30
- package/dist/components/SheetProvider.d.ts.map +0 -1
- package/dist/components/SheetProvider.js +0 -59
- package/dist/components/SheetProvider.js.map +0 -1
- package/dist/components/StoreInitializer.d.ts +0 -4
- package/dist/components/StoreInitializer.d.ts.map +0 -1
- package/dist/components/StoreInitializer.js +0 -84
- package/dist/components/StoreInitializer.js.map +0 -1
- package/dist/components/Tabular.js +0 -317
- package/dist/components/Tabular.js.map +0 -1
- package/dist/components/Toggle.d.ts +0 -12
- package/dist/components/Toggle.d.ts.map +0 -1
- package/dist/components/hooks.js +0 -15
- package/dist/components/hooks.js.map +0 -1
- package/dist/components/svg/Base.js +0 -24
- package/dist/components/svg/Base.js.map +0 -1
- package/dist/components/svg/CloseIcon.js +0 -13
- package/dist/components/svg/CloseIcon.js.map +0 -1
- package/dist/components/svg/SearchIcon.js +0 -13
- package/dist/components/svg/SearchIcon.js.map +0 -1
- package/dist/constants.js +0 -43
- package/dist/constants.js.map +0 -1
- package/dist/formula/evaluator.js +0 -679
- package/dist/formula/evaluator.js.map +0 -1
- package/dist/formula/functions/__base.js +0 -20
- package/dist/formula/functions/__base.js.map +0 -1
- package/dist/formula/functions/__utils.js +0 -145
- package/dist/formula/functions/__utils.js.map +0 -1
- package/dist/formula/functions/abs.js +0 -24
- package/dist/formula/functions/abs.js.map +0 -1
- package/dist/formula/functions/abs.spec.d.ts +0 -2
- package/dist/formula/functions/abs.spec.d.ts.map +0 -1
- package/dist/formula/functions/acos.js +0 -32
- package/dist/formula/functions/acos.js.map +0 -1
- package/dist/formula/functions/add.js +0 -57
- package/dist/formula/functions/add.js.map +0 -1
- package/dist/formula/functions/and.js +0 -28
- package/dist/formula/functions/and.js.map +0 -1
- package/dist/formula/functions/asin.js +0 -32
- package/dist/formula/functions/asin.js.map +0 -1
- package/dist/formula/functions/atan.js +0 -29
- package/dist/formula/functions/atan.js.map +0 -1
- package/dist/formula/functions/atan2.js +0 -35
- package/dist/formula/functions/atan2.js.map +0 -1
- package/dist/formula/functions/average.js +0 -44
- package/dist/formula/functions/average.js.map +0 -1
- package/dist/formula/functions/col.js +0 -34
- package/dist/formula/functions/col.js.map +0 -1
- package/dist/formula/functions/col.spec.d.ts +0 -2
- package/dist/formula/functions/col.spec.d.ts.map +0 -1
- package/dist/formula/functions/concat.js +0 -27
- package/dist/formula/functions/concat.js.map +0 -1
- package/dist/formula/functions/concatenate.js +0 -28
- package/dist/formula/functions/concatenate.js.map +0 -1
- package/dist/formula/functions/cos.js +0 -29
- package/dist/formula/functions/cos.js.map +0 -1
- package/dist/formula/functions/count.js +0 -38
- package/dist/formula/functions/count.js.map +0 -1
- package/dist/formula/functions/counta.js +0 -38
- package/dist/formula/functions/counta.js.map +0 -1
- package/dist/formula/functions/countif.js +0 -32
- package/dist/formula/functions/countif.js.map +0 -1
- package/dist/formula/functions/countif.spec.d.ts +0 -2
- package/dist/formula/functions/countif.spec.d.ts.map +0 -1
- package/dist/formula/functions/divide.js +0 -33
- package/dist/formula/functions/divide.js.map +0 -1
- package/dist/formula/functions/eq.js +0 -29
- package/dist/formula/functions/eq.js.map +0 -1
- package/dist/formula/functions/eq.spec.d.ts +0 -2
- package/dist/formula/functions/eq.spec.d.ts.map +0 -1
- package/dist/formula/functions/exp.js +0 -29
- package/dist/formula/functions/exp.js.map +0 -1
- package/dist/formula/functions/gt.js +0 -29
- package/dist/formula/functions/gt.js.map +0 -1
- package/dist/formula/functions/gte.js +0 -29
- package/dist/formula/functions/gte.js.map +0 -1
- package/dist/formula/functions/hlookup.js +0 -75
- package/dist/formula/functions/hlookup.js.map +0 -1
- package/dist/formula/functions/if.js +0 -39
- package/dist/formula/functions/if.js.map +0 -1
- package/dist/formula/functions/iferror.js +0 -45
- package/dist/formula/functions/iferror.js.map +0 -1
- package/dist/formula/functions/iferror.spec.d.ts +0 -2
- package/dist/formula/functions/iferror.spec.d.ts.map +0 -1
- package/dist/formula/functions/len.js +0 -29
- package/dist/formula/functions/len.js.map +0 -1
- package/dist/formula/functions/lenb.js +0 -29
- package/dist/formula/functions/lenb.js.map +0 -1
- package/dist/formula/functions/ln.js +0 -32
- package/dist/formula/functions/ln.js.map +0 -1
- package/dist/formula/functions/log.js +0 -36
- package/dist/formula/functions/log.js.map +0 -1
- package/dist/formula/functions/log10.js +0 -32
- package/dist/formula/functions/log10.js.map +0 -1
- package/dist/formula/functions/lt.js +0 -29
- package/dist/formula/functions/lt.js.map +0 -1
- package/dist/formula/functions/lte.js +0 -29
- package/dist/formula/functions/lte.js.map +0 -1
- package/dist/formula/functions/max.js +0 -47
- package/dist/formula/functions/max.js.map +0 -1
- package/dist/formula/functions/min.js +0 -47
- package/dist/formula/functions/min.js.map +0 -1
- package/dist/formula/functions/minus.js +0 -57
- package/dist/formula/functions/minus.js.map +0 -1
- package/dist/formula/functions/mod.js +0 -33
- package/dist/formula/functions/mod.js.map +0 -1
- package/dist/formula/functions/mod.spec.d.ts +0 -2
- package/dist/formula/functions/mod.spec.d.ts.map +0 -1
- package/dist/formula/functions/multiply.js +0 -27
- package/dist/formula/functions/multiply.js.map +0 -1
- package/dist/formula/functions/ne.js +0 -29
- package/dist/formula/functions/ne.js.map +0 -1
- package/dist/formula/functions/not.js +0 -30
- package/dist/formula/functions/not.js.map +0 -1
- package/dist/formula/functions/now.js +0 -22
- package/dist/formula/functions/now.js.map +0 -1
- package/dist/formula/functions/or.js +0 -28
- package/dist/formula/functions/or.js.map +0 -1
- package/dist/formula/functions/pi.js +0 -22
- package/dist/formula/functions/pi.js.map +0 -1
- package/dist/formula/functions/power.js +0 -27
- package/dist/formula/functions/power.js.map +0 -1
- package/dist/formula/functions/product.js +0 -40
- package/dist/formula/functions/product.js.map +0 -1
- package/dist/formula/functions/radians.js +0 -29
- package/dist/formula/functions/radians.js.map +0 -1
- package/dist/formula/functions/rand.js +0 -22
- package/dist/formula/functions/rand.js.map +0 -1
- package/dist/formula/functions/round.js +0 -35
- package/dist/formula/functions/round.js.map +0 -1
- package/dist/formula/functions/rounddown.js +0 -35
- package/dist/formula/functions/rounddown.js.map +0 -1
- package/dist/formula/functions/roundup.js +0 -35
- package/dist/formula/functions/roundup.js.map +0 -1
- package/dist/formula/functions/row.js +0 -34
- package/dist/formula/functions/row.js.map +0 -1
- package/dist/formula/functions/row.spec.d.ts +0 -2
- package/dist/formula/functions/row.spec.d.ts.map +0 -1
- package/dist/formula/functions/sin.js +0 -29
- package/dist/formula/functions/sin.js.map +0 -1
- package/dist/formula/functions/sqrt.js +0 -32
- package/dist/formula/functions/sqrt.js.map +0 -1
- package/dist/formula/functions/sum.js +0 -47
- package/dist/formula/functions/sum.js.map +0 -1
- package/dist/formula/functions/sum.spec.d.ts +0 -2
- package/dist/formula/functions/sum.spec.d.ts.map +0 -1
- package/dist/formula/functions/sumif.js +0 -65
- package/dist/formula/functions/sumif.js.map +0 -1
- package/dist/formula/functions/tan.js +0 -29
- package/dist/formula/functions/tan.js.map +0 -1
- package/dist/formula/functions/uminus.js +0 -24
- package/dist/formula/functions/uminus.js.map +0 -1
- package/dist/formula/functions/vlookup.js +0 -75
- package/dist/formula/functions/vlookup.js.map +0 -1
- package/dist/formula/mapping.js +0 -119
- package/dist/formula/mapping.js.map +0 -1
- package/dist/formula/solver.js +0 -70
- package/dist/formula/solver.js.map +0 -1
- package/dist/lib/autofill.js +0 -391
- package/dist/lib/autofill.js.map +0 -1
- package/dist/lib/clipboard.js +0 -72
- package/dist/lib/clipboard.js.map +0 -1
- package/dist/lib/converters.js +0 -141
- package/dist/lib/converters.js.map +0 -1
- package/dist/lib/input.js +0 -52
- package/dist/lib/input.js.map +0 -1
- package/dist/lib/palette.js +0 -24
- package/dist/lib/palette.js.map +0 -1
- package/dist/lib/prevention.d.ts +0 -24
- package/dist/lib/prevention.d.ts.map +0 -1
- package/dist/lib/prevention.js +0 -82
- package/dist/lib/prevention.js.map +0 -1
- package/dist/lib/structs.js +0 -276
- package/dist/lib/structs.js.map +0 -1
- package/dist/lib/table.js +0 -1259
- package/dist/lib/table.js.map +0 -1
- package/dist/lib/time.js +0 -170
- package/dist/lib/time.js.map +0 -1
- package/dist/lib/virtualization.js +0 -129
- package/dist/lib/virtualization.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js +0 -287
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/timezone.js +0 -72
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/timezone.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/utc.js +0 -85
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/utc.js.map +0 -1
- package/dist/parsers/core.js +0 -111
- package/dist/parsers/core.js.map +0 -1
- package/dist/renderers/checkbox.js +0 -20
- package/dist/renderers/checkbox.js.map +0 -1
- package/dist/renderers/core.js +0 -135
- package/dist/renderers/core.js.map +0 -1
- package/dist/renderers/thousand_separator.js +0 -17
- package/dist/renderers/thousand_separator.js.map +0 -1
- package/dist/store/actions.js +0 -762
- package/dist/store/actions.js.map +0 -1
- package/dist/store/helpers.js +0 -88
- package/dist/store/helpers.js.map +0 -1
- package/dist/store/index.js +0 -8
- package/dist/store/index.js.map +0 -1
- package/dist/styles/embedder.js +0 -19
- package/dist/styles/embedder.js.map +0 -1
- package/dist/styles/minified.js +0 -7
- package/dist/styles/minified.js.map +0 -1
package/dist/lib/table.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../lib/table.ts"],"sourcesContent":["import { defaultParser } from '../parsers/core';\nimport { defaultRenderer } from '../renderers/core';\nimport {\n Id,\n Ids,\n IdMatrix,\n AreaType,\n CellsByIdType,\n CellsByAddressType,\n PointType,\n WriterType,\n Address,\n CellFilter,\n Labelers,\n MatrixType,\n CellType,\n Parsers,\n Renderers,\n HistoryType,\n StoreReflectionType,\n ShapeType,\n OperatorType,\n TableMapType,\n SheetMapType,\n} from '../types';\nimport { areaShape, createMatrix, expandRange, getMaxSizesFromCells, matrixShape, putMatrix } from './structs';\nimport { a2p, x2c, p2a, y2r, grantAddressAbsolute } from './converters';\nimport { FunctionMapping } from '../formula/functions/__base';\nimport { functions as functionsDefault } from '../formula/mapping';\nimport { absolutizeFormula, Lexer, stripSheetName } from '../formula/evaluator';\nimport { solveFormula } from '../formula/solver';\n\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, HEADER_HEIGHT, HEADER_WIDTH, HISTORY_LIMIT } from '../constants';\nimport { shouldTracking } from '../store/helpers';\nimport * as prevention from './prevention';\n\ntype Props = {\n parsers?: Parsers;\n renderers?: Renderers;\n labelers?: Labelers;\n useBigInt?: boolean;\n historyLimit?: number;\n minNumRows?: number;\n maxNumRows?: number;\n minNumCols?: number;\n maxNumCols?: number;\n headerHeight?: number;\n headerWidth?: number;\n functions?: FunctionMapping;\n sheetName?: string;\n};\n\nconst noFilter: CellFilter = () => true;\n\ntype GetProps = {\n // null for the system, do not use it\n evaluates?: boolean | null;\n raise?: boolean;\n filter?: CellFilter;\n};\n\ntype MoveProps = {\n src: AreaType;\n dst: AreaType;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n historicize?: boolean;\n};\n\ntype GetFlattenProps = GetProps & {\n key?: keyof CellType;\n};\n\ntype GetPropsWithArea = GetProps & {\n area?: AreaType;\n};\n\ntype GetFlattenPropsWithArea = GetFlattenProps & {\n area?: AreaType;\n};\n\nexport interface UserTable {\n changedAt: Date;\n lastChangedAt?: Date;\n top: number;\n left: number;\n bottom: number;\n right: number;\n minNumRows: number;\n maxNumRows: number;\n minNumCols: number;\n maxNumCols: number;\n totalWidth: number;\n totalHeight: number;\n headerWidth: number;\n headerHeight: number;\n currentHistory?: HistoryType;\n\n getRectSize(area: AreaType): ShapeType;\n getAddressById(id: Id, slideY: number, slideX: number): string | undefined;\n getAddressesByIds(ids: CellsByIdType): CellsByAddressType;\n getPointById(id: Id): PointType;\n getByPoint(point: PointType): CellType | undefined;\n getById(id: Id): CellType | undefined;\n getNumRows(base?: number): number;\n getNumCols(base?: number): number;\n getMatrixFlatten(args?: GetFlattenPropsWithArea): any[][];\n getObjectFlatten(args?: GetFlattenProps): CellsByAddressType;\n getRowsFlatten(args?: GetFlattenProps): CellsByAddressType[];\n getColsFlatten(args?: GetFlattenProps): CellsByAddressType[];\n getMatrix(args?: GetPropsWithArea): (CellType | null)[][];\n getObject(args?: GetProps): CellsByAddressType;\n getRows(args?: GetProps): CellsByAddressType[];\n getCols(args?: GetProps): CellsByAddressType[];\n getTableBySheetName(sheetName: string): UserTable;\n move(args: MoveProps): UserTable;\n copy(args: MoveProps): UserTable;\n update(args: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n writeMatrix(args: {\n point: PointType;\n matrix: MatrixType<string>;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n write(args: {\n point: PointType;\n value: string;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addRowsAndUpdate(args: {\n y: number;\n numRows: number;\n baseY: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addRows(args: { y: number; numRows: number; baseY: number; reflection?: StoreReflectionType }): UserTable;\n deleteRows(args: { y: number; numRows: number; reflection?: StoreReflectionType }): UserTable;\n addColsAndUpdate(args: {\n x: number;\n numCols: number;\n baseX: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addCols(args: { x: number; numCols: number; baseX: number; reflection?: StoreReflectionType }): UserTable;\n deleteCols(args: { x: number; numCols: number; reflection?: StoreReflectionType }): UserTable;\n undo(): {\n history: HistoryType | null;\n newTable: UserTable;\n };\n redo(): {\n history: HistoryType | null;\n newTable: UserTable;\n };\n getHistories(): HistoryType[];\n getHistoryIndex(): number;\n getHistorySize(): number;\n}\n\nexport class Table implements UserTable {\n public changedAt: Date;\n public lastChangedAt?: Date;\n public minNumRows: number;\n public maxNumRows: number;\n public minNumCols: number;\n public maxNumCols: number;\n public totalWidth: number = 0;\n public totalHeight: number = 0;\n public headerWidth: number = 0;\n public headerHeight: number = 0;\n public currentHistory?: HistoryType;\n public sheetId: number = 0;\n public sheetName: string = '';\n public sheets: SheetMapType = {};\n public tables: TableMapType = {};\n\n private head: bigint | number;\n private idMatrix: IdMatrix;\n private data: CellsByIdType = {};\n private area: AreaType = { top: 0, left: 0, bottom: 0, right: 0 };\n private parsers: Parsers;\n private renderers: Renderers;\n private labelers: Labelers;\n private functions: FunctionMapping = {};\n private lastHistory?: HistoryType;\n private histories: HistoryType[];\n private historyIndex: number;\n private addressesById: { [id: Id]: Address };\n private historyLimit: number;\n private solvedCaches: { [address: Address]: any };\n private idsToBeAbsoluted: Id[];\n\n constructor({\n parsers = {},\n renderers = {},\n labelers = {},\n useBigInt = false,\n historyLimit: historyLimit,\n minNumRows = 1,\n maxNumRows = -1,\n minNumCols = 1,\n maxNumCols = -1,\n headerWidth = HEADER_WIDTH,\n headerHeight = HEADER_HEIGHT,\n functions = functionsDefault,\n sheetName,\n }: Props) {\n this.head = useBigInt ? BigInt(0) : 0;\n this.parsers = parsers || {};\n this.renderers = renderers || {};\n this.labelers = labelers || {};\n this.idMatrix = [];\n this.histories = [];\n this.historyIndex = -1;\n this.addressesById = {};\n this.historyLimit = historyLimit || HISTORY_LIMIT;\n this.changedAt = new Date();\n this.minNumRows = minNumRows || 0;\n this.maxNumRows = maxNumRows || 0;\n this.minNumCols = minNumCols || 0;\n this.maxNumCols = maxNumCols || 0;\n this.solvedCaches = {};\n this.headerHeight = headerHeight;\n this.headerWidth = headerWidth;\n this.functions = functions;\n this.idsToBeAbsoluted = [];\n this.sheetName = sheetName || '';\n }\n\n public getTableBySheetName(sheetName: string) {\n const sheetId = this.sheets[sheetName];\n return this.tables[sheetId];\n }\n\n public initialize(cells: CellsByAddressType) {\n const auto = getMaxSizesFromCells(cells);\n this.area = {\n top: 0,\n left: 0,\n bottom: auto.numRows || 0,\n right: auto.numCols || 0,\n };\n\n // make idMatrix beforehand\n for (let y = 0; y < auto.numRows + 1; y++) {\n const ids: Ids = [];\n this.idMatrix.push(ids);\n for (let x = 0; x < auto.numCols + 1; x++) {\n const id = this.generateId();\n ids.push(id);\n const address = p2a({ y, x });\n this.addressesById[id] = address;\n }\n }\n Object.keys(cells).forEach((address) => {\n const range = expandRange(address);\n const data = cells[address];\n range.forEach((address) => {\n const origin = cells[address];\n cells[address] = {\n ...origin,\n ...data,\n style: {\n ...origin?.style,\n ...data?.style,\n },\n prevention: (origin?.prevention || 0) | (data?.prevention || 0),\n };\n });\n });\n\n const common = cells?.['default'];\n for (let y = 0; y < auto.numRows + 1; y++) {\n const rowId = y2r(y);\n const rowDefault = cells?.[rowId];\n for (let x = 0; x < auto.numCols + 1; x++) {\n const id = this.getId({ y, x });\n const address = p2a({ y, x });\n const colId = x2c(x);\n const colDefault = cells?.[colId];\n const cell = cells?.[address];\n const stacked = {\n ...common,\n ...rowDefault,\n ...colDefault,\n ...cell,\n style: {\n ...common?.style,\n ...rowDefault?.style,\n ...colDefault?.style,\n ...cell?.style,\n },\n prevention:\n (common?.prevention || 0) |\n (rowDefault?.prevention || 0) |\n (colDefault?.prevention || 0) |\n (cell?.prevention || 0),\n } as CellType;\n\n if (stacked?.value?.startsWith?.('=')) {\n this.idsToBeAbsoluted.push(id);\n }\n if (y === 0) {\n if (stacked.width == null) {\n stacked.width = DEFAULT_WIDTH;\n }\n } else if (x === 0) {\n if (stacked.height == null) {\n stacked.height = DEFAULT_HEIGHT;\n }\n } else {\n delete stacked.height;\n delete stacked.width;\n delete stacked.labeler;\n }\n this.data[id] = stacked;\n }\n }\n this.setTotalSize();\n }\n\n public absolutizeFormula() {\n this.idsToBeAbsoluted.forEach((id) => {\n const cell = this.data[id];\n if (cell == null) {\n return;\n }\n cell.value = absolutizeFormula({\n value: cell?.value,\n table: this,\n });\n });\n }\n\n private generateId() {\n return (this.head++).toString(36);\n }\n\n public getRectSize({ top, left, bottom, right }: AreaType) {\n let width = 0,\n height = 0;\n for (let x = left || 1; x < right; x++) {\n width += this.getByPoint({ y: 0, x })?.width || DEFAULT_WIDTH;\n }\n for (let y = top || 1; y < bottom; y++) {\n height += this.getByPoint({ y, x: 0 })?.height || DEFAULT_HEIGHT;\n }\n return { width, height };\n }\n private setTotalSize() {\n const { bottom, right } = this.area;\n const { width, height } = this.getRectSize({\n top: 1,\n left: 1,\n bottom: bottom + 1,\n right: right + 1,\n });\n this.totalWidth = width + this.headerWidth;\n this.totalHeight = height + this.headerHeight;\n }\n\n public shallowCopy({ copyCache = true }: { copyCache?: boolean } = {}) {\n const copied: Table = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n copied.changedAt = new Date();\n copied.lastChangedAt = this.changedAt;\n copied.setTotalSize();\n copied.idsToBeAbsoluted = [];\n copied.solvedCaches = {};\n if (!copyCache) {\n // force reset\n this.addressesById = {};\n }\n copied.sheetName = this.sheetName;\n return copied;\n }\n\n public getAddressById(id: Id, slideY = 0, slideX = 0): string | undefined {\n const absCol = id.startsWith('$');\n if (absCol) {\n id = id.slice(1);\n slideX = 0;\n }\n const absRow = id.endsWith('$');\n if (absRow) {\n id = id.slice(0, -1);\n slideY = 0;\n }\n\n for (let y = 0; y < this.idMatrix.length; y++) {\n const ids = this.idMatrix[y];\n for (let x = 0; x < ids.length; x++) {\n const existing = ids[x];\n const address = p2a({ y, x });\n this.addressesById[existing] = address;\n if (existing === id) {\n const slidedAddress = p2a({\n y: y + slideY,\n x: x + slideX,\n });\n return grantAddressAbsolute(slidedAddress, absCol, absRow);\n }\n }\n }\n }\n\n public getAddressesByIds(ids: CellsByIdType) {\n const addresses: CellsByAddressType = {};\n Object.keys(ids).forEach((id) => {\n const cell = ids[id];\n const address = this.getAddressById(id);\n if (cell && address) {\n addresses[address] = cell;\n }\n });\n return addresses;\n }\n\n public getPointById(id: Id): PointType {\n const address = this.getAddressById(id);\n if (address) {\n return a2p(address);\n }\n return { y: 0, x: 0 };\n }\n private getId(point: PointType) {\n const { y, x } = point;\n return this.idMatrix[Math.abs(y)]?.[Math.abs(x)];\n }\n\n public getByPoint(point: PointType) {\n const { y, x } = point;\n if (y === -1 || x === -1) {\n return undefined;\n }\n const id = this.idMatrix[y]?.[x];\n if (id == null) {\n return undefined;\n }\n const value = this.data[id];\n return value;\n }\n\n public getById(id: Id) {\n return this.data[id];\n }\n\n public getNumRows(base = 0) {\n const { top, bottom } = this.area;\n return base + bottom - top;\n }\n\n public getNumCols(base = 0) {\n const { left, right } = this.area;\n return base + right - left;\n }\n\n public get top() {\n return this.area.top;\n }\n public get left() {\n return this.area.left;\n }\n public get bottom() {\n return this.area.bottom;\n }\n public get right() {\n return this.area.right;\n }\n\n public getMatrixFlatten({\n area,\n key = 'value',\n evaluates = true,\n raise = false,\n filter = noFilter,\n }: GetFlattenPropsWithArea = {}) {\n const { top, left, bottom, right } = area || {\n top: 1,\n left: 1,\n bottom: this.area.bottom,\n right: this.area.right,\n };\n const matrix = createMatrix(bottom - top + 1, right - left + 1);\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y, x }) || {};\n if (!filter(cell)) {\n continue;\n }\n matrix[y - top][x - left] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n return matrix;\n }\n public getObjectFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType = {};\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n result[p2a({ y, x })] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getRowsFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n const row: CellsByAddressType = {};\n result.push(row);\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n row[x2c(x) || y2r(y)] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getColsFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let x = left; x <= right; x++) {\n const col: CellsByAddressType = {};\n result.push(col);\n for (let y = top; y <= bottom; y++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n col[y2r(y) || x2c(x)] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getMatrix({\n area,\n evaluates = true,\n raise = false,\n filter = noFilter,\n }: GetPropsWithArea = {}): (CellType | null)[][] {\n const { top, left, bottom, right } = area || {\n top: 1,\n left: 1,\n bottom: this.area.bottom,\n right: this.area.right,\n };\n const matrix = createMatrix(bottom - top + 1, right - left + 1);\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y, x });\n if (cell != null && filter(cell)) {\n matrix[y - top][x - left] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return matrix;\n }\n public getObject({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType = {};\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n result[p2a({ y, x })] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n public getRows({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n const row: CellsByAddressType = {};\n result.push(row);\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n row[x2c(x) || y2r(y)] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n public getCols({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let x = left; x <= right; x++) {\n const col: CellsByAddressType = {};\n result.push(col);\n for (let y = top; y <= bottom; y++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n col[y2r(y) || x2c(x)] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n\n private pushHistory(history: HistoryType) {\n const strayedHistories = this.histories.splice(this.historyIndex + 1, this.histories.length);\n strayedHistories.forEach(this.cleanStrayed.bind(this));\n this.histories.push(history);\n this.lastHistory = this.currentHistory = history;\n if (this.histories.length > this.historyLimit) {\n const kickedOut = this.histories.splice(0, 1)[0];\n this.cleanObsolete(kickedOut);\n } else {\n this.historyIndex++;\n }\n }\n\n private cleanObsolete(history: HistoryType) {\n if (history.operation === 'DELETE_ROWS' || history.operation === 'DELETE_COLS') {\n history.deleted.forEach((ids) => {\n ids.forEach((id) => {\n delete this.data[id];\n });\n });\n }\n if (history.operation === 'MOVE') {\n Object.keys(history.lostRows).forEach((address) => {\n const idMatrix = history.lostRows[address];\n idMatrix.map((ids) =>\n ids.forEach((id) => {\n if (id != null) {\n delete this.data[id];\n }\n }),\n );\n });\n }\n }\n\n private cleanStrayed(history: HistoryType) {\n if (history.operation === 'ADD_ROWS' || history.operation === 'ADD_COLS') {\n history.idMatrix.forEach((ids) => {\n ids.forEach((id) => {\n delete this.data[id];\n });\n });\n }\n }\n\n private getNewIdMatrix(area: AreaType) {\n const matrix: IdMatrix = [];\n const { top, left, bottom, right } = area;\n for (let y = top; y <= bottom; y++) {\n const ids: Ids = [];\n matrix.push(ids);\n for (let x = left; x <= right; x++) {\n ids.push(this.generateId());\n }\n }\n return matrix;\n }\n\n private getIdMatrixFromArea(area: AreaType) {\n const matrix: IdMatrix = [];\n const { top, left, bottom, right } = area;\n for (let y = top; y <= bottom; y++) {\n const ids: Ids = [];\n matrix.push(ids);\n for (let x = left; x <= right; x++) {\n const id = this.idMatrix[y]?.[x];\n if (id == null) {\n continue;\n }\n ids.push(id);\n }\n }\n return matrix;\n }\n\n private setChangedAt(cell?: CellType, changedAt?: Date) {\n if (cell == null) {\n return null;\n }\n cell.changedAt = changedAt || new Date();\n return cell;\n }\n\n private copyCellLayout(cell: CellType | undefined) {\n if (cell == null) {\n return undefined;\n }\n const newCell: CellType = {};\n if (cell.style != null) {\n newCell.style = cell.style;\n }\n if (cell.justifyContent != null) {\n newCell.justifyContent = cell.justifyContent;\n }\n if (cell.alignItems != null) {\n newCell.alignItems = cell.alignItems;\n }\n if (cell.renderer != null) {\n newCell.renderer = cell.renderer;\n }\n if (cell.parser != null) {\n newCell.parser = cell.parser;\n }\n if (cell.width != null) {\n newCell.width = cell.width;\n }\n if (cell.height != null) {\n newCell.height = cell.height;\n }\n if (cell.labeler != null) {\n newCell.labeler = cell.labeler;\n }\n return newCell;\n }\n\n public move({ src, dst, historicize = true, operator = 'SYSTEM', reflection = {} }: MoveProps) {\n const matrixNew = this.getNewIdMatrix(src);\n const matrixFrom = this.getIdMatrixFromArea(src);\n const matrixTo = this.getIdMatrixFromArea(dst);\n putMatrix(this.idMatrix, matrixNew, src, (_, id) => {\n const cell = this.data[id];\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.MoveFrom)) {\n return false;\n }\n return true;\n });\n const lostRows = putMatrix(this.idMatrix, matrixFrom, dst, (srcId, dstId) => {\n const srcCell = this.data[srcId];\n const dstCell = this.data[dstId];\n if (\n operator === 'USER' &&\n (prevention.isPrevented(srcCell?.prevention, prevention.MoveFrom) ||\n prevention.isPrevented(dstCell?.prevention, prevention.MoveTo))\n ) {\n return false;\n }\n if (srcCell != null) {\n this.setChangedAt(srcCell, new Date());\n }\n return true;\n });\n if (historicize) {\n this.pushHistory({\n applyed: true,\n operation: 'MOVE',\n reflection,\n src,\n dst,\n matrixFrom,\n matrixTo,\n matrixNew,\n lostRows,\n });\n }\n return this.shallowCopy({ copyCache: false });\n }\n\n public copy({ src, dst, operator = 'SYSTEM', reflection = {} }: MoveProps) {\n const { height: maxHeight, width: maxWidth } = areaShape({\n ...src,\n base: 1,\n });\n const { top: topFrom, left: leftFrom } = src;\n const { top: topTo, left: leftTo, bottom: bottomTo, right: rightTo } = dst;\n const diff: CellsByAddressType = {};\n const changedAt = new Date();\n\n for (let i = 0; i <= bottomTo - topTo; i++) {\n const toY = topTo + i;\n if (toY > this.getNumRows()) {\n continue;\n }\n for (let j = 0; j <= rightTo - leftTo; j++) {\n const toX = leftTo + j;\n if (toX > this.getNumCols()) {\n continue;\n }\n const fromY = topFrom + (i % maxHeight);\n const fromX = leftFrom + (j % maxWidth);\n const slideY = toY - fromY;\n const slideX = toX - fromX;\n const cell: CellType = {\n ...this.getByPoint({\n y: topFrom + (i % maxHeight),\n x: leftFrom + (j % maxWidth),\n }),\n prevention: 0, // Is this okay?\n };\n const value = absolutizeFormula({\n value: cell?.value,\n table: this,\n slideY,\n slideX,\n });\n this.setChangedAt(cell, changedAt);\n diff[p2a({ y: toY, x: toX })] = {\n ...cell,\n style: { ...cell?.style },\n value,\n };\n }\n }\n return this.update({\n diff,\n partial: false,\n operator,\n reflection,\n });\n }\n\n private _update({\n diff,\n partial = true,\n updateChangedAt = true,\n ignoreFields = ['labeler', 'prevention'],\n operator = 'SYSTEM',\n }: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n ignoreFields?: (keyof CellType)[];\n operator?: OperatorType;\n }) {\n const diffBefore: CellsByIdType = {};\n const diffAfter: CellsByIdType = {};\n const changedAt = new Date();\n\n Object.keys(diff).forEach((address) => {\n const cell = { ...diff[address] };\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.Update)) {\n return;\n }\n\n cell.value = absolutizeFormula({\n value: cell.value,\n table: this,\n });\n const point = a2p(address);\n const id = this.getId(point);\n const current = this.data[id];\n ignoreFields.forEach((key) => {\n cell[key] = current?.[key];\n });\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Write)) {\n cell.value = current?.value;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Style)) {\n cell.style = current?.style;\n cell.justifyContent = current?.justifyContent;\n cell.alignItems = current?.alignItems;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Resize)) {\n cell.width = current?.width;\n cell.height = current?.height;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.SetRenderer)) {\n cell.renderer = current?.renderer;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.SetParser)) {\n cell.parser = current?.parser;\n }\n if (updateChangedAt) {\n this.setChangedAt(cell, changedAt);\n }\n // must not partial\n diffBefore[id] = this.getByPoint(point);\n diffAfter[id] = cell;\n if (partial) {\n this.data[id] = { ...current, ...cell };\n } else {\n this.data[id] = cell;\n }\n });\n this.solvedCaches = {};\n return {\n diffBefore,\n diffAfter,\n };\n }\n\n public update({\n diff,\n partial = true,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const { diffBefore, diffAfter } = this._update({\n diff,\n partial,\n operator,\n updateChangedAt,\n });\n\n if (historicize) {\n this.pushHistory({\n applyed: true,\n operation: 'UPDATE',\n reflection,\n diffBefore,\n diffAfter,\n partial,\n });\n }\n return this.shallowCopy({ copyCache: true });\n }\n\n public writeMatrix({\n point,\n matrix,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n point: PointType;\n matrix: MatrixType<string>;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const { y: baseY, x: baseX } = point;\n const diff: CellsByAddressType = {};\n matrix.forEach((cols, i) => {\n const y = baseY + i;\n if (y > this.bottom) {\n return;\n }\n cols.forEach((value, j) => {\n const x = baseX + j;\n if (x > this.right) {\n return;\n }\n const cell = this.parse({ y, x }, value);\n diff[p2a({ y, x })] = cell;\n });\n });\n return this.update({\n diff,\n partial: true,\n updateChangedAt,\n historicize,\n operator,\n reflection,\n });\n }\n\n public write({\n point,\n value,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n point: PointType;\n value: string;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n return this.writeMatrix({\n point,\n matrix: [[value]],\n updateChangedAt,\n historicize,\n operator,\n reflection,\n });\n }\n\n public addRowsAndUpdate({\n y,\n numRows,\n baseY,\n diff,\n partial,\n updateChangedAt,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n baseY: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const returned = this.addRows({\n y,\n numRows,\n baseY,\n reflection,\n });\n\n Object.assign(this.lastHistory!, this._update({ diff, partial, updateChangedAt, operator }), { partial });\n\n return returned;\n }\n\n public addRows({\n y,\n numRows,\n baseY,\n // operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n baseY: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.maxNumRows !== -1 && this.getNumRows() + numRows > this.maxNumRows) {\n console.error(`Rows are limited to ${this.maxNumRows}.`);\n return this;\n }\n const numCols = this.getNumCols(1);\n const rows: IdMatrix = [];\n const changedAt = new Date();\n for (let i = 0; i < numRows; i++) {\n const row: Ids = [];\n for (let j = 0; j < numCols; j++) {\n const id = this.generateId();\n row.push(id);\n const cell = this.getByPoint({ y: baseY, x: j });\n const copied = this.copyCellLayout(cell);\n this.data[id] = { ...copied, changedAt };\n }\n rows.push(row);\n }\n this.idMatrix.splice(y, 0, ...rows);\n this.area.bottom += numRows;\n\n this.pushHistory({\n applyed: true,\n operation: 'ADD_ROWS',\n reflection,\n y,\n numRows,\n idMatrix: rows,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public deleteRows({\n y,\n numRows,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.minNumRows !== -1 && this.getNumRows() - numRows < this.minNumRows) {\n console.error(`At least ${this.minNumRows} row(s) are required.`);\n return this;\n }\n\n const ys: number[] = [];\n for (let i = y; i < y + numRows; i++) {\n const cell = this.getByPoint({ y: i, x: 0 });\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.DeleteRow)) {\n console.warn(`Cannot delete row ${i}.`);\n return this;\n }\n ys.unshift(i);\n }\n\n const deleted: MatrixType = [];\n ys.forEach((y) => {\n const row = this.idMatrix.splice(y, 1);\n deleted.unshift(row[0]);\n });\n this.area.bottom -= ys.length;\n this.pushHistory({\n applyed: true,\n operation: 'DELETE_ROWS',\n reflection,\n ys: ys.reverse(),\n deleted,\n });\n return this.shallowCopy({ copyCache: false });\n }\n\n public addColsAndUpdate({\n x,\n numCols,\n baseX,\n diff,\n partial,\n updateChangedAt,\n reflection = {},\n }: {\n x: number;\n numCols: number;\n baseX: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }) {\n const returned = this.addCols({\n x,\n numCols,\n baseX,\n reflection,\n });\n\n Object.assign(this.lastHistory!, this._update({ diff, partial, updateChangedAt }), { partial });\n return returned;\n }\n\n public addCols({\n x,\n numCols,\n baseX,\n reflection = {},\n }: {\n x: number;\n numCols: number;\n baseX: number;\n reflection?: StoreReflectionType;\n }) {\n if (this.maxNumCols !== -1 && this.getNumCols() + numCols > this.maxNumCols) {\n console.error(`Columns are limited to ${this.maxNumCols}.`);\n return this;\n }\n const numRows = this.getNumRows(1);\n const rows: IdMatrix = [];\n const changedAt = new Date();\n for (let i = 0; i < numRows; i++) {\n const row: Ids = [];\n for (let j = 0; j < numCols; j++) {\n const id = this.generateId();\n row.push(id);\n const cell = this.getByPoint({ y: i, x: baseX });\n const copied = this.copyCellLayout(cell);\n this.idMatrix[i].splice(x, 0, id);\n this.data[id] = { ...copied, changedAt };\n }\n rows.push(row);\n }\n this.area.right += numCols;\n\n this.pushHistory({\n applyed: true,\n operation: 'ADD_COLS',\n reflection,\n x,\n numCols,\n idMatrix: rows,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public deleteCols({\n x,\n numCols,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n x: number;\n numCols: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.minNumCols !== -1 && this.getNumCols() - numCols < this.minNumCols) {\n console.error(`At least ${this.minNumCols} column(s) are required.`);\n return this;\n }\n\n const xs: number[] = [];\n for (let i = x; i < x + numCols; i++) {\n const cell = this.getByPoint({ y: 0, x: i });\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.DeleteCol)) {\n console.warn(`Cannot delete col ${i}.`);\n continue;\n }\n xs.unshift(i);\n }\n\n const deleted: MatrixType = [];\n this.idMatrix.forEach((row) => {\n const deleting: Ids = [];\n deleted.push(deleting);\n // reverse and delete\n xs.forEach((x) => {\n deleting.unshift(...row.splice(x, 1));\n });\n });\n this.area.right -= xs.length;\n\n this.pushHistory({\n applyed: true,\n operation: 'DELETE_COLS',\n reflection,\n xs: xs.reverse(),\n deleted,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public getHistories() {\n return [...this.histories];\n }\n public getHistoryIndex() {\n return this.historyIndex;\n }\n public getHistorySize() {\n return this.histories.length;\n }\n public getHistoryLimit() {\n return this.historyLimit;\n }\n\n public setFunctions(additionalFunctions: FunctionMapping) {\n this.functions = { ...functionsDefault, ...additionalFunctions };\n }\n\n public getArea(): AreaType {\n return { ...this.area };\n }\n\n public parse(point: PointType, value: string) {\n const cell = this.getByPoint(point) || {};\n const parser = this.parsers[cell.parser || ''] || defaultParser;\n return parser.call(value, cell);\n }\n\n public render(point: PointType, writer?: WriterType) {\n const cell = this.getByPoint(point) || {};\n const renderer = this.renderers[cell.renderer || ''] || defaultRenderer;\n return renderer.call(this, point, writer);\n }\n\n public stringify(point: PointType, value?: any, evaluates = false) {\n const cell = this.getByPoint(point);\n const renderer = this.renderers[cell?.renderer || ''] || defaultRenderer;\n const s = renderer.stringify(typeof value === 'undefined' ? { ...cell } : { ...cell, value });\n\n if (s[0] === '=') {\n if (evaluates) {\n return String(solveFormula({ value: s, table: this, raise: false, evaluates, origin: point }));\n }\n const lexer = new Lexer(s.substring(1));\n lexer.tokenize();\n return '=' + lexer.stringifyToRef(this);\n }\n return s;\n }\n\n public trim(area: AreaType): Table {\n const copied: Table = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n copied.area = area;\n // this causes RangeError on circular reference(maximum call stack size exceeded)\n // copied.solvedCaches = {};\n return copied;\n }\n\n public getIdByAddress(address: Address) {\n let table: Table = this;\n if (address.indexOf('!') !== -1) {\n const [sheetName, addr] = address.split('!');\n const sheetId = this.sheets[stripSheetName(sheetName)];\n table = this.tables[sheetId];\n address = addr;\n }\n const { y, x } = a2p(address);\n const id = table.getId({ y, x });\n if (id) {\n const prefix = table === this ? '' : `#${table.sheetId}!`;\n return `${prefix}#${x < 0 ? '$' : ''}${id}${y < 0 ? '$' : ''}`;\n }\n }\n\n private applyDiff(diff: CellsByIdType, partial = true) {\n if (!partial) {\n Object.assign(this.data, diff);\n return;\n }\n Object.keys(diff).map((id) => {\n const cell = diff[id];\n this.data[id] = { ...this.getById(id), ...cell };\n });\n }\n\n public undo() {\n if (this.historyIndex < 0) {\n return { history: null, newTable: this as Table };\n }\n const history = this.histories[this.historyIndex--];\n history.applyed = false;\n this.currentHistory = history;\n switch (history.operation) {\n case 'UPDATE':\n // diffBefore is guaranteed as total of cell (not partial)\n this.applyDiff(history.diffBefore, false);\n break;\n case 'ADD_ROWS': {\n if (history.diffBefore) {\n this.applyDiff(history.diffBefore, false);\n }\n const { height } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.splice(history.y, height);\n this.area.bottom -= height;\n break;\n }\n case 'ADD_COLS': {\n if (history.diffBefore) {\n this.applyDiff(history.diffBefore, false);\n }\n const { width } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.forEach((row) => {\n row.splice(history.x, width);\n });\n this.area.right -= width;\n break;\n }\n case 'DELETE_ROWS': {\n const { ys, deleted } = history;\n ys.forEach((y, i) => {\n this.idMatrix.splice(y, 0, deleted[i]);\n });\n this.area.bottom += ys.length;\n break;\n }\n case 'DELETE_COLS': {\n const { xs, deleted } = history;\n this.idMatrix.forEach((row, i) => {\n for (let j = 0; j < xs.length; j++) {\n row.splice(xs[j], 0, deleted[i][j]);\n }\n });\n this.area.right += xs.length;\n break;\n }\n case 'MOVE': {\n const { top: yFrom, left: xFrom } = history.src;\n const { top: yTo, left: xTo } = history.dst;\n const { height: rows, width: cols } = matrixShape({\n matrix: history.matrixFrom,\n base: -1,\n });\n putMatrix(this.idMatrix, history.matrixFrom, {\n top: yFrom,\n left: xFrom,\n bottom: yFrom + rows,\n right: xFrom + cols,\n });\n putMatrix(this.idMatrix, history.matrixTo, {\n top: yTo,\n left: xTo,\n bottom: yTo + rows,\n right: xTo + cols,\n });\n break;\n }\n }\n return {\n history,\n newTable: this.shallowCopy({\n copyCache: !shouldTracking(history.operation),\n }),\n };\n }\n\n public redo() {\n if (this.historyIndex + 1 >= this.histories.length) {\n return { history: null, newTable: this as Table };\n }\n const history = this.histories[++this.historyIndex];\n history.applyed = true;\n this.currentHistory = history;\n\n switch (history.operation) {\n case 'UPDATE':\n this.applyDiff(history.diffAfter, history.partial);\n break;\n case 'ADD_ROWS': {\n if (history.diffAfter) {\n this.applyDiff(history.diffAfter, history.partial);\n }\n const { height } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.splice(history.y, 0, ...history.idMatrix);\n this.area.bottom += height;\n break;\n }\n case 'ADD_COLS': {\n if (history.diffAfter) {\n this.applyDiff(history.diffAfter, history.partial);\n }\n const { width } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.map((row, i) => {\n row.splice(history.x, 0, ...history.idMatrix[i]);\n });\n this.area.right += width;\n break;\n }\n case 'DELETE_ROWS': {\n const { ys } = history;\n [...ys].reverse().forEach((y) => {\n this.idMatrix.splice(y, 1);\n });\n this.area.bottom -= ys.length;\n break;\n }\n case 'DELETE_COLS': {\n const { xs } = history;\n [...xs].reverse().forEach((x) => {\n this.idMatrix.forEach((row) => {\n row.splice(x, 1);\n });\n });\n this.area.right -= xs.length;\n break;\n }\n case 'MOVE': {\n const { src, dst } = history;\n this.move({ src, dst, operator: 'USER', historicize: false });\n }\n }\n return {\n history,\n newTable: this.shallowCopy({\n copyCache: !shouldTracking(history.operation),\n }),\n };\n }\n public getFunction(name: string) {\n return this.functions[name];\n }\n\n public getLabel(key: string, n: number) {\n const labeler = this.labelers[key];\n return labeler?.(n);\n }\n public getBase() {\n return this;\n }\n public getSolvedCache(key: string) {\n return this.solvedCaches[key];\n }\n public setSolvedCache(key: string, value: any) {\n this.solvedCaches[key] = value;\n }\n public wrappedSheetName() {\n const sheetName = this.sheetName;\n if (sheetName.indexOf(' ') !== -1) {\n return `'${sheetName}'`;\n }\n return sheetName;\n }\n public sheetPrefix(omit = false) {\n if (omit) {\n return '';\n }\n if (this.sheetName) {\n return `${this.wrappedSheetName()}!`;\n }\n return '';\n }\n public rangeToArea(range: string) {\n const cells = range.split(':');\n let [start, end] = cells;\n if (start.match(/[a-zA-Z]$/)) {\n start += '1';\n }\n if (start.match(/^[1-9]/)) {\n start = `A${start}`;\n }\n if (end?.match(/[a-zA-Z]$/)) {\n end += this.bottom;\n }\n if (end?.match(/^[1-9]/)) {\n end = `${x2c(this.right)}${end}`;\n }\n const { y: top, x: left } = a2p(start);\n const { y: bottom, x: right } = a2p(end || start);\n return {\n top: Math.abs(top),\n left: Math.abs(left),\n bottom: Math.abs(bottom),\n right: Math.abs(right),\n };\n }\n}\n"],"names":["functions","functionsDefault","address","prevention.isPrevented","prevention.MoveFrom","prevention.MoveTo","prevention.Update","prevention.Write","prevention.Style","prevention.Resize","prevention.SetRenderer","prevention.SetParser","prevention.DeleteRow","y","prevention.DeleteCol","x"],"mappings":"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"}
|
package/dist/lib/time.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import dayjs from "../_virtual/dayjs.min.js";
|
|
2
|
-
const defaultTimeDeltaFormat = "HH:mm:ss";
|
|
3
|
-
const BASE_DATE = /* @__PURE__ */ new Date("2345-01-02T03:04:05Z");
|
|
4
|
-
const UNITS = ["year", "month", "day", "hour", "minute", "second", "millisecond"];
|
|
5
|
-
const ADD_FNS = UNITS.map(
|
|
6
|
-
(unit) => (date, amount) => dayjs(date).add(amount, unit).toDate()
|
|
7
|
-
);
|
|
8
|
-
const SUB_FNS = UNITS.map(
|
|
9
|
-
(unit) => (date, amount) => dayjs(date).subtract(amount, unit).toDate()
|
|
10
|
-
);
|
|
11
|
-
class TimeDelta {
|
|
12
|
-
constructor(date1, date2, format = defaultTimeDeltaFormat) {
|
|
13
|
-
this.gsType = "TimeDelta";
|
|
14
|
-
this.diff = [0, 0, 0, 0, 0, 0, 0];
|
|
15
|
-
this.diff = [
|
|
16
|
-
date1.getFullYear() - date2.getFullYear(),
|
|
17
|
-
date1.getMonth() - date2.getMonth(),
|
|
18
|
-
date1.getDate() - date2.getDate(),
|
|
19
|
-
date1.getHours() - date2.getHours(),
|
|
20
|
-
date1.getMinutes() - date2.getMinutes(),
|
|
21
|
-
date1.getSeconds() - date2.getSeconds(),
|
|
22
|
-
date1.getMilliseconds() - date2.getMilliseconds()
|
|
23
|
-
];
|
|
24
|
-
this.date1 = date1;
|
|
25
|
-
this.date2 = date2;
|
|
26
|
-
this.format = format;
|
|
27
|
-
}
|
|
28
|
-
add(date) {
|
|
29
|
-
this.diff.forEach((n, i) => {
|
|
30
|
-
date = ADD_FNS[i](date, n);
|
|
31
|
-
});
|
|
32
|
-
return date;
|
|
33
|
-
}
|
|
34
|
-
sub(date) {
|
|
35
|
-
this.diff.forEach((n, i) => {
|
|
36
|
-
date = SUB_FNS[i](date, n);
|
|
37
|
-
});
|
|
38
|
-
return date;
|
|
39
|
-
}
|
|
40
|
-
stringify(format) {
|
|
41
|
-
if (format == null) {
|
|
42
|
-
format = this.format;
|
|
43
|
-
}
|
|
44
|
-
const tokens = [];
|
|
45
|
-
const msecs = this.date1.getMilliseconds() - this.date2.getMilliseconds();
|
|
46
|
-
let secs = (this.date1.getTime() - this.date2.getTime()) / 1e3;
|
|
47
|
-
for (const divider of [3600, 60]) {
|
|
48
|
-
tokens.push(Math.floor(secs / divider));
|
|
49
|
-
secs %= divider;
|
|
50
|
-
}
|
|
51
|
-
tokens.push(secs, msecs);
|
|
52
|
-
let result = format;
|
|
53
|
-
result = result.replace("HH", String(tokens[0]).padStart(2, "0"));
|
|
54
|
-
result = result.replace("H", String(tokens[0]));
|
|
55
|
-
result = result.replace("mm", String(tokens[1]).padStart(2, "0"));
|
|
56
|
-
result = result.replace("ss", String(tokens[2]).padStart(2, "0"));
|
|
57
|
-
result = result.replace("SSS", String(tokens[3]).padStart(3, "0"));
|
|
58
|
-
result = result.replace("SS", String(tokens[3]).padStart(2, "0").substring(0, 2));
|
|
59
|
-
result = result.replace("S", String(tokens[3]).padStart(1, "0").substring(0, 1));
|
|
60
|
-
return result;
|
|
61
|
-
}
|
|
62
|
-
toJSON() {
|
|
63
|
-
return this.stringify();
|
|
64
|
-
}
|
|
65
|
-
toString() {
|
|
66
|
-
return this.stringify();
|
|
67
|
-
}
|
|
68
|
-
static create(hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {
|
|
69
|
-
const diff = [0, 0, 0, hours, minutes, seconds, milliseconds];
|
|
70
|
-
let date = BASE_DATE;
|
|
71
|
-
diff.forEach((n, i) => {
|
|
72
|
-
date = ADD_FNS[i](date, n);
|
|
73
|
-
});
|
|
74
|
-
return new TimeDelta(date, BASE_DATE);
|
|
75
|
-
}
|
|
76
|
-
static is(obj) {
|
|
77
|
-
if (obj instanceof TimeDelta) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
if ((obj == null ? void 0 : obj.gsType) === "TimeDelta") {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
static ensure(obj) {
|
|
86
|
-
if (obj instanceof TimeDelta) {
|
|
87
|
-
return obj;
|
|
88
|
-
}
|
|
89
|
-
if ((obj == null ? void 0 : obj.gsType) === "TimeDelta") {
|
|
90
|
-
return TimeDelta.fromObject(obj);
|
|
91
|
-
}
|
|
92
|
-
return TimeDelta.create();
|
|
93
|
-
}
|
|
94
|
-
static fromObject(obj) {
|
|
95
|
-
return new TimeDelta(new Date(obj.date1), new Date(obj.date2));
|
|
96
|
-
}
|
|
97
|
-
static parse(value, format = defaultTimeDeltaFormat, strict = false) {
|
|
98
|
-
{
|
|
99
|
-
const formattedMatcher = dayjsFormatToNamedRegex(format);
|
|
100
|
-
const match = value.match(formattedMatcher);
|
|
101
|
-
if (match == null ? void 0 : match.groups) {
|
|
102
|
-
return TimeDelta.create(
|
|
103
|
-
Number(match.groups.HH || match.groups.H || 0),
|
|
104
|
-
Number(match.groups.mm || match.groups.m || 0),
|
|
105
|
-
Number(match.groups.ss || match.groups.s || 0),
|
|
106
|
-
Number(match.groups.SSS || match.groups.SS || match.groups.S || 0)
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (strict) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
{
|
|
114
|
-
const match = value.match(/^([+-]?)(\d+):(\d{2})$/);
|
|
115
|
-
if (match) {
|
|
116
|
-
const [, _sign, hours, minutes] = match;
|
|
117
|
-
const sign = _sign === "-" ? -1 : 1;
|
|
118
|
-
return TimeDelta.create(sign * Number(hours), sign * Number(minutes));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
{
|
|
122
|
-
const match = value.match(/^([+-]?)(\d+):(\d{2}):(\d{2})$/);
|
|
123
|
-
if (match) {
|
|
124
|
-
const [, _sign, hours, minutes, seconds] = match;
|
|
125
|
-
const sign = _sign === "-" ? -1 : 1;
|
|
126
|
-
return TimeDelta.create(sign * Number(hours), sign * Number(minutes), sign * Number(seconds));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
{
|
|
130
|
-
const match = value.match(/^([+-]?)(\d+):(\d{2}):(\d{2})\.(\d+)$/);
|
|
131
|
-
if (match) {
|
|
132
|
-
const [, _sign, hours, minutes, seconds, msecs] = match;
|
|
133
|
-
const sign = _sign === "-" ? -1 : 1;
|
|
134
|
-
return TimeDelta.create(
|
|
135
|
-
sign * Number(hours),
|
|
136
|
-
sign * Number(minutes),
|
|
137
|
-
sign * Number(seconds),
|
|
138
|
-
sign * Number(msecs)
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
const tokenRegexMap = {
|
|
145
|
-
HH: { group: "HH", pattern: "(?<HH>\\d+)" },
|
|
146
|
-
H: { group: "H", pattern: "(?<HH>\\d+)" },
|
|
147
|
-
mm: { group: "mm", pattern: "(?<mm>[0-5]\\d)" },
|
|
148
|
-
m: { group: "m", pattern: "(?<m>\\d|[1-5]\\d)" },
|
|
149
|
-
ss: { group: "ss", pattern: "(?<ss>[0-5]\\d)" },
|
|
150
|
-
s: { group: "s", pattern: "(?<s>\\d|[1-5]\\d)" },
|
|
151
|
-
SSS: { group: "SSS", pattern: "(?<SSS>\\d{3})" },
|
|
152
|
-
SS: { group: "SS", pattern: "(?<SS>\\d{2})" },
|
|
153
|
-
S: { group: "S", pattern: "(?<S>\\d)" }
|
|
154
|
-
};
|
|
155
|
-
function dayjsFormatToNamedRegex(format) {
|
|
156
|
-
const sortedTokens = Object.keys(tokenRegexMap).sort((a, b) => b.length - a.length);
|
|
157
|
-
const tokenPattern = new RegExp(sortedTokens.join("|"), "g");
|
|
158
|
-
const escapedFormat = format.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
|
|
159
|
-
const regexSource = escapedFormat.replace(tokenPattern, (match) => {
|
|
160
|
-
var _a;
|
|
161
|
-
return ((_a = tokenRegexMap[match]) == null ? void 0 : _a.pattern) ?? match;
|
|
162
|
-
});
|
|
163
|
-
return new RegExp(`^${regexSource}$`);
|
|
164
|
-
}
|
|
165
|
-
export {
|
|
166
|
-
BASE_DATE,
|
|
167
|
-
TimeDelta,
|
|
168
|
-
defaultTimeDeltaFormat
|
|
169
|
-
};
|
|
170
|
-
//# sourceMappingURL=time.js.map
|
package/dist/lib/time.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sources":["../../lib/time.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\nexport const defaultTimeDeltaFormat = 'HH:mm:ss';\n\nexport const BASE_DATE = new Date('2345-01-02T03:04:05Z');\ntype DiffFunction = (date: Date | number, amount: number) => Date;\nconst UNITS = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'] as const;\nconst ADD_FNS = UNITS.map(\n (unit) => (date: Date, amount: number) => dayjs(date).add(amount, unit).toDate(),\n) as DiffFunction[];\nconst SUB_FNS = UNITS.map(\n (unit) => (date: Date, amount: number) => dayjs(date).subtract(amount, unit).toDate(),\n) as DiffFunction[];\n\ntype Diff = [number, number, number, number, number, number, number];\n\nexport class TimeDelta {\n public gsType = 'TimeDelta';\n protected diff: Diff = [0, 0, 0, 0, 0, 0, 0];\n private date1: Date;\n private date2: Date;\n public format: string;\n\n constructor(date1: Date, date2: Date, format = defaultTimeDeltaFormat) {\n this.diff = [\n date1.getFullYear() - date2.getFullYear(),\n date1.getMonth() - date2.getMonth(),\n date1.getDate() - date2.getDate(),\n date1.getHours() - date2.getHours(),\n date1.getMinutes() - date2.getMinutes(),\n date1.getSeconds() - date2.getSeconds(),\n date1.getMilliseconds() - date2.getMilliseconds(),\n ];\n this.date1 = date1;\n this.date2 = date2;\n this.format = format;\n }\n public add(date: Date) {\n this.diff.forEach((n, i) => {\n date = ADD_FNS[i](date, n);\n });\n return date;\n }\n public sub(date: Date) {\n this.diff.forEach((n, i) => {\n date = SUB_FNS[i](date, n);\n });\n return date;\n }\n\n public stringify(format?: string) {\n if (format == null) {\n format = this.format;\n }\n const tokens = [];\n const msecs = this.date1.getMilliseconds() - this.date2.getMilliseconds();\n let secs = (this.date1.getTime() - this.date2.getTime()) / 1000;\n for (const divider of [3600, 60]) {\n tokens.push(Math.floor(secs / divider));\n secs %= divider;\n }\n tokens.push(secs, msecs);\n let result = format;\n result = result.replace('HH', String(tokens[0]).padStart(2, '0'));\n result = result.replace('H', String(tokens[0]));\n result = result.replace('mm', String(tokens[1]).padStart(2, '0'));\n result = result.replace('ss', String(tokens[2]).padStart(2, '0'));\n result = result.replace('SSS', String(tokens[3]).padStart(3, '0'));\n result = result.replace('SS', String(tokens[3]).padStart(2, '0').substring(0, 2));\n result = result.replace('S', String(tokens[3]).padStart(1, '0').substring(0, 1));\n return result;\n }\n\n public toJSON() {\n return this.stringify();\n }\n\n public toString() {\n return this.stringify();\n }\n\n static create(hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n const diff: Diff = [0, 0, 0, hours, minutes, seconds, milliseconds];\n let date = BASE_DATE;\n diff.forEach((n, i) => {\n date = ADD_FNS[i](date, n);\n });\n return new TimeDelta(date, BASE_DATE);\n }\n\n static is(obj: any): boolean {\n if (obj instanceof TimeDelta) {\n return true;\n }\n if (obj?.gsType === 'TimeDelta') {\n return true;\n }\n return false;\n }\n\n static ensure(obj: any) {\n if (obj instanceof TimeDelta) {\n return obj;\n }\n if (obj?.gsType === 'TimeDelta') {\n return TimeDelta.fromObject(obj);\n }\n return TimeDelta.create();\n }\n static fromObject(obj: any) {\n return new TimeDelta(new Date(obj.date1), new Date(obj.date2));\n }\n static parse(value: string, format = defaultTimeDeltaFormat, strict = false): TimeDelta | undefined {\n {\n const formattedMatcher = dayjsFormatToNamedRegex(format);\n const match = value.match(formattedMatcher);\n if (match?.groups) {\n return TimeDelta.create(\n Number(match.groups.HH || match.groups.H || 0),\n Number(match.groups.mm || match.groups.m || 0),\n Number(match.groups.ss || match.groups.s || 0),\n Number(match.groups.SSS || match.groups.SS || match.groups.S || 0),\n );\n }\n }\n if (strict) {\n return;\n }\n {\n const match = value.match(/^([+-]?)(\\d+):(\\d{2})$/);\n if (match) {\n const [, _sign, hours, minutes] = match;\n const sign = _sign === '-' ? -1 : 1;\n return TimeDelta.create(sign * Number(hours), sign * Number(minutes));\n }\n }\n {\n const match = value.match(/^([+-]?)(\\d+):(\\d{2}):(\\d{2})$/);\n if (match) {\n const [, _sign, hours, minutes, seconds] = match;\n const sign = _sign === '-' ? -1 : 1;\n return TimeDelta.create(sign * Number(hours), sign * Number(minutes), sign * Number(seconds));\n }\n }\n {\n const match = value.match(/^([+-]?)(\\d+):(\\d{2}):(\\d{2})\\.(\\d+)$/);\n if (match) {\n const [, _sign, hours, minutes, seconds, msecs] = match;\n const sign = _sign === '-' ? -1 : 1;\n return TimeDelta.create(\n sign * Number(hours),\n sign * Number(minutes),\n sign * Number(seconds),\n sign * Number(msecs),\n );\n }\n }\n }\n}\n\nconst tokenRegexMap: Record<string, { group: string; pattern: string }> = {\n HH: { group: 'HH', pattern: '(?<HH>\\\\d+)' },\n H: { group: 'H', pattern: '(?<HH>\\\\d+)' },\n mm: { group: 'mm', pattern: '(?<mm>[0-5]\\\\d)' },\n m: { group: 'm', pattern: '(?<m>\\\\d|[1-5]\\\\d)' },\n ss: { group: 'ss', pattern: '(?<ss>[0-5]\\\\d)' },\n s: { group: 's', pattern: '(?<s>\\\\d|[1-5]\\\\d)' },\n SSS: { group: 'SSS', pattern: '(?<SSS>\\\\d{3})' },\n SS: { group: 'SS', pattern: '(?<SS>\\\\d{2})' },\n S: { group: 'S', pattern: '(?<S>\\\\d)' },\n};\n\nfunction dayjsFormatToNamedRegex(format: string): RegExp {\n const sortedTokens = Object.keys(tokenRegexMap).sort((a, b) => b.length - a.length);\n const tokenPattern = new RegExp(sortedTokens.join('|'), 'g');\n\n const escapedFormat = format.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n const regexSource = escapedFormat.replace(tokenPattern, (match) => {\n return tokenRegexMap[match]?.pattern ?? match;\n });\n\n return new RegExp(`^${regexSource}$`);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_WIDTH, DEFAULT_HEIGHT, OVERSCAN_X, OVERSCAN_Y } from "../constants.js";
|
|
2
|
-
import { range } from "./structs.js";
|
|
3
|
-
const getCellRectPositions = (table, e, { y, x }) => {
|
|
4
|
-
var _a, _b;
|
|
5
|
-
let { width, height } = table.getRectSize({
|
|
6
|
-
top: 1,
|
|
7
|
-
left: 1,
|
|
8
|
-
bottom: y,
|
|
9
|
-
right: x
|
|
10
|
-
});
|
|
11
|
-
width += table.headerWidth;
|
|
12
|
-
height += table.headerHeight;
|
|
13
|
-
const w = ((_a = table.getByPoint({ y: 0, x })) == null ? void 0 : _a.width) || DEFAULT_WIDTH;
|
|
14
|
-
const h = ((_b = table.getByPoint({ y, x: 0 })) == null ? void 0 : _b.height) || DEFAULT_HEIGHT;
|
|
15
|
-
return {
|
|
16
|
-
top: height,
|
|
17
|
-
left: width,
|
|
18
|
-
bottom: height + h,
|
|
19
|
-
right: width + w,
|
|
20
|
-
width: w,
|
|
21
|
-
height: h
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
const getScreenRect = (e) => {
|
|
25
|
-
const top = e.scrollTop, left = e.scrollLeft;
|
|
26
|
-
const height = e.offsetHeight, width = e.offsetWidth;
|
|
27
|
-
const bottom = top + height, right = left + width;
|
|
28
|
-
return { top, left, bottom, right, height, width };
|
|
29
|
-
};
|
|
30
|
-
const virtualize = (table, e) => {
|
|
31
|
-
var _a, _b;
|
|
32
|
-
if (e == null) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
let boundaryTop = 0, boundaryLeft = 0, boundaryBottom = table.getNumRows(), boundaryRight = table.getNumCols();
|
|
36
|
-
const { top, left, bottom, right } = getScreenRect(e);
|
|
37
|
-
let width = 0, height = 0;
|
|
38
|
-
for (let x = 1; x <= table.getNumCols(); x++) {
|
|
39
|
-
const w = ((_a = table.getByPoint({ y: 0, x })) == null ? void 0 : _a.width) || DEFAULT_WIDTH;
|
|
40
|
-
width += w;
|
|
41
|
-
if (boundaryLeft === 0 && width > left) {
|
|
42
|
-
boundaryLeft = Math.max(x - OVERSCAN_X, 1);
|
|
43
|
-
}
|
|
44
|
-
if (width > right) {
|
|
45
|
-
boundaryRight = Math.min(x + OVERSCAN_X, table.getNumCols());
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
for (let y = 1; y <= table.getNumRows(); y++) {
|
|
50
|
-
const h = ((_b = table.getByPoint({ y, x: 0 })) == null ? void 0 : _b.height) || DEFAULT_HEIGHT;
|
|
51
|
-
height += h;
|
|
52
|
-
if (boundaryTop === 0 && height > top) {
|
|
53
|
-
boundaryTop = Math.max(y - OVERSCAN_Y, 1);
|
|
54
|
-
}
|
|
55
|
-
if (height > bottom) {
|
|
56
|
-
boundaryBottom = Math.min(y + OVERSCAN_Y, table.getNumRows());
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const ys = range(boundaryTop, boundaryBottom);
|
|
61
|
-
const xs = range(boundaryLeft, boundaryRight);
|
|
62
|
-
const before = table.getRectSize({
|
|
63
|
-
top: 1,
|
|
64
|
-
left: 1,
|
|
65
|
-
bottom: boundaryTop,
|
|
66
|
-
right: boundaryLeft
|
|
67
|
-
});
|
|
68
|
-
const after = table.getRectSize({
|
|
69
|
-
top: boundaryBottom,
|
|
70
|
-
left: boundaryRight,
|
|
71
|
-
bottom: table.getNumRows(),
|
|
72
|
-
right: table.getNumCols()
|
|
73
|
-
});
|
|
74
|
-
return {
|
|
75
|
-
ys,
|
|
76
|
-
xs,
|
|
77
|
-
adjuster: {
|
|
78
|
-
top: before.height,
|
|
79
|
-
left: before.width,
|
|
80
|
-
bottom: after.height,
|
|
81
|
-
right: after.width
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
const smartScroll = (table, e, targetPoint, behavior = "auto") => {
|
|
86
|
-
if (e == null) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
const screen = getScreenRect(e);
|
|
90
|
-
const target = getCellRectPositions(table, e, targetPoint);
|
|
91
|
-
const up = target.top - table.headerHeight;
|
|
92
|
-
const left = target.left - table.headerWidth;
|
|
93
|
-
const down = target.bottom - screen.height + 1;
|
|
94
|
-
const right = target.right - screen.width + 1;
|
|
95
|
-
const isTopOver = up < screen.top;
|
|
96
|
-
const isLeftOver = left < screen.left;
|
|
97
|
-
const isBottomOver = target.bottom > screen.bottom;
|
|
98
|
-
const isRightOver = target.right > screen.right;
|
|
99
|
-
if (isLeftOver) {
|
|
100
|
-
if (isTopOver) {
|
|
101
|
-
e.scrollTo({ left, top: up, behavior });
|
|
102
|
-
} else if (isBottomOver) {
|
|
103
|
-
e.scrollTo({ left, top: down, behavior });
|
|
104
|
-
} else {
|
|
105
|
-
e.scrollTo({ left, top: screen.top, behavior });
|
|
106
|
-
}
|
|
107
|
-
} else if (isRightOver) {
|
|
108
|
-
if (isTopOver) {
|
|
109
|
-
e.scrollTo({ left: right, top: up, behavior });
|
|
110
|
-
} else if (isBottomOver) {
|
|
111
|
-
e.scrollTo({ left: right, top: down, behavior });
|
|
112
|
-
} else {
|
|
113
|
-
e.scrollTo({ left: right, top: screen.top, behavior });
|
|
114
|
-
}
|
|
115
|
-
} else {
|
|
116
|
-
if (isTopOver) {
|
|
117
|
-
e.scrollTo({ left: screen.left, top: up, behavior });
|
|
118
|
-
} else if (isBottomOver) {
|
|
119
|
-
e.scrollTo({ left: screen.left, top: down, behavior });
|
|
120
|
-
} else ;
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
export {
|
|
124
|
-
getCellRectPositions,
|
|
125
|
-
getScreenRect,
|
|
126
|
-
smartScroll,
|
|
127
|
-
virtualize
|
|
128
|
-
};
|
|
129
|
-
//# sourceMappingURL=virtualization.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"virtualization.js","sources":["../../lib/virtualization.ts"],"sourcesContent":["import { DEFAULT_HEIGHT, DEFAULT_WIDTH, OVERSCAN_X, OVERSCAN_Y } from '../constants';\nimport { range } from './structs';\nimport { Table } from './table';\nimport type { PointType, Virtualization } from '../types';\n\nexport const getCellRectPositions = (table: Table, e: HTMLDivElement, { y, x }: PointType) => {\n let { width, height } = table.getRectSize({\n top: 1,\n left: 1,\n bottom: y,\n right: x,\n });\n width += table.headerWidth;\n height += table.headerHeight;\n const w = table.getByPoint({ y: 0, x })?.width || DEFAULT_WIDTH;\n const h = table.getByPoint({ y, x: 0 })?.height || DEFAULT_HEIGHT;\n return {\n top: height,\n left: width,\n bottom: height + h,\n right: width + w,\n width: w,\n height: h,\n };\n};\n\nexport const getScreenRect = (e: HTMLDivElement) => {\n const top = e.scrollTop,\n left = e.scrollLeft;\n const height = e.offsetHeight,\n width = e.offsetWidth;\n const bottom = top + height,\n right = left + width;\n return { top, left, bottom, right, height, width };\n};\n\nexport const virtualize = (table: Table, e: HTMLDivElement | null): Virtualization | null => {\n if (e == null) {\n return null;\n }\n let boundaryTop = 0,\n boundaryLeft = 0,\n boundaryBottom = table.getNumRows(),\n boundaryRight = table.getNumCols();\n\n const { top, left, bottom, right } = getScreenRect(e);\n let width = 0,\n height = 0;\n for (let x = 1; x <= table.getNumCols(); x++) {\n const w = table.getByPoint({ y: 0, x })?.width || DEFAULT_WIDTH;\n width += w;\n if (boundaryLeft === 0 && width > left) {\n boundaryLeft = Math.max(x - OVERSCAN_X, 1);\n }\n if (width > right) {\n boundaryRight = Math.min(x + OVERSCAN_X, table.getNumCols());\n break;\n }\n }\n for (let y = 1; y <= table.getNumRows(); y++) {\n const h = table.getByPoint({ y, x: 0 })?.height || DEFAULT_HEIGHT;\n height += h;\n if (boundaryTop === 0 && height > top) {\n boundaryTop = Math.max(y - OVERSCAN_Y, 1);\n }\n if (height > bottom) {\n boundaryBottom = Math.min(y + OVERSCAN_Y, table.getNumRows());\n break;\n }\n }\n const ys = range(boundaryTop, boundaryBottom);\n const xs = range(boundaryLeft, boundaryRight);\n const before = table.getRectSize({\n top: 1,\n left: 1,\n bottom: boundaryTop,\n right: boundaryLeft,\n });\n const after = table.getRectSize({\n top: boundaryBottom,\n left: boundaryRight,\n bottom: table.getNumRows(),\n right: table.getNumCols(),\n });\n return {\n ys,\n xs,\n adjuster: {\n top: before.height,\n left: before.width,\n bottom: after.height,\n right: after.width,\n },\n };\n};\n\nexport const smartScroll = (\n table: Table,\n e: HTMLDivElement | null,\n targetPoint: PointType,\n behavior: ScrollBehavior = 'auto',\n) => {\n if (e == null) {\n return;\n }\n const screen = getScreenRect(e);\n const target = getCellRectPositions(table, e, targetPoint);\n\n // when header is sticky\n const up = target.top - table.headerHeight;\n const left = target.left - table.headerWidth;\n const down = target.bottom - screen.height + 1;\n const right = target.right - screen.width + 1;\n\n const isTopOver = up < screen.top;\n const isLeftOver = left < screen.left;\n const isBottomOver = target.bottom > screen.bottom;\n const isRightOver = target.right > screen.right;\n\n if (isLeftOver) {\n if (isTopOver) {\n // go left up\n e.scrollTo({ left, top: up, behavior });\n } else if (isBottomOver) {\n // go left down\n e.scrollTo({ left, top: down, behavior });\n } else {\n // go left\n e.scrollTo({ left, top: screen.top, behavior });\n }\n } else if (isRightOver) {\n if (isTopOver) {\n // go right up\n e.scrollTo({ left: right, top: up, behavior });\n } else if (isBottomOver) {\n // go right down\n e.scrollTo({ left: right, top: down, behavior });\n } else {\n // go right\n e.scrollTo({ left: right, top: screen.top, behavior });\n }\n } else {\n if (isTopOver) {\n // go up\n e.scrollTo({ left: screen.left, top: up, behavior });\n } else if (isBottomOver) {\n // go down\n e.scrollTo({ left: screen.left, top: down, behavior });\n } else {\n // go nowhere\n }\n }\n};\n"],"names":[],"mappings":"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"}
|