@invinite-org/chartlang-adapter-kit 1.3.0 → 1.4.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.
Files changed (143) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +7 -0
  3. package/dist/canvas/index.d.ts +5 -0
  4. package/dist/canvas/index.d.ts.map +1 -0
  5. package/dist/canvas/index.js +5 -0
  6. package/dist/canvas/index.js.map +1 -0
  7. package/dist/canvas/mockContext.d.ts +168 -0
  8. package/dist/canvas/mockContext.d.ts.map +1 -0
  9. package/dist/canvas/mockContext.js +198 -0
  10. package/dist/canvas/mockContext.js.map +1 -0
  11. package/dist/canvas/paintPrimitive.d.ts +35 -0
  12. package/dist/canvas/paintPrimitive.d.ts.map +1 -0
  13. package/dist/canvas/paintPrimitive.js +171 -0
  14. package/dist/canvas/paintPrimitive.js.map +1 -0
  15. package/dist/canvas/renderCtx.d.ts +40 -0
  16. package/dist/canvas/renderCtx.d.ts.map +1 -0
  17. package/dist/canvas/renderCtx.js +4 -0
  18. package/dist/canvas/renderCtx.js.map +1 -0
  19. package/dist/geometry/_lib/arrowhead.d.ts +18 -0
  20. package/dist/geometry/_lib/arrowhead.d.ts.map +1 -0
  21. package/dist/geometry/_lib/arrowhead.js +38 -0
  22. package/dist/geometry/_lib/arrowhead.js.map +1 -0
  23. package/dist/geometry/_lib/bezier.d.ts +57 -0
  24. package/dist/geometry/_lib/bezier.d.ts.map +1 -0
  25. package/dist/geometry/_lib/bezier.js +84 -0
  26. package/dist/geometry/_lib/bezier.js.map +1 -0
  27. package/dist/geometry/_lib/chevron.d.ts +29 -0
  28. package/dist/geometry/_lib/chevron.d.ts.map +1 -0
  29. package/dist/geometry/_lib/chevron.js +37 -0
  30. package/dist/geometry/_lib/chevron.js.map +1 -0
  31. package/dist/geometry/_lib/dash.d.ts +30 -0
  32. package/dist/geometry/_lib/dash.d.ts.map +1 -0
  33. package/dist/geometry/_lib/dash.js +40 -0
  34. package/dist/geometry/_lib/dash.js.map +1 -0
  35. package/dist/geometry/_lib/fibLevels.d.ts +36 -0
  36. package/dist/geometry/_lib/fibLevels.d.ts.map +1 -0
  37. package/dist/geometry/_lib/fibLevels.js +44 -0
  38. package/dist/geometry/_lib/fibLevels.js.map +1 -0
  39. package/dist/geometry/_lib/gannLevels.d.ts +54 -0
  40. package/dist/geometry/_lib/gannLevels.d.ts.map +1 -0
  41. package/dist/geometry/_lib/gannLevels.js +88 -0
  42. package/dist/geometry/_lib/gannLevels.js.map +1 -0
  43. package/dist/geometry/_lib/lineExtend.d.ts +31 -0
  44. package/dist/geometry/_lib/lineExtend.d.ts.map +1 -0
  45. package/dist/geometry/_lib/lineExtend.js +48 -0
  46. package/dist/geometry/_lib/lineExtend.js.map +1 -0
  47. package/dist/geometry/_lib/namedPolyline.d.ts +25 -0
  48. package/dist/geometry/_lib/namedPolyline.d.ts.map +1 -0
  49. package/dist/geometry/_lib/namedPolyline.js +64 -0
  50. package/dist/geometry/_lib/namedPolyline.js.map +1 -0
  51. package/dist/geometry/_lib/pitchforkGeom.d.ts +46 -0
  52. package/dist/geometry/_lib/pitchforkGeom.d.ts.map +1 -0
  53. package/dist/geometry/_lib/pitchforkGeom.js +70 -0
  54. package/dist/geometry/_lib/pitchforkGeom.js.map +1 -0
  55. package/dist/geometry/_lib/shapeStyle.d.ts +21 -0
  56. package/dist/geometry/_lib/shapeStyle.d.ts.map +1 -0
  57. package/dist/geometry/_lib/shapeStyle.js +41 -0
  58. package/dist/geometry/_lib/shapeStyle.js.map +1 -0
  59. package/dist/geometry/_lib/strokeStyle.d.ts +34 -0
  60. package/dist/geometry/_lib/strokeStyle.d.ts.map +1 -0
  61. package/dist/geometry/_lib/strokeStyle.js +26 -0
  62. package/dist/geometry/_lib/strokeStyle.js.map +1 -0
  63. package/dist/geometry/_lib/textStyle.d.ts +70 -0
  64. package/dist/geometry/_lib/textStyle.d.ts.map +1 -0
  65. package/dist/geometry/_lib/textStyle.js +78 -0
  66. package/dist/geometry/_lib/textStyle.js.map +1 -0
  67. package/dist/geometry/decompose.d.ts +28 -0
  68. package/dist/geometry/decompose.d.ts.map +1 -0
  69. package/dist/geometry/decompose.js +176 -0
  70. package/dist/geometry/decompose.js.map +1 -0
  71. package/dist/geometry/index.d.ts +4 -0
  72. package/dist/geometry/index.d.ts.map +1 -0
  73. package/dist/geometry/index.js +5 -0
  74. package/dist/geometry/index.js.map +1 -0
  75. package/dist/geometry/kinds/annotations.d.ts +77 -0
  76. package/dist/geometry/kinds/annotations.d.ts.map +1 -0
  77. package/dist/geometry/kinds/annotations.js +219 -0
  78. package/dist/geometry/kinds/annotations.js.map +1 -0
  79. package/dist/geometry/kinds/boxes.d.ts +116 -0
  80. package/dist/geometry/kinds/boxes.d.ts.map +1 -0
  81. package/dist/geometry/kinds/boxes.js +285 -0
  82. package/dist/geometry/kinds/boxes.js.map +1 -0
  83. package/dist/geometry/kinds/channels.d.ts +72 -0
  84. package/dist/geometry/kinds/channels.d.ts.map +1 -0
  85. package/dist/geometry/kinds/channels.js +148 -0
  86. package/dist/geometry/kinds/channels.js.map +1 -0
  87. package/dist/geometry/kinds/containers.d.ts +54 -0
  88. package/dist/geometry/kinds/containers.d.ts.map +1 -0
  89. package/dist/geometry/kinds/containers.js +268 -0
  90. package/dist/geometry/kinds/containers.js.map +1 -0
  91. package/dist/geometry/kinds/curves.d.ts +53 -0
  92. package/dist/geometry/kinds/curves.d.ts.map +1 -0
  93. package/dist/geometry/kinds/curves.js +110 -0
  94. package/dist/geometry/kinds/curves.js.map +1 -0
  95. package/dist/geometry/kinds/cycles.d.ts +52 -0
  96. package/dist/geometry/kinds/cycles.d.ts.map +1 -0
  97. package/dist/geometry/kinds/cycles.js +158 -0
  98. package/dist/geometry/kinds/cycles.js.map +1 -0
  99. package/dist/geometry/kinds/elliott.d.ts +73 -0
  100. package/dist/geometry/kinds/elliott.d.ts.map +1 -0
  101. package/dist/geometry/kinds/elliott.js +116 -0
  102. package/dist/geometry/kinds/elliott.js.map +1 -0
  103. package/dist/geometry/kinds/fibonacci.d.ts +166 -0
  104. package/dist/geometry/kinds/fibonacci.d.ts.map +1 -0
  105. package/dist/geometry/kinds/fibonacci.js +458 -0
  106. package/dist/geometry/kinds/fibonacci.js.map +1 -0
  107. package/dist/geometry/kinds/freehand.d.ts +53 -0
  108. package/dist/geometry/kinds/freehand.d.ts.map +1 -0
  109. package/dist/geometry/kinds/freehand.js +115 -0
  110. package/dist/geometry/kinds/freehand.js.map +1 -0
  111. package/dist/geometry/kinds/gann.d.ts +63 -0
  112. package/dist/geometry/kinds/gann.d.ts.map +1 -0
  113. package/dist/geometry/kinds/gann.js +153 -0
  114. package/dist/geometry/kinds/gann.js.map +1 -0
  115. package/dist/geometry/kinds/lines.d.ts +90 -0
  116. package/dist/geometry/kinds/lines.d.ts.map +1 -0
  117. package/dist/geometry/kinds/lines.js +201 -0
  118. package/dist/geometry/kinds/lines.js.map +1 -0
  119. package/dist/geometry/kinds/marker.d.ts +21 -0
  120. package/dist/geometry/kinds/marker.d.ts.map +1 -0
  121. package/dist/geometry/kinds/marker.js +47 -0
  122. package/dist/geometry/kinds/marker.js.map +1 -0
  123. package/dist/geometry/kinds/patterns.d.ts +85 -0
  124. package/dist/geometry/kinds/patterns.d.ts.map +1 -0
  125. package/dist/geometry/kinds/patterns.js +133 -0
  126. package/dist/geometry/kinds/patterns.js.map +1 -0
  127. package/dist/geometry/kinds/pitchforks.d.ts +36 -0
  128. package/dist/geometry/kinds/pitchforks.d.ts.map +1 -0
  129. package/dist/geometry/kinds/pitchforks.js +109 -0
  130. package/dist/geometry/kinds/pitchforks.js.map +1 -0
  131. package/dist/geometry/project.d.ts +50 -0
  132. package/dist/geometry/project.d.ts.map +1 -0
  133. package/dist/geometry/project.js +62 -0
  134. package/dist/geometry/project.js.map +1 -0
  135. package/dist/geometry/types.d.ts +146 -0
  136. package/dist/geometry/types.d.ts.map +1 -0
  137. package/dist/geometry/types.js +4 -0
  138. package/dist/geometry/types.js.map +1 -0
  139. package/dist/index.d.ts +2 -0
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +1 -0
  142. package/dist/index.js.map +1 -1
  143. package/package.json +8 -1
@@ -0,0 +1,116 @@
1
+ // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
+ // See the LICENSE file in the repo root for full license text.
3
+ //
4
+ // Elliott-wave geometry moved from the canvas2d adapter's per-kind
5
+ // renderers
6
+ // examples/canvas2d-adapter/src/render/draw/{elliottImpulseWave,
7
+ // elliottCorrectionWave,elliottTriangleWave,elliottDoubleCombo,
8
+ // elliottTripleCombo}.ts.
9
+ // The originating math is invinite's elliott-wave tools (commit
10
+ // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite); re-licensed
11
+ // MIT for chartlang.
12
+ import { namedPolylinePrimitives } from "../_lib/namedPolyline.js";
13
+ import { worldPointToPixel } from "../project.js";
14
+ const ELLIOTT_DEFAULT_COLOR = "#14b8a6";
15
+ const IMPULSE_LABELS = ["1", "2", "3", "4", "5"];
16
+ const CORRECTION_LABELS = ["A", "B", "C"];
17
+ const TRIANGLE_LABELS = ["a", "b", "c", "d", "e"];
18
+ const DOUBLE_COMBO_LABELS = ["S", "W", "x1", "X", "x2", "Yi", "Y"];
19
+ const TRIPLE_COMBO_LABELS = ["S", "W", "X1", "Y", "X2", "Zi", "Z"];
20
+ /**
21
+ * Shared elliott-wave decomposer: project the anchors, choose
22
+ * `state.labels` when present and length-matching (else `defaults`), and
23
+ * emit a labelled open polyline. The teal default colour is applied
24
+ * unless `style.color` overrides it — mirroring the source's
25
+ * `{ color: "#14b8a6", ...state.style }` spread.
26
+ */
27
+ function decomposeElliott(points, labels, defaults, style) {
28
+ const resolved = labels !== undefined && labels.length === points.length ? labels : defaults;
29
+ return namedPolylinePrimitives(points, resolved, { color: ELLIOTT_DEFAULT_COLOR, ...style });
30
+ }
31
+ /**
32
+ * Decompose an `elliott-impulse-wave` drawing — a 4-leg labelled open
33
+ * polyline through the 5 anchors (1-2-3-4-5). `state.labels` overrides
34
+ * the default `["1","2","3","4","5"]` when present and length-matching.
35
+ *
36
+ * @since 1.3
37
+ * @stable
38
+ * @example
39
+ * declare const s: ElliottImpulseWaveState;
40
+ * declare const v: Viewport;
41
+ * const prims = decomposeElliottImpulseWave(s, v);
42
+ * void prims;
43
+ */
44
+ export function decomposeElliottImpulseWave(state, view) {
45
+ const points = state.anchors.map((p) => worldPointToPixel(p, view));
46
+ return decomposeElliott(points, state.labels, IMPULSE_LABELS, state.style);
47
+ }
48
+ /**
49
+ * Decompose an `elliott-correction-wave` drawing — a 2-leg labelled open
50
+ * polyline through the 3 anchors (A-B-C). `state.labels` overrides the
51
+ * default `["A","B","C"]` when present and length-matching.
52
+ *
53
+ * @since 1.3
54
+ * @stable
55
+ * @example
56
+ * declare const s: ElliottCorrectionWaveState;
57
+ * declare const v: Viewport;
58
+ * const prims = decomposeElliottCorrectionWave(s, v);
59
+ * void prims;
60
+ */
61
+ export function decomposeElliottCorrectionWave(state, view) {
62
+ const points = state.anchors.map((p) => worldPointToPixel(p, view));
63
+ return decomposeElliott(points, state.labels, CORRECTION_LABELS, state.style);
64
+ }
65
+ /**
66
+ * Decompose an `elliott-triangle-wave` drawing — a 4-leg labelled open
67
+ * polyline through the 5 anchors (a-b-c-d-e). `state.labels` overrides
68
+ * the default `["a","b","c","d","e"]` when present and length-matching.
69
+ *
70
+ * @since 1.3
71
+ * @stable
72
+ * @example
73
+ * declare const s: ElliottTriangleWaveState;
74
+ * declare const v: Viewport;
75
+ * const prims = decomposeElliottTriangleWave(s, v);
76
+ * void prims;
77
+ */
78
+ export function decomposeElliottTriangleWave(state, view) {
79
+ const points = state.anchors.map((p) => worldPointToPixel(p, view));
80
+ return decomposeElliott(points, state.labels, TRIANGLE_LABELS, state.style);
81
+ }
82
+ /**
83
+ * Decompose an `elliott-double-combo` drawing — a 6-leg labelled open
84
+ * polyline through the 7 anchors. `state.labels` overrides the default
85
+ * `["S","W","x1","X","x2","Yi","Y"]` when present and length-matching.
86
+ *
87
+ * @since 1.3
88
+ * @stable
89
+ * @example
90
+ * declare const s: ElliottDoubleComboState;
91
+ * declare const v: Viewport;
92
+ * const prims = decomposeElliottDoubleCombo(s, v);
93
+ * void prims;
94
+ */
95
+ export function decomposeElliottDoubleCombo(state, view) {
96
+ const points = state.anchors.map((p) => worldPointToPixel(p, view));
97
+ return decomposeElliott(points, state.labels, DOUBLE_COMBO_LABELS, state.style);
98
+ }
99
+ /**
100
+ * Decompose an `elliott-triple-combo` drawing — a 6-leg labelled open
101
+ * polyline through the 7 anchors. `state.labels` overrides the default
102
+ * `["S","W","X1","Y","X2","Zi","Z"]` when present and length-matching.
103
+ *
104
+ * @since 1.3
105
+ * @stable
106
+ * @example
107
+ * declare const s: ElliottTripleComboState;
108
+ * declare const v: Viewport;
109
+ * const prims = decomposeElliottTripleCombo(s, v);
110
+ * void prims;
111
+ */
112
+ export function decomposeElliottTripleCombo(state, view) {
113
+ const points = state.anchors.map((p) => worldPointToPixel(p, view));
114
+ return decomposeElliott(points, state.labels, TRIPLE_COMBO_LABELS, state.style);
115
+ }
116
+ //# sourceMappingURL=elliott.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elliott.js","sourceRoot":"","sources":["../../../src/geometry/kinds/elliott.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Elliott-wave geometry moved from the canvas2d adapter's per-kind\n// renderers\n// examples/canvas2d-adapter/src/render/draw/{elliottImpulseWave,\n// elliottCorrectionWave,elliottTriangleWave,elliottDoubleCombo,\n// elliottTripleCombo}.ts.\n// The originating math is invinite's elliott-wave tools (commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite); re-licensed\n// MIT for chartlang.\n\nimport type {\n ElliottCorrectionWaveState,\n ElliottDoubleComboState,\n ElliottImpulseWaveState,\n ElliottTriangleWaveState,\n ElliottTripleComboState,\n LineDrawStyle,\n} from \"@invinite-org/chartlang-core\";\n\nimport { namedPolylinePrimitives } from \"../_lib/namedPolyline.js\";\nimport { worldPointToPixel } from \"../project.js\";\nimport type { DrawPrimitive, Point2, Viewport } from \"../types.js\";\n\nconst ELLIOTT_DEFAULT_COLOR = \"#14b8a6\";\n\nconst IMPULSE_LABELS: ReadonlyArray<string> = [\"1\", \"2\", \"3\", \"4\", \"5\"];\nconst CORRECTION_LABELS: ReadonlyArray<string> = [\"A\", \"B\", \"C\"];\nconst TRIANGLE_LABELS: ReadonlyArray<string> = [\"a\", \"b\", \"c\", \"d\", \"e\"];\nconst DOUBLE_COMBO_LABELS: ReadonlyArray<string> = [\"S\", \"W\", \"x1\", \"X\", \"x2\", \"Yi\", \"Y\"];\nconst TRIPLE_COMBO_LABELS: ReadonlyArray<string> = [\"S\", \"W\", \"X1\", \"Y\", \"X2\", \"Zi\", \"Z\"];\n\n/**\n * Shared elliott-wave decomposer: project the anchors, choose\n * `state.labels` when present and length-matching (else `defaults`), and\n * emit a labelled open polyline. The teal default colour is applied\n * unless `style.color` overrides it — mirroring the source's\n * `{ color: \"#14b8a6\", ...state.style }` spread.\n */\nfunction decomposeElliott(\n points: ReadonlyArray<Point2>,\n labels: ReadonlyArray<string> | undefined,\n defaults: ReadonlyArray<string>,\n style: LineDrawStyle,\n): ReadonlyArray<DrawPrimitive> {\n const resolved = labels !== undefined && labels.length === points.length ? labels : defaults;\n return namedPolylinePrimitives(points, resolved, { color: ELLIOTT_DEFAULT_COLOR, ...style });\n}\n\n/**\n * Decompose an `elliott-impulse-wave` drawing — a 4-leg labelled open\n * polyline through the 5 anchors (1-2-3-4-5). `state.labels` overrides\n * the default `[\"1\",\"2\",\"3\",\"4\",\"5\"]` when present and length-matching.\n *\n * @since 1.3\n * @stable\n * @example\n * declare const s: ElliottImpulseWaveState;\n * declare const v: Viewport;\n * const prims = decomposeElliottImpulseWave(s, v);\n * void prims;\n */\nexport function decomposeElliottImpulseWave(\n state: ElliottImpulseWaveState,\n view: Viewport,\n): ReadonlyArray<DrawPrimitive> {\n const points = state.anchors.map((p) => worldPointToPixel(p, view));\n return decomposeElliott(points, state.labels, IMPULSE_LABELS, state.style);\n}\n\n/**\n * Decompose an `elliott-correction-wave` drawing — a 2-leg labelled open\n * polyline through the 3 anchors (A-B-C). `state.labels` overrides the\n * default `[\"A\",\"B\",\"C\"]` when present and length-matching.\n *\n * @since 1.3\n * @stable\n * @example\n * declare const s: ElliottCorrectionWaveState;\n * declare const v: Viewport;\n * const prims = decomposeElliottCorrectionWave(s, v);\n * void prims;\n */\nexport function decomposeElliottCorrectionWave(\n state: ElliottCorrectionWaveState,\n view: Viewport,\n): ReadonlyArray<DrawPrimitive> {\n const points = state.anchors.map((p) => worldPointToPixel(p, view));\n return decomposeElliott(points, state.labels, CORRECTION_LABELS, state.style);\n}\n\n/**\n * Decompose an `elliott-triangle-wave` drawing — a 4-leg labelled open\n * polyline through the 5 anchors (a-b-c-d-e). `state.labels` overrides\n * the default `[\"a\",\"b\",\"c\",\"d\",\"e\"]` when present and length-matching.\n *\n * @since 1.3\n * @stable\n * @example\n * declare const s: ElliottTriangleWaveState;\n * declare const v: Viewport;\n * const prims = decomposeElliottTriangleWave(s, v);\n * void prims;\n */\nexport function decomposeElliottTriangleWave(\n state: ElliottTriangleWaveState,\n view: Viewport,\n): ReadonlyArray<DrawPrimitive> {\n const points = state.anchors.map((p) => worldPointToPixel(p, view));\n return decomposeElliott(points, state.labels, TRIANGLE_LABELS, state.style);\n}\n\n/**\n * Decompose an `elliott-double-combo` drawing — a 6-leg labelled open\n * polyline through the 7 anchors. `state.labels` overrides the default\n * `[\"S\",\"W\",\"x1\",\"X\",\"x2\",\"Yi\",\"Y\"]` when present and length-matching.\n *\n * @since 1.3\n * @stable\n * @example\n * declare const s: ElliottDoubleComboState;\n * declare const v: Viewport;\n * const prims = decomposeElliottDoubleCombo(s, v);\n * void prims;\n */\nexport function decomposeElliottDoubleCombo(\n state: ElliottDoubleComboState,\n view: Viewport,\n): ReadonlyArray<DrawPrimitive> {\n const points = state.anchors.map((p) => worldPointToPixel(p, view));\n return decomposeElliott(points, state.labels, DOUBLE_COMBO_LABELS, state.style);\n}\n\n/**\n * Decompose an `elliott-triple-combo` drawing — a 6-leg labelled open\n * polyline through the 7 anchors. `state.labels` overrides the default\n * `[\"S\",\"W\",\"X1\",\"Y\",\"X2\",\"Zi\",\"Z\"]` when present and length-matching.\n *\n * @since 1.3\n * @stable\n * @example\n * declare const s: ElliottTripleComboState;\n * declare const v: Viewport;\n * const prims = decomposeElliottTripleCombo(s, v);\n * void prims;\n */\nexport function decomposeElliottTripleCombo(\n state: ElliottTripleComboState,\n view: Viewport,\n): ReadonlyArray<DrawPrimitive> {\n const points = state.anchors.map((p) => worldPointToPixel(p, view));\n return decomposeElliott(points, state.labels, TRIPLE_COMBO_LABELS, state.style);\n}\n"]}
@@ -0,0 +1,166 @@
1
+ import type { FibChannelState, FibCirclesState, FibRetracementState, FibSpeedArcsState, FibSpeedFanState, FibSpiralState, FibTimeZoneState, FibTrendExtensionState, FibTrendTimeState, FibWedgeState } from "@invinite-org/chartlang-core";
2
+ import type { DrawPrimitive, Viewport } from "../types.js";
3
+ /**
4
+ * Decompose a `fib-retracement` drawing — one horizontal level line per
5
+ * Fibonacci ratio between `anchors[0].price` and `anchors[1].price`,
6
+ * each honouring `style.extendLeft` / `style.extendRight` via
7
+ * {@link extendLineSegment}. `style.levels` overrides {@link FIB_LEVELS};
8
+ * `style.showLabels === true` appends a right-edge `formatLevel` label
9
+ * per rail.
10
+ *
11
+ * @since 1.3
12
+ * @stable
13
+ * @example
14
+ * declare const s: FibRetracementState;
15
+ * declare const v: Viewport;
16
+ * const prims = decomposeFibRetracement(s, v);
17
+ * void prims;
18
+ */
19
+ export declare function decomposeFibRetracement(state: FibRetracementState, view: Viewport): ReadonlyArray<DrawPrimitive>;
20
+ /**
21
+ * Decompose a `fib-trend-extension` drawing — projects fib-ratio
22
+ * extensions from `anchors[2].price` using the A→B leg's price delta
23
+ * (`anchors[1].price − anchors[0].price`). Each projected price is one
24
+ * horizontal line from `timeToX(anchors[2].time)` rightward to the
25
+ * viewport edge. `style.levels` overrides {@link FIB_LEVELS};
26
+ * `showLabels` appends a label past the right edge.
27
+ *
28
+ * @since 1.3
29
+ * @stable
30
+ * @example
31
+ * declare const s: FibTrendExtensionState;
32
+ * declare const v: Viewport;
33
+ * const prims = decomposeFibTrendExtension(s, v);
34
+ * void prims;
35
+ */
36
+ export declare function decomposeFibTrendExtension(state: FibTrendExtensionState, view: Viewport): ReadonlyArray<DrawPrimitive>;
37
+ /**
38
+ * Decompose a `fib-channel` drawing — one parallel rail per Fibonacci
39
+ * ratio: each rail translates the primary `(anchors[0], anchors[1])`
40
+ * line by `level · (anchors[2].y − anchors[0].y)` in pixel space.
41
+ * `style.levels` overrides {@link FIB_LEVELS}; `showLabels` appends a
42
+ * label at the rail's right endpoint.
43
+ *
44
+ * @since 1.3
45
+ * @stable
46
+ * @example
47
+ * declare const s: FibChannelState;
48
+ * declare const v: Viewport;
49
+ * const prims = decomposeFibChannel(s, v);
50
+ * void prims;
51
+ */
52
+ export declare function decomposeFibChannel(state: FibChannelState, view: Viewport): ReadonlyArray<DrawPrimitive>;
53
+ /**
54
+ * Decompose a `fib-time-zone` drawing — vertical lines at fib-ratio
55
+ * spaced times `anchors[0].time + level · (anchors[1].time −
56
+ * anchors[0].time)`, each spanning the full viewport height.
57
+ * `style.levels` overrides {@link FIB_LEVELS}; `showLabels` appends a
58
+ * top-anchored label.
59
+ *
60
+ * @since 1.3
61
+ * @stable
62
+ * @example
63
+ * declare const s: FibTimeZoneState;
64
+ * declare const v: Viewport;
65
+ * const prims = decomposeFibTimeZone(s, v);
66
+ * void prims;
67
+ */
68
+ export declare function decomposeFibTimeZone(state: FibTimeZoneState, view: Viewport): ReadonlyArray<DrawPrimitive>;
69
+ /**
70
+ * Decompose a `fib-trend-time` drawing — vertical lines at fib-spaced
71
+ * times anchored at `anchors[2]`: `t = C.time + level · (B.time −
72
+ * A.time)`. Mirrors `fib-time-zone` but uses the A→B leg as the
73
+ * time-delta unit projected from C. `showLabels` appends a top label.
74
+ *
75
+ * @since 1.3
76
+ * @stable
77
+ * @example
78
+ * declare const s: FibTrendTimeState;
79
+ * declare const v: Viewport;
80
+ * const prims = decomposeFibTrendTime(s, v);
81
+ * void prims;
82
+ */
83
+ export declare function decomposeFibTrendTime(state: FibTrendTimeState, view: Viewport): ReadonlyArray<DrawPrimitive>;
84
+ /**
85
+ * Decompose a `fib-wedge` drawing — a fan of rays from `anchors[0]` (the
86
+ * pivot) at fib-ratio-interpolated angles between the pivot→`anchors[1]`
87
+ * and pivot→`anchors[2]` direction vectors. Ray length is
88
+ * `max(pxWidth, pxHeight) · 2` so strokes always exit the viewport; a
89
+ * degenerate (zero-magnitude) direction skips that level. `showLabels`
90
+ * appends a label a quarter of the way along each ray.
91
+ *
92
+ * @since 1.3
93
+ * @stable
94
+ * @example
95
+ * declare const s: FibWedgeState;
96
+ * declare const v: Viewport;
97
+ * const prims = decomposeFibWedge(s, v);
98
+ * void prims;
99
+ */
100
+ export declare function decomposeFibWedge(state: FibWedgeState, view: Viewport): ReadonlyArray<DrawPrimitive>;
101
+ /**
102
+ * Decompose a `fib-speed-fan` drawing — a fan of rays from `anchors[0]`.
103
+ * Each ray scales the A→B y-delta by a fib ratio while keeping the
104
+ * x-delta constant. Ray length is `max(pxWidth, pxHeight) · 2`; a
105
+ * degenerate direction skips that level. `showLabels` appends a label a
106
+ * quarter of the way along each ray.
107
+ *
108
+ * @since 1.3
109
+ * @stable
110
+ * @example
111
+ * declare const s: FibSpeedFanState;
112
+ * declare const v: Viewport;
113
+ * const prims = decomposeFibSpeedFan(s, v);
114
+ * void prims;
115
+ */
116
+ export declare function decomposeFibSpeedFan(state: FibSpeedFanState, view: Viewport): ReadonlyArray<DrawPrimitive>;
117
+ /**
118
+ * Decompose a `fib-speed-arcs` drawing — concentric full circles centred
119
+ * at `anchors[0]` with radii `level · R₀`, `R₀ = |anchors[1] −
120
+ * anchors[0]|` in pixel space. Always-full-circle (half-disk variant
121
+ * deferred). `showLabels` appends a label to the right of each arc.
122
+ *
123
+ * @since 1.3
124
+ * @stable
125
+ * @example
126
+ * declare const s: FibSpeedArcsState;
127
+ * declare const v: Viewport;
128
+ * const prims = decomposeFibSpeedArcs(s, v);
129
+ * void prims;
130
+ */
131
+ export declare function decomposeFibSpeedArcs(state: FibSpeedArcsState, view: Viewport): ReadonlyArray<DrawPrimitive>;
132
+ /**
133
+ * Decompose a `fib-circles` drawing — concentric full circles centred at
134
+ * `anchors[0]` with radii `level · R₀`, `R₀ = |anchors[1] − anchors[0]|`
135
+ * (the radius-point distance) in pixel space. Uses fib ratios (not the
136
+ * integer Fibonacci sequence). `showLabels` appends a label to the right
137
+ * of each circle.
138
+ *
139
+ * @since 1.3
140
+ * @stable
141
+ * @example
142
+ * declare const s: FibCirclesState;
143
+ * declare const v: Viewport;
144
+ * const prims = decomposeFibCircles(s, v);
145
+ * void prims;
146
+ */
147
+ export declare function decomposeFibCircles(state: FibCirclesState, view: Viewport): ReadonlyArray<DrawPrimitive>;
148
+ /**
149
+ * Decompose a `fib-spiral` drawing — a chained cubic-Bezier
150
+ * approximation of a golden spiral as one open polyline. Each
151
+ * quarter-turn is one cubic Bezier with the classical `k ≈ 0.5523` arc
152
+ * factor; the radius shrinks by `1/φ` per quarter. Centre =
153
+ * `anchors[0]`; initial radius `|anchors[1] − anchors[0]|` in pixel
154
+ * space. A zero initial radius returns `[]` (matching the source's
155
+ * `if (r === 0) return`).
156
+ *
157
+ * @since 1.3
158
+ * @stable
159
+ * @example
160
+ * declare const s: FibSpiralState;
161
+ * declare const v: Viewport;
162
+ * const prims = decomposeFibSpiral(s, v);
163
+ * void prims;
164
+ */
165
+ export declare function decomposeFibSpiral(state: FibSpiralState, view: Viewport): ReadonlyArray<DrawPrimitive>;
166
+ //# sourceMappingURL=fibonacci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibonacci.d.ts","sourceRoot":"","sources":["../../../src/geometry/kinds/fibonacci.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EAChB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,KAAK,EAAE,aAAa,EAAU,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0BnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CA+B9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACtC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAyB9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CA0B9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAwB9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAwB9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAsC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAkC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAO9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAO9B;AAoDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,QAAQ,GACf,aAAa,CAAC,aAAa,CAAC,CAiC9B"}