@gridsheet/react-core 1.0.0-alpha.0 → 1.0.0-alpha.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/{src/components → components}/Cell.d.ts +1 -1
- package/dist/components/Cell.d.ts.map +1 -0
- package/dist/{src/components → components}/Cell.js +30 -25
- package/dist/components/Cell.js.map +1 -0
- package/dist/components/ContextMenu.d.ts +3 -0
- package/dist/components/ContextMenu.d.ts.map +1 -0
- package/dist/{src/components → components}/ContextMenu.js +33 -47
- package/dist/components/ContextMenu.js.map +1 -0
- package/dist/components/Editor.d.ts +3 -0
- package/dist/components/Editor.d.ts.map +1 -0
- package/dist/{src/components → components}/Editor.js +70 -47
- package/dist/components/Editor.js.map +1 -0
- package/dist/{src/components → components}/Emitter.d.ts +2 -2
- package/dist/components/Emitter.d.ts.map +1 -0
- package/dist/{src/components → components}/Emitter.js +1 -1
- package/dist/components/Emitter.js.map +1 -0
- package/dist/{src/components → components}/FormulaBar.d.ts +1 -1
- package/dist/components/FormulaBar.d.ts.map +1 -0
- package/dist/{src/components → components}/FormulaBar.js +11 -11
- package/dist/components/FormulaBar.js.map +1 -0
- package/dist/components/GridSheet.d.ts +4 -0
- package/dist/components/GridSheet.d.ts.map +1 -0
- package/dist/{src/components → components}/GridSheet.js +10 -15
- package/dist/components/GridSheet.js.map +1 -0
- package/dist/{src/components → components}/HorizontalHeaderCell.d.ts +1 -1
- package/dist/components/HorizontalHeaderCell.d.ts.map +1 -0
- package/dist/{src/components → components}/HorizontalHeaderCell.js +6 -6
- package/dist/components/HorizontalHeaderCell.js.map +1 -0
- package/dist/components/Resizer.d.ts +3 -0
- package/dist/components/Resizer.d.ts.map +1 -0
- package/dist/{src/components → components}/Resizer.js +8 -9
- package/dist/components/Resizer.js.map +1 -0
- package/dist/components/SearchBox.d.ts +3 -0
- package/dist/components/SearchBox.d.ts.map +1 -0
- package/dist/{src/components → components}/SearchBox.js +8 -9
- package/dist/components/SearchBox.js.map +1 -0
- package/dist/{src/components → components}/SheetProvider.d.ts +2 -2
- package/dist/components/SheetProvider.d.ts.map +1 -0
- package/dist/{src/components → components}/SheetProvider.js +0 -1
- package/dist/components/SheetProvider.js.map +1 -0
- package/dist/components/StoreInitializer.d.ts +4 -0
- package/dist/components/StoreInitializer.d.ts.map +1 -0
- package/dist/{src/components → components}/StoreInitializer.js +4 -4
- package/dist/components/StoreInitializer.js.map +1 -0
- package/dist/{src/components → components}/Tabular.d.ts +2 -2
- package/dist/components/Tabular.d.ts.map +1 -0
- package/dist/{src/components → components}/Tabular.js +5 -10
- package/dist/components/Tabular.js.map +1 -0
- package/dist/{src/components → components}/VerticalHeaderCell.d.ts +1 -1
- package/dist/components/VerticalHeaderCell.d.ts.map +1 -0
- package/dist/{src/components → components}/VerticalHeaderCell.js +6 -6
- package/dist/components/VerticalHeaderCell.js.map +1 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/{src/constants.js → constants.js} +2 -3
- package/dist/constants.js.map +1 -0
- package/dist/{src/formula → formula}/evaluator.d.ts +16 -24
- package/dist/formula/evaluator.d.ts.map +1 -0
- package/dist/{src/formula → formula}/evaluator.js +202 -193
- package/dist/formula/evaluator.js.map +1 -0
- package/dist/{src/formula → formula}/functions/__base.d.ts +3 -3
- package/dist/formula/functions/__base.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/__base.js +5 -3
- package/dist/formula/functions/__base.js.map +1 -0
- package/dist/formula/functions/__utils.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/__utils.js +29 -26
- package/dist/formula/functions/__utils.js.map +1 -0
- package/dist/{src/formula → formula}/functions/abs.d.ts +1 -1
- package/dist/formula/functions/abs.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/abs.js +4 -4
- package/dist/formula/functions/abs.js.map +1 -0
- package/dist/formula/functions/abs.spec.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/abs.spec.js +3 -3
- package/dist/formula/functions/abs.spec.js.map +1 -0
- package/dist/{src/formula → formula}/functions/acos.d.ts +1 -1
- package/dist/formula/functions/acos.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/acos.js +6 -6
- package/dist/formula/functions/acos.js.map +1 -0
- package/dist/{src/formula → formula}/functions/add.d.ts +2 -2
- package/dist/formula/functions/add.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/add.js +10 -13
- package/dist/formula/functions/add.js.map +1 -0
- package/dist/{src/formula → formula}/functions/and.d.ts +1 -1
- package/dist/formula/functions/and.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/and.js +5 -8
- package/dist/formula/functions/and.js.map +1 -0
- package/dist/{src/formula → formula}/functions/asin.d.ts +1 -1
- package/dist/formula/functions/asin.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/asin.js +6 -6
- package/dist/formula/functions/asin.js.map +1 -0
- package/dist/{src/formula → formula}/functions/atan.d.ts +1 -1
- package/dist/formula/functions/atan.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/atan.js +5 -5
- package/dist/formula/functions/atan.js.map +1 -0
- package/dist/{src/formula → formula}/functions/atan2.d.ts +1 -1
- package/dist/formula/functions/atan2.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/atan2.js +7 -7
- package/dist/formula/functions/atan2.js.map +1 -0
- package/dist/{src/formula → formula}/functions/average.d.ts +1 -1
- package/dist/formula/functions/average.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/average.js +10 -8
- package/dist/formula/functions/average.js.map +1 -0
- package/dist/{src/formula → formula}/functions/col.d.ts +2 -2
- package/dist/formula/functions/col.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/col.js +6 -5
- package/dist/formula/functions/col.js.map +1 -0
- package/dist/{src/formula → formula}/functions/concat.d.ts +1 -1
- package/dist/formula/functions/concat.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/concat.js +4 -7
- package/dist/formula/functions/concat.js.map +1 -0
- package/dist/{src/formula → formula}/functions/concatenate.d.ts +1 -1
- package/dist/formula/functions/concatenate.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/concatenate.js +4 -4
- package/dist/formula/functions/concatenate.js.map +1 -0
- package/dist/{src/formula → formula}/functions/cos.d.ts +1 -1
- package/dist/formula/functions/cos.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/cos.js +5 -5
- package/dist/formula/functions/cos.js.map +1 -0
- package/dist/{src/formula → formula}/functions/count.d.ts +1 -1
- package/dist/formula/functions/count.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/count.js +7 -6
- package/dist/formula/functions/count.js.map +1 -0
- package/dist/{src/formula → formula}/functions/counta.d.ts +1 -1
- package/dist/formula/functions/counta.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/counta.js +7 -6
- package/dist/formula/functions/counta.js.map +1 -0
- package/dist/{src/formula → formula}/functions/countif.d.ts +2 -2
- package/dist/formula/functions/countif.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/countif.js +6 -8
- package/dist/formula/functions/countif.js.map +1 -0
- package/dist/{src/formula → formula}/functions/divide.d.ts +1 -1
- package/dist/formula/functions/divide.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/divide.js +7 -10
- package/dist/formula/functions/divide.js.map +1 -0
- package/dist/{src/formula → formula}/functions/eq.d.ts +1 -1
- package/dist/formula/functions/eq.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/eq.js +5 -5
- package/dist/formula/functions/eq.js.map +1 -0
- package/dist/{src/formula → formula}/functions/exp.d.ts +1 -1
- package/dist/formula/functions/exp.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/exp.js +5 -7
- package/dist/formula/functions/exp.js.map +1 -0
- package/dist/{src/formula → formula}/functions/gt.d.ts +1 -1
- package/dist/formula/functions/gt.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/gt.js +5 -5
- package/dist/formula/functions/gt.js.map +1 -0
- package/dist/{src/formula → formula}/functions/gte.d.ts +1 -1
- package/dist/formula/functions/gte.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/gte.js +5 -5
- package/dist/formula/functions/gte.js.map +1 -0
- package/dist/{src/formula → formula}/functions/hlookup.d.ts +2 -2
- package/dist/formula/functions/hlookup.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/hlookup.js +12 -12
- package/dist/formula/functions/hlookup.js.map +1 -0
- package/dist/{src/formula → formula}/functions/if.d.ts +1 -1
- package/dist/formula/functions/if.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/if.js +8 -8
- package/dist/formula/functions/if.js.map +1 -0
- package/dist/{src/formula → formula}/functions/iferror.d.ts +1 -1
- package/dist/formula/functions/iferror.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/iferror.js +6 -6
- package/dist/formula/functions/iferror.js.map +1 -0
- package/dist/formula/functions/iferror.spec.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/iferror.spec.js +15 -14
- package/dist/formula/functions/iferror.spec.js.map +1 -0
- package/dist/{src/formula → formula}/functions/len.d.ts +1 -1
- package/dist/formula/functions/len.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/len.js +5 -5
- package/dist/formula/functions/len.js.map +1 -0
- package/dist/{src/formula → formula}/functions/lenb.d.ts +1 -1
- package/dist/formula/functions/lenb.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/lenb.js +6 -6
- package/dist/formula/functions/lenb.js.map +1 -0
- package/dist/{src/formula → formula}/functions/ln.d.ts +1 -1
- package/dist/formula/functions/ln.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/ln.js +6 -6
- package/dist/formula/functions/ln.js.map +1 -0
- package/dist/{src/formula → formula}/functions/log.d.ts +1 -1
- package/dist/formula/functions/log.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/log.js +8 -10
- package/dist/formula/functions/log.js.map +1 -0
- package/dist/{src/formula → formula}/functions/log10.d.ts +1 -1
- package/dist/formula/functions/log10.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/log10.js +6 -6
- package/dist/formula/functions/log10.js.map +1 -0
- package/dist/{src/formula → formula}/functions/lt.d.ts +1 -1
- package/dist/formula/functions/lt.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/lt.js +5 -5
- package/dist/formula/functions/lt.js.map +1 -0
- package/dist/{src/formula → formula}/functions/lte.d.ts +1 -1
- package/dist/formula/functions/lte.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/lte.js +5 -5
- package/dist/formula/functions/lte.js.map +1 -0
- package/dist/{src/formula → formula}/functions/max.d.ts +1 -1
- package/dist/formula/functions/max.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/max.js +10 -8
- package/dist/formula/functions/max.js.map +1 -0
- package/dist/{src/formula → formula}/functions/min.d.ts +1 -1
- package/dist/formula/functions/min.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/min.js +10 -8
- package/dist/formula/functions/min.js.map +1 -0
- package/dist/{src/formula → formula}/functions/minus.d.ts +2 -2
- package/dist/formula/functions/minus.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/minus.js +9 -12
- package/dist/formula/functions/minus.js.map +1 -0
- package/dist/{src/formula → formula}/functions/mod.d.ts +1 -1
- package/dist/formula/functions/mod.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/mod.js +7 -7
- package/dist/formula/functions/mod.js.map +1 -0
- package/dist/formula/functions/mod.spec.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/mod.spec.js +23 -8
- package/dist/formula/functions/mod.spec.js.map +1 -0
- package/dist/{src/formula → formula}/functions/multiply.d.ts +1 -1
- package/dist/formula/functions/multiply.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/multiply.js +5 -8
- package/dist/formula/functions/multiply.js.map +1 -0
- package/dist/{src/formula → formula}/functions/ne.d.ts +1 -1
- package/dist/formula/functions/ne.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/ne.js +5 -5
- package/dist/formula/functions/ne.js.map +1 -0
- package/dist/{src/formula → formula}/functions/not.d.ts +1 -1
- package/dist/formula/functions/not.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/not.js +5 -8
- package/dist/formula/functions/not.js.map +1 -0
- package/dist/{src/formula → formula}/functions/now.d.ts +1 -1
- package/dist/formula/functions/now.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/now.js +3 -5
- package/dist/formula/functions/now.js.map +1 -0
- package/dist/{src/formula → formula}/functions/or.d.ts +1 -1
- package/dist/formula/functions/or.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/or.js +5 -8
- package/dist/formula/functions/or.js.map +1 -0
- package/dist/{src/formula → formula}/functions/pi.d.ts +1 -1
- package/dist/formula/functions/pi.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/pi.js +3 -3
- package/dist/formula/functions/pi.js.map +1 -0
- package/dist/{src/formula → formula}/functions/power.d.ts +1 -1
- package/dist/formula/functions/power.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/power.js +5 -5
- package/dist/formula/functions/power.js.map +1 -0
- package/dist/{src/formula → formula}/functions/product.d.ts +1 -1
- package/dist/formula/functions/product.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/product.js +9 -7
- package/dist/formula/functions/product.js.map +1 -0
- package/dist/{src/formula → formula}/functions/radians.d.ts +1 -1
- package/dist/formula/functions/radians.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/radians.js +5 -5
- package/dist/formula/functions/radians.js.map +1 -0
- package/dist/{src/formula → formula}/functions/rand.d.ts +1 -1
- package/dist/formula/functions/rand.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/rand.js +3 -3
- package/dist/formula/functions/rand.js.map +1 -0
- package/dist/{src/formula → formula}/functions/round.d.ts +1 -1
- package/dist/formula/functions/round.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/round.js +7 -9
- package/dist/formula/functions/round.js.map +1 -0
- package/dist/{src/formula → formula}/functions/rounddown.d.ts +1 -1
- package/dist/formula/functions/rounddown.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/rounddown.js +7 -9
- package/dist/formula/functions/rounddown.js.map +1 -0
- package/dist/{src/formula → formula}/functions/roundup.d.ts +1 -1
- package/dist/formula/functions/roundup.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/roundup.js +7 -9
- package/dist/formula/functions/roundup.js.map +1 -0
- package/dist/{src/formula → formula}/functions/row.d.ts +2 -2
- package/dist/formula/functions/row.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/row.js +6 -5
- package/dist/formula/functions/row.js.map +1 -0
- package/dist/{src/formula → formula}/functions/sin.d.ts +1 -1
- package/dist/formula/functions/sin.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/sin.js +5 -5
- package/dist/formula/functions/sin.js.map +1 -0
- package/dist/{src/formula → formula}/functions/sqrt.d.ts +1 -1
- package/dist/formula/functions/sqrt.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/sqrt.js +6 -6
- package/dist/formula/functions/sqrt.js.map +1 -0
- package/dist/{src/formula → formula}/functions/sum.d.ts +1 -1
- package/dist/formula/functions/sum.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/sum.js +10 -8
- package/dist/formula/functions/sum.js.map +1 -0
- package/dist/formula/functions/sum.spec.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/sum.spec.js +9 -10
- package/dist/formula/functions/sum.spec.js.map +1 -0
- package/dist/{src/formula → formula}/functions/sumif.d.ts +2 -2
- package/dist/formula/functions/sumif.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/sumif.js +9 -9
- package/dist/formula/functions/sumif.js.map +1 -0
- package/dist/{src/formula → formula}/functions/tan.d.ts +1 -1
- package/dist/formula/functions/tan.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/tan.js +5 -5
- package/dist/formula/functions/tan.js.map +1 -0
- package/dist/{src/formula → formula}/functions/uminus.d.ts +1 -1
- package/dist/formula/functions/uminus.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/uminus.js +4 -6
- package/dist/formula/functions/uminus.js.map +1 -0
- package/dist/{src/formula → formula}/functions/vlookup.d.ts +2 -2
- package/dist/formula/functions/vlookup.d.ts.map +1 -0
- package/dist/{src/formula → formula}/functions/vlookup.js +12 -12
- package/dist/formula/functions/vlookup.js.map +1 -0
- package/dist/formula/mapping.d.ts +3 -0
- package/dist/formula/mapping.d.ts.map +1 -0
- package/dist/{src/formula → formula}/mapping.js +1 -0
- package/dist/formula/mapping.js.map +1 -0
- package/dist/formula/solver.d.ts +12 -0
- package/dist/formula/solver.d.ts.map +1 -0
- package/dist/{src/formula → formula}/solver.js +6 -6
- package/dist/formula/solver.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +3 -3
- package/dist/index.js.map +1 -0
- package/dist/{src/lib → lib}/autofill.d.ts +3 -3
- package/dist/lib/autofill.d.ts.map +1 -0
- package/dist/{src/lib → lib}/autofill.js +51 -44
- package/dist/lib/autofill.js.map +1 -0
- package/dist/lib/clipboard.d.ts +3 -0
- package/dist/lib/clipboard.d.ts.map +1 -0
- package/dist/{src/lib → lib}/clipboard.js +7 -6
- package/dist/lib/clipboard.js.map +1 -0
- package/dist/{src/lib → lib}/converters.d.ts +1 -1
- package/dist/lib/converters.d.ts.map +1 -0
- package/dist/{src/lib → lib}/converters.js +22 -19
- package/dist/lib/converters.js.map +1 -0
- package/dist/{src/lib → lib}/hooks.d.ts.map +1 -1
- package/dist/{src/lib → lib}/hooks.js.map +1 -1
- package/dist/{src/lib → lib}/prevention.d.ts +1 -1
- package/dist/lib/prevention.d.ts.map +1 -0
- package/dist/{src/lib → lib}/prevention.js +21 -34
- package/dist/lib/prevention.js.map +1 -0
- package/dist/{src/lib → lib}/structs.d.ts +4 -4
- package/dist/lib/structs.d.ts.map +1 -0
- package/dist/{src/lib → lib}/structs.js +30 -28
- package/dist/lib/structs.js.map +1 -0
- package/dist/{src/lib → lib}/table.d.ts +13 -14
- package/dist/lib/table.d.ts.map +1 -0
- package/dist/{src/lib → lib}/table.js +87 -72
- package/dist/lib/table.js.map +1 -0
- package/dist/lib/time.d.ts.map +1 -0
- package/dist/{src/lib → lib}/time.js +16 -16
- package/dist/lib/time.js.map +1 -0
- package/dist/{src/lib → lib}/virtualization.d.ts +2 -2
- package/dist/lib/virtualization.d.ts.map +1 -0
- package/dist/{src/lib → lib}/virtualization.js +28 -6
- package/dist/lib/virtualization.js.map +1 -0
- package/dist/{src/parsers → parsers}/core.d.ts +2 -2
- package/dist/parsers/core.d.ts.map +1 -0
- package/dist/{src/parsers → parsers}/core.js +19 -15
- package/dist/parsers/core.js.map +1 -0
- package/dist/{src/renderers → renderers}/checkbox.d.ts +1 -1
- package/dist/renderers/checkbox.d.ts.map +1 -0
- package/dist/{src/renderers → renderers}/checkbox.js +1 -1
- package/dist/renderers/checkbox.js.map +1 -0
- package/dist/{src/renderers → renderers}/core.d.ts +3 -3
- package/dist/renderers/core.d.ts.map +1 -0
- package/dist/{src/renderers → renderers}/core.js +36 -24
- package/dist/renderers/core.js.map +1 -0
- package/dist/renderers/thousand_separator.d.ts +4 -0
- package/dist/renderers/thousand_separator.d.ts.map +1 -0
- package/dist/{src/renderers → renderers}/thousand_separator.js +5 -5
- package/dist/renderers/thousand_separator.js.map +1 -0
- package/dist/{src/store → store}/actions.d.ts +2 -2
- package/dist/store/actions.d.ts.map +1 -0
- package/dist/{src/store → store}/actions.js +24 -15
- package/dist/store/actions.js.map +1 -0
- package/dist/{src/store → store}/helpers.d.ts +2 -2
- package/dist/store/helpers.d.ts.map +1 -0
- package/dist/{src/store → store}/helpers.js +6 -8
- package/dist/store/helpers.js.map +1 -0
- package/dist/{src/store → store}/index.d.ts +2 -2
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js.map +1 -0
- package/dist/styles/embedder.d.ts.map +1 -0
- package/dist/{src/styles → styles}/embedder.js +1 -1
- package/dist/styles/embedder.js.map +1 -0
- package/dist/styles/minified.d.ts +3 -0
- package/dist/styles/minified.d.ts.map +1 -0
- package/dist/styles/minified.js +7 -0
- package/dist/styles/minified.js.map +1 -0
- package/dist/{src/types.d.ts → types.d.ts} +13 -13
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/{src/utils.js → utils.js} +1 -0
- package/dist/utils.js.map +1 -0
- package/package.json +11 -7
- package/dist/e2e/basic.spec.d.ts +0 -2
- package/dist/e2e/basic.spec.d.ts.map +0 -1
- package/dist/e2e/basic.spec.js +0 -64
- package/dist/e2e/basic.spec.js.map +0 -1
- package/dist/e2e/formula.spec.d.ts +0 -2
- package/dist/e2e/formula.spec.d.ts.map +0 -1
- package/dist/e2e/formula.spec.js +0 -48
- package/dist/e2e/formula.spec.js.map +0 -1
- package/dist/e2e/playwright.config.d.ts +0 -3
- package/dist/e2e/playwright.config.d.ts.map +0 -1
- package/dist/e2e/playwright.config.js +0 -13
- package/dist/e2e/playwright.config.js.map +0 -1
- package/dist/src/components/Cell.d.ts.map +0 -1
- package/dist/src/components/Cell.js.map +0 -1
- package/dist/src/components/ContextMenu.d.ts +0 -3
- package/dist/src/components/ContextMenu.d.ts.map +0 -1
- package/dist/src/components/ContextMenu.js.map +0 -1
- package/dist/src/components/Editor.d.ts +0 -3
- package/dist/src/components/Editor.d.ts.map +0 -1
- package/dist/src/components/Editor.js.map +0 -1
- package/dist/src/components/Emitter.d.ts.map +0 -1
- package/dist/src/components/Emitter.js.map +0 -1
- package/dist/src/components/FormulaBar.d.ts.map +0 -1
- package/dist/src/components/FormulaBar.js.map +0 -1
- package/dist/src/components/GridSheet.d.ts +0 -4
- package/dist/src/components/GridSheet.d.ts.map +0 -1
- package/dist/src/components/GridSheet.js.map +0 -1
- package/dist/src/components/HorizontalHeaderCell.d.ts.map +0 -1
- package/dist/src/components/HorizontalHeaderCell.js.map +0 -1
- package/dist/src/components/Resizer.d.ts +0 -3
- package/dist/src/components/Resizer.d.ts.map +0 -1
- package/dist/src/components/Resizer.js.map +0 -1
- package/dist/src/components/SearchBox.d.ts +0 -3
- package/dist/src/components/SearchBox.d.ts.map +0 -1
- package/dist/src/components/SearchBox.js.map +0 -1
- package/dist/src/components/SheetProvider.d.ts.map +0 -1
- package/dist/src/components/SheetProvider.js.map +0 -1
- package/dist/src/components/StoreInitializer.d.ts +0 -4
- package/dist/src/components/StoreInitializer.d.ts.map +0 -1
- package/dist/src/components/StoreInitializer.js.map +0 -1
- package/dist/src/components/Tabular.d.ts.map +0 -1
- package/dist/src/components/Tabular.js.map +0 -1
- package/dist/src/components/VerticalHeaderCell.d.ts.map +0 -1
- package/dist/src/components/VerticalHeaderCell.js.map +0 -1
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js.map +0 -1
- package/dist/src/formula/evaluator.d.ts.map +0 -1
- package/dist/src/formula/evaluator.js.map +0 -1
- package/dist/src/formula/functions/__base.d.ts.map +0 -1
- package/dist/src/formula/functions/__base.js.map +0 -1
- package/dist/src/formula/functions/__utils.d.ts.map +0 -1
- package/dist/src/formula/functions/__utils.js.map +0 -1
- package/dist/src/formula/functions/abs.d.ts.map +0 -1
- package/dist/src/formula/functions/abs.js.map +0 -1
- package/dist/src/formula/functions/abs.spec.d.ts.map +0 -1
- package/dist/src/formula/functions/abs.spec.js.map +0 -1
- package/dist/src/formula/functions/acos.d.ts.map +0 -1
- package/dist/src/formula/functions/acos.js.map +0 -1
- package/dist/src/formula/functions/add.d.ts.map +0 -1
- package/dist/src/formula/functions/add.js.map +0 -1
- package/dist/src/formula/functions/and.d.ts.map +0 -1
- package/dist/src/formula/functions/and.js.map +0 -1
- package/dist/src/formula/functions/asin.d.ts.map +0 -1
- package/dist/src/formula/functions/asin.js.map +0 -1
- package/dist/src/formula/functions/atan.d.ts.map +0 -1
- package/dist/src/formula/functions/atan.js.map +0 -1
- package/dist/src/formula/functions/atan2.d.ts.map +0 -1
- package/dist/src/formula/functions/atan2.js.map +0 -1
- package/dist/src/formula/functions/average.d.ts.map +0 -1
- package/dist/src/formula/functions/average.js.map +0 -1
- package/dist/src/formula/functions/col.d.ts.map +0 -1
- package/dist/src/formula/functions/col.js.map +0 -1
- package/dist/src/formula/functions/concat.d.ts.map +0 -1
- package/dist/src/formula/functions/concat.js.map +0 -1
- package/dist/src/formula/functions/concatenate.d.ts.map +0 -1
- package/dist/src/formula/functions/concatenate.js.map +0 -1
- package/dist/src/formula/functions/cos.d.ts.map +0 -1
- package/dist/src/formula/functions/cos.js.map +0 -1
- package/dist/src/formula/functions/count.d.ts.map +0 -1
- package/dist/src/formula/functions/count.js.map +0 -1
- package/dist/src/formula/functions/counta.d.ts.map +0 -1
- package/dist/src/formula/functions/counta.js.map +0 -1
- package/dist/src/formula/functions/countif.d.ts.map +0 -1
- package/dist/src/formula/functions/countif.js.map +0 -1
- package/dist/src/formula/functions/divide.d.ts.map +0 -1
- package/dist/src/formula/functions/divide.js.map +0 -1
- package/dist/src/formula/functions/eq.d.ts.map +0 -1
- package/dist/src/formula/functions/eq.js.map +0 -1
- package/dist/src/formula/functions/exp.d.ts.map +0 -1
- package/dist/src/formula/functions/exp.js.map +0 -1
- package/dist/src/formula/functions/gt.d.ts.map +0 -1
- package/dist/src/formula/functions/gt.js.map +0 -1
- package/dist/src/formula/functions/gte.d.ts.map +0 -1
- package/dist/src/formula/functions/gte.js.map +0 -1
- package/dist/src/formula/functions/hlookup.d.ts.map +0 -1
- package/dist/src/formula/functions/hlookup.js.map +0 -1
- package/dist/src/formula/functions/if.d.ts.map +0 -1
- package/dist/src/formula/functions/if.js.map +0 -1
- package/dist/src/formula/functions/iferror.d.ts.map +0 -1
- package/dist/src/formula/functions/iferror.js.map +0 -1
- package/dist/src/formula/functions/iferror.spec.d.ts.map +0 -1
- package/dist/src/formula/functions/iferror.spec.js.map +0 -1
- package/dist/src/formula/functions/len.d.ts.map +0 -1
- package/dist/src/formula/functions/len.js.map +0 -1
- package/dist/src/formula/functions/lenb.d.ts.map +0 -1
- package/dist/src/formula/functions/lenb.js.map +0 -1
- package/dist/src/formula/functions/ln.d.ts.map +0 -1
- package/dist/src/formula/functions/ln.js.map +0 -1
- package/dist/src/formula/functions/log.d.ts.map +0 -1
- package/dist/src/formula/functions/log.js.map +0 -1
- package/dist/src/formula/functions/log10.d.ts.map +0 -1
- package/dist/src/formula/functions/log10.js.map +0 -1
- package/dist/src/formula/functions/lt.d.ts.map +0 -1
- package/dist/src/formula/functions/lt.js.map +0 -1
- package/dist/src/formula/functions/lte.d.ts.map +0 -1
- package/dist/src/formula/functions/lte.js.map +0 -1
- package/dist/src/formula/functions/max.d.ts.map +0 -1
- package/dist/src/formula/functions/max.js.map +0 -1
- package/dist/src/formula/functions/min.d.ts.map +0 -1
- package/dist/src/formula/functions/min.js.map +0 -1
- package/dist/src/formula/functions/minus.d.ts.map +0 -1
- package/dist/src/formula/functions/minus.js.map +0 -1
- package/dist/src/formula/functions/mod.d.ts.map +0 -1
- package/dist/src/formula/functions/mod.js.map +0 -1
- package/dist/src/formula/functions/mod.spec.d.ts.map +0 -1
- package/dist/src/formula/functions/mod.spec.js.map +0 -1
- package/dist/src/formula/functions/multiply.d.ts.map +0 -1
- package/dist/src/formula/functions/multiply.js.map +0 -1
- package/dist/src/formula/functions/ne.d.ts.map +0 -1
- package/dist/src/formula/functions/ne.js.map +0 -1
- package/dist/src/formula/functions/not.d.ts.map +0 -1
- package/dist/src/formula/functions/not.js.map +0 -1
- package/dist/src/formula/functions/now.d.ts.map +0 -1
- package/dist/src/formula/functions/now.js.map +0 -1
- package/dist/src/formula/functions/or.d.ts.map +0 -1
- package/dist/src/formula/functions/or.js.map +0 -1
- package/dist/src/formula/functions/pi.d.ts.map +0 -1
- package/dist/src/formula/functions/pi.js.map +0 -1
- package/dist/src/formula/functions/power.d.ts.map +0 -1
- package/dist/src/formula/functions/power.js.map +0 -1
- package/dist/src/formula/functions/product.d.ts.map +0 -1
- package/dist/src/formula/functions/product.js.map +0 -1
- package/dist/src/formula/functions/radians.d.ts.map +0 -1
- package/dist/src/formula/functions/radians.js.map +0 -1
- package/dist/src/formula/functions/rand.d.ts.map +0 -1
- package/dist/src/formula/functions/rand.js.map +0 -1
- package/dist/src/formula/functions/round.d.ts.map +0 -1
- package/dist/src/formula/functions/round.js.map +0 -1
- package/dist/src/formula/functions/rounddown.d.ts.map +0 -1
- package/dist/src/formula/functions/rounddown.js.map +0 -1
- package/dist/src/formula/functions/roundup.d.ts.map +0 -1
- package/dist/src/formula/functions/roundup.js.map +0 -1
- package/dist/src/formula/functions/row.d.ts.map +0 -1
- package/dist/src/formula/functions/row.js.map +0 -1
- package/dist/src/formula/functions/sin.d.ts.map +0 -1
- package/dist/src/formula/functions/sin.js.map +0 -1
- package/dist/src/formula/functions/sqrt.d.ts.map +0 -1
- package/dist/src/formula/functions/sqrt.js.map +0 -1
- package/dist/src/formula/functions/sum.d.ts.map +0 -1
- package/dist/src/formula/functions/sum.js.map +0 -1
- package/dist/src/formula/functions/sum.spec.d.ts.map +0 -1
- package/dist/src/formula/functions/sum.spec.js.map +0 -1
- package/dist/src/formula/functions/sumif.d.ts.map +0 -1
- package/dist/src/formula/functions/sumif.js.map +0 -1
- package/dist/src/formula/functions/tan.d.ts.map +0 -1
- package/dist/src/formula/functions/tan.js.map +0 -1
- package/dist/src/formula/functions/uminus.d.ts.map +0 -1
- package/dist/src/formula/functions/uminus.js.map +0 -1
- package/dist/src/formula/functions/vlookup.d.ts.map +0 -1
- package/dist/src/formula/functions/vlookup.js.map +0 -1
- package/dist/src/formula/mapping.d.ts +0 -114
- package/dist/src/formula/mapping.d.ts.map +0 -1
- package/dist/src/formula/mapping.js.map +0 -1
- package/dist/src/formula/solver.d.ts +0 -12
- package/dist/src/formula/solver.d.ts.map +0 -1
- package/dist/src/formula/solver.js.map +0 -1
- package/dist/src/index.d.ts +0 -16
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/lib/autofill.d.ts.map +0 -1
- package/dist/src/lib/autofill.js.map +0 -1
- package/dist/src/lib/clipboard.d.ts +0 -3
- package/dist/src/lib/clipboard.d.ts.map +0 -1
- package/dist/src/lib/clipboard.js.map +0 -1
- package/dist/src/lib/converters.d.ts.map +0 -1
- package/dist/src/lib/converters.js.map +0 -1
- package/dist/src/lib/prevention.d.ts.map +0 -1
- package/dist/src/lib/prevention.js.map +0 -1
- package/dist/src/lib/structs.d.ts.map +0 -1
- package/dist/src/lib/structs.js.map +0 -1
- package/dist/src/lib/table.d.ts.map +0 -1
- package/dist/src/lib/table.js.map +0 -1
- package/dist/src/lib/time.d.ts.map +0 -1
- package/dist/src/lib/time.js.map +0 -1
- package/dist/src/lib/virtualization.d.ts.map +0 -1
- package/dist/src/lib/virtualization.js.map +0 -1
- package/dist/src/parsers/core.d.ts.map +0 -1
- package/dist/src/parsers/core.js.map +0 -1
- package/dist/src/renderers/checkbox.d.ts.map +0 -1
- package/dist/src/renderers/checkbox.js.map +0 -1
- package/dist/src/renderers/core.d.ts.map +0 -1
- package/dist/src/renderers/core.js.map +0 -1
- package/dist/src/renderers/thousand_separator.d.ts +0 -5
- package/dist/src/renderers/thousand_separator.d.ts.map +0 -1
- package/dist/src/renderers/thousand_separator.js.map +0 -1
- package/dist/src/store/actions.d.ts.map +0 -1
- package/dist/src/store/actions.js.map +0 -1
- package/dist/src/store/helpers.d.ts.map +0 -1
- package/dist/src/store/helpers.js.map +0 -1
- package/dist/src/store/index.d.ts.map +0 -1
- package/dist/src/store/index.js.map +0 -1
- package/dist/src/styles/embedder.d.ts.map +0 -1
- package/dist/src/styles/embedder.js.map +0 -1
- package/dist/src/styles/minified.d.ts +0 -3
- package/dist/src/styles/minified.d.ts.map +0 -1
- package/dist/src/styles/minified.js +0 -7
- package/dist/src/styles/minified.js.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js.map +0 -1
- /package/dist/{src/constants.d.ts → constants.d.ts} +0 -0
- /package/dist/{src/formula → formula}/functions/__utils.d.ts +0 -0
- /package/dist/{src/formula → formula}/functions/abs.spec.d.ts +0 -0
- /package/dist/{src/formula → formula}/functions/iferror.spec.d.ts +0 -0
- /package/dist/{src/formula → formula}/functions/mod.spec.d.ts +0 -0
- /package/dist/{src/formula → formula}/functions/sum.spec.d.ts +0 -0
- /package/dist/{src/lib → lib}/hooks.d.ts +0 -0
- /package/dist/{src/lib → lib}/hooks.js +0 -0
- /package/dist/{src/lib → lib}/time.d.ts +0 -0
- /package/dist/{src/store → store}/index.js +0 -0
- /package/dist/{src/styles → styles}/embedder.d.ts +0 -0
- /package/dist/{src/types.js → types.js} +0 -0
- /package/dist/{src/utils.d.ts → utils.d.ts} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stripSheetName = exports.absolutizeFormula = exports.Parser = exports.Lexer = exports.Token = exports.
|
|
3
|
+
exports.stripSheetName = exports.absolutizeFormula = exports.Parser = exports.Lexer = exports.Token = exports.FunctionEntity = exports.IdRangeEntity = exports.IdEntity = exports.RangeEntity = exports.RefEntity = exports.InvalidRefEntity = exports.UnreferencedEntity = exports.ValueEntity = exports.FormulaError = void 0;
|
|
4
4
|
const structs_1 = require("../lib/structs");
|
|
5
5
|
const converters_1 = require("../lib/converters");
|
|
6
6
|
// strip sharp and dollars
|
|
7
7
|
const getId = (idString, stripAbsolute = true) => {
|
|
8
8
|
let id = idString.slice(1);
|
|
9
|
-
if (stripAbsolute && id.startsWith(
|
|
9
|
+
if (stripAbsolute && id.startsWith('$')) {
|
|
10
10
|
id = id.slice(1);
|
|
11
11
|
}
|
|
12
|
-
if (stripAbsolute && id.endsWith(
|
|
12
|
+
if (stripAbsolute && id.endsWith('$')) {
|
|
13
13
|
id = id.slice(0, -1);
|
|
14
14
|
}
|
|
15
15
|
return id;
|
|
@@ -27,58 +27,48 @@ class Entity {
|
|
|
27
27
|
this.value = value;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
class
|
|
31
|
-
evaluate(
|
|
32
|
-
return table;
|
|
33
|
-
}
|
|
34
|
-
id(table) {
|
|
35
|
-
return `#${table.sheets[this.value]}!`;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.SheetName = SheetName;
|
|
39
|
-
class SheetId extends Entity {
|
|
40
|
-
evaluate({ table }) {
|
|
41
|
-
return table.tables[this.value];
|
|
42
|
-
}
|
|
43
|
-
name(table) {
|
|
44
|
-
return table.tables[this.value].sheetName + "!";
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.SheetId = SheetId;
|
|
48
|
-
class Value extends Entity {
|
|
49
|
-
evaluate({}) {
|
|
30
|
+
class ValueEntity extends Entity {
|
|
31
|
+
evaluate() {
|
|
50
32
|
return this.value;
|
|
51
33
|
}
|
|
52
34
|
}
|
|
53
|
-
exports.
|
|
54
|
-
class
|
|
55
|
-
evaluate(
|
|
56
|
-
throw new FormulaError(
|
|
35
|
+
exports.ValueEntity = ValueEntity;
|
|
36
|
+
class UnreferencedEntity extends Entity {
|
|
37
|
+
evaluate() {
|
|
38
|
+
throw new FormulaError('#REF!', `Reference does not exist.`);
|
|
57
39
|
}
|
|
58
40
|
}
|
|
59
|
-
exports.
|
|
60
|
-
class
|
|
61
|
-
evaluate(
|
|
62
|
-
throw new FormulaError(
|
|
41
|
+
exports.UnreferencedEntity = UnreferencedEntity;
|
|
42
|
+
class InvalidRefEntity extends Entity {
|
|
43
|
+
evaluate() {
|
|
44
|
+
throw new FormulaError('#NAME?', `Invalid ref: ${this.value}`);
|
|
63
45
|
}
|
|
64
46
|
}
|
|
65
|
-
exports.
|
|
66
|
-
class
|
|
47
|
+
exports.InvalidRefEntity = InvalidRefEntity;
|
|
48
|
+
class RefEntity extends Entity {
|
|
67
49
|
constructor(value) {
|
|
68
50
|
super(value);
|
|
69
51
|
}
|
|
70
52
|
parse(table) {
|
|
71
|
-
if (this.value.indexOf(
|
|
72
|
-
const [rawSheetName, ref] = this.value.split(
|
|
53
|
+
if (this.value.indexOf('!') !== -1) {
|
|
54
|
+
const [rawSheetName, ref] = this.value.split('!');
|
|
73
55
|
const sheetName = (0, exports.stripSheetName)(rawSheetName);
|
|
74
|
-
return {
|
|
56
|
+
return {
|
|
57
|
+
table: table.getTableBySheetName(sheetName),
|
|
58
|
+
ref: ref.toUpperCase(),
|
|
59
|
+
sheetName,
|
|
60
|
+
};
|
|
75
61
|
}
|
|
76
|
-
return {
|
|
62
|
+
return {
|
|
63
|
+
table,
|
|
64
|
+
ref: this.value.toUpperCase(),
|
|
65
|
+
sheetName: (0, exports.stripSheetName)(table.sheetName),
|
|
66
|
+
};
|
|
77
67
|
}
|
|
78
68
|
evaluate({ table }) {
|
|
79
69
|
const parsed = this.parse(table);
|
|
80
70
|
if (parsed.table == null) {
|
|
81
|
-
throw new FormulaError(
|
|
71
|
+
throw new FormulaError('#REF!', `Unknown sheet: ${parsed.sheetName}`);
|
|
82
72
|
}
|
|
83
73
|
const { y, x } = (0, converters_1.a2p)(parsed.ref);
|
|
84
74
|
return parsed.table.trim({ top: y, left: x, bottom: y, right: x });
|
|
@@ -98,16 +88,16 @@ class Ref extends Entity {
|
|
|
98
88
|
return this.value;
|
|
99
89
|
}
|
|
100
90
|
}
|
|
101
|
-
exports.
|
|
102
|
-
class
|
|
91
|
+
exports.RefEntity = RefEntity;
|
|
92
|
+
class RangeEntity extends Entity {
|
|
103
93
|
parse(table) {
|
|
104
|
-
const rawRefs = this.value.split(
|
|
94
|
+
const rawRefs = this.value.split(':');
|
|
105
95
|
const refs = [];
|
|
106
|
-
let sheetName =
|
|
96
|
+
let sheetName = '';
|
|
107
97
|
for (let i = 0; i < rawRefs.length; i++) {
|
|
108
98
|
const ref = rawRefs[i];
|
|
109
|
-
if (ref.indexOf(
|
|
110
|
-
const [rawSheetName, rawRef] = ref.split(
|
|
99
|
+
if (ref.indexOf('!') !== -1) {
|
|
100
|
+
const [rawSheetName, rawRef] = ref.split('!');
|
|
111
101
|
refs.push(rawRef.toUpperCase());
|
|
112
102
|
if (i === 0) {
|
|
113
103
|
sheetName = (0, exports.stripSheetName)(rawSheetName);
|
|
@@ -126,7 +116,7 @@ class Range extends Entity {
|
|
|
126
116
|
evaluate({ table }) {
|
|
127
117
|
const parsed = this.parse(table);
|
|
128
118
|
if (parsed.table == null) {
|
|
129
|
-
throw new FormulaError(
|
|
119
|
+
throw new FormulaError('#REF!', `Unknown sheet: ${parsed.sheetName}`);
|
|
130
120
|
}
|
|
131
121
|
const area = (0, structs_1.rangeToArea)(this.complementRange(parsed.table, parsed.refs));
|
|
132
122
|
return parsed.table.trim(area);
|
|
@@ -136,21 +126,19 @@ class Range extends Entity {
|
|
|
136
126
|
if (parsed.table == null) {
|
|
137
127
|
return this.value;
|
|
138
128
|
}
|
|
139
|
-
const range = parsed.refs
|
|
140
|
-
.map((ref) => parsed.table.getIdByAddress(ref))
|
|
141
|
-
.join(":");
|
|
129
|
+
const range = parsed.refs.map((ref) => parsed.table.getIdByAddress(ref)).join(':');
|
|
142
130
|
if (parsed.table === table) {
|
|
143
131
|
return range;
|
|
144
132
|
}
|
|
145
133
|
return `#${parsed.table.sheetId}!${range}`;
|
|
146
134
|
}
|
|
147
135
|
complementRange(table, refs) {
|
|
148
|
-
let [start =
|
|
136
|
+
let [start = '', end = ''] = refs;
|
|
149
137
|
if (!start.match(/[1-9]\d*/)) {
|
|
150
|
-
start +=
|
|
138
|
+
start += '1';
|
|
151
139
|
}
|
|
152
140
|
if (!start.match(/[a-zA-Z]/)) {
|
|
153
|
-
start =
|
|
141
|
+
start = 'A' + start;
|
|
154
142
|
}
|
|
155
143
|
if (!end.match(/[1-9]\d*/)) {
|
|
156
144
|
end += table.getNumRows();
|
|
@@ -161,11 +149,11 @@ class Range extends Entity {
|
|
|
161
149
|
return `${start}:${end}`;
|
|
162
150
|
}
|
|
163
151
|
}
|
|
164
|
-
exports.
|
|
165
|
-
class
|
|
152
|
+
exports.RangeEntity = RangeEntity;
|
|
153
|
+
class IdEntity extends Entity {
|
|
166
154
|
parse(table) {
|
|
167
|
-
if (this.value.indexOf(
|
|
168
|
-
const [tableId, id] = this.value.split(
|
|
155
|
+
if (this.value.indexOf('!') !== -1) {
|
|
156
|
+
const [tableId, id] = this.value.split('!');
|
|
169
157
|
return { table: table.tables[tableId.slice(1)], id: getId(id, false) };
|
|
170
158
|
}
|
|
171
159
|
return { table, id: getId(this.value, false) };
|
|
@@ -174,7 +162,12 @@ class Id extends Entity {
|
|
|
174
162
|
const parsed = this.parse(table);
|
|
175
163
|
const { y, x } = parsed.table.getPointById(parsed.id);
|
|
176
164
|
const [absY, absX] = [Math.abs(y), Math.abs(x)];
|
|
177
|
-
return parsed.table.trim({
|
|
165
|
+
return parsed.table.trim({
|
|
166
|
+
top: absY,
|
|
167
|
+
left: absX,
|
|
168
|
+
bottom: absY,
|
|
169
|
+
right: absX,
|
|
170
|
+
});
|
|
178
171
|
}
|
|
179
172
|
ref(table, slideY = 0, slideX = 0) {
|
|
180
173
|
const parsed = this.parse(table);
|
|
@@ -188,35 +181,38 @@ class Id extends Entity {
|
|
|
188
181
|
slide(table, slideY = 0, slideX = 0) {
|
|
189
182
|
const address = this.ref(table, slideY, slideX);
|
|
190
183
|
if (address == null || address.length < 2) {
|
|
191
|
-
return
|
|
184
|
+
return '#REF!';
|
|
192
185
|
}
|
|
193
186
|
return table.getIdByAddress(address);
|
|
194
187
|
}
|
|
195
188
|
}
|
|
196
|
-
exports.
|
|
197
|
-
class
|
|
189
|
+
exports.IdEntity = IdEntity;
|
|
190
|
+
class IdRangeEntity extends Entity {
|
|
198
191
|
parse(table) {
|
|
199
192
|
const range = this.value;
|
|
200
|
-
if (range.indexOf(
|
|
201
|
-
const [sheetId, idRange] = range.split(
|
|
193
|
+
if (range.indexOf('!') !== -1) {
|
|
194
|
+
const [sheetId, idRange] = range.split('!');
|
|
202
195
|
table = table.tables[sheetId.slice(1)];
|
|
203
|
-
return { table, ids: idRange.split(
|
|
196
|
+
return { table, ids: idRange.split(':') };
|
|
204
197
|
}
|
|
205
|
-
return { table, ids: range.split(
|
|
198
|
+
return { table, ids: range.split(':') };
|
|
206
199
|
}
|
|
207
200
|
evaluate({ table }) {
|
|
208
201
|
const parsed = this.parse(table);
|
|
209
|
-
const [p1, p2] = parsed.ids
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
202
|
+
const [p1, p2] = parsed.ids.map((id) => getId(id)).map((id) => parsed.table.getPointById(id));
|
|
203
|
+
return parsed.table.trim({
|
|
204
|
+
top: p1.y,
|
|
205
|
+
left: p1.x,
|
|
206
|
+
bottom: p2.y,
|
|
207
|
+
right: p2.x,
|
|
208
|
+
});
|
|
213
209
|
}
|
|
214
210
|
range(table, slideY = 0, slideX = 0) {
|
|
215
211
|
const parsed = this.parse(table);
|
|
216
212
|
const range = parsed.ids
|
|
217
213
|
.map((id) => getId(id, false))
|
|
218
214
|
.map((id) => parsed.table.getAddressById(id, slideY, slideX))
|
|
219
|
-
.join(
|
|
215
|
+
.join(':');
|
|
220
216
|
if (parsed.table.sheetId === table.sheetId) {
|
|
221
217
|
return range;
|
|
222
218
|
}
|
|
@@ -225,11 +221,11 @@ class IdRange extends Entity {
|
|
|
225
221
|
}
|
|
226
222
|
slide(table, slideY = 0, slideX = 0) {
|
|
227
223
|
const range = this.range(table, slideY, slideX);
|
|
228
|
-
return new
|
|
224
|
+
return new RangeEntity(range).idRange(table);
|
|
229
225
|
}
|
|
230
226
|
}
|
|
231
|
-
exports.
|
|
232
|
-
class
|
|
227
|
+
exports.IdRangeEntity = IdRangeEntity;
|
|
228
|
+
class FunctionEntity {
|
|
233
229
|
constructor(name, precedence = 0, args = []) {
|
|
234
230
|
this.name = name;
|
|
235
231
|
this.precedence = precedence;
|
|
@@ -239,30 +235,30 @@ class Function {
|
|
|
239
235
|
const name = this.name.toLowerCase();
|
|
240
236
|
const Func = table.getFunction(name);
|
|
241
237
|
if (Func == null) {
|
|
242
|
-
throw new FormulaError(
|
|
238
|
+
throw new FormulaError('#NAME?', `Unknown function: ${name}`);
|
|
243
239
|
}
|
|
244
240
|
const func = new Func({ args: this.args, table });
|
|
245
241
|
return func.call();
|
|
246
242
|
}
|
|
247
243
|
}
|
|
248
|
-
exports.
|
|
249
|
-
const ZERO = new
|
|
244
|
+
exports.FunctionEntity = FunctionEntity;
|
|
245
|
+
const ZERO = new ValueEntity(0);
|
|
250
246
|
const INFIX_FUNCTION_NAME_MAP = {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
247
|
+
'+': 'add',
|
|
248
|
+
'-': 'minus',
|
|
249
|
+
'/': 'divide',
|
|
250
|
+
'*': 'multiply',
|
|
251
|
+
'^': 'power',
|
|
252
|
+
'&': 'concat',
|
|
253
|
+
'=': 'eq',
|
|
254
|
+
'<>': 'ne',
|
|
255
|
+
'>': 'gt',
|
|
256
|
+
'>=': 'gte',
|
|
257
|
+
'<': 'lt',
|
|
258
|
+
'<=': 'lte',
|
|
263
259
|
};
|
|
264
260
|
const PREFIX_FUNCTION_NAME_MAP = {
|
|
265
|
-
|
|
261
|
+
'-': 'uminus',
|
|
266
262
|
};
|
|
267
263
|
class Token {
|
|
268
264
|
constructor(type, entity, precedence = 0) {
|
|
@@ -272,43 +268,49 @@ class Token {
|
|
|
272
268
|
}
|
|
273
269
|
convert() {
|
|
274
270
|
switch (this.type) {
|
|
275
|
-
case
|
|
276
|
-
return new
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
case
|
|
282
|
-
return new
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
271
|
+
case 'VALUE':
|
|
272
|
+
return new ValueEntity(this.entity);
|
|
273
|
+
// eslint-disable-next-line no-fallthrough
|
|
274
|
+
case 'ID':
|
|
275
|
+
return new IdEntity(this.entity);
|
|
276
|
+
// eslint-disable-next-line no-fallthrough
|
|
277
|
+
case 'ID_RANGE':
|
|
278
|
+
return new IdRangeEntity(this.entity);
|
|
279
|
+
// eslint-disable-next-line no-fallthrough
|
|
280
|
+
case 'REF':
|
|
281
|
+
return new RefEntity(this.entity);
|
|
282
|
+
// eslint-disable-next-line no-fallthrough
|
|
283
|
+
case 'RANGE':
|
|
284
|
+
return new RangeEntity(this.entity);
|
|
285
|
+
// eslint-disable-next-line no-fallthrough
|
|
286
|
+
case 'INFIX_OPERATOR': {
|
|
286
287
|
const name = INFIX_FUNCTION_NAME_MAP[this.entity];
|
|
287
|
-
return new
|
|
288
|
+
return new FunctionEntity(name, this.precedence);
|
|
289
|
+
// eslint-disable-next-line no-fallthrough
|
|
288
290
|
}
|
|
289
|
-
case
|
|
291
|
+
case 'PREFIX_OPERATOR': {
|
|
290
292
|
const name = PREFIX_FUNCTION_NAME_MAP[this.entity];
|
|
291
|
-
return new
|
|
293
|
+
return new FunctionEntity(name, this.precedence);
|
|
294
|
+
// eslint-disable-next-line no-fallthrough
|
|
292
295
|
}
|
|
293
|
-
case
|
|
294
|
-
return new
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
case
|
|
300
|
-
return new
|
|
301
|
-
|
|
302
|
-
return new InvalidRef(this.entity);
|
|
296
|
+
case 'FUNCTION':
|
|
297
|
+
return new FunctionEntity(this.entity);
|
|
298
|
+
// eslint-disable-next-line no-fallthrough
|
|
299
|
+
case 'UNREFERENCED':
|
|
300
|
+
return new UnreferencedEntity(this.entity);
|
|
301
|
+
// eslint-disable-next-line no-fallthrough
|
|
302
|
+
case 'INVALID_REF':
|
|
303
|
+
return new InvalidRefEntity(this.entity);
|
|
304
|
+
// eslint-disable-next-line no-fallthrough
|
|
303
305
|
}
|
|
304
306
|
}
|
|
305
307
|
}
|
|
306
308
|
exports.Token = Token;
|
|
307
309
|
const isWhiteSpace = (char) => {
|
|
308
|
-
return char ===
|
|
310
|
+
return char === ' ' || char === '\n' || char === '\t';
|
|
309
311
|
};
|
|
310
|
-
const TOKEN_OPEN = new Token(
|
|
311
|
-
const BOOLS = { [
|
|
312
|
+
const TOKEN_OPEN = new Token('OPEN', '('), TOKEN_CLOSE = new Token('CLOSE', ')'), TOKEN_COMMA = new Token('COMMA', ','), TOKEN_ADD = new Token('INFIX_OPERATOR', '+', 3), TOKEN_MINUS = new Token('INFIX_OPERATOR', '-', 3), TOKEN_UMINUS = new Token('PREFIX_OPERATOR', '-', 6), TOKEN_DIVIDE = new Token('INFIX_OPERATOR', '/', 4), TOKEN_MULTIPLY = new Token('INFIX_OPERATOR', '*', 4), TOKEN_POWER = new Token('INFIX_OPERATOR', '^', 5), TOKEN_CONCAT = new Token('INFIX_OPERATOR', '&', 4), TOKEN_GTE = new Token('INFIX_OPERATOR', '>=', 2), TOKEN_GT = new Token('INFIX_OPERATOR', '>', 2), TOKEN_LTE = new Token('INFIX_OPERATOR', '<=', 2), TOKEN_LT = new Token('INFIX_OPERATOR', '<', 2), TOKEN_NE = new Token('INFIX_OPERATOR', '<>', 1), TOKEN_EQ = new Token('INFIX_OPERATOR', '=', 1);
|
|
313
|
+
const BOOLS = { ['true']: true, ['false']: false };
|
|
312
314
|
class Lexer {
|
|
313
315
|
constructor(formula) {
|
|
314
316
|
this.tokens = [];
|
|
@@ -334,41 +336,46 @@ class Lexer {
|
|
|
334
336
|
return this.tokens
|
|
335
337
|
.map((t) => {
|
|
336
338
|
switch (t.type) {
|
|
337
|
-
case
|
|
338
|
-
if (typeof t.entity ===
|
|
339
|
+
case 'VALUE':
|
|
340
|
+
if (typeof t.entity === 'number' || typeof t.entity === 'boolean') {
|
|
339
341
|
return t.entity;
|
|
340
342
|
}
|
|
341
343
|
return `"${t.entity}"`;
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
case
|
|
347
|
-
return new
|
|
348
|
-
|
|
349
|
-
|
|
344
|
+
// eslint-disable-next-line no-fallthrough
|
|
345
|
+
case 'ID':
|
|
346
|
+
return new IdEntity(t.entity).slide(table, slideY, slideX);
|
|
347
|
+
// eslint-disable-next-line no-fallthrough
|
|
348
|
+
case 'ID_RANGE':
|
|
349
|
+
return new IdRangeEntity(t.entity).slide(table, slideY, slideX);
|
|
350
|
+
// eslint-disable-next-line no-fallthrough
|
|
351
|
+
case 'REF':
|
|
352
|
+
return new RefEntity(t.entity).id(table);
|
|
353
|
+
// eslint-disable-next-line no-fallthrough
|
|
354
|
+
case 'RANGE':
|
|
355
|
+
return new RangeEntity(t.entity).idRange(table);
|
|
356
|
+
// eslint-disable-next-line no-fallthrough
|
|
350
357
|
}
|
|
351
358
|
return t.entity;
|
|
352
359
|
})
|
|
353
|
-
.join(
|
|
360
|
+
.join('');
|
|
354
361
|
}
|
|
355
362
|
stringifyToRef(table) {
|
|
356
363
|
return this.tokens
|
|
357
364
|
.map((t) => {
|
|
358
365
|
switch (t.type) {
|
|
359
|
-
case
|
|
360
|
-
if (typeof t.entity ===
|
|
366
|
+
case 'VALUE':
|
|
367
|
+
if (typeof t.entity === 'number' || typeof t.entity === 'boolean') {
|
|
361
368
|
return t.entity;
|
|
362
369
|
}
|
|
363
370
|
return `"${t.entity}"`;
|
|
364
|
-
case
|
|
365
|
-
return new
|
|
366
|
-
case
|
|
367
|
-
return new
|
|
371
|
+
case 'ID':
|
|
372
|
+
return new IdEntity(t.entity).ref(table);
|
|
373
|
+
case 'ID_RANGE':
|
|
374
|
+
return new IdRangeEntity(t.entity).range(table);
|
|
368
375
|
}
|
|
369
376
|
return t.entity;
|
|
370
377
|
})
|
|
371
|
-
.join(
|
|
378
|
+
.join('');
|
|
372
379
|
}
|
|
373
380
|
tokenize() {
|
|
374
381
|
var _a, _b;
|
|
@@ -379,23 +386,22 @@ class Lexer {
|
|
|
379
386
|
switch (char) {
|
|
380
387
|
case undefined:
|
|
381
388
|
return;
|
|
382
|
-
case
|
|
389
|
+
case '(':
|
|
383
390
|
this.tokens.push(TOKEN_OPEN);
|
|
384
391
|
continue;
|
|
385
|
-
case
|
|
392
|
+
case ')':
|
|
386
393
|
this.tokens.push(TOKEN_CLOSE);
|
|
387
394
|
continue;
|
|
388
|
-
case
|
|
395
|
+
case ',':
|
|
389
396
|
this.tokens.push(TOKEN_COMMA);
|
|
390
397
|
continue;
|
|
391
|
-
case
|
|
398
|
+
case '+':
|
|
392
399
|
this.tokens.push(TOKEN_ADD);
|
|
393
400
|
continue;
|
|
394
|
-
case
|
|
401
|
+
case '-': {
|
|
395
402
|
const prev1 = (_a = this.getToken(-1)) === null || _a === void 0 ? void 0 : _a.type;
|
|
396
403
|
const prev2 = (_b = this.getToken(-2)) === null || _b === void 0 ? void 0 : _b.type;
|
|
397
|
-
if (prev1 ===
|
|
398
|
-
(prev1 === "SPACE" && prev2 === "INFIX_OPERATOR")) {
|
|
404
|
+
if (prev1 === 'INFIX_OPERATOR' || (prev1 === 'SPACE' && prev2 === 'INFIX_OPERATOR')) {
|
|
399
405
|
this.tokens.push(TOKEN_UMINUS);
|
|
400
406
|
}
|
|
401
407
|
else {
|
|
@@ -403,36 +409,36 @@ class Lexer {
|
|
|
403
409
|
}
|
|
404
410
|
continue;
|
|
405
411
|
}
|
|
406
|
-
case
|
|
412
|
+
case '/':
|
|
407
413
|
this.tokens.push(TOKEN_DIVIDE);
|
|
408
414
|
continue;
|
|
409
|
-
case
|
|
415
|
+
case '*':
|
|
410
416
|
this.tokens.push(TOKEN_MULTIPLY);
|
|
411
417
|
continue;
|
|
412
|
-
case
|
|
418
|
+
case '^':
|
|
413
419
|
this.tokens.push(TOKEN_POWER);
|
|
414
420
|
continue;
|
|
415
|
-
case
|
|
421
|
+
case '&':
|
|
416
422
|
this.tokens.push(TOKEN_CONCAT);
|
|
417
423
|
continue;
|
|
418
|
-
case
|
|
424
|
+
case '=':
|
|
419
425
|
this.tokens.push(TOKEN_EQ);
|
|
420
426
|
continue;
|
|
421
|
-
case
|
|
422
|
-
if (this.get() ===
|
|
427
|
+
case '>':
|
|
428
|
+
if (this.get() === '=') {
|
|
423
429
|
this.next();
|
|
424
430
|
this.tokens.push(TOKEN_GTE);
|
|
425
431
|
continue;
|
|
426
432
|
}
|
|
427
433
|
this.tokens.push(TOKEN_GT);
|
|
428
434
|
continue;
|
|
429
|
-
case
|
|
430
|
-
if (this.get() ===
|
|
435
|
+
case '<':
|
|
436
|
+
if (this.get() === '=') {
|
|
431
437
|
this.next();
|
|
432
438
|
this.tokens.push(TOKEN_LTE);
|
|
433
439
|
continue;
|
|
434
440
|
}
|
|
435
|
-
if (this.get() ===
|
|
441
|
+
if (this.get() === '>') {
|
|
436
442
|
this.next();
|
|
437
443
|
this.tokens.push(TOKEN_NE);
|
|
438
444
|
continue;
|
|
@@ -441,23 +447,26 @@ class Lexer {
|
|
|
441
447
|
continue;
|
|
442
448
|
case '"': {
|
|
443
449
|
const buf = this.getString('"');
|
|
444
|
-
this.tokens.push(new Token(
|
|
450
|
+
this.tokens.push(new Token('VALUE', buf));
|
|
445
451
|
continue;
|
|
446
452
|
}
|
|
447
453
|
case "'": {
|
|
448
454
|
const buf = this.getString("'");
|
|
449
455
|
char = `'${buf}'`;
|
|
456
|
+
break;
|
|
450
457
|
}
|
|
451
|
-
case
|
|
458
|
+
case '!': {
|
|
452
459
|
this.foreign = true;
|
|
460
|
+
break;
|
|
453
461
|
// not continue
|
|
454
462
|
}
|
|
455
463
|
} // switch end
|
|
456
464
|
let buf = char;
|
|
465
|
+
// eslint-disable-next-line no-constant-condition
|
|
457
466
|
while (true) {
|
|
458
467
|
const c = this.get();
|
|
459
|
-
if (c ===
|
|
460
|
-
this.tokens.push(new Token(
|
|
468
|
+
if (c === '(') {
|
|
469
|
+
this.tokens.push(new Token('FUNCTION', buf), TOKEN_OPEN);
|
|
461
470
|
this.next();
|
|
462
471
|
break;
|
|
463
472
|
}
|
|
@@ -466,35 +475,33 @@ class Lexer {
|
|
|
466
475
|
break;
|
|
467
476
|
}
|
|
468
477
|
if (buf.match(/^[+-]?(\d*[.])?\d+$/)) {
|
|
469
|
-
this.tokens.push(new Token(
|
|
478
|
+
this.tokens.push(new Token('VALUE', parseFloat(buf)));
|
|
470
479
|
}
|
|
471
480
|
else {
|
|
472
|
-
// @ts-ignore
|
|
473
481
|
const bool = BOOLS[buf.toLowerCase()];
|
|
474
482
|
if (bool != null) {
|
|
475
|
-
this.tokens.push(new Token(
|
|
483
|
+
this.tokens.push(new Token('VALUE', bool));
|
|
476
484
|
}
|
|
477
|
-
else if (buf.startsWith(
|
|
478
|
-
if (buf ===
|
|
479
|
-
this.tokens.push(new Token(
|
|
485
|
+
else if (buf.startsWith('#')) {
|
|
486
|
+
if (buf === '#REF!') {
|
|
487
|
+
this.tokens.push(new Token('UNREFERENCED', buf));
|
|
480
488
|
}
|
|
481
|
-
else if (buf.indexOf(
|
|
482
|
-
this.tokens.push(new Token(
|
|
489
|
+
else if (buf.indexOf(':') !== -1) {
|
|
490
|
+
this.tokens.push(new Token('ID_RANGE', buf));
|
|
483
491
|
}
|
|
484
492
|
else {
|
|
485
|
-
this.tokens.push(new Token(
|
|
493
|
+
this.tokens.push(new Token('ID', buf));
|
|
486
494
|
}
|
|
487
495
|
}
|
|
488
|
-
else if (buf.indexOf(
|
|
489
|
-
this.tokens.push(new Token(
|
|
496
|
+
else if (buf.indexOf(':') !== -1) {
|
|
497
|
+
this.tokens.push(new Token('RANGE', buf));
|
|
490
498
|
}
|
|
491
499
|
else {
|
|
492
|
-
// @ts-ignore
|
|
493
500
|
if (isNaN(buf[buf.length - 1])) {
|
|
494
|
-
this.tokens.push(new Token(
|
|
501
|
+
this.tokens.push(new Token('INVALID_REF', buf));
|
|
495
502
|
}
|
|
496
503
|
else {
|
|
497
|
-
this.tokens.push(new Token(
|
|
504
|
+
this.tokens.push(new Token('REF', buf));
|
|
498
505
|
}
|
|
499
506
|
}
|
|
500
507
|
}
|
|
@@ -506,16 +513,17 @@ class Lexer {
|
|
|
506
513
|
}
|
|
507
514
|
}
|
|
508
515
|
skipSpaces() {
|
|
509
|
-
let space =
|
|
516
|
+
let space = '';
|
|
510
517
|
while (this.isWhiteSpace()) {
|
|
511
518
|
space += this.formula[this.index++];
|
|
512
519
|
}
|
|
513
|
-
if (space !==
|
|
514
|
-
this.tokens.push(new Token(
|
|
520
|
+
if (space !== '') {
|
|
521
|
+
this.tokens.push(new Token('SPACE', space));
|
|
515
522
|
}
|
|
516
523
|
}
|
|
517
524
|
getString(quote = '"') {
|
|
518
|
-
let buf =
|
|
525
|
+
let buf = '';
|
|
526
|
+
// eslint-disable-next-line no-constant-condition
|
|
519
527
|
while (true) {
|
|
520
528
|
const c = this.get();
|
|
521
529
|
this.next();
|
|
@@ -563,30 +571,31 @@ class Parser {
|
|
|
563
571
|
};
|
|
564
572
|
while (this.tokens.length > this.index) {
|
|
565
573
|
const token = this.tokens[this.index++];
|
|
566
|
-
if (token.type ===
|
|
574
|
+
if (token.type === 'SPACE') {
|
|
567
575
|
continue;
|
|
568
576
|
}
|
|
569
|
-
if (token.type ===
|
|
577
|
+
if (token.type === 'COMMA') {
|
|
570
578
|
if (!underFunction) {
|
|
571
|
-
throw new FormulaError(
|
|
579
|
+
throw new FormulaError('#ERROR!', 'Invalid comma');
|
|
572
580
|
}
|
|
573
581
|
return complement(true);
|
|
574
582
|
}
|
|
575
|
-
else if (token.type ===
|
|
576
|
-
token.type ===
|
|
577
|
-
token.type ===
|
|
578
|
-
token.type ===
|
|
579
|
-
token.type ===
|
|
580
|
-
token.type ===
|
|
581
|
-
token.type ===
|
|
583
|
+
else if (token.type === 'VALUE' ||
|
|
584
|
+
token.type === 'ID' ||
|
|
585
|
+
token.type === 'ID_RANGE' ||
|
|
586
|
+
token.type === 'REF' ||
|
|
587
|
+
token.type === 'RANGE' ||
|
|
588
|
+
token.type === 'UNREFERENCED' ||
|
|
589
|
+
token.type === 'INVALID_REF') {
|
|
582
590
|
const expr = token.convert();
|
|
583
591
|
stack.push(expr);
|
|
584
592
|
}
|
|
585
|
-
else if (token.type ===
|
|
593
|
+
else if (token.type === 'FUNCTION') {
|
|
586
594
|
this.index++;
|
|
587
595
|
this.depth++;
|
|
588
596
|
const func = token.convert();
|
|
589
597
|
stack.push(func);
|
|
598
|
+
// eslint-disable-next-line no-constant-condition
|
|
590
599
|
while (true) {
|
|
591
600
|
const { expr, hasNext } = this.parse(true);
|
|
592
601
|
if (expr) {
|
|
@@ -597,26 +606,26 @@ class Parser {
|
|
|
597
606
|
}
|
|
598
607
|
}
|
|
599
608
|
}
|
|
600
|
-
else if (token.type ===
|
|
609
|
+
else if (token.type === 'OPEN') {
|
|
601
610
|
this.depth++;
|
|
602
611
|
const { expr } = this.parse(false);
|
|
603
612
|
stack.push(expr);
|
|
604
613
|
}
|
|
605
|
-
else if (token.type ===
|
|
614
|
+
else if (token.type === 'CLOSE') {
|
|
606
615
|
if (this.depth-- === 0) {
|
|
607
|
-
throw new FormulaError(
|
|
616
|
+
throw new FormulaError('#ERROR!', 'Unexpected end paren');
|
|
608
617
|
}
|
|
609
618
|
return complement();
|
|
610
619
|
}
|
|
611
|
-
else if (token.type ===
|
|
620
|
+
else if (token.type === 'INFIX_OPERATOR') {
|
|
612
621
|
const operator = token.convert();
|
|
613
622
|
let left = stack.pop();
|
|
614
623
|
if (left == null) {
|
|
615
|
-
if (operator.name ===
|
|
624
|
+
if (operator.name === 'minus' || operator.name === 'add') {
|
|
616
625
|
left = ZERO;
|
|
617
626
|
}
|
|
618
627
|
else {
|
|
619
|
-
throw new FormulaError(
|
|
628
|
+
throw new FormulaError('#ERROR!', 'Missing left expression');
|
|
620
629
|
}
|
|
621
630
|
}
|
|
622
631
|
if (lastOperator == null) {
|
|
@@ -636,7 +645,7 @@ class Parser {
|
|
|
636
645
|
}
|
|
637
646
|
lastOperator = operator;
|
|
638
647
|
}
|
|
639
|
-
else if (token.type ===
|
|
648
|
+
else if (token.type === 'PREFIX_OPERATOR') {
|
|
640
649
|
const operator = token.convert();
|
|
641
650
|
if (lastOperator) {
|
|
642
651
|
lastOperator.args.push(operator);
|
|
@@ -652,11 +661,11 @@ class Parser {
|
|
|
652
661
|
}
|
|
653
662
|
exports.Parser = Parser;
|
|
654
663
|
const absolutizeFormula = ({ value, table, slideY = 0, slideX = 0, }) => {
|
|
655
|
-
if (typeof value ===
|
|
656
|
-
if (value.charAt(0) ===
|
|
664
|
+
if (typeof value === 'string' || value instanceof String) {
|
|
665
|
+
if (value.charAt(0) === '=') {
|
|
657
666
|
const lexer = new Lexer(value.substring(1));
|
|
658
667
|
lexer.tokenize();
|
|
659
|
-
return
|
|
668
|
+
return '=' + lexer.stringifyToId(table, slideY, slideX);
|
|
660
669
|
}
|
|
661
670
|
}
|
|
662
671
|
return value;
|
|
@@ -673,7 +682,7 @@ const stripSheetName = (sheetName) => {
|
|
|
673
682
|
};
|
|
674
683
|
exports.stripSheetName = stripSheetName;
|
|
675
684
|
const wrapSheetName = (sheetName) => {
|
|
676
|
-
if (sheetName.indexOf(
|
|
685
|
+
if (sheetName.indexOf(' ') !== -1) {
|
|
677
686
|
return `'${sheetName}'`;
|
|
678
687
|
}
|
|
679
688
|
return sheetName;
|