@gridsheet/functions 3.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +75 -0
- package/dist/functions/src/index.d.ts +7 -0
- package/dist/functions/src/index.d.ts.map +1 -0
- package/dist/functions/src/information/index.d.ts +4 -0
- package/dist/functions/src/information/index.d.ts.map +1 -0
- package/dist/functions/src/information/isblank.d.ts +9 -0
- package/dist/functions/src/information/isblank.d.ts.map +1 -0
- package/dist/functions/src/information/isblank.spec.d.ts +2 -0
- package/dist/functions/src/information/isblank.spec.d.ts.map +1 -0
- package/dist/functions/src/information/isdate.d.ts +9 -0
- package/dist/functions/src/information/isdate.d.ts.map +1 -0
- package/dist/functions/src/information/isdate.spec.d.ts +2 -0
- package/dist/functions/src/information/isdate.spec.d.ts.map +1 -0
- package/dist/functions/src/information/isemail.d.ts +9 -0
- package/dist/functions/src/information/isemail.d.ts.map +1 -0
- package/dist/functions/src/information/isemail.spec.d.ts +2 -0
- package/dist/functions/src/information/isemail.spec.d.ts.map +1 -0
- package/dist/functions/src/information/iserr.d.ts +9 -0
- package/dist/functions/src/information/iserr.d.ts.map +1 -0
- package/dist/functions/src/information/iserr.spec.d.ts +2 -0
- package/dist/functions/src/information/iserr.spec.d.ts.map +1 -0
- package/dist/functions/src/information/iserror.d.ts +9 -0
- package/dist/functions/src/information/iserror.d.ts.map +1 -0
- package/dist/functions/src/information/iserror.spec.d.ts +2 -0
- package/dist/functions/src/information/iserror.spec.d.ts.map +1 -0
- package/dist/functions/src/information/isformula.d.ts +9 -0
- package/dist/functions/src/information/isformula.d.ts.map +1 -0
- package/dist/functions/src/information/isformula.spec.d.ts +2 -0
- package/dist/functions/src/information/isformula.spec.d.ts.map +1 -0
- package/dist/functions/src/information/islogical.d.ts +9 -0
- package/dist/functions/src/information/islogical.d.ts.map +1 -0
- package/dist/functions/src/information/islogical.spec.d.ts +2 -0
- package/dist/functions/src/information/islogical.spec.d.ts.map +1 -0
- package/dist/functions/src/information/isna.d.ts +9 -0
- package/dist/functions/src/information/isna.d.ts.map +1 -0
- package/dist/functions/src/information/isna.spec.d.ts +2 -0
- package/dist/functions/src/information/isna.spec.d.ts.map +1 -0
- package/dist/functions/src/information/isnontext.d.ts +9 -0
- package/dist/functions/src/information/isnontext.d.ts.map +1 -0
- package/dist/functions/src/information/isnontext.spec.d.ts +2 -0
- package/dist/functions/src/information/isnontext.spec.d.ts.map +1 -0
- package/dist/functions/src/information/isref.d.ts +9 -0
- package/dist/functions/src/information/isref.d.ts.map +1 -0
- package/dist/functions/src/information/isref.spec.d.ts +2 -0
- package/dist/functions/src/information/isref.spec.d.ts.map +1 -0
- package/dist/functions/src/information/istext.d.ts +9 -0
- package/dist/functions/src/information/istext.d.ts.map +1 -0
- package/dist/functions/src/information/istext.spec.d.ts +2 -0
- package/dist/functions/src/information/istext.spec.d.ts.map +1 -0
- package/dist/functions/src/information/n.d.ts +9 -0
- package/dist/functions/src/information/n.d.ts.map +1 -0
- package/dist/functions/src/information/n.spec.d.ts +2 -0
- package/dist/functions/src/information/n.spec.d.ts.map +1 -0
- package/dist/functions/src/information/na.d.ts +9 -0
- package/dist/functions/src/information/na.d.ts.map +1 -0
- package/dist/functions/src/information/na.spec.d.ts +2 -0
- package/dist/functions/src/information/na.spec.d.ts.map +1 -0
- package/dist/functions/src/information/sheets.d.ts +9 -0
- package/dist/functions/src/information/sheets.d.ts.map +1 -0
- package/dist/functions/src/information/sheets.spec.d.ts +2 -0
- package/dist/functions/src/information/sheets.spec.d.ts.map +1 -0
- package/dist/functions/src/logical/ifna.d.ts +10 -0
- package/dist/functions/src/logical/ifna.d.ts.map +1 -0
- package/dist/functions/src/logical/ifs.d.ts +10 -0
- package/dist/functions/src/logical/ifs.d.ts.map +1 -0
- package/dist/functions/src/logical/index.d.ts +4 -0
- package/dist/functions/src/logical/index.d.ts.map +1 -0
- package/dist/functions/src/logical/xor.d.ts +9 -0
- package/dist/functions/src/logical/xor.d.ts.map +1 -0
- package/dist/functions/src/lookup/column.d.ts +12 -0
- package/dist/functions/src/lookup/column.d.ts.map +1 -0
- package/dist/functions/src/lookup/column.spec.d.ts +2 -0
- package/dist/functions/src/lookup/column.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/columns.d.ts +9 -0
- package/dist/functions/src/lookup/columns.d.ts.map +1 -0
- package/dist/functions/src/lookup/columns.spec.d.ts +2 -0
- package/dist/functions/src/lookup/columns.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/hlookup.d.ts +9 -0
- package/dist/functions/src/lookup/hlookup.d.ts.map +1 -0
- package/dist/functions/src/lookup/hlookup.spec.d.ts +2 -0
- package/dist/functions/src/lookup/hlookup.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/index.d.ts +4 -0
- package/dist/functions/src/lookup/index.d.ts.map +1 -0
- package/dist/functions/src/lookup/indexFn.d.ts +10 -0
- package/dist/functions/src/lookup/indexFn.d.ts.map +1 -0
- package/dist/functions/src/lookup/indexFn.spec.d.ts +2 -0
- package/dist/functions/src/lookup/indexFn.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/match.d.ts +10 -0
- package/dist/functions/src/lookup/match.d.ts.map +1 -0
- package/dist/functions/src/lookup/match.spec.d.ts +2 -0
- package/dist/functions/src/lookup/match.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/row.d.ts +12 -0
- package/dist/functions/src/lookup/row.d.ts.map +1 -0
- package/dist/functions/src/lookup/row.spec.d.ts +2 -0
- package/dist/functions/src/lookup/row.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/rows.d.ts +9 -0
- package/dist/functions/src/lookup/rows.d.ts.map +1 -0
- package/dist/functions/src/lookup/rows.spec.d.ts +2 -0
- package/dist/functions/src/lookup/rows.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/sheet.d.ts +9 -0
- package/dist/functions/src/lookup/sheet.d.ts.map +1 -0
- package/dist/functions/src/lookup/sheet.spec.d.ts +2 -0
- package/dist/functions/src/lookup/sheet.spec.d.ts.map +1 -0
- package/dist/functions/src/lookup/vlookup.d.ts +9 -0
- package/dist/functions/src/lookup/vlookup.d.ts.map +1 -0
- package/dist/functions/src/lookup/vlookup.spec.d.ts +2 -0
- package/dist/functions/src/lookup/vlookup.spec.d.ts.map +1 -0
- package/dist/functions/src/math/__matrix_base.d.ts +15 -0
- package/dist/functions/src/math/__matrix_base.d.ts.map +1 -0
- package/dist/functions/src/math/acos.d.ts +9 -0
- package/dist/functions/src/math/acos.d.ts.map +1 -0
- package/dist/functions/src/math/acos.spec.d.ts +2 -0
- package/dist/functions/src/math/acos.spec.d.ts.map +1 -0
- package/dist/functions/src/math/asin.d.ts +9 -0
- package/dist/functions/src/math/asin.d.ts.map +1 -0
- package/dist/functions/src/math/asin.spec.d.ts +2 -0
- package/dist/functions/src/math/asin.spec.d.ts.map +1 -0
- package/dist/functions/src/math/atan.d.ts +9 -0
- package/dist/functions/src/math/atan.d.ts.map +1 -0
- package/dist/functions/src/math/atan.spec.d.ts +2 -0
- package/dist/functions/src/math/atan.spec.d.ts.map +1 -0
- package/dist/functions/src/math/atan2.d.ts +9 -0
- package/dist/functions/src/math/atan2.d.ts.map +1 -0
- package/dist/functions/src/math/atan2.spec.d.ts +2 -0
- package/dist/functions/src/math/atan2.spec.d.ts.map +1 -0
- package/dist/functions/src/math/base.d.ts +10 -0
- package/dist/functions/src/math/base.d.ts.map +1 -0
- package/dist/functions/src/math/base.spec.d.ts +2 -0
- package/dist/functions/src/math/base.spec.d.ts.map +1 -0
- package/dist/functions/src/math/cos.d.ts +9 -0
- package/dist/functions/src/math/cos.d.ts.map +1 -0
- package/dist/functions/src/math/cos.spec.d.ts +2 -0
- package/dist/functions/src/math/cos.spec.d.ts.map +1 -0
- package/dist/functions/src/math/countif.d.ts +9 -0
- package/dist/functions/src/math/countif.d.ts.map +1 -0
- package/dist/functions/src/math/countif.spec.d.ts +2 -0
- package/dist/functions/src/math/countif.spec.d.ts.map +1 -0
- package/dist/functions/src/math/countifs.d.ts +10 -0
- package/dist/functions/src/math/countifs.d.ts.map +1 -0
- package/dist/functions/src/math/countifs.spec.d.ts +2 -0
- package/dist/functions/src/math/countifs.spec.d.ts.map +1 -0
- package/dist/functions/src/math/even.d.ts +9 -0
- package/dist/functions/src/math/even.d.ts.map +1 -0
- package/dist/functions/src/math/even.spec.d.ts +2 -0
- package/dist/functions/src/math/even.spec.d.ts.map +1 -0
- package/dist/functions/src/math/exp.d.ts +10 -0
- package/dist/functions/src/math/exp.d.ts.map +1 -0
- package/dist/functions/src/math/exp.spec.d.ts +2 -0
- package/dist/functions/src/math/exp.spec.d.ts.map +1 -0
- package/dist/functions/src/math/fact.d.ts +9 -0
- package/dist/functions/src/math/fact.d.ts.map +1 -0
- package/dist/functions/src/math/fact.spec.d.ts +2 -0
- package/dist/functions/src/math/fact.spec.d.ts.map +1 -0
- package/dist/functions/src/math/index.d.ts +4 -0
- package/dist/functions/src/math/index.d.ts.map +1 -0
- package/dist/functions/src/math/int.d.ts +9 -0
- package/dist/functions/src/math/int.d.ts.map +1 -0
- package/dist/functions/src/math/int.spec.d.ts +2 -0
- package/dist/functions/src/math/int.spec.d.ts.map +1 -0
- package/dist/functions/src/math/iseven.d.ts +9 -0
- package/dist/functions/src/math/iseven.d.ts.map +1 -0
- package/dist/functions/src/math/iseven.spec.d.ts +2 -0
- package/dist/functions/src/math/iseven.spec.d.ts.map +1 -0
- package/dist/functions/src/math/isodd.d.ts +9 -0
- package/dist/functions/src/math/isodd.d.ts.map +1 -0
- package/dist/functions/src/math/isodd.spec.d.ts +2 -0
- package/dist/functions/src/math/isodd.spec.d.ts.map +1 -0
- package/dist/functions/src/math/lcm.d.ts +10 -0
- package/dist/functions/src/math/lcm.d.ts.map +1 -0
- package/dist/functions/src/math/lcm.spec.d.ts +2 -0
- package/dist/functions/src/math/lcm.spec.d.ts.map +1 -0
- package/dist/functions/src/math/ln.d.ts +9 -0
- package/dist/functions/src/math/ln.d.ts.map +1 -0
- package/dist/functions/src/math/ln.spec.d.ts +2 -0
- package/dist/functions/src/math/ln.spec.d.ts.map +1 -0
- package/dist/functions/src/math/log.d.ts +10 -0
- package/dist/functions/src/math/log.d.ts.map +1 -0
- package/dist/functions/src/math/log.spec.d.ts +2 -0
- package/dist/functions/src/math/log.spec.d.ts.map +1 -0
- package/dist/functions/src/math/log10.d.ts +9 -0
- package/dist/functions/src/math/log10.d.ts.map +1 -0
- package/dist/functions/src/math/log10.spec.d.ts +2 -0
- package/dist/functions/src/math/log10.spec.d.ts.map +1 -0
- package/dist/functions/src/math/mdeterm.d.ts +11 -0
- package/dist/functions/src/math/mdeterm.d.ts.map +1 -0
- package/dist/functions/src/math/minverse.d.ts +12 -0
- package/dist/functions/src/math/minverse.d.ts.map +1 -0
- package/dist/functions/src/math/mmult.d.ts +11 -0
- package/dist/functions/src/math/mmult.d.ts.map +1 -0
- package/dist/functions/src/math/mod.d.ts +10 -0
- package/dist/functions/src/math/mod.d.ts.map +1 -0
- package/dist/functions/src/math/mod.spec.d.ts +2 -0
- package/dist/functions/src/math/mod.spec.d.ts.map +1 -0
- package/dist/functions/src/math/odd.d.ts +9 -0
- package/dist/functions/src/math/odd.d.ts.map +1 -0
- package/dist/functions/src/math/odd.spec.d.ts +2 -0
- package/dist/functions/src/math/odd.spec.d.ts.map +1 -0
- package/dist/functions/src/math/pi.d.ts +9 -0
- package/dist/functions/src/math/pi.d.ts.map +1 -0
- package/dist/functions/src/math/pi.spec.d.ts +2 -0
- package/dist/functions/src/math/pi.spec.d.ts.map +1 -0
- package/dist/functions/src/math/product.d.ts +9 -0
- package/dist/functions/src/math/product.d.ts.map +1 -0
- package/dist/functions/src/math/product.spec.d.ts +2 -0
- package/dist/functions/src/math/product.spec.d.ts.map +1 -0
- package/dist/functions/src/math/radians.d.ts +9 -0
- package/dist/functions/src/math/radians.d.ts.map +1 -0
- package/dist/functions/src/math/radians.spec.d.ts +2 -0
- package/dist/functions/src/math/radians.spec.d.ts.map +1 -0
- package/dist/functions/src/math/rand.d.ts +9 -0
- package/dist/functions/src/math/rand.d.ts.map +1 -0
- package/dist/functions/src/math/rand.spec.d.ts +2 -0
- package/dist/functions/src/math/rand.spec.d.ts.map +1 -0
- package/dist/functions/src/math/round.d.ts +9 -0
- package/dist/functions/src/math/round.d.ts.map +1 -0
- package/dist/functions/src/math/round.spec.d.ts +2 -0
- package/dist/functions/src/math/round.spec.d.ts.map +1 -0
- package/dist/functions/src/math/rounddown.d.ts +9 -0
- package/dist/functions/src/math/rounddown.d.ts.map +1 -0
- package/dist/functions/src/math/rounddown.spec.d.ts +2 -0
- package/dist/functions/src/math/rounddown.spec.d.ts.map +1 -0
- package/dist/functions/src/math/roundup.d.ts +9 -0
- package/dist/functions/src/math/roundup.d.ts.map +1 -0
- package/dist/functions/src/math/roundup.spec.d.ts +2 -0
- package/dist/functions/src/math/roundup.spec.d.ts.map +1 -0
- package/dist/functions/src/math/sequence.d.ts +11 -0
- package/dist/functions/src/math/sequence.d.ts.map +1 -0
- package/dist/functions/src/math/sequence.spec.d.ts +2 -0
- package/dist/functions/src/math/sequence.spec.d.ts.map +1 -0
- package/dist/functions/src/math/sign.d.ts +9 -0
- package/dist/functions/src/math/sign.d.ts.map +1 -0
- package/dist/functions/src/math/sign.spec.d.ts +2 -0
- package/dist/functions/src/math/sign.spec.d.ts.map +1 -0
- package/dist/functions/src/math/sin.d.ts +9 -0
- package/dist/functions/src/math/sin.d.ts.map +1 -0
- package/dist/functions/src/math/sin.spec.d.ts +2 -0
- package/dist/functions/src/math/sin.spec.d.ts.map +1 -0
- package/dist/functions/src/math/sqrt.d.ts +9 -0
- package/dist/functions/src/math/sqrt.d.ts.map +1 -0
- package/dist/functions/src/math/sqrt.spec.d.ts +2 -0
- package/dist/functions/src/math/sqrt.spec.d.ts.map +1 -0
- package/dist/functions/src/math/sumif.d.ts +9 -0
- package/dist/functions/src/math/sumif.d.ts.map +1 -0
- package/dist/functions/src/math/sumifs.d.ts +10 -0
- package/dist/functions/src/math/sumifs.d.ts.map +1 -0
- package/dist/functions/src/math/sumifs.spec.d.ts +2 -0
- package/dist/functions/src/math/sumifs.spec.d.ts.map +1 -0
- package/dist/functions/src/math/sumproduct.d.ts +10 -0
- package/dist/functions/src/math/sumproduct.d.ts.map +1 -0
- package/dist/functions/src/math/sumsq.d.ts +9 -0
- package/dist/functions/src/math/sumsq.d.ts.map +1 -0
- package/dist/functions/src/math/sumsq.spec.d.ts +2 -0
- package/dist/functions/src/math/sumsq.spec.d.ts.map +1 -0
- package/dist/functions/src/math/tan.d.ts +9 -0
- package/dist/functions/src/math/tan.d.ts.map +1 -0
- package/dist/functions/src/math/tan.spec.d.ts +2 -0
- package/dist/functions/src/math/tan.spec.d.ts.map +1 -0
- package/dist/functions/src/math/transpose.d.ts +11 -0
- package/dist/functions/src/math/transpose.d.ts.map +1 -0
- package/dist/functions/src/math/trunc.d.ts +9 -0
- package/dist/functions/src/math/trunc.d.ts.map +1 -0
- package/dist/functions/src/math/trunc.spec.d.ts +2 -0
- package/dist/functions/src/math/trunc.spec.d.ts.map +1 -0
- package/dist/functions/src/math/unaryPercent.d.ts +9 -0
- package/dist/functions/src/math/unaryPercent.d.ts.map +1 -0
- package/dist/functions/src/math/unaryPercent.spec.d.ts +2 -0
- package/dist/functions/src/math/unaryPercent.spec.d.ts.map +1 -0
- package/dist/functions/src/math/uplus.d.ts +9 -0
- package/dist/functions/src/math/uplus.d.ts.map +1 -0
- package/dist/functions/src/math/uplus.spec.d.ts +2 -0
- package/dist/functions/src/math/uplus.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/averageif.d.ts +9 -0
- package/dist/functions/src/statistics/averageif.d.ts.map +1 -0
- package/dist/functions/src/statistics/averageifs.d.ts +10 -0
- package/dist/functions/src/statistics/averageifs.d.ts.map +1 -0
- package/dist/functions/src/statistics/averageifs.spec.d.ts +2 -0
- package/dist/functions/src/statistics/averageifs.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/correl.d.ts +10 -0
- package/dist/functions/src/statistics/correl.d.ts.map +1 -0
- package/dist/functions/src/statistics/correl.spec.d.ts +2 -0
- package/dist/functions/src/statistics/correl.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/covariance_p.d.ts +10 -0
- package/dist/functions/src/statistics/covariance_p.d.ts.map +1 -0
- package/dist/functions/src/statistics/covariance_p.spec.d.ts +2 -0
- package/dist/functions/src/statistics/covariance_p.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/covariance_s.d.ts +10 -0
- package/dist/functions/src/statistics/covariance_s.d.ts.map +1 -0
- package/dist/functions/src/statistics/covariance_s.spec.d.ts +2 -0
- package/dist/functions/src/statistics/covariance_s.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/index.d.ts +4 -0
- package/dist/functions/src/statistics/index.d.ts.map +1 -0
- package/dist/functions/src/statistics/median.d.ts +10 -0
- package/dist/functions/src/statistics/median.d.ts.map +1 -0
- package/dist/functions/src/statistics/median.spec.d.ts +2 -0
- package/dist/functions/src/statistics/median.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/mode_sngl.d.ts +10 -0
- package/dist/functions/src/statistics/mode_sngl.d.ts.map +1 -0
- package/dist/functions/src/statistics/mode_sngl.spec.d.ts +2 -0
- package/dist/functions/src/statistics/mode_sngl.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/percentile_inc.d.ts +10 -0
- package/dist/functions/src/statistics/percentile_inc.d.ts.map +1 -0
- package/dist/functions/src/statistics/percentile_inc.spec.d.ts +2 -0
- package/dist/functions/src/statistics/percentile_inc.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/quartile_inc.d.ts +10 -0
- package/dist/functions/src/statistics/quartile_inc.d.ts.map +1 -0
- package/dist/functions/src/statistics/quartile_inc.spec.d.ts +2 -0
- package/dist/functions/src/statistics/quartile_inc.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/rank_eq.d.ts +10 -0
- package/dist/functions/src/statistics/rank_eq.d.ts.map +1 -0
- package/dist/functions/src/statistics/rank_eq.spec.d.ts +2 -0
- package/dist/functions/src/statistics/rank_eq.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/rsq.d.ts +10 -0
- package/dist/functions/src/statistics/rsq.d.ts.map +1 -0
- package/dist/functions/src/statistics/rsq.spec.d.ts +2 -0
- package/dist/functions/src/statistics/rsq.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/stdev_p.d.ts +10 -0
- package/dist/functions/src/statistics/stdev_p.d.ts.map +1 -0
- package/dist/functions/src/statistics/stdev_p.spec.d.ts +2 -0
- package/dist/functions/src/statistics/stdev_p.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/stdev_s.d.ts +10 -0
- package/dist/functions/src/statistics/stdev_s.d.ts.map +1 -0
- package/dist/functions/src/statistics/stdev_s.spec.d.ts +2 -0
- package/dist/functions/src/statistics/stdev_s.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/t_test.d.ts +10 -0
- package/dist/functions/src/statistics/t_test.d.ts.map +1 -0
- package/dist/functions/src/statistics/t_test.spec.d.ts +2 -0
- package/dist/functions/src/statistics/t_test.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/var_p.d.ts +10 -0
- package/dist/functions/src/statistics/var_p.d.ts.map +1 -0
- package/dist/functions/src/statistics/var_p.spec.d.ts +2 -0
- package/dist/functions/src/statistics/var_p.spec.d.ts.map +1 -0
- package/dist/functions/src/statistics/var_s.d.ts +10 -0
- package/dist/functions/src/statistics/var_s.d.ts.map +1 -0
- package/dist/functions/src/statistics/var_s.spec.d.ts +2 -0
- package/dist/functions/src/statistics/var_s.spec.d.ts.map +1 -0
- package/dist/functions/src/text/char.d.ts +9 -0
- package/dist/functions/src/text/char.d.ts.map +1 -0
- package/dist/functions/src/text/char.spec.d.ts +2 -0
- package/dist/functions/src/text/char.spec.d.ts.map +1 -0
- package/dist/functions/src/text/clean.d.ts +9 -0
- package/dist/functions/src/text/clean.d.ts.map +1 -0
- package/dist/functions/src/text/clean.spec.d.ts +2 -0
- package/dist/functions/src/text/clean.spec.d.ts.map +1 -0
- package/dist/functions/src/text/concatenate.d.ts +9 -0
- package/dist/functions/src/text/concatenate.d.ts.map +1 -0
- package/dist/functions/src/text/concatenate.spec.d.ts +2 -0
- package/dist/functions/src/text/concatenate.spec.d.ts.map +1 -0
- package/dist/functions/src/text/exact.d.ts +9 -0
- package/dist/functions/src/text/exact.d.ts.map +1 -0
- package/dist/functions/src/text/exact.spec.d.ts +2 -0
- package/dist/functions/src/text/exact.spec.d.ts.map +1 -0
- package/dist/functions/src/text/index.d.ts +4 -0
- package/dist/functions/src/text/index.d.ts.map +1 -0
- package/dist/functions/src/text/join.d.ts +10 -0
- package/dist/functions/src/text/join.d.ts.map +1 -0
- package/dist/functions/src/text/join.spec.d.ts +2 -0
- package/dist/functions/src/text/join.spec.d.ts.map +1 -0
- package/dist/functions/src/text/lenb.d.ts +9 -0
- package/dist/functions/src/text/lenb.d.ts.map +1 -0
- package/dist/functions/src/text/lenb.spec.d.ts +2 -0
- package/dist/functions/src/text/lenb.spec.d.ts.map +1 -0
- package/dist/functions/src/text/lower.d.ts +9 -0
- package/dist/functions/src/text/lower.d.ts.map +1 -0
- package/dist/functions/src/text/lower.spec.d.ts +2 -0
- package/dist/functions/src/text/lower.spec.d.ts.map +1 -0
- package/dist/functions/src/text/proper.d.ts +9 -0
- package/dist/functions/src/text/proper.d.ts.map +1 -0
- package/dist/functions/src/text/proper.spec.d.ts +2 -0
- package/dist/functions/src/text/proper.spec.d.ts.map +1 -0
- package/dist/functions/src/text/replace.d.ts +10 -0
- package/dist/functions/src/text/replace.d.ts.map +1 -0
- package/dist/functions/src/text/replace.spec.d.ts +2 -0
- package/dist/functions/src/text/replace.spec.d.ts.map +1 -0
- package/dist/functions/src/text/rept.d.ts +10 -0
- package/dist/functions/src/text/rept.d.ts.map +1 -0
- package/dist/functions/src/text/rept.spec.d.ts +2 -0
- package/dist/functions/src/text/rept.spec.d.ts.map +1 -0
- package/dist/functions/src/text/trim.d.ts +9 -0
- package/dist/functions/src/text/trim.d.ts.map +1 -0
- package/dist/functions/src/text/trim.spec.d.ts +2 -0
- package/dist/functions/src/text/trim.spec.d.ts.map +1 -0
- package/dist/functions/src/text/unichar.d.ts +9 -0
- package/dist/functions/src/text/unichar.d.ts.map +1 -0
- package/dist/functions/src/text/unichar.spec.d.ts +2 -0
- package/dist/functions/src/text/unichar.spec.d.ts.map +1 -0
- package/dist/functions/src/text/unicode.d.ts +9 -0
- package/dist/functions/src/text/unicode.d.ts.map +1 -0
- package/dist/functions/src/text/unicode.spec.d.ts +2 -0
- package/dist/functions/src/text/unicode.spec.d.ts.map +1 -0
- package/dist/functions/src/text/upper.d.ts +9 -0
- package/dist/functions/src/text/upper.d.ts.map +1 -0
- package/dist/functions/src/text/upper.spec.d.ts +2 -0
- package/dist/functions/src/text/upper.spec.d.ts.map +1 -0
- package/dist/functions/src/time/date.d.ts +9 -0
- package/dist/functions/src/time/date.d.ts.map +1 -0
- package/dist/functions/src/time/day.d.ts +9 -0
- package/dist/functions/src/time/day.d.ts.map +1 -0
- package/dist/functions/src/time/days.d.ts +9 -0
- package/dist/functions/src/time/days.d.ts.map +1 -0
- package/dist/functions/src/time/hour.d.ts +9 -0
- package/dist/functions/src/time/hour.d.ts.map +1 -0
- package/dist/functions/src/time/index.d.ts +4 -0
- package/dist/functions/src/time/index.d.ts.map +1 -0
- package/dist/functions/src/time/minute.d.ts +9 -0
- package/dist/functions/src/time/minute.d.ts.map +1 -0
- package/dist/functions/src/time/month.d.ts +9 -0
- package/dist/functions/src/time/month.d.ts.map +1 -0
- package/dist/functions/src/time/second.d.ts +9 -0
- package/dist/functions/src/time/second.d.ts.map +1 -0
- package/dist/functions/src/time/time.d.ts +9 -0
- package/dist/functions/src/time/time.d.ts.map +1 -0
- package/dist/functions/src/time/today.d.ts +9 -0
- package/dist/functions/src/time/today.d.ts.map +1 -0
- package/dist/functions/src/time/workday.d.ts +9 -0
- package/dist/functions/src/time/workday.d.ts.map +1 -0
- package/dist/functions/src/time/year.d.ts +9 -0
- package/dist/functions/src/time/year.d.ts.map +1 -0
- package/dist/functions/src/types.d.ts +2 -0
- package/dist/functions/src/types.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +321 -0
- package/dist/index.js.map +1 -0
- package/dist/lookup/index.d.ts +6 -0
- package/dist/lookup/index.js +360 -0
- package/dist/lookup/index.js.map +1 -0
- package/dist/math/index.d.ts +6 -0
- package/dist/math/index.js +1021 -0
- package/dist/math/index.js.map +1 -0
- package/dist/statistics/index.d.ts +6 -0
- package/dist/statistics/index.js +706 -0
- package/dist/statistics/index.js.map +1 -0
- package/dist/text/index.d.ts +6 -0
- package/dist/text/index.js +258 -0
- package/dist/text/index.js.map +1 -0
- package/dist/time/index.d.ts +6 -0
- package/dist/time/index.js +194 -0
- package/dist/time/index.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/statistics/averageif.ts","../../src/statistics/averageifs.ts","../../src/statistics/median.ts","../../src/statistics/stdev_s.ts","../../src/statistics/stdev_p.ts","../../src/statistics/var_s.ts","../../src/statistics/var_p.ts","../../src/statistics/percentile_inc.ts","../../src/statistics/quartile_inc.ts","../../src/statistics/rank_eq.ts","../../src/statistics/correl.ts","../../src/statistics/covariance_s.ts","../../src/statistics/covariance_p.ts","../../src/statistics/mode_sngl.ts","../../src/statistics/rsq.ts","../../src/statistics/t_test.ts","../../src/statistics/index.ts"],"sourcesContent":["import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { Sheet, eachMatrix, stripMatrix, check, conditionArg, ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the average of a series of cells that meet a condition.`;\n\nexport class AverageifFunction extends BaseFunction {\n example = 'AVERAGEIF(A1:A10,\">20\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'range', description: 'A condition range.', takesMatrix: true, acceptedTypes: ['matrix'] },\n conditionArg,\n {\n name: 'average_range',\n description: 'A range to be averaged.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n optional: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected main(range: Sheet, condition: any, avgRange?: Sheet) {\n const conditionStr = ensureString(condition);\n const condArr: any[] = [];\n const avgArr: any[] = [];\n\n eachMatrix(\n range,\n (v) => {\n condArr.push(v);\n },\n this.at,\n );\n if (avgRange) {\n eachMatrix(\n avgRange,\n (v) => {\n avgArr.push(v);\n },\n this.at,\n );\n }\n\n let total = 0;\n let count = 0;\n condArr.forEach((c, i) => {\n const s = stripMatrix((avgRange ? avgArr[i] : c) ?? 0, this.at);\n if (typeof s === 'number' && check(c, conditionStr)) {\n total += s;\n count++;\n }\n });\n\n if (count === 0) {\n throw new FormulaError('#DIV/0!', 'No cells match the condition.');\n }\n return total / count;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, conditionArg } from '@gridsheet/core';\nimport { Sheet, eachMatrix, stripMatrix, createBooleanMask, ensureString } from '@gridsheet/core';\nimport type { FunctionCategory, PointType } from '@gridsheet/core';\n\nconst description = `Returns the average of a range depending on multiple criteria.`;\n\nexport class AverageifsFunction extends BaseFunction {\n example = 'AVERAGEIFS(A1:A10, B1:B10, \">20\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'average_range', description: 'The range to be averaged.', takesMatrix: true, acceptedTypes: ['matrix'] },\n { name: 'range1', description: 'First condition range.', takesMatrix: true, acceptedTypes: ['matrix'] },\n { ...conditionArg, name: 'condition1' },\n {\n name: 'range2',\n description: 'Additional condition range.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n optional: true,\n variadic: true,\n },\n { ...conditionArg, name: 'condition2', optional: true, variadic: true },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const validatedArgs = super.validate(args);\n if ((validatedArgs.length - 1) % 2 !== 0) {\n throw new FormulaError('#N/A', 'AVERAGEIFS requires average_range and at least one range/condition pair.');\n }\n if (!(validatedArgs[0] instanceof Sheet)) {\n throw new FormulaError('#VALUE!', 'First argument of AVERAGEIFS must be a range.');\n }\n const expectedRows = validatedArgs[0].numRows;\n const expectedCols = validatedArgs[0].numCols;\n\n const tables: Sheet[] = [];\n const conditions: string[] = [];\n for (let i = 1; i < validatedArgs.length; i += 2) {\n if (!(validatedArgs[i] instanceof Sheet)) {\n throw new FormulaError('#VALUE!', `Argument ${i + 1} of AVERAGEIFS must be a range.`);\n }\n if (validatedArgs[i].numRows !== expectedRows || validatedArgs[i].numCols !== expectedCols) {\n throw new FormulaError('#VALUE!', 'Array arguments to AVERAGEIFS are of different size.');\n }\n tables.push(validatedArgs[i] as Sheet);\n conditions.push(ensureString(validatedArgs[i + 1]));\n }\n const avgRange = validatedArgs[0];\n const mask = createBooleanMask(tables, conditions, this.at);\n return [avgRange, mask];\n }\n\n protected main(avgRange: Sheet, mask: boolean[][]) {\n let total = 0;\n let count = 0;\n eachMatrix(\n avgRange,\n (v: any, pt: PointType) => {\n if (pt && mask[pt.y][pt.x]) {\n const num = stripMatrix(v ?? 0, this.at);\n if (typeof num === 'number') {\n total += num;\n count++;\n }\n }\n },\n this.at,\n );\n\n if (count === 0) {\n return new FormulaError('#DIV/0!', 'No matching cells found for AVERAGEIFS.');\n }\n return total / count;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the median value in a numeric dataset.`;\n\nexport class MedianFunction extends BaseFunction {\n example = 'MEDIAN(A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Numbers or ranges to compute the median of.',\n takesMatrix: true,\n acceptedTypes: ['number', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const nums: number[] = [];\n for (const val of args) {\n eachMatrix(\n val,\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n }\n if (nums.length === 0) {\n throw new FormulaError('#NUM!', 'MEDIAN requires at least one numeric value.');\n }\n return [nums];\n }\n\n protected main(nums: number[]) {\n nums.sort((a, b) => a - b);\n const mid = Math.floor(nums.length / 2);\n return nums.length % 2 === 0 ? (nums[mid - 1] + nums[mid]) / 2 : nums[mid];\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the standard deviation based on a sample.`;\n\nexport class StdevSFunction extends BaseFunction {\n example = 'STDEV.S(A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Numbers or ranges representing the sample.',\n takesMatrix: true,\n acceptedTypes: ['number', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const nums: number[] = [];\n for (const val of args) {\n eachMatrix(\n val,\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n }\n if (nums.length < 2) {\n throw new FormulaError('#DIV/0!', 'STDEV.S requires at least 2 numeric values.');\n }\n return [nums];\n }\n\n protected main(nums: number[]) {\n const mean = nums.reduce((a, b) => a + b, 0) / nums.length;\n const variance = nums.reduce((acc, v) => acc + (v - mean) ** 2, 0) / (nums.length - 1);\n return Math.sqrt(variance);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the standard deviation based on the entire population.`;\n\nexport class StdevPFunction extends BaseFunction {\n example = 'STDEV.P(A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Numbers or ranges representing the entire population.',\n takesMatrix: true,\n acceptedTypes: ['number', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const nums: number[] = [];\n for (const val of args) {\n eachMatrix(\n val,\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n }\n if (nums.length < 1) {\n throw new FormulaError('#DIV/0!', 'STDEV.P requires at least 1 numeric value.');\n }\n return [nums];\n }\n\n protected main(nums: number[]) {\n const mean = nums.reduce((a, b) => a + b, 0) / nums.length;\n const variance = nums.reduce((acc, v) => acc + (v - mean) ** 2, 0) / nums.length;\n return Math.sqrt(variance);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the variance based on a sample.`;\n\nexport class VarSFunction extends BaseFunction {\n example = 'VAR.S(A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Numbers or ranges representing the sample.',\n takesMatrix: true,\n acceptedTypes: ['number', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const nums: number[] = [];\n for (const val of args) {\n eachMatrix(\n val,\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n }\n if (nums.length < 2) {\n throw new FormulaError('#DIV/0!', 'VAR.S requires at least 2 numeric values.');\n }\n return [nums];\n }\n\n protected main(nums: number[]) {\n const mean = nums.reduce((a, b) => a + b, 0) / nums.length;\n return nums.reduce((acc, v) => acc + (v - mean) ** 2, 0) / (nums.length - 1);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the variance based on the entire population.`;\n\nexport class VarPFunction extends BaseFunction {\n example = 'VAR.P(A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Numbers or ranges representing the entire population.',\n takesMatrix: true,\n acceptedTypes: ['number', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const nums: number[] = [];\n for (const val of args) {\n eachMatrix(\n val,\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n }\n if (nums.length < 1) {\n throw new FormulaError('#DIV/0!', 'VAR.P requires at least 1 numeric value.');\n }\n return [nums];\n }\n\n protected main(nums: number[]) {\n const mean = nums.reduce((a, b) => a + b, 0) / nums.length;\n return nums.reduce((acc, v) => acc + (v - mean) ** 2, 0) / nums.length;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the k-th percentile of values in a range, where k is in the range 0 to 1, inclusive.`;\n\nexport class PercentileIncFunction extends BaseFunction {\n example = 'PERCENTILE.INC(A1:A100, 0.9)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'data',\n description: 'The array or range of data to consider.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n { name: 'percentile', description: 'The percentile value between 0 and 1, inclusive.', acceptedTypes: ['number'] },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const k = ensureNumber(args[1]);\n if (k < 0 || k > 1) {\n throw new FormulaError('#NUM!', 'Percentile must be between 0 and 1.');\n }\n const nums: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n if (nums.length === 0) {\n throw new FormulaError('#NUM!', 'PERCENTILE.INC requires at least one numeric value.');\n }\n return [nums, k];\n }\n\n protected main(nums: number[], k: number) {\n nums.sort((a, b) => a - b);\n const pos = k * (nums.length - 1);\n const lo = Math.floor(pos);\n const hi = Math.ceil(pos);\n return nums[lo] + (nums[hi] - nums[lo]) * (pos - lo);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the quartile of a dataset, based on percentile values from 0 to 1, inclusive.`;\n\nexport class QuartileIncFunction extends BaseFunction {\n example = 'QUARTILE.INC(A1:A100, 1)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'data',\n description: 'The array or range of data to consider.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n {\n name: 'quartile_number',\n description: 'Which quartile to return: 0 (min), 1 (Q1), 2 (median), 3 (Q3), 4 (max).',\n acceptedTypes: ['number'],\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const q = Math.floor(ensureNumber(args[1]));\n if (q < 0 || q > 4) {\n throw new FormulaError('#NUM!', 'Quartile number must be between 0 and 4.');\n }\n const nums: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n if (nums.length === 0) {\n throw new FormulaError('#NUM!', 'QUARTILE.INC requires at least one numeric value.');\n }\n return [nums, q];\n }\n\n protected main(nums: number[], q: number) {\n nums.sort((a, b) => a - b);\n const k = q / 4;\n const pos = k * (nums.length - 1);\n const lo = Math.floor(pos);\n const hi = Math.ceil(pos);\n return nums[lo] + (nums[hi] - nums[lo]) * (pos - lo);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the rank of a number in a list of numbers. If more than one value has the same rank, the top rank of that set of values is returned.`;\n\nexport class RankEqFunction extends BaseFunction {\n example = 'RANK.EQ(A1, A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'value', description: 'The value whose rank will be determined.', acceptedTypes: ['number'] },\n {\n name: 'data',\n description: 'The array or range of data to consider.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n {\n name: 'is_ascending',\n description: 'Whether to rank in ascending order. Default is FALSE (descending).',\n acceptedTypes: ['boolean'],\n optional: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const v = ensureNumber(args[0]);\n const nums: number[] = [];\n eachMatrix(\n args[1],\n (n: any) => {\n if (n == null || n === '' || typeof n === 'boolean') {\n return;\n }\n if (typeof n === 'number' || (typeof n === 'string' && !isNaN(Number(n)))) {\n nums.push(ensureNumber(n));\n }\n },\n this.at,\n );\n if (nums.length === 0) {\n throw new FormulaError('#NUM!', 'RANK.EQ requires at least one numeric value in data.');\n }\n if (!nums.includes(v)) {\n throw new FormulaError('#N/A', 'Value not found in data range.');\n }\n const isAscending = args[2] ?? false;\n return [v, nums, isAscending];\n }\n\n protected main(v: number, nums: number[], isAscending: boolean) {\n nums.sort((a, b) => (isAscending ? a - b : b - a));\n return nums.indexOf(v) + 1;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the correlation coefficient of two datasets.`;\n\nexport class CorrelFunction extends BaseFunction {\n example = 'CORREL(A1:A100, B1:B100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'data_y',\n description: 'The range representing the dependent data.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n {\n name: 'data_x',\n description: 'The range representing the independent data.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const ys: number[] = [];\n const xs: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n ys.push(ensureNumber(v));\n }\n },\n this.at,\n );\n eachMatrix(\n args[1],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n xs.push(ensureNumber(v));\n }\n },\n this.at,\n );\n if (ys.length !== xs.length || ys.length < 2) {\n throw new FormulaError('#N/A', 'CORREL requires two ranges of equal length with at least 2 values.');\n }\n return [ys, xs];\n }\n\n protected main(ys: number[], xs: number[]) {\n const n = ys.length;\n const meanY = ys.reduce((a, b) => a + b, 0) / n;\n const meanX = xs.reduce((a, b) => a + b, 0) / n;\n\n let num = 0,\n denY = 0,\n denX = 0;\n for (let i = 0; i < n; i++) {\n const dy = ys[i] - meanY;\n const dx = xs[i] - meanX;\n num += dy * dx;\n denY += dy * dy;\n denX += dx * dx;\n }\n const den = Math.sqrt(denY * denX);\n if (den === 0) {\n throw new FormulaError('#DIV/0!', 'Standard deviation of one dataset is zero.');\n }\n return num / den;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the sample covariance, the average of the products of deviations for each data point pair in two datasets.`;\n\nexport class CovarianceSFunction extends BaseFunction {\n example = 'COVARIANCE.S(A1:A100, B1:B100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'data_y',\n description: 'The range representing the first dataset.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n {\n name: 'data_x',\n description: 'The range representing the second dataset.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const ys: number[] = [];\n const xs: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n ys.push(ensureNumber(v));\n }\n },\n this.at,\n );\n eachMatrix(\n args[1],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n xs.push(ensureNumber(v));\n }\n },\n this.at,\n );\n if (ys.length !== xs.length || ys.length < 2) {\n throw new FormulaError('#N/A', 'COVARIANCE.S requires two ranges of equal length with at least 2 values.');\n }\n return [ys, xs];\n }\n\n protected main(ys: number[], xs: number[]) {\n const n = ys.length;\n const meanY = ys.reduce((a, b) => a + b, 0) / n;\n const meanX = xs.reduce((a, b) => a + b, 0) / n;\n return ys.reduce((acc, y, i) => acc + (y - meanY) * (xs[i] - meanX), 0) / (n - 1);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the population covariance, the average of the products of deviations for each data point pair in two datasets.`;\n\nexport class CovariancePFunction extends BaseFunction {\n example = 'COVARIANCE.P(A1:A100, B1:B100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'data_y',\n description: 'The range representing the first dataset.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n {\n name: 'data_x',\n description: 'The range representing the second dataset.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const ys: number[] = [];\n const xs: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n ys.push(ensureNumber(v));\n }\n },\n this.at,\n );\n eachMatrix(\n args[1],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n xs.push(ensureNumber(v));\n }\n },\n this.at,\n );\n if (ys.length !== xs.length || ys.length < 1) {\n throw new FormulaError('#N/A', 'COVARIANCE.P requires two ranges of equal length with at least 1 value.');\n }\n return [ys, xs];\n }\n\n protected main(ys: number[], xs: number[]) {\n const n = ys.length;\n const meanY = ys.reduce((a, b) => a + b, 0) / n;\n const meanX = xs.reduce((a, b) => a + b, 0) / n;\n return ys.reduce((acc, y, i) => acc + (y - meanY) * (xs[i] - meanX), 0) / n;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the most commonly occurring value in a dataset. If there are multiple modes, the smallest is returned.`;\n\nexport class ModeSnglFunction extends BaseFunction {\n example = 'MODE.SNGL(A1:A100)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Numbers or ranges to compute the mode of.',\n takesMatrix: true,\n acceptedTypes: ['number', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const nums: number[] = [];\n for (const val of args) {\n eachMatrix(\n val,\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n nums.push(ensureNumber(v));\n }\n },\n this.at,\n );\n }\n if (nums.length === 0) {\n throw new FormulaError('#N/A', 'MODE.SNGL requires at least one numeric value.');\n }\n return [nums];\n }\n\n protected main(nums: number[]) {\n const freq = new Map<number, number>();\n for (const n of nums) {\n freq.set(n, (freq.get(n) ?? 0) + 1);\n }\n const maxFreq = Math.max(...freq.values());\n if (maxFreq < 2) {\n throw new FormulaError('#N/A', 'No value appears more than once.');\n }\n const modes = [...freq.entries()].filter(([, c]) => c === maxFreq).map(([n]) => n);\n return Math.min(...modes);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the square of the Pearson product-moment correlation coefficient (R²).`;\n\nexport class RsqFunction extends BaseFunction {\n example = 'RSQ(A1:A10, B1:B10)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'data_y',\n description: 'The range representing the dependent data.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n {\n name: 'data_x',\n description: 'The range representing the independent data.',\n takesMatrix: true,\n acceptedTypes: ['matrix'],\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const ys: number[] = [];\n const xs: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n ys.push(ensureNumber(v));\n }\n },\n this.at,\n );\n eachMatrix(\n args[1],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n if (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v)))) {\n xs.push(ensureNumber(v));\n }\n },\n this.at,\n );\n if (ys.length !== xs.length) {\n throw new FormulaError('#N/A', 'RSQ requires two ranges of equal length.');\n }\n if (ys.length < 2) {\n throw new FormulaError('#N/A', 'RSQ requires at least 2 data points.');\n }\n return [ys, xs];\n }\n\n protected main(ys: number[], xs: number[]) {\n const n = ys.length;\n const meanY = ys.reduce((a, b) => a + b, 0) / n;\n const meanX = xs.reduce((a, b) => a + b, 0) / n;\n\n let num = 0,\n denY = 0,\n denX = 0;\n for (let i = 0; i < n; i++) {\n const dy = ys[i] - meanY;\n const dx = xs[i] - meanX;\n num += dy * dx;\n denY += dy * dy;\n denX += dx * dx;\n }\n const den = Math.sqrt(denY * denX);\n if (den === 0) {\n throw new FormulaError('#DIV/0!', 'Standard deviation of one dataset is zero.');\n }\n const r = num / den;\n return r * r;\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition, eachMatrix } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the probability associated with a Student's t-test.\ntails: 1 (one-tailed) or 2 (two-tailed).\ntype: 1 (paired), 2 (two-sample equal variance), 3 (two-sample unequal variance).`;\n\n/** Regularized incomplete beta function via continued fraction (Lentz's method). */\nfunction incompleteBeta(x: number, a: number, b: number): number {\n if (x <= 0) {\n return 0;\n }\n if (x >= 1) {\n return 1;\n }\n // Use symmetry relation when x > (a+1)/(a+b+2)\n if (x > (a + 1) / (a + b + 2)) {\n return 1 - incompleteBeta(1 - x, b, a);\n }\n const lbeta = lgamma(a) + lgamma(b) - lgamma(a + b);\n const front = Math.exp(Math.log(x) * a + Math.log(1 - x) * b - lbeta) / a;\n // Continued fraction via modified Lentz\n const MAXIT = 200;\n const EPS = 3e-7;\n let f = 1,\n C = 1,\n D = 1 - ((a + b) * x) / (a + 1);\n if (Math.abs(D) < 1e-30) {\n D = 1e-30;\n }\n D = 1 / D;\n f = D;\n for (let m = 1; m <= MAXIT; m++) {\n // Even step\n let d = (m * (b - m) * x) / ((a + 2 * m - 1) * (a + 2 * m));\n D = 1 + d * D;\n if (Math.abs(D) < 1e-30) {\n D = 1e-30;\n }\n C = 1 + d / C;\n if (Math.abs(C) < 1e-30) {\n C = 1e-30;\n }\n D = 1 / D;\n f *= D * C;\n // Odd step\n d = (-(a + m) * (a + b + m) * x) / ((a + 2 * m) * (a + 2 * m + 1));\n D = 1 + d * D;\n if (Math.abs(D) < 1e-30) {\n D = 1e-30;\n }\n C = 1 + d / C;\n if (Math.abs(C) < 1e-30) {\n C = 1e-30;\n }\n D = 1 / D;\n const delta = D * C;\n f *= delta;\n if (Math.abs(delta - 1) < EPS) {\n break;\n }\n }\n return front * f;\n}\n\nfunction lgamma(z: number): number {\n // Lanczos approximation\n const g = 7;\n const c = [\n 0.99999999999980993, 676.5203681218851, -1259.1392167224028, 771.32342877765313, -176.61502916214059,\n 12.507343278686905, -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7,\n ];\n if (z < 0.5) {\n return Math.log(Math.PI / Math.sin(Math.PI * z)) - lgamma(1 - z);\n }\n z--;\n let x = c[0];\n for (let i = 1; i < g + 2; i++) {\n x += c[i] / (z + i);\n }\n const t = z + g + 0.5;\n return 0.5 * Math.log(2 * Math.PI) + (z + 0.5) * Math.log(t) - t + Math.log(x);\n}\n\n/** Two-tailed p-value for t-distribution with df degrees of freedom. */\nfunction tDist2T(t: number, df: number): number {\n const x = df / (df + t * t);\n return incompleteBeta(x, df / 2, 0.5);\n}\n\nexport class TTestFunction extends BaseFunction {\n example = 'T.TEST(A1:A100, B1:B100, 2, 2)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'range1', description: 'The first sample of data.', takesMatrix: true, acceptedTypes: ['matrix'] },\n { name: 'range2', description: 'The second sample of data.', takesMatrix: true, acceptedTypes: ['matrix'] },\n { name: 'tails', description: 'The number of distribution tails: 1 or 2.', acceptedTypes: ['number'] },\n {\n name: 'type',\n description: 'The type of t-test: 1 (paired), 2 (equal variance), 3 (unequal variance).',\n acceptedTypes: ['number'],\n },\n ];\n category: FunctionCategory = 'statistics';\n\n protected validate(args: any[]): any[] {\n const t = Math.floor(ensureNumber(args[2]));\n const tp = Math.floor(ensureNumber(args[3]));\n if (t !== 1 && t !== 2) {\n throw new FormulaError('#NUM!', 'tails must be 1 or 2.');\n }\n if (tp < 1 || tp > 3) {\n throw new FormulaError('#NUM!', 'type must be 1, 2, or 3.');\n }\n\n const a: number[] = [];\n const b: number[] = [];\n eachMatrix(\n args[0],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n a.push(ensureNumber(v));\n },\n this.at,\n );\n eachMatrix(\n args[1],\n (v: any) => {\n if (v == null || v === '' || typeof v === 'boolean') {\n return;\n }\n b.push(ensureNumber(v));\n },\n this.at,\n );\n\n if (tp === 1) {\n if (a.length !== b.length || a.length < 2) {\n throw new FormulaError('#N/A', 'Paired T.TEST requires equal-length ranges with at least 2 values.');\n }\n } else {\n if (a.length < 2 || b.length < 2) {\n throw new FormulaError('#DIV/0!', `T.TEST type ${tp} requires at least 2 values per range.`);\n }\n }\n return [a, b, t, tp];\n }\n\n protected main(a: number[], b: number[], t: number, tp: number) {\n let tStat: number;\n let df: number;\n\n if (tp === 1) {\n // Paired\n const diffs = a.map((v, i) => v - b[i]);\n const n = diffs.length;\n const meanD = diffs.reduce((s, v) => s + v, 0) / n;\n const varD = diffs.reduce((s, v) => s + (v - meanD) ** 2, 0) / (n - 1);\n tStat = meanD / Math.sqrt(varD / n);\n df = n - 1;\n } else if (tp === 2) {\n // Two-sample equal variance (pooled)\n const meanA = a.reduce((s, v) => s + v, 0) / a.length;\n const meanB = b.reduce((s, v) => s + v, 0) / b.length;\n const varA = a.reduce((s, v) => s + (v - meanA) ** 2, 0) / (a.length - 1);\n const varB = b.reduce((s, v) => s + (v - meanB) ** 2, 0) / (b.length - 1);\n const pooled = ((a.length - 1) * varA + (b.length - 1) * varB) / (a.length + b.length - 2);\n tStat = (meanA - meanB) / Math.sqrt(pooled * (1 / a.length + 1 / b.length));\n df = a.length + b.length - 2;\n } else {\n // Two-sample unequal variance (Welch)\n const meanA = a.reduce((s, v) => s + v, 0) / a.length;\n const meanB = b.reduce((s, v) => s + v, 0) / b.length;\n const varA = a.reduce((s, v) => s + (v - meanA) ** 2, 0) / (a.length - 1);\n const varB = b.reduce((s, v) => s + (v - meanB) ** 2, 0) / (b.length - 1);\n const sA = varA / a.length;\n const sB = varB / b.length;\n tStat = (meanA - meanB) / Math.sqrt(sA + sB);\n df = (sA + sB) ** 2 / (sA ** 2 / (a.length - 1) + sB ** 2 / (b.length - 1));\n }\n\n const p2 = tDist2T(Math.abs(tStat), df);\n return t === 1 ? p2 / 2 : p2;\n }\n}\n","import type { FunctionMapping } from '@gridsheet/core';\nimport { AverageifFunction } from './averageif';\nimport { AverageifsFunction } from './averageifs';\nimport { MedianFunction } from './median';\nimport { StdevSFunction } from './stdev_s';\nimport { StdevPFunction } from './stdev_p';\nimport { VarSFunction } from './var_s';\nimport { VarPFunction } from './var_p';\nimport { PercentileIncFunction } from './percentile_inc';\nimport { QuartileIncFunction } from './quartile_inc';\nimport { RankEqFunction } from './rank_eq';\nimport { CorrelFunction } from './correl';\nimport { CovarianceSFunction } from './covariance_s';\nimport { CovariancePFunction } from './covariance_p';\nimport { ModeSnglFunction } from './mode_sngl';\nimport { RsqFunction } from './rsq';\nimport { TTestFunction } from './t_test';\n\nexport const statisticsFunctions: FunctionMapping = {\n averageif: AverageifFunction,\n averageifs: AverageifsFunction,\n median: MedianFunction,\n 'stdev.s': StdevSFunction,\n 'stdev.p': StdevPFunction,\n 'var.s': VarSFunction,\n 'var.p': VarPFunction,\n 'percentile.inc': PercentileIncFunction,\n 'quartile.inc': QuartileIncFunction,\n 'rank.eq': RankEqFunction,\n correl: CorrelFunction,\n 'covariance.s': CovarianceSFunction,\n 'covariance.p': CovariancePFunction,\n 'mode.sngl': ModeSnglFunction,\n rsq: RsqFunction,\n 't.test': TTestFunction,\n};\n\nexport default statisticsFunctions;\n"],"names":["description","AverageifFunction","BaseFunction","conditionArg","range","condition","avgRange","conditionStr","ensureString","condArr","avgArr","eachMatrix","v","total","count","c","i","s","stripMatrix","check","FormulaError","AverageifsFunction","args","validatedArgs","Sheet","expectedRows","expectedCols","tables","conditions","mask","createBooleanMask","pt","num","MedianFunction","nums","val","ensureNumber","a","b","mid","StdevSFunction","mean","variance","acc","StdevPFunction","VarSFunction","VarPFunction","PercentileIncFunction","k","pos","lo","hi","QuartileIncFunction","q","RankEqFunction","n","isAscending","CorrelFunction","ys","xs","meanY","meanX","denY","denX","dy","dx","den","CovarianceSFunction","y","CovariancePFunction","ModeSnglFunction","freq","maxFreq","modes","RsqFunction","r","incompleteBeta","x","lbeta","lgamma","front","MAXIT","EPS","f","C","D","m","d","delta","z","t","tDist2T","df","TTestFunction","tp","tStat","diffs","meanD","varD","meanA","meanB","varA","varB","pooled","sA","sB","p2","statisticsFunctions"],"mappings":"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"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { BaseFunction as n, ensureString as s, FormulaError as c, ensureNumber as p, stripMatrix as u } from "@gridsheet/core";
|
|
2
|
+
const h = "Returns the concatenation of the values.";
|
|
3
|
+
class l extends n {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments), this.example = 'CONCATENATE("Hello", "World")', this.description = h, this.defs = [
|
|
6
|
+
{
|
|
7
|
+
name: "value",
|
|
8
|
+
description: "Values to concatenate.",
|
|
9
|
+
acceptedTypes: ["string", "number", "boolean"],
|
|
10
|
+
variadic: !0
|
|
11
|
+
}
|
|
12
|
+
], this.category = "text";
|
|
13
|
+
}
|
|
14
|
+
main(...e) {
|
|
15
|
+
return e.flat().map(String).join("");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const m = "Returns the number of bytes in the length of the string.";
|
|
19
|
+
class g extends n {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments), this.example = "LENB(A2)", this.description = m, this.defs = [
|
|
22
|
+
{
|
|
23
|
+
name: "text",
|
|
24
|
+
description: "A text to be returned the length of the bytes.",
|
|
25
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
26
|
+
}
|
|
27
|
+
], this.category = "text";
|
|
28
|
+
}
|
|
29
|
+
main(e) {
|
|
30
|
+
return e = String(e), encodeURIComponent(e).replace(/%../g, "x").length;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const x = "Tests whether two strings are exactly the same (case-sensitive). Returns TRUE or FALSE.";
|
|
34
|
+
class f extends n {
|
|
35
|
+
constructor() {
|
|
36
|
+
super(...arguments), this.example = 'EXACT("山", A3)', this.description = x, this.defs = [
|
|
37
|
+
{ name: "text1", description: "First string to compare.", acceptedTypes: ["string", "number", "boolean"] },
|
|
38
|
+
{ name: "text2", description: "Second string to compare.", acceptedTypes: ["string", "number", "boolean"] }
|
|
39
|
+
], this.category = "text";
|
|
40
|
+
}
|
|
41
|
+
main(e, t) {
|
|
42
|
+
return String(e) === String(t);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const b = `Returns the Unicode code point (decimal) of the first character of the text.
|
|
46
|
+
Numbers passed as argument are treated as strings.`;
|
|
47
|
+
class T extends n {
|
|
48
|
+
constructor() {
|
|
49
|
+
super(...arguments), this.example = 'UNICODE("A")', this.description = b, this.defs = [
|
|
50
|
+
{
|
|
51
|
+
name: "text",
|
|
52
|
+
description: "The text whose first character Unicode value is returned.",
|
|
53
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
54
|
+
}
|
|
55
|
+
], this.category = "text";
|
|
56
|
+
}
|
|
57
|
+
main(e) {
|
|
58
|
+
if (e = s(e), e.length === 0)
|
|
59
|
+
throw new c("#VALUE!", "UNICODE: text must not be empty.");
|
|
60
|
+
const t = e.codePointAt(0);
|
|
61
|
+
if (t === void 0)
|
|
62
|
+
throw new c("#VALUE!", "UNICODE: unable to determine Unicode value.");
|
|
63
|
+
return t;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const y = `Replaces part of a text string with a different text string.
|
|
67
|
+
position is 1-based.`;
|
|
68
|
+
class v extends n {
|
|
69
|
+
constructor() {
|
|
70
|
+
super(...arguments), this.example = 'REPLACE("Hello World", 7, 5, "Excel")', this.description = y, this.defs = [
|
|
71
|
+
{ name: "text", description: "The original text string.", acceptedTypes: ["string"] },
|
|
72
|
+
{ name: "position", description: "The 1-based position at which to start replacing.", acceptedTypes: ["number"] },
|
|
73
|
+
{ name: "length", description: "The number of characters to replace.", acceptedTypes: ["number"] },
|
|
74
|
+
{ name: "new_text", description: "The replacement text.", acceptedTypes: ["string"] }
|
|
75
|
+
], this.category = "text";
|
|
76
|
+
}
|
|
77
|
+
validate(e) {
|
|
78
|
+
return e = super.validate(e), e[0] = s(e[0]), e[1] = p(e[1]), e[2] = p(e[2]), e[3] = s(e[3]), e;
|
|
79
|
+
}
|
|
80
|
+
main(e, t, i, o) {
|
|
81
|
+
const a = [...e], d = Math.max(0, t - 1);
|
|
82
|
+
return a.splice(d, i, o), a.join("");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const w = "Removes all non-printable ASCII characters (code points 0–31) from text.";
|
|
86
|
+
class C extends n {
|
|
87
|
+
constructor() {
|
|
88
|
+
super(...arguments), this.example = "CLEAN(A1)", this.description = w, this.defs = [
|
|
89
|
+
{
|
|
90
|
+
name: "text",
|
|
91
|
+
description: "The text from which to remove non-printable characters.",
|
|
92
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
93
|
+
}
|
|
94
|
+
], this.category = "text";
|
|
95
|
+
}
|
|
96
|
+
main(e) {
|
|
97
|
+
return e = String(e), e.replace(/[\x00-\x1F]/g, "");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const A = "Converts a number to a character according to the current Unicode sheet.";
|
|
101
|
+
class U extends n {
|
|
102
|
+
constructor() {
|
|
103
|
+
super(...arguments), this.example = "CHAR(65)", this.description = A, this.defs = [
|
|
104
|
+
{ name: "number", description: "The Unicode code point to convert to a character.", acceptedTypes: ["number"] }
|
|
105
|
+
], this.category = "text";
|
|
106
|
+
}
|
|
107
|
+
main(e) {
|
|
108
|
+
const t = Math.trunc(e);
|
|
109
|
+
if (t < 1 || t > 1114111)
|
|
110
|
+
throw new c("#VALUE!", `CHAR: ${e} is not a valid Unicode code point.`);
|
|
111
|
+
return String.fromCodePoint(t);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const E = "Returns the Unicode character corresponding to the given numeric code point.";
|
|
115
|
+
class R extends n {
|
|
116
|
+
constructor() {
|
|
117
|
+
super(...arguments), this.example = "UNICHAR(127843)", this.description = E, this.defs = [
|
|
118
|
+
{ name: "number", description: "The Unicode code point (decimal) to convert.", acceptedTypes: ["number"] }
|
|
119
|
+
], this.category = "text";
|
|
120
|
+
}
|
|
121
|
+
main(e) {
|
|
122
|
+
const t = Math.trunc(e);
|
|
123
|
+
if (t < 1 || t > 1114111)
|
|
124
|
+
throw new c("#VALUE!", `UNICHAR: ${e} is not a valid Unicode code point.`);
|
|
125
|
+
return String.fromCodePoint(t);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const F = "Repeats text a specified number of times.";
|
|
129
|
+
class L extends n {
|
|
130
|
+
constructor() {
|
|
131
|
+
super(...arguments), this.example = 'REPT("ha", 3)', this.description = F, this.defs = [
|
|
132
|
+
{ name: "text", description: "The text to repeat.", acceptedTypes: ["string"] },
|
|
133
|
+
{ name: "number_of_times", description: "The number of times to repeat the text.", acceptedTypes: ["number"] }
|
|
134
|
+
], this.category = "text";
|
|
135
|
+
}
|
|
136
|
+
validate(e) {
|
|
137
|
+
if (e = super.validate(e), e[1] < 0)
|
|
138
|
+
throw new c("#VALUE!", "Number of times must be non-negative.");
|
|
139
|
+
return e;
|
|
140
|
+
}
|
|
141
|
+
main(e, t) {
|
|
142
|
+
return e = s(e), t = p(t), e.repeat(Math.trunc(t));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const N = `Joins the elements of one or more 1D arrays or values using a delimiter.
|
|
146
|
+
If the delimiter is omitted the result is similar to CONCATENATE.`;
|
|
147
|
+
class $ extends n {
|
|
148
|
+
constructor() {
|
|
149
|
+
super(...arguments), this.example = 'JOIN(", ", A1:A5)', this.description = N, this.defs = [
|
|
150
|
+
{ name: "delimiter", description: "The string to place between joined values.", acceptedTypes: ["string"] },
|
|
151
|
+
{
|
|
152
|
+
name: "value_or_array",
|
|
153
|
+
description: "Values or arrays to join.",
|
|
154
|
+
takesMatrix: !0,
|
|
155
|
+
acceptedTypes: ["any", "matrix"],
|
|
156
|
+
variadic: !0
|
|
157
|
+
}
|
|
158
|
+
], this.category = "text";
|
|
159
|
+
}
|
|
160
|
+
validate(e) {
|
|
161
|
+
const t = super.validate(e);
|
|
162
|
+
for (let i = 1; i < t.length; i++) {
|
|
163
|
+
const o = this.toMatrix(t[i]);
|
|
164
|
+
if (o.length > 1 && o[0].length > 1)
|
|
165
|
+
throw new c("#VALUE!", "JOIN requires each value_or_array argument to be a single row or column.");
|
|
166
|
+
}
|
|
167
|
+
return t;
|
|
168
|
+
}
|
|
169
|
+
main(e, ...t) {
|
|
170
|
+
const i = [];
|
|
171
|
+
for (const o of t)
|
|
172
|
+
this.eachMatrix(o, (a) => {
|
|
173
|
+
i.push(s(u(a, this.at)));
|
|
174
|
+
});
|
|
175
|
+
return i.join(e);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const P = "Converts all characters in a string to lowercase.";
|
|
179
|
+
class I extends n {
|
|
180
|
+
constructor() {
|
|
181
|
+
super(...arguments), this.example = 'LOWER("Hello World")', this.description = P, this.defs = [
|
|
182
|
+
{
|
|
183
|
+
name: "text",
|
|
184
|
+
description: "The string to convert to lowercase.",
|
|
185
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
186
|
+
}
|
|
187
|
+
], this.category = "text";
|
|
188
|
+
}
|
|
189
|
+
main(e) {
|
|
190
|
+
return s(e).toLowerCase();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const S = "Converts all characters in a string to uppercase.";
|
|
194
|
+
class M extends n {
|
|
195
|
+
constructor() {
|
|
196
|
+
super(...arguments), this.example = 'UPPER("hello world")', this.description = S, this.defs = [
|
|
197
|
+
{
|
|
198
|
+
name: "text",
|
|
199
|
+
description: "The string to convert to uppercase.",
|
|
200
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
201
|
+
}
|
|
202
|
+
], this.category = "text";
|
|
203
|
+
}
|
|
204
|
+
main(e) {
|
|
205
|
+
return s(e).toUpperCase();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const O = "Capitalizes the first letter of each word in a string.";
|
|
209
|
+
class H extends n {
|
|
210
|
+
constructor() {
|
|
211
|
+
super(...arguments), this.example = 'PROPER("hello world")', this.description = O, this.defs = [
|
|
212
|
+
{
|
|
213
|
+
name: "text",
|
|
214
|
+
description: "The string to convert to title case.",
|
|
215
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
216
|
+
}
|
|
217
|
+
], this.category = "text";
|
|
218
|
+
}
|
|
219
|
+
main(e) {
|
|
220
|
+
return e = s(e), e.replace(new RegExp("\\p{L}+", "gu"), (t) => t.charAt(0).toUpperCase() + t.slice(1).toLowerCase());
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const V = "Removes leading and trailing spaces from a string.";
|
|
224
|
+
class _ extends n {
|
|
225
|
+
constructor() {
|
|
226
|
+
super(...arguments), this.example = 'TRIM(" Hello World ")', this.description = V, this.defs = [
|
|
227
|
+
{
|
|
228
|
+
name: "text",
|
|
229
|
+
description: "The string from which to remove leading and trailing spaces.",
|
|
230
|
+
acceptedTypes: ["string", "number", "boolean"]
|
|
231
|
+
}
|
|
232
|
+
], this.category = "text";
|
|
233
|
+
}
|
|
234
|
+
main(e) {
|
|
235
|
+
return s(e).trim();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const W = {
|
|
239
|
+
concatenate: l,
|
|
240
|
+
lenb: g,
|
|
241
|
+
exact: f,
|
|
242
|
+
unicode: T,
|
|
243
|
+
replace: v,
|
|
244
|
+
clean: C,
|
|
245
|
+
char: U,
|
|
246
|
+
unichar: R,
|
|
247
|
+
rept: L,
|
|
248
|
+
join: $,
|
|
249
|
+
lower: I,
|
|
250
|
+
upper: M,
|
|
251
|
+
proper: H,
|
|
252
|
+
trim: _
|
|
253
|
+
};
|
|
254
|
+
export {
|
|
255
|
+
W as default,
|
|
256
|
+
W as textFunctions
|
|
257
|
+
};
|
|
258
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/text/concatenate.ts","../../src/text/lenb.ts","../../src/text/exact.ts","../../src/text/unicode.ts","../../src/text/replace.ts","../../src/text/clean.ts","../../src/text/char.ts","../../src/text/unichar.ts","../../src/text/rept.ts","../../src/text/join.ts","../../src/text/lower.ts","../../src/text/upper.ts","../../src/text/proper.ts","../../src/text/trim.ts","../../src/text/index.ts"],"sourcesContent":["import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the concatenation of the values.`;\n\nexport class ConcatenateFunction extends BaseFunction {\n example = 'CONCATENATE(\"Hello\", \"World\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'value',\n description: 'Values to concatenate.',\n acceptedTypes: ['string', 'number', 'boolean'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(...values: any[]) {\n return values.flat().map(String).join('');\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the number of bytes in the length of the string.`;\n\nexport class LenbFunction extends BaseFunction {\n example = 'LENB(A2)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'A text to be returned the length of the bytes.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n text = String(text);\n return encodeURIComponent(text).replace(/%../g, 'x').length;\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Tests whether two strings are exactly the same (case-sensitive). Returns TRUE or FALSE.`;\n\nexport class ExactFunction extends BaseFunction {\n example = 'EXACT(\"山\", A3)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'text1', description: 'First string to compare.', acceptedTypes: ['string', 'number', 'boolean'] },\n { name: 'text2', description: 'Second string to compare.', acceptedTypes: ['string', 'number', 'boolean'] },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text1: any, text2: any) {\n return String(text1) === String(text2);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the Unicode code point (decimal) of the first character of the text.\nNumbers passed as argument are treated as strings.`;\n\nexport class UnicodeFunction extends BaseFunction {\n example = 'UNICODE(\"A\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'The text whose first character Unicode value is returned.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n text = ensureString(text);\n if (text.length === 0) {\n throw new FormulaError('#VALUE!', 'UNICODE: text must not be empty.');\n }\n const codePoint = text.codePointAt(0);\n if (codePoint === undefined) {\n throw new FormulaError('#VALUE!', 'UNICODE: unable to determine Unicode value.');\n }\n return codePoint;\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString, ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Replaces part of a text string with a different text string.\nposition is 1-based.`;\n\nexport class ReplaceFunction extends BaseFunction {\n example = 'REPLACE(\"Hello World\", 7, 5, \"Excel\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'text', description: 'The original text string.', acceptedTypes: ['string'] },\n { name: 'position', description: 'The 1-based position at which to start replacing.', acceptedTypes: ['number'] },\n { name: 'length', description: 'The number of characters to replace.', acceptedTypes: ['number'] },\n { name: 'new_text', description: 'The replacement text.', acceptedTypes: ['string'] },\n ];\n category: FunctionCategory = 'text';\n\n protected validate(args: any[]): any[] {\n args = super.validate(args);\n args[0] = ensureString(args[0]);\n args[1] = ensureNumber(args[1]);\n args[2] = ensureNumber(args[2]);\n args[3] = ensureString(args[3]);\n return args;\n }\n\n protected main(text: string, position: number, length: number, newText: string) {\n // Convert to array of Unicode code points to handle surrogate pairs correctly\n const chars = [...text];\n const start = Math.max(0, position - 1);\n chars.splice(start, length, newText);\n return chars.join('');\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Removes all non-printable ASCII characters (code points 0–31) from text.`;\n\nexport class CleanFunction extends BaseFunction {\n example = 'CLEAN(A1)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'The text from which to remove non-printable characters.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n text = String(text);\n // Remove ASCII control characters (U+0000–U+001F)\n\n return text.replace(/[\\x00-\\x1F]/g, '');\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Converts a number to a character according to the current Unicode sheet.`;\n\nexport class CharFunction extends BaseFunction {\n example = 'CHAR(65)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'number', description: 'The Unicode code point to convert to a character.', acceptedTypes: ['number'] },\n ];\n category: FunctionCategory = 'text';\n\n protected main(number: number) {\n const codePoint = Math.trunc(number);\n if (codePoint < 1 || codePoint > 0x10ffff) {\n throw new FormulaError('#VALUE!', `CHAR: ${number} is not a valid Unicode code point.`);\n }\n return String.fromCodePoint(codePoint);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Returns the Unicode character corresponding to the given numeric code point.`;\n\nexport class UnicharFunction extends BaseFunction {\n example = 'UNICHAR(127843)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'number', description: 'The Unicode code point (decimal) to convert.', acceptedTypes: ['number'] },\n ];\n category: FunctionCategory = 'text';\n\n protected main(number: number) {\n const codePoint = Math.trunc(number);\n if (codePoint < 1 || codePoint > 0x10ffff) {\n throw new FormulaError('#VALUE!', `UNICHAR: ${number} is not a valid Unicode code point.`);\n }\n return String.fromCodePoint(codePoint);\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString, ensureNumber } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Repeats text a specified number of times.`;\n\nexport class ReptFunction extends BaseFunction {\n example = 'REPT(\"ha\", 3)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'text', description: 'The text to repeat.', acceptedTypes: ['string'] },\n { name: 'number_of_times', description: 'The number of times to repeat the text.', acceptedTypes: ['number'] },\n ];\n category: FunctionCategory = 'text';\n\n protected validate(args: any[]): any[] {\n args = super.validate(args);\n if (args[1] < 0) {\n throw new FormulaError('#VALUE!', 'Number of times must be non-negative.');\n }\n return args;\n }\n\n protected main(text: string, times: number) {\n text = ensureString(text);\n times = ensureNumber(times);\n return text.repeat(Math.trunc(times));\n }\n}\n","import { FormulaError } from '@gridsheet/core';\nimport { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { stripMatrix, ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Joins the elements of one or more 1D arrays or values using a delimiter.\nIf the delimiter is omitted the result is similar to CONCATENATE.`;\n\nexport class JoinFunction extends BaseFunction {\n example = 'JOIN(\", \", A1:A5)';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n { name: 'delimiter', description: 'The string to place between joined values.', acceptedTypes: ['string'] },\n {\n name: 'value_or_array',\n description: 'Values or arrays to join.',\n takesMatrix: true,\n acceptedTypes: ['any', 'matrix'],\n variadic: true,\n },\n ];\n category: FunctionCategory = 'text';\n\n protected validate(args: any[]): any[] {\n const validated = super.validate(args);\n for (let i = 1; i < validated.length; i++) {\n const matrix = this.toMatrix(validated[i]);\n if (matrix.length > 1 && matrix[0].length > 1) {\n throw new FormulaError('#VALUE!', 'JOIN requires each value_or_array argument to be a single row or column.');\n }\n }\n return validated;\n }\n\n protected main(delimiter: string, ...rest: any[]) {\n const parts: string[] = [];\n for (const arg of rest) {\n this.eachMatrix(arg, (v: any) => {\n parts.push(ensureString(stripMatrix(v, this.at)));\n });\n }\n return parts.join(delimiter);\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Converts all characters in a string to lowercase.`;\n\nexport class LowerFunction extends BaseFunction {\n example = 'LOWER(\"Hello World\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'The string to convert to lowercase.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n const t = ensureString(text);\n return t.toLowerCase();\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Converts all characters in a string to uppercase.`;\n\nexport class UpperFunction extends BaseFunction {\n example = 'UPPER(\"hello world\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'The string to convert to uppercase.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n const t = ensureString(text);\n return t.toUpperCase();\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Capitalizes the first letter of each word in a string.`;\n\nexport class ProperFunction extends BaseFunction {\n example = 'PROPER(\"hello world\")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'The string to convert to title case.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n text = ensureString(text);\n return text.replace(/\\p{L}+/gu, (word: string) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase());\n }\n}\n","import { BaseFunction, type FunctionArgumentDefinition } from '@gridsheet/core';\nimport { ensureString } from '@gridsheet/core';\nimport type { FunctionCategory } from '@gridsheet/core';\n\nconst description = `Removes leading and trailing spaces from a string.`;\n\nexport class TrimFunction extends BaseFunction {\n example = 'TRIM(\" Hello World \")';\n description = description;\n defs: FunctionArgumentDefinition[] = [\n {\n name: 'text',\n description: 'The string from which to remove leading and trailing spaces.',\n acceptedTypes: ['string', 'number', 'boolean'],\n },\n ];\n category: FunctionCategory = 'text';\n\n protected main(text: any) {\n const t = ensureString(text);\n return t.trim();\n }\n}\n","import type { FunctionMapping } from '@gridsheet/core';\nimport { ConcatenateFunction } from './concatenate';\nimport { LenbFunction } from './lenb';\nimport { ExactFunction } from './exact';\nimport { UnicodeFunction } from './unicode';\nimport { ReplaceFunction } from './replace';\nimport { CleanFunction } from './clean';\nimport { CharFunction } from './char';\nimport { UnicharFunction } from './unichar';\nimport { ReptFunction } from './rept';\nimport { JoinFunction } from './join';\nimport { LowerFunction } from './lower';\nimport { UpperFunction } from './upper';\nimport { ProperFunction } from './proper';\nimport { TrimFunction } from './trim';\n\nexport const textFunctions: FunctionMapping = {\n concatenate: ConcatenateFunction,\n lenb: LenbFunction,\n exact: ExactFunction,\n unicode: UnicodeFunction,\n replace: ReplaceFunction,\n clean: CleanFunction,\n char: CharFunction,\n unichar: UnicharFunction,\n rept: ReptFunction,\n join: JoinFunction,\n lower: LowerFunction,\n upper: UpperFunction,\n proper: ProperFunction,\n trim: TrimFunction,\n};\n\nexport default textFunctions;\n"],"names":["description","ConcatenateFunction","BaseFunction","values","LenbFunction","text","ExactFunction","text1","text2","UnicodeFunction","ensureString","FormulaError","codePoint","ReplaceFunction","args","ensureNumber","position","length","newText","chars","start","CleanFunction","CharFunction","number","UnicharFunction","ReptFunction","times","JoinFunction","validated","matrix","delimiter","rest","parts","arg","v","stripMatrix","LowerFunction","UpperFunction","ProperFunction","word","TrimFunction","textFunctions"],"mappings":";AAGA,MAAMA,IAAc;AAEb,MAAMC,UAA4BC,EAAa;AAAA,EAA/C,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,iCACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,QAC7C,UAAU;AAAA,MAAA;AAAA,IAEd,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,QAAQG,GAAe;AAC/B,WAAOA,EAAO,OAAO,IAAI,MAAM,EAAE,KAAK,EAAE;AAAA,EAAA;AAE5C;AClBA,MAAMH,IAAc;AAEb,MAAMI,UAAqBF,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,YACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AACxB,WAAAA,IAAO,OAAOA,CAAI,GACX,mBAAmBA,CAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE;AAAA,EAAA;AAEzD;AClBA,MAAML,IAAc;AAEb,MAAMM,UAAsBJ,EAAa;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,kBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC,EAAE,MAAM,SAAS,aAAa,4BAA4B,eAAe,CAAC,UAAU,UAAU,SAAS,EAAE;AAAA,MACzG,EAAE,MAAM,SAAS,aAAa,6BAA6B,eAAe,CAAC,UAAU,UAAU,SAAS,EAAE;AAAA,IAC5G,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKO,GAAYC,GAAY;AACrC,WAAO,OAAOD,CAAK,MAAM,OAAOC,CAAK;AAAA,EAAA;AAEzC;ACZA,MAAMR,IAAc;AAAA;AAGb,MAAMS,UAAwBP,EAAa;AAAA,EAA3C,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,gBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AAEpB,QADJA,IAAOK,EAAaL,CAAI,GACpBA,EAAK,WAAW;AACZ,YAAA,IAAIM,EAAa,WAAW,kCAAkC;AAEhE,UAAAC,IAAYP,EAAK,YAAY,CAAC;AACpC,QAAIO,MAAc;AACV,YAAA,IAAID,EAAa,WAAW,6CAA6C;AAE1E,WAAAC;AAAA,EAAA;AAEX;AC3BA,MAAMZ,IAAc;AAAA;AAGb,MAAMa,UAAwBX,EAAa;AAAA,EAA3C,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,yCACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC,EAAE,MAAM,QAAQ,aAAa,6BAA6B,eAAe,CAAC,QAAQ,EAAE;AAAA,MACpF,EAAE,MAAM,YAAY,aAAa,qDAAqD,eAAe,CAAC,QAAQ,EAAE;AAAA,MAChH,EAAE,MAAM,UAAU,aAAa,wCAAwC,eAAe,CAAC,QAAQ,EAAE;AAAA,MACjG,EAAE,MAAM,YAAY,aAAa,yBAAyB,eAAe,CAAC,QAAQ,EAAE;AAAA,IACtF,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,SAASc,GAAoB;AAC9B,WAAAA,IAAA,MAAM,SAASA,CAAI,GAC1BA,EAAK,CAAC,IAAIJ,EAAaI,EAAK,CAAC,CAAC,GAC9BA,EAAK,CAAC,IAAIC,EAAaD,EAAK,CAAC,CAAC,GAC9BA,EAAK,CAAC,IAAIC,EAAaD,EAAK,CAAC,CAAC,GAC9BA,EAAK,CAAC,IAAIJ,EAAaI,EAAK,CAAC,CAAC,GACvBA;AAAA,EAAA;AAAA,EAGC,KAAKT,GAAcW,GAAkBC,GAAgBC,GAAiB;AAExE,UAAAC,IAAQ,CAAC,GAAGd,CAAI,GAChBe,IAAQ,KAAK,IAAI,GAAGJ,IAAW,CAAC;AAChC,WAAAG,EAAA,OAAOC,GAAOH,GAAQC,CAAO,GAC5BC,EAAM,KAAK,EAAE;AAAA,EAAA;AAExB;AC7BA,MAAMnB,IAAc;AAEb,MAAMqB,UAAsBnB,EAAa;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,aACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AACxB,WAAAA,IAAO,OAAOA,CAAI,GAGXA,EAAK,QAAQ,gBAAgB,EAAE;AAAA,EAAA;AAE1C;ACpBA,MAAML,IAAc;AAEb,MAAMsB,UAAqBpB,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,YACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC,EAAE,MAAM,UAAU,aAAa,qDAAqD,eAAe,CAAC,QAAQ,EAAE;AAAA,IAChH,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKuB,GAAgB;AACvB,UAAAX,IAAY,KAAK,MAAMW,CAAM;AAC/B,QAAAX,IAAY,KAAKA,IAAY;AAC/B,YAAM,IAAID,EAAa,WAAW,SAASY,CAAM,qCAAqC;AAEjF,WAAA,OAAO,cAAcX,CAAS;AAAA,EAAA;AAEzC;AClBA,MAAMZ,IAAc;AAEb,MAAMwB,UAAwBtB,EAAa;AAAA,EAA3C,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,mBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC,EAAE,MAAM,UAAU,aAAa,gDAAgD,eAAe,CAAC,QAAQ,EAAE;AAAA,IAC3G,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKuB,GAAgB;AACvB,UAAAX,IAAY,KAAK,MAAMW,CAAM;AAC/B,QAAAX,IAAY,KAAKA,IAAY;AAC/B,YAAM,IAAID,EAAa,WAAW,YAAYY,CAAM,qCAAqC;AAEpF,WAAA,OAAO,cAAcX,CAAS;AAAA,EAAA;AAEzC;AChBA,MAAMZ,IAAc;AAEb,MAAMyB,UAAqBvB,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,iBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC,EAAE,MAAM,QAAQ,aAAa,uBAAuB,eAAe,CAAC,QAAQ,EAAE;AAAA,MAC9E,EAAE,MAAM,mBAAmB,aAAa,2CAA2C,eAAe,CAAC,QAAQ,EAAE;AAAA,IAC/G,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,SAASc,GAAoB;AAEjC,QADGA,IAAA,MAAM,SAASA,CAAI,GACtBA,EAAK,CAAC,IAAI;AACN,YAAA,IAAIH,EAAa,WAAW,uCAAuC;AAEpE,WAAAG;AAAA,EAAA;AAAA,EAGC,KAAKT,GAAcqB,GAAe;AAC1C,WAAArB,IAAOK,EAAaL,CAAI,GACxBqB,IAAQX,EAAaW,CAAK,GACnBrB,EAAK,OAAO,KAAK,MAAMqB,CAAK,CAAC;AAAA,EAAA;AAExC;ACxBA,MAAM1B,IAAc;AAAA;AAGb,MAAM2B,UAAqBzB,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,qBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC,EAAE,MAAM,aAAa,aAAa,8CAA8C,eAAe,CAAC,QAAQ,EAAE;AAAA,MAC1G;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,QACb,eAAe,CAAC,OAAO,QAAQ;AAAA,QAC/B,UAAU;AAAA,MAAA;AAAA,IAEd,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,SAASc,GAAoB;AAC/B,UAAAc,IAAY,MAAM,SAASd,CAAI;AACrC,aAAS,IAAI,GAAG,IAAIc,EAAU,QAAQ,KAAK;AACzC,YAAMC,IAAS,KAAK,SAASD,EAAU,CAAC,CAAC;AACzC,UAAIC,EAAO,SAAS,KAAKA,EAAO,CAAC,EAAE,SAAS;AACpC,cAAA,IAAIlB,EAAa,WAAW,0EAA0E;AAAA,IAC9G;AAEK,WAAAiB;AAAA,EAAA;AAAA,EAGC,KAAKE,MAAsBC,GAAa;AAChD,UAAMC,IAAkB,CAAC;AACzB,eAAWC,KAAOF;AACX,WAAA,WAAWE,GAAK,CAACC,MAAW;AAC/B,QAAAF,EAAM,KAAKtB,EAAayB,EAAYD,GAAG,KAAK,EAAE,CAAC,CAAC;AAAA,MAAA,CACjD;AAEI,WAAAF,EAAM,KAAKF,CAAS;AAAA,EAAA;AAE/B;ACvCA,MAAM9B,IAAc;AAEb,MAAMoC,UAAsBlC,EAAa;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,wBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AAExB,WADUK,EAAaL,CAAI,EAClB,YAAY;AAAA,EAAA;AAEzB;AClBA,MAAML,IAAc;AAEb,MAAMqC,UAAsBnC,EAAa;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,wBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AAExB,WADUK,EAAaL,CAAI,EAClB,YAAY;AAAA,EAAA;AAEzB;AClBA,MAAML,IAAc;AAEb,MAAMsC,UAAuBpC,EAAa;AAAA,EAA1C,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,yBACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AACxB,WAAAA,IAAOK,EAAaL,CAAI,GACjBA,EAAK,QAAQ,WAAA,WAAA,IAAA,GAAY,CAACkC,MAAiBA,EAAK,OAAO,CAAC,EAAE,gBAAgBA,EAAK,MAAM,CAAC,EAAE,aAAa;AAAA,EAAA;AAEhH;AClBA,MAAMvC,IAAc;AAEb,MAAMwC,UAAqBtC,EAAa;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA,GACK,KAAA,UAAA,2BACI,KAAA,cAAAF,GACuB,KAAA,OAAA;AAAA,MACnC;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAAA;AAAA,IAEjD,GAC6B,KAAA,WAAA;AAAA,EAAA;AAAA,EAEnB,KAAKK,GAAW;AAExB,WADUK,EAAaL,CAAI,EAClB,KAAK;AAAA,EAAA;AAElB;ACNO,MAAMoC,IAAiC;AAAA,EAC5C,aAAaxC;AAAA,EACb,MAAMG;AAAA,EACN,OAAOE;AAAA,EACP,SAASG;AAAA,EACT,SAASI;AAAA,EACT,OAAOQ;AAAA,EACP,MAAMC;AAAA,EACN,SAASE;AAAA,EACT,MAAMC;AAAA,EACN,MAAME;AAAA,EACN,OAAOS;AAAA,EACP,OAAOC;AAAA,EACP,QAAQC;AAAA,EACR,MAAME;AACR;"}
|