@micheeeeel/yinyangapp 1.0.6 → 2.0.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/README.md +105 -0
- package/dist/bundle.js +2 -1
- package/dist/bundle.js.LICENSE.txt +1 -0
- package/dist/types/adapters/yinYangAdapter.d.ts +10 -0
- package/dist/types/animations/AnimationsMngr.d.ts +7 -19
- package/dist/types/api-film.d.ts +22 -0
- package/dist/types/api.d.ts +48 -0
- package/dist/types/benchmark/runner.d.ts +5 -0
- package/dist/types/benchmark/scenarios.d.ts +118 -0
- package/dist/types/components/action-image/ActionImageModal.d.ts +42 -0
- package/dist/types/components/controller/YinYangController.d.ts +946 -18
- package/dist/types/components/controller/action-stack/ActionStackController.d.ts +149 -0
- package/dist/types/components/controller/action-stack/ActionStackDragHandler.d.ts +111 -0
- package/dist/types/components/controller/action-stack/ActionStackManager.d.ts +118 -0
- package/dist/types/components/controller/action-stack/ActionStackState.d.ts +169 -0
- package/dist/types/components/controller/actions/ActionProjectionService.d.ts +73 -0
- package/dist/types/components/controller/actions/ChildActionMenuController.d.ts +83 -0
- package/dist/types/components/controller/actions/CoreEventMenuController.d.ts +90 -0
- package/dist/types/components/controller/actions/radialItemMenu.d.ts +117 -0
- package/dist/types/components/controller/children/ChildInteractionController.d.ts +38 -0
- package/dist/types/components/controller/children/ChildrenOrbitService.d.ts +14 -0
- package/dist/types/components/controller/force-field/EventFieldLifecycleController.d.ts +104 -0
- package/dist/types/components/controller/force-field/EventFieldRenderer.d.ts +86 -0
- package/dist/types/components/controller/force-field/ForceFieldComputationService.d.ts +50 -0
- package/dist/types/components/controller/force-field/ForceFieldDetailsPanel.d.ts +639 -0
- package/dist/types/components/controller/force-field/ForceFieldLifecycleController.d.ts +53 -0
- package/dist/types/components/controller/force-field/ForceFieldRenderer.d.ts +67 -0
- package/dist/types/components/controller/force-field/types.d.ts +42 -0
- package/dist/types/components/controller/labels/ChildScoresDeltaRenderer.d.ts +33 -0
- package/dist/types/components/controller/labels/ContextLabelsRenderer.d.ts +155 -0
- package/dist/types/components/controller/labels/WeightPreviewRingRenderer.d.ts +61 -0
- package/dist/types/components/controller/odd/ChildrenOrbitManager.d.ts +25 -0
- package/dist/types/components/controller/odd/OddViewManager.d.ts +44 -0
- package/dist/types/components/controller/search/SearchPanelSynchronizer.d.ts +125 -0
- package/dist/types/components/controller/settings/ControllerSettingsApplier.d.ts +50 -0
- package/dist/types/components/controller/state/BlockingAnimationTracker.d.ts +17 -0
- package/dist/types/components/controller/state/YinYangControllerState.d.ts +176 -0
- package/dist/types/components/controller/utils/actionStackMath.d.ts +13 -0
- package/dist/types/components/controller/utils/actionStackReorder.d.ts +7 -0
- package/dist/types/components/controller/utils/childrenOrbit.d.ts +18 -0
- package/dist/types/components/controller/utils/cuttingLabels.d.ts +9 -0
- package/dist/types/components/controller/utils/eventFieldStyle.d.ts +13 -0
- package/dist/types/components/controller/utils/eventFieldTargets.d.ts +47 -0
- package/dist/types/components/controller/utils/forceFieldMetadata.d.ts +4 -0
- package/dist/types/components/controller/utils/forceFieldPresentation.d.ts +9 -0
- package/dist/types/components/controller/utils/forceFieldStyle.d.ts +10 -0
- package/dist/types/components/controller/utils/labelGeometry.d.ts +5 -0
- package/dist/types/components/controller/utils/oddCutting.d.ts +2 -0
- package/dist/types/components/controller/utils/svgCoordinates.d.ts +9 -0
- package/dist/types/components/controller/utils/svgTransform.d.ts +5 -0
- package/dist/types/components/controller/utils/textLayout.d.ts +2 -0
- package/dist/types/components/controls/VizControlsPanel.d.ts +14 -0
- package/dist/types/components/factory/YinYangAppFactory.d.ts +4 -6
- package/dist/types/components/model/YinYangModel.d.ts +4 -30
- package/dist/types/components/panel/DiagramPanelBridge.d.ts +34 -0
- package/dist/types/components/panel/PanelManager.d.ts +150 -0
- package/dist/types/components/search/GlobalSearchController.d.ts +396 -0
- package/dist/types/components/stack-nav/StackNavOverlay.d.ts +82 -0
- package/dist/types/components/view/BorderDrawer.d.ts +203 -13
- package/dist/types/components/view/SpikeDrawer.d.ts +37 -31
- package/dist/types/components/view/ViewInitializer.d.ts +438 -2
- package/dist/types/components/view/YinYangDrawer.d.ts +414 -11
- package/dist/types/config/animationConfig.d.ts +37 -0
- package/dist/types/config/deltaColors.d.ts +64 -0
- package/dist/types/config/labelStyleConfig.d.ts +50 -0
- package/dist/types/data/OddCategoryColors.d.ts +12 -2
- package/dist/types/data/adverse-action-planner.d.ts +51 -0
- package/dist/types/data/adverse-action-planner.test.d.ts +1 -0
- package/dist/types/data/amplifier-engine.d.ts +107 -0
- package/dist/types/data/amplifier-engine.test.d.ts +1 -0
- package/dist/types/data/combo-engine.d.ts +94 -0
- package/dist/types/data/combo-engine.test.d.ts +1 -0
- package/dist/types/data/odd_generic_descriptions.d.ts +4 -0
- package/dist/types/data/odd_labels.d.ts +5 -0
- package/dist/types/data/yasuni_actions.d.ts +47 -0
- package/dist/types/data/yasuni_adverse_actions.d.ts +2 -0
- package/dist/types/data/yasuni_adverse_key_events.d.ts +2 -0
- package/dist/types/data/yasuni_cause.d.ts +33 -0
- package/dist/types/data/yasuni_graph.d.ts +22 -0
- package/dist/types/data/yasuni_key_events.d.ts +61 -0
- package/dist/types/data/yasuni_propagation_layers.d.ts +3 -0
- package/dist/types/interfaces/IActions.d.ts +1 -0
- package/dist/types/interfaces/ICauseGraph.d.ts +9 -0
- package/dist/types/interfaces/ICauseModel.d.ts +33 -0
- package/dist/types/interfaces/IGraphicsStrategy.d.ts +9 -5
- package/dist/types/interfaces/IPropagationLayers.d.ts +27 -0
- package/dist/types/interfaces/IViewData.d.ts +12 -0
- package/dist/types/interfaces/IYinYangAppFactory.d.ts +3 -3
- package/dist/types/interfaces/IYinYangController.d.ts +301 -6
- package/dist/types/interfaces/IYinYangGeometry.d.ts +43 -0
- package/dist/types/interfaces/IYinYangInternalModel.d.ts +34 -0
- package/dist/types/interfaces/IYinYangModel.d.ts +3 -11
- package/dist/types/main.d.ts +9 -0
- package/dist/types/utils/actionImages.d.ts +14 -0
- package/dist/types/utils/actionPropagation.d.ts +74 -0
- package/dist/types/utils/appMode.d.ts +5 -0
- package/dist/types/utils/causeGraph.d.ts +6 -0
- package/dist/types/utils/causeMetrics.d.ts +26 -0
- package/dist/types/utils/chainCardHeight.d.ts +27 -0
- package/dist/types/utils/d3/D3Element.d.ts +2 -2
- package/dist/types/utils/d3/D3GraphicsStrategy.d.ts +21 -4
- package/dist/types/utils/deltaChips.d.ts +15 -0
- package/dist/types/utils/deltaLabels.d.ts +54 -0
- package/dist/types/utils/facetteImages.d.ts +1 -0
- package/dist/types/utils/geometryUtils.d.ts +0 -1
- package/dist/types/utils/hierBadge.d.ts +44 -0
- package/dist/types/utils/idleSphereImage.d.ts +8 -0
- package/dist/types/utils/keyEventImages.d.ts +41 -0
- package/dist/types/utils/oddLegend.d.ts +30 -0
- package/dist/types/utils/positionalEfficiency.d.ts +16 -0
- package/dist/types/utils/yinYangWatermark.d.ts +29 -0
- package/package.json +27 -12
- package/dist/index.html +0 -1
- package/dist/types/data/coupe_rase_Orangs-outans/data_Kalimantan.d.ts +0 -3
- package/dist/types/data/coupe_rase_Orangs-outans/data_PT_Mayawana_Persada.d.ts +0 -3
- package/dist/types/data/data_institu_bancaire.d.ts +0 -3
- package/dist/types/interfaces/IOddItem.d.ts +0 -6
- package/dist/types/script.d.ts +0 -13
|
@@ -1,21 +1,53 @@
|
|
|
1
|
+
import { IGraphicElement } from "../../interfaces/IGraphicElement";
|
|
1
2
|
import { ViewInitializer } from "./ViewInitializer";
|
|
2
3
|
export declare class BorderDrawer {
|
|
3
4
|
private ViewInitializer;
|
|
5
|
+
private readonly debugTag;
|
|
4
6
|
private viewData;
|
|
5
7
|
private yinYangGroup;
|
|
8
|
+
private borderArcsGroup;
|
|
9
|
+
private facetteImageBackgroundGroup;
|
|
6
10
|
private graphicStrategy;
|
|
7
|
-
private
|
|
8
|
-
private positionY;
|
|
9
|
-
private innerRadius;
|
|
10
|
-
private outerRadius;
|
|
11
|
-
private borderThickness;
|
|
12
|
-
private categories;
|
|
13
|
-
private isChild;
|
|
11
|
+
private geometry;
|
|
14
12
|
private containerId;
|
|
15
13
|
private key;
|
|
14
|
+
private borderSegmentElements;
|
|
15
|
+
private lastActiveIndex;
|
|
16
|
+
private currentBeaconIndex;
|
|
17
|
+
private persistentSourceIndex;
|
|
18
|
+
private beaconPulseActive;
|
|
19
|
+
private arcsInitialized;
|
|
20
|
+
private facetteImageRingGroup;
|
|
21
|
+
private readonly facetteImageElements;
|
|
22
|
+
private readonly facetteImagePositions;
|
|
23
|
+
private revealedFacetteImageIndex;
|
|
24
|
+
/** Default "voile terne" filter applied to every facette image — lifted
|
|
25
|
+
* (see revealFacetteImage) only for the facette the outer spark is
|
|
26
|
+
* currently sweeping over. */
|
|
27
|
+
private readonly facetteImageVeilFilter;
|
|
28
|
+
private _hoverSegmentIndex;
|
|
29
|
+
/** Segment currently under the mouse pointer, tracked separately from
|
|
30
|
+
* _hoverSegmentIndex (which comes from the Recherche tree) so neither
|
|
31
|
+
* source clears the other's lift. */
|
|
32
|
+
private _pointerHoverIndex;
|
|
33
|
+
/** Callback déclenché quand la souris entre/sort d'un arc de bordure. */
|
|
34
|
+
private _onBorderHoverCb;
|
|
35
|
+
setOnBorderHover(cb: (index: number | null) => void): void;
|
|
36
|
+
private readonly segmentOutlineWidth;
|
|
37
|
+
/** Single def shared by every segment's bevel overlay — see
|
|
38
|
+
* createSegmentBevelGradient. */
|
|
39
|
+
private readonly bevelGradientId;
|
|
40
|
+
private readonly activeOutlineWidth;
|
|
41
|
+
private readonly inactiveOutlineColor;
|
|
42
|
+
private readonly activeOutlineColor;
|
|
43
|
+
private readonly sourceBeaconColor;
|
|
44
|
+
private borderGhostGroupNode;
|
|
45
|
+
private borderGhostEntries;
|
|
46
|
+
private borderGhostFrameId;
|
|
16
47
|
constructor(ViewInitializer: ViewInitializer);
|
|
17
48
|
/**
|
|
18
49
|
* Initializes the properties needed for drawing borders based on the ViewInitializer data.
|
|
50
|
+
* Uses borderArcsGroup for the persistent per-component border arcs.
|
|
19
51
|
*/
|
|
20
52
|
initialize(): void;
|
|
21
53
|
/**
|
|
@@ -25,18 +57,176 @@ export declare class BorderDrawer {
|
|
|
25
57
|
createBorders(): void;
|
|
26
58
|
/**
|
|
27
59
|
* Draws an individual border around the Yin Yang pattern using a gradient or mask.
|
|
60
|
+
* For the main pattern, the border is rendered as transparent with only the black gradient relief.
|
|
28
61
|
*
|
|
29
62
|
* @param innerRadius - The inner radius of the border.
|
|
30
63
|
* @param outerRadius - The outer radius of the border.
|
|
31
64
|
* @param index - Index of the border, used for generating unique identifiers.
|
|
32
65
|
*/
|
|
33
|
-
drawBorder(innerRadius: number, outerRadius: number,
|
|
66
|
+
drawBorder(innerRadius: number, outerRadius: number, _index?: number, container?: IGraphicElement): void;
|
|
34
67
|
/**
|
|
35
|
-
* Creates
|
|
68
|
+
* Creates border segment elements once in borderArcsGroup.
|
|
69
|
+
* These elements persist across redraws (never destroyed) and event listeners stay intact.
|
|
70
|
+
* Only called once via the arcsInitialized flag.
|
|
71
|
+
*/
|
|
72
|
+
private createBorderSegmentElements;
|
|
73
|
+
/** Corner rounding applied to every segment arc, derived from the live
|
|
74
|
+
* `borderSegmentCornerRadius` control: 0 keeps the raw pie-slice corners,
|
|
75
|
+
* 1 turns each arc into a capsule (radius = half the band thickness). */
|
|
76
|
+
private getSegmentCornerRadius;
|
|
77
|
+
/** Shared bevel gradient for every segment: a radial gradient centred on the
|
|
78
|
+
* sphere, in user space, so a single def shades all arcs identically
|
|
79
|
+
* whatever their angle — dark at the inner edge, neutral in the middle,
|
|
80
|
+
* lit crest at the resting outer edge. Its outer extent covers the fully
|
|
81
|
+
* expanded radius an active arc reaches, and fades back to transparent
|
|
82
|
+
* past the resting rim, so a growing arc looks like it swells out from
|
|
83
|
+
* under the glass rather than dragging a flat white slab with it. */
|
|
84
|
+
private createSegmentBevelGradient;
|
|
85
|
+
/** Extra outer radius an active segment may grow by. Shared by the width
|
|
86
|
+
* animation and the bevel gradient so both agree on where the resting rim
|
|
87
|
+
* sits inside the gradient. */
|
|
88
|
+
private getMaxOuterRadiusIncrease;
|
|
89
|
+
/** Applies the radial hover lift to every segment: an arc pointed at by the
|
|
90
|
+
* cursor — or highlighted from the Recherche tree via setHoverSegment —
|
|
91
|
+
* slides outward along its own mid-angle, which is the physical "this is a
|
|
92
|
+
* button" affordance the flat ring was missing. Driven off the whole hover
|
|
93
|
+
* state rather than a single index so the two sources can't cancel each
|
|
94
|
+
* other out. */
|
|
95
|
+
private refreshSegmentLifts;
|
|
96
|
+
/**
|
|
97
|
+
* Draws the border-ring ghost overlay from ViewInitializer.borderSegmentsGhost:
|
|
98
|
+
* a dashed gold arc at each facette's projected boundary (filled wash if
|
|
99
|
+
* the facette grows, outline only if it shrinks — same asymmetry as
|
|
100
|
+
* WeightPreviewRingRenderer), plus a traveling wave arc sweeping between
|
|
101
|
+
* the real and projected boundary. Because buildGhostBorderSegments
|
|
102
|
+
* renormalizes the whole ring, every facette is redrawn here, not just the
|
|
103
|
+
* one whose own weightDelta actually changed. No-op on children — border
|
|
104
|
+
* segments (and their ghosts) only exist on the parent sphere.
|
|
105
|
+
*/
|
|
106
|
+
drawBorderSegmentGhosts(): void;
|
|
107
|
+
private getBorderGhostRadii;
|
|
108
|
+
private drawBorderGhostArcs;
|
|
109
|
+
private ensureBorderGhostLoop;
|
|
110
|
+
private stopBorderGhostLoop;
|
|
111
|
+
/** Traveling wave that sweeps each boundary angle between its real
|
|
112
|
+
* position and its projected ghost position, on the same lap
|
|
113
|
+
* duration/easing as the yin/yang tension ghost's wave (see
|
|
114
|
+
* YinYangDrawer.updateGhostWaveAnimation and
|
|
115
|
+
* ViewInitializer.waveTravelDurationSec). Boundaries are shared between
|
|
116
|
+
* adjacent facette segments (segment[i].endAngle === segment[i+1].startAngle
|
|
117
|
+
* in both the base and ghost sets), so interpolating every segment with
|
|
118
|
+
* the same phase keeps the ring visually contiguous throughout. */
|
|
119
|
+
private updateBorderGhostWave;
|
|
120
|
+
/**
|
|
121
|
+
* Handles a click on a composante's border arc segment (or its image
|
|
122
|
+
* thumbnail — see createFacetteImageRing): toggles satellite visibility if
|
|
123
|
+
* it's already the current segment, otherwise switches the diagram to it.
|
|
124
|
+
*/
|
|
125
|
+
handleSegmentClick(segmentIndex: number, category: string): void;
|
|
126
|
+
/**
|
|
127
|
+
* Creates one clickable circular thumbnail per composante, positioned along
|
|
128
|
+
* the radial axis of its border-arc segment, just outside the ring. Created
|
|
129
|
+
* once (persists across redraws, like the border segments themselves) —
|
|
130
|
+
* it lives in borderArcsGroup so it scales along with the rest of the
|
|
131
|
+
* pattern when resizeWholePattern() shrinks the diagram for satellites.
|
|
36
132
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
133
|
+
* Sized to fill whatever room is actually left between the ring and the
|
|
134
|
+
* container edge: resizeWholePattern() (applyChildrenFitScale, reserving
|
|
135
|
+
* room for satellites) has already run by the time this is called — see
|
|
136
|
+
* YinYangController.createFacetteImageRing() — so patternScale reflects the
|
|
137
|
+
* real shrink. Everything here is expressed in the pre-scale coordinate
|
|
138
|
+
* space (like the rest of borderArcsGroup), so the "available" reach up to
|
|
139
|
+
* the container edge in that space is containerRadius / patternScale.
|
|
140
|
+
*/
|
|
141
|
+
createFacetteImageRing(): void;
|
|
142
|
+
/** Tears down and recreates the facette image ring so live-tuned parameters
|
|
143
|
+
* (margin, fade start/opacity — see the "Images facette" dev controls) take
|
|
144
|
+
* effect immediately. */
|
|
145
|
+
rebuildFacetteImageRing(): void;
|
|
146
|
+
/** Lifts the "voile terne" on one facette's image, veiling every other one
|
|
147
|
+
* — only one can be unveiled at a time. Driven by the outer spark
|
|
148
|
+
* sweeping across border arcs. Veils *all* others rather than just the
|
|
149
|
+
* previously-tracked index, so this also correctly restores the
|
|
150
|
+
* single-spotlight invariant the first time it's called after Idle
|
|
151
|
+
* (where every image starts unveiled, not just one). */
|
|
152
|
+
revealFacetteImage(segmentIndex: number): void;
|
|
153
|
+
/** Center + radius (pre-scale coordinate space) of a facette's image
|
|
154
|
+
* thumbnail, so labels can be anchored onto the image instead of
|
|
155
|
+
* floating radially around the sphere. */
|
|
156
|
+
getFacetteImagePosition(segmentIndex: number): {
|
|
157
|
+
x: number;
|
|
158
|
+
y: number;
|
|
159
|
+
radius: number;
|
|
160
|
+
} | undefined;
|
|
161
|
+
private getSegmentMidAngle;
|
|
162
|
+
private getPointOnAngle;
|
|
163
|
+
/**
|
|
164
|
+
* Immediately activates the gold outline + width-expansion style on the given
|
|
165
|
+
* segment index, mirroring what happens on a manual arc click.
|
|
166
|
+
* Call this whenever a component switch is triggered programmatically
|
|
167
|
+
* (e.g. from the action stack) so the border stays in sync from the very
|
|
168
|
+
* start of the transition animation.
|
|
169
|
+
*/
|
|
170
|
+
activateSegment(segmentIndex: number): void;
|
|
171
|
+
/** Resets all arc segments to inactive style (e.g. when satellites are
|
|
172
|
+
* folded) and returns to Idle: every facette image goes back to full
|
|
173
|
+
* color, exactly like a fresh load. */
|
|
174
|
+
deactivateSegment(): void;
|
|
175
|
+
/** Restores every facette image to full color — the Idle visual, reached
|
|
176
|
+
* both at true init and whenever no facette is currently active (e.g.
|
|
177
|
+
* after deselecting one via deactivateSegment). */
|
|
178
|
+
revealAllFacetteImages(): void;
|
|
179
|
+
/**
|
|
180
|
+
* Highlights the source component border arc with a temporary beacon.
|
|
181
|
+
* Used during a component switch when the active action has no visible force field.
|
|
182
|
+
*/
|
|
183
|
+
flashSourceBeacon(segmentIndex: number): void;
|
|
184
|
+
/**
|
|
185
|
+
* Clears the persistent source highlight when the action context is removed.
|
|
186
|
+
*/
|
|
187
|
+
clearSourceBeacon(): void;
|
|
188
|
+
/**
|
|
189
|
+
* Applique un survol léger sur un segment de bordure (hover depuis l'arbre Recherche).
|
|
190
|
+
* N'affecte pas l'index actif — simple classe CSS ajoutée/retirée.
|
|
191
|
+
*/
|
|
192
|
+
setHoverSegment(segmentIndex: number | null): void;
|
|
193
|
+
/** Rebuilds every border segment so the live-tuned shape parameters (corner
|
|
194
|
+
* radius, bevel intensity) take effect immediately — the arcs themselves
|
|
195
|
+
* are otherwise built exactly once, at init. Mirrors
|
|
196
|
+
* rebuildFacetteImageRing. The active/beacon state is re-applied at the
|
|
197
|
+
* end so a rebuild is visually invisible apart from the tuned parameter. */
|
|
198
|
+
rebuildBorderSegments(): void;
|
|
199
|
+
/**
|
|
200
|
+
* Updates the style of border segments based on active index (lightweight, no redraw)
|
|
201
|
+
* Only updates if the active index has actually changed
|
|
202
|
+
*/
|
|
203
|
+
private updateBorderSegmentStyles;
|
|
204
|
+
private applySegmentStyle;
|
|
205
|
+
private getTotalBordersGroup;
|
|
206
|
+
/**
|
|
207
|
+
* Applies color animation to a segment's gradient, making it cycle through category colors
|
|
208
|
+
*/
|
|
209
|
+
private applySegmentColorAnimation;
|
|
210
|
+
/**
|
|
211
|
+
* Removes color animation from a segment's gradient
|
|
212
|
+
*/
|
|
213
|
+
private removeSegmentColorAnimation;
|
|
214
|
+
/**
|
|
215
|
+
* Applies an animation that only increases the segment outer radius.
|
|
216
|
+
* The inner radius remains unchanged.
|
|
217
|
+
*/
|
|
218
|
+
private applySegmentOuterWidthAnimation;
|
|
219
|
+
private startBeaconPulse;
|
|
220
|
+
private toRgba;
|
|
221
|
+
/**
|
|
222
|
+
* Builds the ODD gradient painted inside one facette's arc.
|
|
223
|
+
*
|
|
224
|
+
* The gradient axis is the chord running from the start of the arc to its
|
|
225
|
+
* end, taken at mid-thickness, in the arc's own (origin-centred) user space
|
|
226
|
+
* — so the ODDs are read *along the button*, first to last, wherever the
|
|
227
|
+
* facette sits on the ring. It used to be a bounding-box gradient running
|
|
228
|
+
* plain left-to-right, which happened to read correctly only for arcs near
|
|
229
|
+
* the top of the circle and ran across the arc for the ones on the sides.
|
|
40
230
|
*/
|
|
41
|
-
private
|
|
231
|
+
private createSegmentGradient;
|
|
42
232
|
}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { ICategory } from "../../interfaces/ICategory";
|
|
2
1
|
import { ViewInitializer } from "./ViewInitializer";
|
|
3
|
-
import { IYinOrYangPattern } from "../../interfaces/IYinOrYangPattern";
|
|
4
2
|
export declare class SpikeDrawer {
|
|
5
3
|
private ViewInitializer;
|
|
6
|
-
private
|
|
7
|
-
private isChild;
|
|
8
|
-
private yinOrYangGroup;
|
|
9
|
-
private sortedData;
|
|
10
|
-
private positionX;
|
|
11
|
-
private viewData;
|
|
4
|
+
private geometry;
|
|
12
5
|
private containerId;
|
|
13
6
|
private key;
|
|
14
7
|
private graphicStrategy;
|
|
8
|
+
spikesEnabled: boolean;
|
|
9
|
+
private spikeGhostEntries;
|
|
10
|
+
private spikeGhostFrameId;
|
|
15
11
|
constructor(ViewInitializer: ViewInitializer);
|
|
16
12
|
/**
|
|
17
13
|
* Initializes the necessary data for drawing spikes.
|
|
@@ -23,32 +19,42 @@ export declare class SpikeDrawer {
|
|
|
23
19
|
*/
|
|
24
20
|
createSpikes(): void;
|
|
25
21
|
/**
|
|
26
|
-
*
|
|
22
|
+
* Refreshes spikes: clears existing ones and redraws if enabled.
|
|
27
23
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
refreshSpikes(): void;
|
|
25
|
+
private clearSpikes;
|
|
26
|
+
private drawSpikes;
|
|
27
|
+
private drawSpike;
|
|
32
28
|
/**
|
|
33
|
-
* Draws
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
29
|
+
* Draws the weightDelta ghost overlay from ViewInitializer.spikesGhost on
|
|
30
|
+
* both yin and yang: a dashed gold line to each targeted spike's projected
|
|
31
|
+
* tip (same asymmetric dash as the border/ODD-arc ghosts, though a spike
|
|
32
|
+
* has no fill to speak of), plus a dot that travels between the real and
|
|
33
|
+
* projected tip. Unlike the arc ghosts, only spikes with an active
|
|
34
|
+
* weightDelta appear here — a spike's length never depends on its
|
|
35
|
+
* siblings. Called after every drawSpikes (so it always reflects the
|
|
36
|
+
* latest real spikes) and standalone from ViewInitializer.updateSpikeGhost
|
|
37
|
+
* for weight-only preview updates.
|
|
39
38
|
*/
|
|
40
|
-
|
|
39
|
+
drawSpikeGhosts(): void;
|
|
40
|
+
private drawSpikeGhostsForType;
|
|
41
|
+
private drawSpikeGhostLines;
|
|
42
|
+
private ensureSpikeGhostLoop;
|
|
43
|
+
private stopSpikeGhostLoop;
|
|
44
|
+
/** Dot that travels between a spike's real tip and its projected tip, on
|
|
45
|
+
* the same lap duration/easing as the border-segment and ODD-arc ghost
|
|
46
|
+
* waves (see ViewInitializer.waveTravelDurationSec) — the line-segment
|
|
47
|
+
* analog of their traveling arcs. Re-queries the layer node each frame
|
|
48
|
+
* instead of caching it, since a full redraw can replace it between
|
|
49
|
+
* frames. */
|
|
50
|
+
private updateSpikeGhostWave;
|
|
41
51
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* @param cat - The category of the data item.
|
|
46
|
-
* @param centerY - The Y coordinate of the center.
|
|
47
|
-
* @param smallRadius - The radius of the inner circle.
|
|
48
|
-
* @param radius - The radius of the outer circle.
|
|
49
|
-
* @param type - Whether the element is "yin" or "yang".
|
|
50
|
-
* @param startAngle - The starting angle of the spike.
|
|
51
|
-
* @param endAngle - The ending angle of the spike.
|
|
52
|
+
* Highlights the spikes (yin + yang) corresponding to a given ODD and cutting index
|
|
53
|
+
* with a glow effect similar to the active child style.
|
|
52
54
|
*/
|
|
53
|
-
|
|
55
|
+
highlightSpikeByCuttingIndex(oddId: string, cuttingIndex: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* Restores all spikes to their default appearance.
|
|
58
|
+
*/
|
|
59
|
+
unhighlightSpikes(): void;
|
|
54
60
|
}
|