oakscriptjs 0.8.1 → 0.9.0
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 +1 -1
- package/README.md +31 -9
- package/dist/cjs/array/index.d.ts +701 -0
- package/dist/cjs/array/index.d.ts.map +1 -0
- package/dist/cjs/array/index.js +392 -0
- package/dist/cjs/array/index.js.map +7 -0
- package/dist/cjs/box/index.d.ts +444 -0
- package/dist/cjs/box/index.d.ts.map +1 -0
- package/dist/cjs/box/index.js +246 -0
- package/dist/cjs/box/index.js.map +7 -0
- package/dist/cjs/callsite/index.d.ts +61 -0
- package/dist/cjs/callsite/index.d.ts.map +1 -0
- package/dist/cjs/callsite/index.js +65 -0
- package/dist/cjs/callsite/index.js.map +7 -0
- package/dist/cjs/chartpoint/index.d.ts +90 -0
- package/dist/cjs/chartpoint/index.d.ts.map +1 -0
- package/dist/cjs/chartpoint/index.js +56 -0
- package/dist/cjs/chartpoint/index.js.map +7 -0
- package/dist/cjs/color/index.d.ts +285 -0
- package/dist/cjs/color/index.d.ts.map +1 -0
- package/dist/cjs/color/index.js +143 -0
- package/dist/cjs/color/index.js.map +7 -0
- package/dist/cjs/compare/index.d.ts +26 -0
- package/dist/cjs/compare/index.d.ts.map +1 -0
- package/dist/cjs/compare/index.js +50 -0
- package/dist/cjs/compare/index.js.map +7 -0
- package/dist/cjs/drawing/registry.d.ts +42 -0
- package/dist/cjs/drawing/registry.d.ts.map +1 -0
- package/dist/cjs/drawing/registry.js +87 -0
- package/dist/cjs/drawing/registry.js.map +7 -0
- package/dist/cjs/index.d.ts +85 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +184 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/indicator.d.ts +117 -0
- package/dist/cjs/indicator.d.ts.map +1 -0
- package/dist/cjs/indicator.js +74 -0
- package/dist/cjs/indicator.js.map +7 -0
- package/dist/cjs/input.d.ts +196 -0
- package/dist/cjs/input.d.ts.map +1 -0
- package/dist/cjs/input.js +197 -0
- package/dist/cjs/input.js.map +7 -0
- package/dist/cjs/label/index.d.ts +303 -0
- package/dist/cjs/label/index.d.ts.map +1 -0
- package/dist/cjs/label/index.js +190 -0
- package/dist/cjs/label/index.js.map +7 -0
- package/dist/cjs/lib/index.d.ts +8 -0
- package/dist/cjs/lib/index.d.ts.map +1 -0
- package/dist/cjs/lib/index.js +19 -0
- package/dist/cjs/lib/index.js.map +7 -0
- package/dist/{lib → cjs/lib}/zigzag/index.d.ts +4 -1
- package/dist/cjs/lib/zigzag/index.d.ts.map +1 -0
- package/dist/cjs/lib/zigzag/index.js +27 -0
- package/dist/cjs/lib/zigzag/index.js.map +7 -0
- package/dist/cjs/lib/zigzag/zigzag.d.ts +100 -0
- package/dist/cjs/lib/zigzag/zigzag.d.ts.map +1 -0
- package/dist/cjs/lib/zigzag/zigzag.js +207 -0
- package/dist/cjs/lib/zigzag/zigzag.js.map +7 -0
- package/dist/cjs/line/index.d.ts +342 -0
- package/dist/cjs/line/index.d.ts.map +1 -0
- package/dist/cjs/line/index.js +193 -0
- package/dist/cjs/line/index.js.map +7 -0
- package/dist/cjs/linefill/index.d.ts +124 -0
- package/dist/cjs/linefill/index.d.ts.map +1 -0
- package/dist/cjs/linefill/index.js +56 -0
- package/dist/cjs/linefill/index.js.map +7 -0
- package/dist/cjs/map/index.d.ts +69 -0
- package/dist/cjs/map/index.d.ts.map +1 -0
- package/dist/cjs/map/index.js +80 -0
- package/dist/cjs/map/index.js.map +7 -0
- package/dist/cjs/math/index.d.ts +560 -0
- package/dist/cjs/math/index.d.ts.map +1 -0
- package/dist/cjs/math/index.js +441 -0
- package/dist/cjs/math/index.js.map +7 -0
- package/dist/cjs/matrix/index.d.ts +1231 -0
- package/dist/cjs/matrix/index.d.ts.map +1 -0
- package/dist/cjs/matrix/index.js +1200 -0
- package/dist/cjs/matrix/index.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/plot.d.ts +76 -0
- package/dist/cjs/plot.d.ts.map +1 -0
- package/dist/cjs/plot.js +51 -0
- package/dist/cjs/plot.js.map +7 -0
- package/dist/cjs/polyline/index.d.ts +115 -0
- package/dist/cjs/polyline/index.d.ts.map +1 -0
- package/dist/cjs/polyline/index.js +76 -0
- package/dist/cjs/polyline/index.js.map +7 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.d.ts +86 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.d.ts.map +1 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.js +141 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.js.map +7 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.d.ts +59 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.d.ts.map +1 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.js +117 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.js.map +7 -0
- package/dist/{runtime → cjs/runtime}/index.d.ts +12 -5
- package/dist/cjs/runtime/index.d.ts.map +1 -0
- package/dist/cjs/runtime/index.js +49 -0
- package/dist/cjs/runtime/index.js.map +7 -0
- package/dist/cjs/runtime/inputs.d.ts +91 -0
- package/dist/cjs/runtime/inputs.d.ts.map +1 -0
- package/dist/cjs/runtime/inputs.js +262 -0
- package/dist/cjs/runtime/inputs.js.map +7 -0
- package/dist/cjs/runtime/runtime.d.ts +70 -0
- package/dist/cjs/runtime/runtime.d.ts.map +1 -0
- package/dist/cjs/runtime/runtime.js +148 -0
- package/dist/cjs/runtime/runtime.js.map +7 -0
- package/dist/cjs/runtime/series.d.ts +362 -0
- package/dist/cjs/runtime/series.d.ts.map +1 -0
- package/dist/cjs/runtime/series.js +560 -0
- package/dist/cjs/runtime/series.js.map +7 -0
- package/dist/cjs/runtime/types.d.ts +282 -0
- package/dist/cjs/runtime/types.d.ts.map +1 -0
- package/dist/cjs/runtime/types.js +17 -0
- package/dist/cjs/runtime/types.js.map +7 -0
- package/dist/cjs/script/index.d.ts +987 -0
- package/dist/cjs/script/index.d.ts.map +1 -0
- package/dist/cjs/script/index.js +1169 -0
- package/dist/cjs/script/index.js.map +7 -0
- package/dist/cjs/security/resample.d.ts +63 -0
- package/dist/cjs/security/resample.d.ts.map +1 -0
- package/dist/cjs/security/resample.js +84 -0
- package/dist/cjs/security/resample.js.map +7 -0
- package/dist/cjs/session/bars.d.ts +80 -0
- package/dist/cjs/session/bars.d.ts.map +1 -0
- package/dist/cjs/session/bars.js +219 -0
- package/dist/cjs/session/bars.js.map +7 -0
- package/dist/cjs/session/calendar.d.ts +70 -0
- package/dist/cjs/session/calendar.d.ts.map +1 -0
- package/dist/cjs/session/calendar.js +164 -0
- package/dist/cjs/session/calendar.js.map +7 -0
- package/dist/cjs/str/dateformat.d.ts +15 -0
- package/dist/cjs/str/dateformat.d.ts.map +1 -0
- package/dist/cjs/str/dateformat.js +149 -0
- package/dist/cjs/str/dateformat.js.map +7 -0
- package/dist/cjs/str/index.d.ts +459 -0
- package/dist/cjs/str/index.d.ts.map +1 -0
- package/dist/cjs/str/index.js +143 -0
- package/dist/cjs/str/index.js.map +7 -0
- package/dist/cjs/str/messageformat.d.ts +14 -0
- package/dist/cjs/str/messageformat.d.ts.map +1 -0
- package/dist/cjs/str/messageformat.js +114 -0
- package/dist/cjs/str/messageformat.js.map +7 -0
- package/dist/cjs/str/numberformat.d.ts +19 -0
- package/dist/cjs/str/numberformat.d.ts.map +1 -0
- package/dist/cjs/str/numberformat.js +170 -0
- package/dist/cjs/str/numberformat.js.map +7 -0
- package/dist/{strategy → cjs/strategy}/index.d.ts +50 -0
- package/dist/cjs/strategy/index.d.ts.map +1 -0
- package/dist/cjs/strategy/index.js +92 -0
- package/dist/cjs/strategy/index.js.map +7 -0
- package/dist/cjs/ta/index.d.ts +1397 -0
- package/dist/cjs/ta/index.d.ts.map +1 -0
- package/dist/cjs/ta/index.js +1715 -0
- package/dist/cjs/ta/index.js.map +7 -0
- package/dist/cjs/ta/running-sum.d.ts +30 -0
- package/dist/cjs/ta/running-sum.d.ts.map +1 -0
- package/dist/cjs/ta/running-sum.js +99 -0
- package/dist/cjs/ta/running-sum.js.map +7 -0
- package/dist/cjs/ta-series.d.ts +558 -0
- package/dist/cjs/ta-series.d.ts.map +1 -0
- package/dist/cjs/ta-series.js +606 -0
- package/dist/cjs/ta-series.js.map +7 -0
- package/dist/cjs/text/index.d.ts +14 -0
- package/dist/cjs/text/index.d.ts.map +1 -0
- package/dist/cjs/text/index.js +29 -0
- package/dist/cjs/text/index.js.map +7 -0
- package/dist/cjs/time/datestring.d.ts +23 -0
- package/dist/cjs/time/datestring.d.ts.map +1 -0
- package/dist/cjs/time/datestring.js +106 -0
- package/dist/cjs/time/datestring.js.map +7 -0
- package/dist/cjs/time/index.d.ts +89 -0
- package/dist/cjs/time/index.d.ts.map +1 -0
- package/dist/cjs/time/index.js +85 -0
- package/dist/cjs/time/index.js.map +7 -0
- package/dist/cjs/time/session.d.ts +17 -0
- package/dist/cjs/time/session.d.ts.map +1 -0
- package/dist/cjs/time/session.js +65 -0
- package/dist/cjs/time/session.js.map +7 -0
- package/dist/cjs/time/timezone.d.ts +40 -0
- package/dist/cjs/time/timezone.d.ts.map +1 -0
- package/dist/cjs/time/timezone.js +125 -0
- package/dist/cjs/time/timezone.js.map +7 -0
- package/dist/cjs/timeframe/index.d.ts +73 -0
- package/dist/cjs/timeframe/index.d.ts.map +1 -0
- package/dist/cjs/timeframe/index.js +85 -0
- package/dist/cjs/timeframe/index.js.map +7 -0
- package/dist/cjs/types/index.d.ts +343 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +32 -0
- package/dist/cjs/types/index.js.map +7 -0
- package/dist/cjs/types/metadata.d.ts +300 -0
- package/dist/cjs/types/metadata.d.ts.map +1 -0
- package/dist/cjs/types/metadata.js +17 -0
- package/dist/cjs/types/metadata.js.map +7 -0
- package/dist/cjs/utils/index.d.ts +167 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +209 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/esm/array/index.d.ts +701 -0
- package/dist/esm/array/index.d.ts.map +1 -0
- package/dist/esm/array/index.js +983 -0
- package/dist/esm/array/index.js.map +1 -0
- package/dist/esm/box/index.d.ts +444 -0
- package/dist/esm/box/index.d.ts.map +1 -0
- package/dist/esm/box/index.js +602 -0
- package/dist/esm/box/index.js.map +1 -0
- package/dist/esm/callsite/index.d.ts +61 -0
- package/dist/esm/callsite/index.d.ts.map +1 -0
- package/dist/esm/callsite/index.js +97 -0
- package/dist/esm/callsite/index.js.map +1 -0
- package/dist/esm/chartpoint/index.d.ts +90 -0
- package/dist/esm/chartpoint/index.d.ts.map +1 -0
- package/dist/esm/chartpoint/index.js +113 -0
- package/dist/esm/chartpoint/index.js.map +1 -0
- package/dist/esm/color/index.d.ts +285 -0
- package/dist/esm/color/index.d.ts.map +1 -0
- package/dist/esm/color/index.js +373 -0
- package/dist/esm/color/index.js.map +1 -0
- package/dist/esm/compare/index.d.ts +26 -0
- package/dist/esm/compare/index.d.ts.map +1 -0
- package/dist/esm/compare/index.js +39 -0
- package/dist/esm/compare/index.js.map +1 -0
- package/dist/esm/drawing/registry.d.ts +42 -0
- package/dist/esm/drawing/registry.d.ts.map +1 -0
- package/dist/esm/drawing/registry.js +89 -0
- package/dist/esm/drawing/registry.js.map +1 -0
- package/dist/esm/index.d.ts +85 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +96 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indicator.d.ts +117 -0
- package/dist/esm/indicator.d.ts.map +1 -0
- package/dist/esm/indicator.js +84 -0
- package/dist/esm/indicator.js.map +1 -0
- package/dist/esm/input.d.ts +196 -0
- package/dist/esm/input.d.ts.map +1 -0
- package/dist/esm/input.js +183 -0
- package/dist/esm/input.js.map +1 -0
- package/dist/esm/label/index.d.ts +303 -0
- package/dist/esm/label/index.d.ts.map +1 -0
- package/dist/esm/label/index.js +417 -0
- package/dist/esm/label/index.js.map +1 -0
- package/dist/esm/lib/index.d.ts +8 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +8 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/zigzag/index.d.ts +5 -0
- package/dist/esm/lib/zigzag/index.d.ts.map +1 -0
- package/dist/esm/lib/zigzag/index.js +5 -0
- package/dist/esm/lib/zigzag/index.js.map +1 -0
- package/dist/esm/lib/zigzag/zigzag.d.ts +100 -0
- package/dist/esm/lib/zigzag/zigzag.d.ts.map +1 -0
- package/dist/esm/lib/zigzag/zigzag.js +229 -0
- package/dist/esm/lib/zigzag/zigzag.js.map +1 -0
- package/dist/esm/line/index.d.ts +342 -0
- package/dist/esm/line/index.d.ts.map +1 -0
- package/dist/esm/line/index.js +470 -0
- package/dist/esm/line/index.js.map +1 -0
- package/dist/esm/linefill/index.d.ts +124 -0
- package/dist/esm/linefill/index.d.ts.map +1 -0
- package/dist/esm/linefill/index.js +144 -0
- package/dist/esm/linefill/index.js.map +1 -0
- package/dist/esm/map/index.d.ts +69 -0
- package/dist/esm/map/index.d.ts.map +1 -0
- package/dist/esm/map/index.js +106 -0
- package/dist/esm/map/index.js.map +1 -0
- package/dist/esm/math/index.d.ts +560 -0
- package/dist/esm/math/index.d.ts.map +1 -0
- package/dist/esm/math/index.js +495 -0
- package/dist/esm/math/index.js.map +1 -0
- package/dist/esm/matrix/index.d.ts +1231 -0
- package/dist/esm/matrix/index.d.ts.map +1 -0
- package/dist/esm/matrix/index.js +2450 -0
- package/dist/esm/matrix/index.js.map +1 -0
- package/dist/esm/plot.d.ts +76 -0
- package/dist/esm/plot.d.ts.map +1 -0
- package/dist/esm/plot.js +63 -0
- package/dist/esm/plot.js.map +1 -0
- package/dist/esm/polyline/index.d.ts +115 -0
- package/dist/esm/polyline/index.d.ts.map +1 -0
- package/dist/esm/polyline/index.js +157 -0
- package/dist/esm/polyline/index.js.map +1 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.d.ts +86 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.d.ts.map +1 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.js +140 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.js.map +1 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.d.ts +59 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.d.ts.map +1 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.js +115 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.js.map +1 -0
- package/dist/esm/runtime/index.d.ts +13 -0
- package/dist/esm/runtime/index.d.ts.map +1 -0
- package/dist/esm/runtime/index.js +14 -0
- package/dist/esm/runtime/index.js.map +1 -0
- package/dist/esm/runtime/inputs.d.ts +91 -0
- package/dist/esm/runtime/inputs.d.ts.map +1 -0
- package/dist/esm/runtime/inputs.js +334 -0
- package/dist/esm/runtime/inputs.js.map +1 -0
- package/dist/esm/runtime/runtime.d.ts +70 -0
- package/dist/esm/runtime/runtime.d.ts.map +1 -0
- package/dist/esm/runtime/runtime.js +193 -0
- package/dist/esm/runtime/runtime.js.map +1 -0
- package/dist/esm/runtime/series.d.ts +362 -0
- package/dist/esm/runtime/series.d.ts.map +1 -0
- package/dist/esm/runtime/series.js +583 -0
- package/dist/esm/runtime/series.js.map +1 -0
- package/dist/esm/runtime/types.d.ts +282 -0
- package/dist/esm/runtime/types.d.ts.map +1 -0
- package/dist/esm/runtime/types.js +7 -0
- package/dist/esm/runtime/types.js.map +1 -0
- package/dist/esm/script/index.d.ts +987 -0
- package/dist/esm/script/index.d.ts.map +1 -0
- package/dist/esm/script/index.js +1289 -0
- package/dist/esm/script/index.js.map +1 -0
- package/dist/esm/security/resample.d.ts +63 -0
- package/dist/esm/security/resample.d.ts.map +1 -0
- package/dist/esm/security/resample.js +110 -0
- package/dist/esm/security/resample.js.map +1 -0
- package/dist/esm/session/bars.d.ts +80 -0
- package/dist/esm/session/bars.d.ts.map +1 -0
- package/dist/esm/session/bars.js +232 -0
- package/dist/esm/session/bars.js.map +1 -0
- package/dist/esm/session/calendar.d.ts +70 -0
- package/dist/esm/session/calendar.d.ts.map +1 -0
- package/dist/esm/session/calendar.js +172 -0
- package/dist/esm/session/calendar.js.map +1 -0
- package/dist/esm/str/dateformat.d.ts +15 -0
- package/dist/esm/str/dateformat.d.ts.map +1 -0
- package/dist/esm/str/dateformat.js +136 -0
- package/dist/esm/str/dateformat.js.map +1 -0
- package/dist/esm/str/index.d.ts +459 -0
- package/dist/esm/str/index.d.ts.map +1 -0
- package/dist/esm/str/index.js +540 -0
- package/dist/esm/str/index.js.map +1 -0
- package/dist/esm/str/messageformat.d.ts +14 -0
- package/dist/esm/str/messageformat.d.ts.map +1 -0
- package/dist/esm/str/messageformat.js +111 -0
- package/dist/esm/str/messageformat.js.map +1 -0
- package/dist/esm/str/numberformat.d.ts +19 -0
- package/dist/esm/str/numberformat.d.ts.map +1 -0
- package/dist/esm/str/numberformat.js +189 -0
- package/dist/esm/str/numberformat.js.map +1 -0
- package/dist/esm/strategy/index.d.ts +245 -0
- package/dist/esm/strategy/index.d.ts.map +1 -0
- package/dist/esm/strategy/index.js +84 -0
- package/dist/esm/strategy/index.js.map +1 -0
- package/dist/esm/ta/index.d.ts +1397 -0
- package/dist/esm/ta/index.d.ts.map +1 -0
- package/dist/esm/ta/index.js +3227 -0
- package/dist/esm/ta/index.js.map +1 -0
- package/dist/esm/ta/running-sum.d.ts +30 -0
- package/dist/esm/ta/running-sum.d.ts.map +1 -0
- package/dist/esm/ta/running-sum.js +113 -0
- package/dist/esm/ta/running-sum.js.map +1 -0
- package/dist/esm/ta-series.d.ts +558 -0
- package/dist/esm/ta-series.d.ts.map +1 -0
- package/dist/esm/ta-series.js +910 -0
- package/dist/esm/ta-series.js.map +1 -0
- package/dist/esm/text/index.d.ts +14 -0
- package/dist/esm/text/index.d.ts.map +1 -0
- package/dist/esm/text/index.js +14 -0
- package/dist/esm/text/index.js.map +1 -0
- package/dist/esm/time/datestring.d.ts +23 -0
- package/dist/esm/time/datestring.d.ts.map +1 -0
- package/dist/esm/time/datestring.js +94 -0
- package/dist/esm/time/datestring.js.map +1 -0
- package/dist/esm/time/index.d.ts +89 -0
- package/dist/esm/time/index.d.ts.map +1 -0
- package/dist/esm/time/index.js +108 -0
- package/dist/esm/time/index.js.map +1 -0
- package/dist/esm/time/session.d.ts +17 -0
- package/dist/esm/time/session.d.ts.map +1 -0
- package/dist/esm/time/session.js +69 -0
- package/dist/esm/time/session.js.map +1 -0
- package/dist/esm/time/timezone.d.ts +40 -0
- package/dist/esm/time/timezone.d.ts.map +1 -0
- package/dist/esm/time/timezone.js +144 -0
- package/dist/esm/time/timezone.js.map +1 -0
- package/dist/esm/timeframe/index.d.ts +73 -0
- package/dist/esm/timeframe/index.d.ts.map +1 -0
- package/dist/esm/timeframe/index.js +131 -0
- package/dist/esm/timeframe/index.js.map +1 -0
- package/dist/esm/types/index.d.ts +343 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +17 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/metadata.d.ts +300 -0
- package/dist/esm/types/metadata.d.ts.map +1 -0
- package/dist/esm/types/metadata.js +7 -0
- package/dist/esm/types/metadata.js.map +1 -0
- package/dist/esm/utils/index.d.ts +167 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +295 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/package.json +53 -23
- package/src/array/index.ts +1056 -0
- package/src/box/index.ts +680 -0
- package/src/callsite/index.ts +104 -0
- package/src/chartpoint/index.ts +126 -0
- package/src/color/index.ts +411 -0
- package/src/compare/index.ts +46 -0
- package/src/drawing/registry.ts +106 -0
- package/src/index.ts +201 -0
- package/src/indicator.ts +185 -0
- package/src/input.ts +280 -0
- package/src/label/index.ts +490 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/zigzag/index.ts +13 -0
- package/src/lib/zigzag/zigzag.ts +318 -0
- package/src/line/index.ts +530 -0
- package/src/linefill/index.ts +152 -0
- package/src/map/index.ts +115 -0
- package/src/math/index.ts +1071 -0
- package/src/matrix/index.ts +2697 -0
- package/src/plot.ts +121 -0
- package/src/polyline/index.ts +184 -0
- package/src/runtime/adapters/LightweightChartsAdapter.ts +201 -0
- package/src/runtime/adapters/SimpleInputAdapter.ts +132 -0
- package/src/runtime/index.ts +52 -0
- package/src/runtime/inputs.ts +377 -0
- package/src/runtime/runtime.ts +241 -0
- package/src/runtime/series.ts +644 -0
- package/src/runtime/types.ts +292 -0
- package/src/script/index.ts +1865 -0
- package/src/security/resample.ts +119 -0
- package/src/session/bars.ts +262 -0
- package/src/session/calendar.ts +199 -0
- package/src/str/dateformat.ts +104 -0
- package/src/str/index.ts +557 -0
- package/src/str/messageformat.ts +109 -0
- package/src/str/numberformat.ts +197 -0
- package/src/strategy/index.ts +281 -0
- package/src/ta/index.ts +3580 -0
- package/src/ta/running-sum.ts +117 -0
- package/src/ta-series.ts +1036 -0
- package/src/text/index.ts +14 -0
- package/src/time/datestring.ts +96 -0
- package/src/time/index.ts +161 -0
- package/src/time/session.ts +79 -0
- package/src/time/timezone.ts +180 -0
- package/src/timeframe/index.ts +144 -0
- package/src/types/index.ts +398 -0
- package/src/types/metadata.ts +334 -0
- package/src/utils/index.ts +334 -0
- package/dist/array/index.d.ts +0 -57
- package/dist/array/index.d.ts.map +0 -1
- package/dist/box/index.d.ts +0 -37
- package/dist/box/index.d.ts.map +0 -1
- package/dist/callsite/index.d.ts +0 -7
- package/dist/callsite/index.d.ts.map +0 -1
- package/dist/chartpoint/index.d.ts +0 -8
- package/dist/chartpoint/index.d.ts.map +0 -1
- package/dist/color/index.d.ts +0 -28
- package/dist/color/index.d.ts.map +0 -1
- package/dist/compare/index.d.ts +0 -8
- package/dist/compare/index.d.ts.map +0 -1
- package/dist/drawing/registry.d.ts +0 -19
- package/dist/drawing/registry.d.ts.map +0 -1
- package/dist/index.cjs +0 -7979
- package/dist/index.d.ts +0 -64
- package/dist/index.d.ts.map +0 -1
- package/dist/index.mjs +0 -7962
- package/dist/indicator.d.ts +0 -42
- package/dist/indicator.d.ts.map +0 -1
- package/dist/input.d.ts +0 -47
- package/dist/input.d.ts.map +0 -1
- package/dist/label/index.d.ts +0 -30
- package/dist/label/index.d.ts.map +0 -1
- package/dist/lib/index.d.ts +0 -2
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/zigzag/index.d.ts.map +0 -1
- package/dist/lib/zigzag/zigzag.d.ts +0 -47
- package/dist/lib/zigzag/zigzag.d.ts.map +0 -1
- package/dist/line/index.d.ts +0 -30
- package/dist/line/index.d.ts.map +0 -1
- package/dist/linefill/index.d.ts +0 -10
- package/dist/linefill/index.d.ts.map +0 -1
- package/dist/map/index.d.ts +0 -14
- package/dist/map/index.d.ts.map +0 -1
- package/dist/math/index.d.ts +0 -53
- package/dist/math/index.d.ts.map +0 -1
- package/dist/matrix/index.d.ts +0 -52
- package/dist/matrix/index.d.ts.map +0 -1
- package/dist/plot.d.ts +0 -20
- package/dist/plot.d.ts.map +0 -1
- package/dist/polyline/index.d.ts +0 -11
- package/dist/polyline/index.d.ts.map +0 -1
- package/dist/runtime/adapters/LightweightChartsAdapter.d.ts +0 -15
- package/dist/runtime/adapters/LightweightChartsAdapter.d.ts.map +0 -1
- package/dist/runtime/adapters/SimpleInputAdapter.d.ts +0 -16
- package/dist/runtime/adapters/SimpleInputAdapter.d.ts.map +0 -1
- package/dist/runtime/index.cjs +0 -600
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.mjs +0 -577
- package/dist/runtime/inputs.d.ts +0 -13
- package/dist/runtime/inputs.d.ts.map +0 -1
- package/dist/runtime/runtime.d.ts +0 -16
- package/dist/runtime/runtime.d.ts.map +0 -1
- package/dist/runtime/series.d.ts +0 -60
- package/dist/runtime/series.d.ts.map +0 -1
- package/dist/runtime/types.d.ts +0 -122
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/script/index.cjs +0 -6372
- package/dist/script/index.d.ts +0 -709
- package/dist/script/index.d.ts.map +0 -1
- package/dist/script/index.mjs +0 -6355
- package/dist/security/resample.d.ts +0 -13
- package/dist/security/resample.d.ts.map +0 -1
- package/dist/session/bars.d.ts +0 -34
- package/dist/session/bars.d.ts.map +0 -1
- package/dist/session/calendar.d.ts +0 -31
- package/dist/session/calendar.d.ts.map +0 -1
- package/dist/str/dateformat.d.ts +0 -2
- package/dist/str/dateformat.d.ts.map +0 -1
- package/dist/str/index.d.ts +0 -24
- package/dist/str/index.d.ts.map +0 -1
- package/dist/str/messageformat.d.ts +0 -2
- package/dist/str/messageformat.d.ts.map +0 -1
- package/dist/str/numberformat.d.ts +0 -3
- package/dist/str/numberformat.d.ts.map +0 -1
- package/dist/strategy/index.d.ts.map +0 -1
- package/dist/ta/index.d.ts +0 -72
- package/dist/ta/index.d.ts.map +0 -1
- package/dist/ta-series.d.ts +0 -143
- package/dist/ta-series.d.ts.map +0 -1
- package/dist/text/index.d.ts +0 -4
- package/dist/text/index.d.ts.map +0 -1
- package/dist/time/datestring.d.ts +0 -2
- package/dist/time/datestring.d.ts.map +0 -1
- package/dist/time/index.d.ts +0 -15
- package/dist/time/index.d.ts.map +0 -1
- package/dist/time/session.d.ts +0 -2
- package/dist/time/session.d.ts.map +0 -1
- package/dist/time/timezone.d.ts +0 -13
- package/dist/time/timezone.d.ts.map +0 -1
- package/dist/timeframe/index.d.ts +0 -17
- package/dist/timeframe/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -181
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/metadata.d.ts +0 -131
- package/dist/types/metadata.d.ts.map +0 -1
- package/dist/utils/index.d.ts +0 -26
- package/dist/utils/index.d.ts.map +0 -1
package/src/box/index.ts
ADDED
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Box namespace
|
|
3
|
+
* Functions for creating and manipulating box drawing objects.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Box objects represent rectangular areas on the chart. The getter functions
|
|
7
|
+
* (get_top, get_bottom, get_left, get_right) enable computational use cases like:
|
|
8
|
+
* - Gap detection and tracking (detecting when price fills gaps)
|
|
9
|
+
* - Range breakout analysis (detecting when price breaks out of consolidation)
|
|
10
|
+
* - Rectangle pattern recognition
|
|
11
|
+
*
|
|
12
|
+
* @version 6
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';
|
|
16
|
+
import type { ChartPoint, Box, color } from '../types/index.js';
|
|
17
|
+
|
|
18
|
+
type BoxXloc = 'bar_index' | 'bar_time';
|
|
19
|
+
type BoxExtend = 'none' | 'left' | 'right' | 'both';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new box (PineScript `box.new`), with two chart points or with coordinates, in PineScript's
|
|
23
|
+
* parameter order:
|
|
24
|
+
*
|
|
25
|
+
* - `box.new(top_left, bottom_right, border_color?, border_width?, border_style?, extend?, xloc?, bgcolor?,
|
|
26
|
+
* text?, text_size?, text_color?, text_halign?, text_valign?, text_wrap?, text_font_family?,
|
|
27
|
+
* force_overlay?, text_formatting?)`
|
|
28
|
+
* - `box.new(left, top, right, bottom, border_color?, border_width?, border_style?, extend?, xloc?, ...)`
|
|
29
|
+
*
|
|
30
|
+
* With chart points, x is `point.index` for `bar_index` boxes and `point.time` for `bar_time` boxes.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // Gap box from bar 10 to 20, between 100 and 105, extended to the right
|
|
35
|
+
* const gap = box.new(10, 105, 20, 100, '#2196F3', 1, 'solid', 'right');
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function new_box(
|
|
39
|
+
top_left: ChartPoint,
|
|
40
|
+
bottom_right: ChartPoint,
|
|
41
|
+
border_color?: color,
|
|
42
|
+
border_width?: number,
|
|
43
|
+
border_style?: 'solid' | 'dotted' | 'dashed',
|
|
44
|
+
extend?: BoxExtend,
|
|
45
|
+
xloc?: BoxXloc,
|
|
46
|
+
bgcolor?: color,
|
|
47
|
+
text?: string,
|
|
48
|
+
text_size?: string | number,
|
|
49
|
+
text_color?: color,
|
|
50
|
+
text_halign?: 'left' | 'center' | 'right',
|
|
51
|
+
text_valign?: 'top' | 'center' | 'bottom',
|
|
52
|
+
text_wrap?: 'none' | 'auto',
|
|
53
|
+
text_font_family?: 'default' | 'monospace',
|
|
54
|
+
force_overlay?: boolean,
|
|
55
|
+
text_formatting?: number
|
|
56
|
+
): Box;
|
|
57
|
+
export function new_box(
|
|
58
|
+
left: number,
|
|
59
|
+
top: number,
|
|
60
|
+
right: number,
|
|
61
|
+
bottom: number,
|
|
62
|
+
border_color?: color,
|
|
63
|
+
border_width?: number,
|
|
64
|
+
border_style?: 'solid' | 'dotted' | 'dashed',
|
|
65
|
+
extend?: BoxExtend,
|
|
66
|
+
xloc?: BoxXloc,
|
|
67
|
+
bgcolor?: color,
|
|
68
|
+
text?: string,
|
|
69
|
+
text_size?: string | number,
|
|
70
|
+
text_color?: color,
|
|
71
|
+
text_halign?: 'left' | 'center' | 'right',
|
|
72
|
+
text_valign?: 'top' | 'center' | 'bottom',
|
|
73
|
+
text_wrap?: 'none' | 'auto',
|
|
74
|
+
text_font_family?: 'default' | 'monospace',
|
|
75
|
+
force_overlay?: boolean,
|
|
76
|
+
text_formatting?: number
|
|
77
|
+
): Box;
|
|
78
|
+
export function new_box(...args: unknown[]): Box {
|
|
79
|
+
let left: number, top: number, right: number, bottom: number, rest: unknown[];
|
|
80
|
+
if (typeof args[0] === 'object' && args[0] !== null) {
|
|
81
|
+
const [tl, br, ...others] = args as [ChartPoint, ChartPoint, ...unknown[]];
|
|
82
|
+
const xloc = (others[4] as BoxXloc | undefined) ?? 'bar_index';
|
|
83
|
+
[left, top, right, bottom, rest] = [pointX(tl, xloc), tl.price, pointX(br, xloc), br.price, others];
|
|
84
|
+
} else {
|
|
85
|
+
[left, top, right, bottom] = args as [number, number, number, number];
|
|
86
|
+
rest = args.slice(4);
|
|
87
|
+
}
|
|
88
|
+
const [border_color, border_width, border_style, extend, xloc, bgcolor, text, text_size, text_color,
|
|
89
|
+
text_halign, text_valign, text_wrap, text_font_family, force_overlay, text_formatting] = rest as [
|
|
90
|
+
color?, number?, ('solid' | 'dotted' | 'dashed')?, BoxExtend?, BoxXloc?, color?, string?,
|
|
91
|
+
(string | number)?, color?, ('left' | 'center' | 'right')?, ('top' | 'center' | 'bottom')?,
|
|
92
|
+
('none' | 'auto')?, ('default' | 'monospace')?, boolean?, number?,
|
|
93
|
+
];
|
|
94
|
+
return register('box', {
|
|
95
|
+
left,
|
|
96
|
+
top,
|
|
97
|
+
right,
|
|
98
|
+
bottom,
|
|
99
|
+
xloc: xloc ?? 'bar_index',
|
|
100
|
+
extend: extend ?? 'none',
|
|
101
|
+
border_color,
|
|
102
|
+
border_width: border_width || 1,
|
|
103
|
+
border_style: border_style || 'solid',
|
|
104
|
+
bgcolor,
|
|
105
|
+
text,
|
|
106
|
+
text_size,
|
|
107
|
+
text_color,
|
|
108
|
+
text_halign,
|
|
109
|
+
text_valign,
|
|
110
|
+
text_wrap,
|
|
111
|
+
text_font_family,
|
|
112
|
+
force_overlay: force_overlay ?? false,
|
|
113
|
+
text_formatting,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Returns the left border x coordinate.
|
|
119
|
+
*
|
|
120
|
+
* @param id - Box object
|
|
121
|
+
* @returns Left border coordinate (bar index or timestamp)
|
|
122
|
+
*
|
|
123
|
+
* @remarks
|
|
124
|
+
* **COMPUTATIONAL USE**: Calculate gap duration, validate range timeframes
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const gap = box.new(10, 105, 20, 100);
|
|
129
|
+
* const currentBar = 30;
|
|
130
|
+
* const duration = currentBar - box.get_left(gap); // Returns 20
|
|
131
|
+
*
|
|
132
|
+
* if (duration > 50) {
|
|
133
|
+
* console.log('Gap has been open for 50+ bars');
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export function get_left(id: Box): number {
|
|
138
|
+
return id.left;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Returns the right border x coordinate.
|
|
143
|
+
*
|
|
144
|
+
* @param id - Box object
|
|
145
|
+
* @returns Right border coordinate (bar index or timestamp)
|
|
146
|
+
*
|
|
147
|
+
* @remarks
|
|
148
|
+
* **COMPUTATIONAL USE**: Calculate gap duration, update trailing edges
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* const range = box.new(100, 155, 150, 145);
|
|
153
|
+
* const width = box.get_right(range) - box.get_left(range); // Returns 50 bars
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export function get_right(id: Box): number {
|
|
157
|
+
return id.right;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Returns the top border price level.
|
|
162
|
+
*
|
|
163
|
+
* @param id - Box object
|
|
164
|
+
* @returns Top border price
|
|
165
|
+
*
|
|
166
|
+
* @remarks
|
|
167
|
+
* **COMPUTATIONAL USE**: Detect breakouts above resistance, check gap fills
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* const gap = box.new(10, 105, 20, 100); // Bearish gap
|
|
172
|
+
*
|
|
173
|
+
* // Check if price has filled gap from below
|
|
174
|
+
* const high = 106;
|
|
175
|
+
* if (high > box.get_top(gap)) {
|
|
176
|
+
* console.log('Gap completely filled!');
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function get_top(id: Box): number {
|
|
181
|
+
return id.top;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Returns the bottom border price level.
|
|
186
|
+
*
|
|
187
|
+
* @param id - Box object
|
|
188
|
+
* @returns Bottom border price
|
|
189
|
+
*
|
|
190
|
+
* @remarks
|
|
191
|
+
* **COMPUTATIONAL USE**: Detect breakouts below support, check gap fills
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* const gap = box.new(10, 105, 20, 100); // Bearish gap
|
|
196
|
+
*
|
|
197
|
+
* // Check if price has touched gap from above
|
|
198
|
+
* const low = 104;
|
|
199
|
+
* if (low < box.get_top(gap) && low > box.get_bottom(gap)) {
|
|
200
|
+
* console.log('Price entered the gap!');
|
|
201
|
+
* }
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export function get_bottom(id: Box): number {
|
|
205
|
+
return id.bottom;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Creates a copy of the box object.
|
|
210
|
+
*
|
|
211
|
+
* @param id - Box object to copy
|
|
212
|
+
* @returns New box object with same properties
|
|
213
|
+
*
|
|
214
|
+
* @remarks
|
|
215
|
+
* Creates a shallow copy of the box. Modifications to the copy won't affect the original.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const originalBox = box.new(10, 105, 20, 100);
|
|
220
|
+
* const copiedBox = box.copy(originalBox);
|
|
221
|
+
*
|
|
222
|
+
* // Modify copy without affecting original
|
|
223
|
+
* copiedBox.top = 110;
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
export function copy(id: Box): Box {
|
|
227
|
+
return register('box', { ...id });
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// =============================================================================
|
|
231
|
+
// COORDINATE SETTERS
|
|
232
|
+
// =============================================================================
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Sets the left border x coordinate.
|
|
236
|
+
*
|
|
237
|
+
* @param id - Box object to modify
|
|
238
|
+
* @param left - New left border coordinate
|
|
239
|
+
* @returns Modified box object
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```typescript
|
|
243
|
+
* const box = box.new(10, 105, 20, 100);
|
|
244
|
+
* box.set_left(box, 15); // Move left edge to bar 15
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
export function set_left(id: Box, left: number): Box {
|
|
248
|
+
if (isDeleted(id)) return id;
|
|
249
|
+
id.left = left;
|
|
250
|
+
return id;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Sets the right border x coordinate.
|
|
255
|
+
*
|
|
256
|
+
* @param id - Box object to modify
|
|
257
|
+
* @param right - New right border coordinate
|
|
258
|
+
* @returns Modified box object
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* const box = box.new(10, 105, 20, 100);
|
|
263
|
+
* box.set_right(box, 25); // Move right edge to bar 25
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function set_right(id: Box, right: number): Box {
|
|
267
|
+
if (isDeleted(id)) return id;
|
|
268
|
+
id.right = right;
|
|
269
|
+
return id;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Sets the top border price level.
|
|
274
|
+
*
|
|
275
|
+
* @param id - Box object to modify
|
|
276
|
+
* @param top - New top border price
|
|
277
|
+
* @returns Modified box object
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```typescript
|
|
281
|
+
* const box = box.new(10, 105, 20, 100);
|
|
282
|
+
* box.set_top(box, 110); // Move top edge to price 110
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
export function set_top(id: Box, top: number): Box {
|
|
286
|
+
if (isDeleted(id)) return id;
|
|
287
|
+
id.top = top;
|
|
288
|
+
return id;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Sets the bottom border price level.
|
|
293
|
+
*
|
|
294
|
+
* @param id - Box object to modify
|
|
295
|
+
* @param bottom - New bottom border price
|
|
296
|
+
* @returns Modified box object
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```typescript
|
|
300
|
+
* const box = box.new(10, 105, 20, 100);
|
|
301
|
+
* box.set_bottom(box, 95); // Move bottom edge to price 95
|
|
302
|
+
* ```
|
|
303
|
+
*/
|
|
304
|
+
export function set_bottom(id: Box, bottom: number): Box {
|
|
305
|
+
if (isDeleted(id)) return id;
|
|
306
|
+
id.bottom = bottom;
|
|
307
|
+
return id;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Sets the left and top coordinates.
|
|
312
|
+
*
|
|
313
|
+
* @param id - Box object to modify
|
|
314
|
+
* @param left - New left border coordinate
|
|
315
|
+
* @param top - New top border price
|
|
316
|
+
* @returns Modified box object
|
|
317
|
+
*
|
|
318
|
+
* @example
|
|
319
|
+
* ```typescript
|
|
320
|
+
* const box = box.new(10, 105, 20, 100);
|
|
321
|
+
* box.set_lefttop(box, 12, 108); // Move top-left corner
|
|
322
|
+
* ```
|
|
323
|
+
*/
|
|
324
|
+
export function set_lefttop(id: Box, left: number, top: number): Box {
|
|
325
|
+
if (isDeleted(id)) return id;
|
|
326
|
+
id.left = left;
|
|
327
|
+
id.top = top;
|
|
328
|
+
return id;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Sets the right and bottom coordinates.
|
|
333
|
+
*
|
|
334
|
+
* @param id - Box object to modify
|
|
335
|
+
* @param right - New right border coordinate
|
|
336
|
+
* @param bottom - New bottom border price
|
|
337
|
+
* @returns Modified box object
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```typescript
|
|
341
|
+
* const box = box.new(10, 105, 20, 100);
|
|
342
|
+
* box.set_rightbottom(box, 25, 98); // Move bottom-right corner
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
345
|
+
export function set_rightbottom(id: Box, right: number, bottom: number): Box {
|
|
346
|
+
if (isDeleted(id)) return id;
|
|
347
|
+
id.right = right;
|
|
348
|
+
id.bottom = bottom;
|
|
349
|
+
return id;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Sets the coordinate system for the box.
|
|
354
|
+
*
|
|
355
|
+
* @param id - Box object to modify
|
|
356
|
+
* @param left - New left border coordinate
|
|
357
|
+
* @param right - New right border coordinate
|
|
358
|
+
* @param xloc - New coordinate system ('bar_index' or 'bar_time')
|
|
359
|
+
* @returns Modified box object
|
|
360
|
+
*
|
|
361
|
+
* @remarks
|
|
362
|
+
* When changing xloc, you must provide appropriate x coordinates for the new system.
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* ```typescript
|
|
366
|
+
* const box = box.new(10, 105, 20, 100);
|
|
367
|
+
* // Change to timestamp-based coordinates
|
|
368
|
+
* box.set_xloc(box, 1609459200000, 1609545600000, 'bar_time');
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
export function set_xloc(id: Box, left: number, right: number, xloc: 'bar_index' | 'bar_time'): Box {
|
|
372
|
+
if (isDeleted(id)) return id;
|
|
373
|
+
id.left = left;
|
|
374
|
+
id.right = right;
|
|
375
|
+
id.xloc = xloc;
|
|
376
|
+
return id;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Sets the horizontal extension mode.
|
|
381
|
+
*
|
|
382
|
+
* @param id - Box object to modify
|
|
383
|
+
* @param extend - New extension mode
|
|
384
|
+
* @returns Modified box object
|
|
385
|
+
*
|
|
386
|
+
* @example
|
|
387
|
+
* ```typescript
|
|
388
|
+
* const box = box.new(10, 105, 20, 100);
|
|
389
|
+
* box.set_extend(box, 'right'); // Extend box to the right
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
export function set_extend(id: Box, extend: 'none' | 'left' | 'right' | 'both'): Box {
|
|
393
|
+
if (isDeleted(id)) return id;
|
|
394
|
+
id.extend = extend;
|
|
395
|
+
return id;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// =============================================================================
|
|
399
|
+
// STYLING SETTERS
|
|
400
|
+
// =============================================================================
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Sets the border color.
|
|
404
|
+
*
|
|
405
|
+
* @param id - Box object to modify
|
|
406
|
+
* @param borderColor - New border color
|
|
407
|
+
* @returns Modified box object
|
|
408
|
+
*
|
|
409
|
+
* @example
|
|
410
|
+
* ```typescript
|
|
411
|
+
* const box = box.new(10, 105, 20, 100);
|
|
412
|
+
* box.set_border_color(box, '#FF0000'); // Red border
|
|
413
|
+
* ```
|
|
414
|
+
*/
|
|
415
|
+
export function set_border_color(id: Box, borderColor: color): Box {
|
|
416
|
+
if (isDeleted(id)) return id;
|
|
417
|
+
id.border_color = borderColor;
|
|
418
|
+
return id;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Sets the border width.
|
|
423
|
+
*
|
|
424
|
+
* @param id - Box object to modify
|
|
425
|
+
* @param width - New border width in pixels
|
|
426
|
+
* @returns Modified box object
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* ```typescript
|
|
430
|
+
* const box = box.new(10, 105, 20, 100);
|
|
431
|
+
* box.set_border_width(box, 2); // Thicker border
|
|
432
|
+
* ```
|
|
433
|
+
*/
|
|
434
|
+
export function set_border_width(id: Box, width: number): Box {
|
|
435
|
+
if (isDeleted(id)) return id;
|
|
436
|
+
id.border_width = width;
|
|
437
|
+
return id;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Sets the border style.
|
|
442
|
+
*
|
|
443
|
+
* @param id - Box object to modify
|
|
444
|
+
* @param style - New border style
|
|
445
|
+
* @returns Modified box object
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* ```typescript
|
|
449
|
+
* const box = box.new(10, 105, 20, 100);
|
|
450
|
+
* box.set_border_style(box, 'dashed'); // Dashed border
|
|
451
|
+
* ```
|
|
452
|
+
*/
|
|
453
|
+
export function set_border_style(id: Box, style: 'solid' | 'dotted' | 'dashed'): Box {
|
|
454
|
+
if (isDeleted(id)) return id;
|
|
455
|
+
id.border_style = style;
|
|
456
|
+
return id;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Sets the background fill color.
|
|
461
|
+
*
|
|
462
|
+
* @param id - Box object to modify
|
|
463
|
+
* @param bgColor - New background color
|
|
464
|
+
* @returns Modified box object
|
|
465
|
+
*
|
|
466
|
+
* @example
|
|
467
|
+
* ```typescript
|
|
468
|
+
* const box = box.new(10, 105, 20, 100);
|
|
469
|
+
* box.set_bgcolor(box, '#00FF0030'); // Transparent green fill
|
|
470
|
+
* ```
|
|
471
|
+
*/
|
|
472
|
+
export function set_bgcolor(id: Box, bgColor: color): Box {
|
|
473
|
+
if (isDeleted(id)) return id;
|
|
474
|
+
id.bgcolor = bgColor;
|
|
475
|
+
return id;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// =============================================================================
|
|
479
|
+
// TEXT SETTERS
|
|
480
|
+
// =============================================================================
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* Sets the text content.
|
|
484
|
+
*
|
|
485
|
+
* @param id - Box object to modify
|
|
486
|
+
* @param text - New text content
|
|
487
|
+
* @returns Modified box object
|
|
488
|
+
*
|
|
489
|
+
* @example
|
|
490
|
+
* ```typescript
|
|
491
|
+
* const box = box.new(10, 105, 20, 100);
|
|
492
|
+
* box.set_text(box, 'Gap Filled'); // Update text
|
|
493
|
+
* ```
|
|
494
|
+
*/
|
|
495
|
+
export function set_text(id: Box, text: string): Box {
|
|
496
|
+
if (isDeleted(id)) return id;
|
|
497
|
+
id.text = text;
|
|
498
|
+
return id;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* Sets the text color.
|
|
503
|
+
*
|
|
504
|
+
* @param id - Box object to modify
|
|
505
|
+
* @param textColor - New text color
|
|
506
|
+
* @returns Modified box object
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```typescript
|
|
510
|
+
* const box = box.new(10, 105, 20, 100);
|
|
511
|
+
* box.set_text_color(box, '#FFFFFF'); // White text
|
|
512
|
+
* ```
|
|
513
|
+
*/
|
|
514
|
+
export function set_text_color(id: Box, textColor: color): Box {
|
|
515
|
+
if (isDeleted(id)) return id;
|
|
516
|
+
id.text_color = textColor;
|
|
517
|
+
return id;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Sets the text size.
|
|
522
|
+
*
|
|
523
|
+
* @param id - Box object to modify
|
|
524
|
+
* @param size - New text size
|
|
525
|
+
* @returns Modified box object
|
|
526
|
+
*
|
|
527
|
+
* @example
|
|
528
|
+
* ```typescript
|
|
529
|
+
* const box = box.new(10, 105, 20, 100);
|
|
530
|
+
* box.set_text_size(box, 'large'); // Larger text
|
|
531
|
+
* ```
|
|
532
|
+
*/
|
|
533
|
+
export function set_text_size(id: Box, size: string | number): Box {
|
|
534
|
+
if (isDeleted(id)) return id;
|
|
535
|
+
id.text_size = size;
|
|
536
|
+
return id;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Sets the horizontal text alignment.
|
|
541
|
+
*
|
|
542
|
+
* @param id - Box object to modify
|
|
543
|
+
* @param align - New horizontal alignment
|
|
544
|
+
* @returns Modified box object
|
|
545
|
+
*
|
|
546
|
+
* @example
|
|
547
|
+
* ```typescript
|
|
548
|
+
* const box = box.new(10, 105, 20, 100);
|
|
549
|
+
* box.set_text_halign(box, 'center'); // Center text horizontally
|
|
550
|
+
* ```
|
|
551
|
+
*/
|
|
552
|
+
export function set_text_halign(id: Box, align: 'left' | 'center' | 'right'): Box {
|
|
553
|
+
if (isDeleted(id)) return id;
|
|
554
|
+
id.text_halign = align;
|
|
555
|
+
return id;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* Sets the vertical text alignment.
|
|
560
|
+
*
|
|
561
|
+
* @param id - Box object to modify
|
|
562
|
+
* @param align - New vertical alignment
|
|
563
|
+
* @returns Modified box object
|
|
564
|
+
*
|
|
565
|
+
* @example
|
|
566
|
+
* ```typescript
|
|
567
|
+
* const box = box.new(10, 105, 20, 100);
|
|
568
|
+
* box.set_text_valign(box, 'center'); // Center text vertically
|
|
569
|
+
* ```
|
|
570
|
+
*/
|
|
571
|
+
export function set_text_valign(id: Box, align: 'top' | 'center' | 'bottom'): Box {
|
|
572
|
+
if (isDeleted(id)) return id;
|
|
573
|
+
id.text_valign = align;
|
|
574
|
+
return id;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* Sets the text wrapping mode.
|
|
579
|
+
*
|
|
580
|
+
* @param id - Box object to modify
|
|
581
|
+
* @param wrap - New text wrap mode
|
|
582
|
+
* @returns Modified box object
|
|
583
|
+
*
|
|
584
|
+
* @example
|
|
585
|
+
* ```typescript
|
|
586
|
+
* const box = box.new(10, 105, 20, 100);
|
|
587
|
+
* box.set_text_wrap(box, 'auto'); // Enable text wrapping
|
|
588
|
+
* ```
|
|
589
|
+
*/
|
|
590
|
+
export function set_text_wrap(id: Box, wrap: 'none' | 'auto'): Box {
|
|
591
|
+
if (isDeleted(id)) return id;
|
|
592
|
+
id.text_wrap = wrap;
|
|
593
|
+
return id;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Sets the text font family.
|
|
598
|
+
*
|
|
599
|
+
* @param id - Box object to modify
|
|
600
|
+
* @param font - New font family
|
|
601
|
+
* @returns Modified box object
|
|
602
|
+
*
|
|
603
|
+
* @example
|
|
604
|
+
* ```typescript
|
|
605
|
+
* const box = box.new(10, 105, 20, 100);
|
|
606
|
+
* box.set_text_font_family(box, 'monospace'); // Monospace font
|
|
607
|
+
* ```
|
|
608
|
+
*/
|
|
609
|
+
export function set_text_font_family(id: Box, font: 'default' | 'monospace'): Box {
|
|
610
|
+
if (isDeleted(id)) return id;
|
|
611
|
+
id.text_font_family = font;
|
|
612
|
+
return id;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Deletes the box object.
|
|
617
|
+
*
|
|
618
|
+
* @param id - Box object to delete
|
|
619
|
+
*
|
|
620
|
+
* @remarks
|
|
621
|
+
* Removes the box from `box.all()`. As in PineScript, the deleted box is `na`: its getters
|
|
622
|
+
* return NaN and its setters do nothing. Deleting it twice has no effect.
|
|
623
|
+
*
|
|
624
|
+
* @example
|
|
625
|
+
* ```typescript
|
|
626
|
+
* const box = box.new(10, 105, 20, 100);
|
|
627
|
+
* box.delete(box);
|
|
628
|
+
* // box.all() no longer contains it
|
|
629
|
+
* ```
|
|
630
|
+
*/
|
|
631
|
+
export function delete_box(id: Box): void {
|
|
632
|
+
remove('box', id);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/** x coordinate of a chart point for an object's xloc (`na` when the point has no such coordinate). */
|
|
636
|
+
function pointX(point: ChartPoint, xloc: 'bar_index' | 'bar_time'): number {
|
|
637
|
+
const x = xloc === 'bar_time' ? point.time : point.index;
|
|
638
|
+
return x ?? NaN;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
/**
|
|
642
|
+
* All live boxes, in creation order (PineScript `box.all`). A new array.
|
|
643
|
+
*/
|
|
644
|
+
export function all(): Box[] {
|
|
645
|
+
return allDrawings('box');
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Sets the left and top borders from a chart point (`point.index` or `point.time` by xloc, and `point.price`).
|
|
650
|
+
*/
|
|
651
|
+
export function set_top_left_point(id: Box, point: ChartPoint): Box {
|
|
652
|
+
if (isDeleted(id)) return id;
|
|
653
|
+
id.left = pointX(point, id.xloc);
|
|
654
|
+
id.top = point.price;
|
|
655
|
+
return id;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Sets the right and bottom borders from a chart point (`point.index` or `point.time` by xloc, and `point.price`).
|
|
660
|
+
*/
|
|
661
|
+
export function set_bottom_right_point(id: Box, point: ChartPoint): Box {
|
|
662
|
+
if (isDeleted(id)) return id;
|
|
663
|
+
id.right = pointX(point, id.xloc);
|
|
664
|
+
id.bottom = point.price;
|
|
665
|
+
return id;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Sets the text formatting: `text.format_none`, `text.format_bold`, `text.format_italic`,
|
|
670
|
+
* or `text.format_bold + text.format_italic`.
|
|
671
|
+
*/
|
|
672
|
+
export function set_text_formatting(id: Box, formatting: number): Box {
|
|
673
|
+
if (isDeleted(id)) return id;
|
|
674
|
+
id.text_formatting = formatting;
|
|
675
|
+
return id;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
// Alias to match PineScript API
|
|
679
|
+
export { new_box as new };
|
|
680
|
+
export { delete_box as delete };
|