@micheeeeel/yinyangapp 3.0.0 → 3.1.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/dist/bundle.css +1 -0
- package/dist/bundle.js +1 -2
- package/dist/types/adapters/yasuniCauseAdapter.d.ts +3 -0
- package/dist/types/adapters/yinYangAdapter.d.ts +7 -0
- package/dist/types/animations/AnimationsMngr.d.ts +69 -15
- package/dist/types/animations/FrameScheduler.d.ts +99 -0
- package/dist/types/animations/rotationMotion.d.ts +43 -0
- package/dist/types/api.d.ts +17 -2
- package/dist/types/benchmark/runner.d.ts +20 -0
- package/dist/types/benchmark/scenarios.d.ts +55 -6
- package/dist/types/components/controller/YinYangController.d.ts +104 -14
- package/dist/types/components/controller/action-stack/ActionStackController.d.ts +16 -1
- package/dist/types/components/controller/action-stack/ActionStackDragHandler.d.ts +4 -0
- package/dist/types/components/controller/action-stack/ActionStackManager.d.ts +13 -2
- package/dist/types/components/controller/action-stack/ActionStackState.d.ts +8 -5
- package/dist/types/components/controller/action-stack/StackFocusController.d.ts +8 -7
- package/dist/types/components/controller/action-stack/stackChromePalette.d.ts +20 -0
- package/dist/types/components/controller/actions/ActionProjectionService.d.ts +16 -1
- package/dist/types/components/controller/actions/ChildActionMenuController.d.ts +74 -32
- package/dist/types/components/controller/actions/KeyEventController.d.ts +78 -70
- package/dist/types/components/controller/actions/{CoreEventMenuController.d.ts → KeyEventMenuController.d.ts} +28 -33
- package/dist/types/components/controller/actions/radialItemMenu.d.ts +43 -5
- package/dist/types/components/controller/children/ChildInteractionController.d.ts +4 -0
- package/dist/types/components/controller/children/ChildrenBuilder.d.ts +3 -1
- package/dist/types/components/controller/children/ComponentSwitchCoordinator.d.ts +3 -1
- package/dist/types/components/controller/children/IdleFacettesController.d.ts +151 -0
- package/dist/types/components/controller/children/idleTabLayout.d.ts +95 -0
- package/dist/types/components/controller/children/idleTabMorph.d.ts +45 -0
- package/dist/types/components/controller/force-field/EventFieldLifecycleController.d.ts +14 -0
- package/dist/types/components/controller/force-field/EventFieldRenderer.d.ts +3 -3
- package/dist/types/components/controller/force-field/ForceFieldCanvasPainter.d.ts +99 -0
- package/dist/types/components/controller/force-field/ForceFieldComputationService.d.ts +9 -0
- package/dist/types/components/controller/force-field/ForceFieldDetailsPanel.d.ts +28 -57
- package/dist/types/components/controller/force-field/ForceFieldDetailsPresenter.d.ts +4 -1
- package/dist/types/components/controller/force-field/ForceFieldLifecycleController.d.ts +16 -1
- package/dist/types/components/controller/force-field/ForceFieldRenderer.d.ts +10 -18
- package/dist/types/components/controller/force-field/IncomingForceFieldService.d.ts +2 -2
- package/dist/types/components/controller/force-field/PropagationAnimator.d.ts +2 -0
- package/dist/types/components/controller/force-field/keyEventPresentation.d.ts +47 -0
- package/dist/types/components/controller/force-field/propagation-viz/PropagationCometPlayer.d.ts +4 -0
- package/dist/types/components/controller/force-field/propagation-viz/propagationVizLists.d.ts +4 -2
- package/dist/types/components/controller/force-field/propagation-viz/propagationVizModel.d.ts +1 -0
- package/dist/types/components/controller/force-field/shieldViewModel.d.ts +6 -2
- package/dist/types/components/controller/force-field/types.d.ts +2 -1
- package/dist/types/components/controller/labels/ChildScoresDeltaRenderer.d.ts +7 -0
- package/dist/types/components/controller/labels/ComponentTitlePresenter.d.ts +13 -0
- package/dist/types/components/controller/labels/ContextLabelsRenderer.d.ts +16 -0
- package/dist/types/components/controller/labels/WeightPreviewRingRenderer.d.ts +6 -0
- package/dist/types/components/controller/odd/ChildrenOrbitManager.d.ts +76 -25
- package/dist/types/components/controller/odd/OddHighlightEffects.d.ts +2 -0
- package/dist/types/components/controller/odd/OddViewManager.d.ts +7 -3
- package/dist/types/components/controller/odd/childHighlightStyles.d.ts +45 -3
- package/dist/types/components/controller/search/SearchPanelSynchronizer.d.ts +8 -5
- package/dist/types/components/controller/settings/ControllerSettingsApplier.d.ts +4 -4
- package/dist/types/components/controller/state/ControllerSession.d.ts +3 -3
- package/dist/types/components/controller/state/ControllerUiCallbacks.d.ts +10 -0
- package/dist/types/components/controller/state/YinYangControllerState.d.ts +20 -9
- package/dist/types/components/controller/types.d.ts +9 -2
- package/dist/types/components/controller/utils/actionCatalog.d.ts +1 -1
- package/dist/types/components/controller/utils/eventFieldTargets.d.ts +19 -13
- package/dist/types/components/controller/utils/keyEventPropagationContext.d.ts +4 -0
- package/dist/types/components/controller/utils/keyEventTargetBreakdowns.d.ts +4 -0
- package/dist/types/components/controller/utils/svgTransform.d.ts +16 -0
- package/dist/types/components/controls/VizControlsPanel.d.ts +3 -1
- package/dist/types/components/panel/PanelManager.d.ts +92 -22
- package/dist/types/components/search/GlobalSearchController.d.ts +13 -6
- package/dist/types/components/view/BorderDrawer.d.ts +40 -14
- package/dist/types/components/view/IdleTabGridDrawer.d.ts +15 -0
- package/dist/types/components/view/SpikeDrawer.d.ts +18 -0
- package/dist/types/components/view/ViewInitializer.d.ts +53 -13
- package/dist/types/components/view/YinYangDrawer.d.ts +139 -40
- package/dist/types/components/view/borderColorCycle.d.ts +76 -0
- package/dist/types/components/workspace/facetWeightRuleSetting.d.ts +10 -0
- package/dist/types/components/workspace/workspaceTemplate.d.ts +1 -1
- package/dist/types/config/animationConfig.d.ts +10 -1
- package/dist/types/data/adverse-action-planner.d.ts +3 -3
- package/dist/types/data/amplifier-engine.d.ts +6 -6
- package/dist/types/data/key-event-effects.d.ts +30 -0
- package/dist/types/data/key-event-eligibility.d.ts +24 -0
- package/dist/types/data/key-event-propagation.d.ts +13 -0
- package/dist/types/data/key-event-types.d.ts +48 -0
- package/dist/types/data/key-event-validation.d.ts +11 -0
- package/dist/types/data/stability-shield.d.ts +14 -0
- package/dist/types/data/yasuni_adverse_key_events.d.ts +1 -1
- package/dist/types/data/yasuni_cause.d.ts +7 -0
- package/dist/types/data/yasuni_key_events.d.ts +4 -60
- package/dist/types/interfaces/ICauseModel.d.ts +12 -1
- package/dist/types/interfaces/IGraphicsStrategy.d.ts +9 -2
- package/dist/types/interfaces/IPropagationGraph.d.ts +14 -0
- package/dist/types/interfaces/IViewData.d.ts +10 -0
- package/dist/types/interfaces/IYinYangController.d.ts +25 -7
- package/dist/types/interfaces/IYinYangInternalModel.d.ts +5 -0
- package/dist/types/main.d.ts +0 -1
- package/dist/types/utils/actionIconFit.d.ts +23 -0
- package/dist/types/utils/actionPropagation.d.ts +6 -4
- package/dist/types/utils/causeMetrics.d.ts +50 -0
- package/dist/types/utils/chainCardHeight.d.ts +87 -4
- package/dist/types/utils/collapseAnimation.d.ts +39 -0
- package/dist/types/utils/d3/D3GraphicsStrategy.d.ts +28 -5
- package/dist/types/utils/deltaChips.d.ts +0 -4
- package/dist/types/utils/exportControls.d.ts +8 -0
- package/dist/types/utils/facetWeightLabel.d.ts +13 -0
- package/dist/types/utils/facetteImages.d.ts +6 -0
- package/dist/types/utils/glowHalo.d.ts +74 -0
- package/dist/types/utils/hierBadge.d.ts +1 -1
- package/dist/types/utils/keyEventImages.d.ts +1 -1
- package/dist/types/utils/menuIconSize.d.ts +17 -0
- package/dist/types/utils/spreadAngles.d.ts +8 -0
- package/package.json +4 -1
- package/dist/bundle.js.LICENSE.txt +0 -1
|
@@ -9,6 +9,7 @@ type GhostState = {
|
|
|
9
9
|
projectedGhostComponentTension: number | null;
|
|
10
10
|
projectedGhostCuttingStatesByOddId: Map<string, ProjectedCuttingState[]> | null;
|
|
11
11
|
};
|
|
12
|
+
export type IdleView = "arcs" | "facettes" | "tab";
|
|
12
13
|
export declare class YinYangControllerState {
|
|
13
14
|
children: {
|
|
14
15
|
enabled: boolean;
|
|
@@ -20,6 +21,15 @@ export declare class YinYangControllerState {
|
|
|
20
21
|
orbitSpeed: number;
|
|
21
22
|
orbitRadiusScale: number;
|
|
22
23
|
};
|
|
24
|
+
/** Sous-état d'Idle (children.enabled === false) : « arcs » montre les
|
|
25
|
+
* arcs pondérés des facettes autour de l'illustration, « facettes »
|
|
26
|
+
* remplace ces arcs par un satellite par facette (son yin/yang), « tab »
|
|
27
|
+
* range ces mêmes satellites dans une grille régulière autour d'une
|
|
28
|
+
* illustration réduite, pour comparer leurs poids. Mémorisé
|
|
29
|
+
* quand une Facette s'ouvre : la refermer ramène au même sous-état. */
|
|
30
|
+
idle: {
|
|
31
|
+
view: IdleView;
|
|
32
|
+
};
|
|
23
33
|
menu: {
|
|
24
34
|
hasActiveChildAction: boolean;
|
|
25
35
|
activeChildKey: string | null;
|
|
@@ -34,17 +44,17 @@ export declare class YinYangControllerState {
|
|
|
34
44
|
iconFontScale: number;
|
|
35
45
|
/** Ajustement fin (px) de la distance des boutons d'Événement Clé,
|
|
36
46
|
* de part et d'autre de la longueur auto-calculée (voir
|
|
37
|
-
*
|
|
47
|
+
* KeyEventMenuController — offsetDistance dérivé de l'orbite des
|
|
38
48
|
* satellites, pas de contrôle dédié à cette base). */
|
|
39
|
-
|
|
49
|
+
keyEventMenuDistanceOffset: number;
|
|
40
50
|
/** Taille des boutons du menu radial des Événements Clés — contrôle dédié
|
|
41
51
|
* ("Taille boutons", groupe "Événements clés"), séparé de itemScale qui
|
|
42
52
|
* ne pilote que les boutons d'action des satellites. */
|
|
43
|
-
|
|
53
|
+
keyEventMenuItemScale: number;
|
|
44
54
|
/** Taille des icônes dans les bulles du menu radial des Événements Clés —
|
|
45
55
|
* contrôle dédié ("Taille icônes", groupe "Événements clés"), séparé de
|
|
46
56
|
* iconFontScale qui ne pilote que les icônes d'action des satellites. */
|
|
47
|
-
|
|
57
|
+
keyEventIconFontScale: number;
|
|
48
58
|
};
|
|
49
59
|
action: {
|
|
50
60
|
delta: number;
|
|
@@ -99,8 +109,8 @@ export declare class YinYangControllerState {
|
|
|
99
109
|
orbitData: ChildrenOrbitEntry[] | null;
|
|
100
110
|
revealStartedAt: number | undefined;
|
|
101
111
|
selectedLinkIndex: number | null;
|
|
102
|
-
/** Item de pile en focus — persistant, posé par le clic sur
|
|
103
|
-
*
|
|
112
|
+
/** Item de pile en focus — persistant, posé par le clic sur son libellé
|
|
113
|
+
* dans la pile. Survit à la navigation entre
|
|
104
114
|
* satellites et facettes ; effacé quand l'item quitte la pile active. */
|
|
105
115
|
focusedStackItemId: string | null;
|
|
106
116
|
/** Aperçu temporaire (survol d'un bloc du panneau ou d'un item de la
|
|
@@ -120,6 +130,7 @@ export declare class YinYangControllerState {
|
|
|
120
130
|
blockingAnimations: BlockingAnimationTracker;
|
|
121
131
|
setActiveChildKey(childKey: string | null): void;
|
|
122
132
|
setChildrenEnabled(isEnabled: boolean): void;
|
|
133
|
+
setIdleView(view: IdleView): void;
|
|
123
134
|
setChildrenPendingRefresh(isPending: boolean): void;
|
|
124
135
|
setOrbitEnabled(isEnabled: boolean): void;
|
|
125
136
|
setOrbitSpeed(speed: number): void;
|
|
@@ -167,9 +178,9 @@ export declare class YinYangControllerState {
|
|
|
167
178
|
setMenuItemDistance(distance: number): void;
|
|
168
179
|
setMenuItemScale(scale: number): void;
|
|
169
180
|
setMenuIconFontScale(scale: number): void;
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
181
|
+
setKeyEventMenuDistanceOffset(offset: number): void;
|
|
182
|
+
setKeyEventMenuItemScale(scale: number): void;
|
|
183
|
+
setKeyEventIconFontScale(scale: number): void;
|
|
173
184
|
setChildLabelMaxLines(lines: number): void;
|
|
174
185
|
setOddLabelMaxLines(lines: number): void;
|
|
175
186
|
setLabelShortMaxChars(chars: number): void;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { KeyEventActionEffects } from "../../data/key-event-effects";
|
|
2
|
+
import type { EventTargetBreakdown } from "./force-field/keyEventPresentation";
|
|
1
3
|
import type { ForceFieldLinkDetail } from "./force-field/types";
|
|
2
4
|
import type { ComboResult } from "../../data/combo-engine";
|
|
3
|
-
import type { AmplifierResult
|
|
5
|
+
import type { AmplifierResult } from "../../data/amplifier-engine";
|
|
4
6
|
import type { AbsorptionBreakdown, ActiveShield } from "./force-field/shieldViewModel";
|
|
5
7
|
/**
|
|
6
8
|
* Bloc "action" de la vue cumulative (mode STACK) : "source" = action jouée
|
|
@@ -27,6 +29,7 @@ export type ActionCumulativeBlock = {
|
|
|
27
29
|
detailRows: ForceFieldLinkDetail[];
|
|
28
30
|
comboResults?: ComboResult[];
|
|
29
31
|
amplifierResults?: AmplifierResult[];
|
|
32
|
+
eventEffects?: KeyEventActionEffects;
|
|
30
33
|
stackItemId?: string;
|
|
31
34
|
color?: string;
|
|
32
35
|
/** This item's own propagation edges from the real sequential
|
|
@@ -51,6 +54,10 @@ export type ActionCumulativeBlock = {
|
|
|
51
54
|
/** Réduction appliquée par le bouclier du satellite en focus à la
|
|
52
55
|
* contribution négative de ce bloc — journal de résolution. */
|
|
53
56
|
shieldAbsorption?: AbsorptionBreakdown;
|
|
57
|
+
directionalAbsorptions?: Array<{
|
|
58
|
+
active?: ActiveShield;
|
|
59
|
+
breakdown: AbsorptionBreakdown;
|
|
60
|
+
}>;
|
|
54
61
|
};
|
|
55
62
|
/**
|
|
56
63
|
* Bloc "keyEvent" de la vue cumulative : un Événement Clé joué (kind="keyEvent"
|
|
@@ -72,7 +79,7 @@ export type KeyEventCumulativeBlock = {
|
|
|
72
79
|
id: string;
|
|
73
80
|
name: string;
|
|
74
81
|
}>;
|
|
75
|
-
breakdowns?:
|
|
82
|
+
breakdowns?: EventTargetBreakdown[];
|
|
76
83
|
};
|
|
77
84
|
/**
|
|
78
85
|
* Un bloc de la vue cumulative (mode STACK). Hissé au niveau module (au lieu
|
|
@@ -6,7 +6,7 @@ export declare const actionMap: Map<string, ActionDefinition>;
|
|
|
6
6
|
* Cibles d'un Événement Clé prêtes pour buildKeyEventCardHtml : id + nom,
|
|
7
7
|
* la carte affichant pour chacune le seul bonus ajouté par l'effet (pas de
|
|
8
8
|
* deltas du catalogue à charrier jusque-là). Les deux points d'appel (clic
|
|
9
|
-
* sur le
|
|
9
|
+
* sur le satellite-facette, cartes cumulées du panneau) passent par ici — une
|
|
10
10
|
* seule définition de la forme attendue.
|
|
11
11
|
*/
|
|
12
12
|
export declare function buildKeyEventTargets(keyEvent: KeyEventDefinition): Array<{
|
|
@@ -10,20 +10,18 @@ export type EventFieldTarget = {
|
|
|
10
10
|
* (même mécanisme que ForceFieldRenderer pour les champs de force
|
|
11
11
|
* cross-composante). */
|
|
12
12
|
targetComponentId?: string;
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
* souffle (voir getEventFieldCapsuleWidth). */
|
|
16
|
-
scoreBonus: number;
|
|
13
|
+
/** Shared eligibility strength, purely visual; zero for potential targets. */
|
|
14
|
+
intensity: number;
|
|
17
15
|
};
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
*/
|
|
26
|
-
export declare function
|
|
16
|
+
/** Vrai si l'événement amplifie réellement au moins un satellite — une
|
|
17
|
+
* action ciblée cochée, jouée après lui et dans sa fenêtre (voir
|
|
18
|
+
* collectEligibleStrengths). Sert, en mode STACK, à écarter les événements
|
|
19
|
+
* cochés qui n'ont encore aucun effet. */
|
|
20
|
+
export declare function keyEventAffectsAny(keyEvent: KeyEventDefinition, activeItems: ActionStackItem[]): boolean;
|
|
21
|
+
/** Vrai si l'événement amplifie réellement au moins un satellite de
|
|
22
|
+
* `componentId` — choisit, en mode STACK, l'événement distant dont le
|
|
23
|
+
* souffle entre dans la facette courante. */
|
|
24
|
+
export declare function keyEventAffectsComponent(keyEvent: KeyEventDefinition, componentId: string, activeItems: ActionStackItem[]): boolean;
|
|
27
25
|
/**
|
|
28
26
|
* Résout les cibles du "Champ d'événement" pour l'Événement Clé actuellement
|
|
29
27
|
* actif (aperçu ou validé) : sa portée statique, résolue en index de satellite
|
|
@@ -33,6 +31,13 @@ export declare function keyEventReachesComponent(keyEvent: KeyEventDefinition, c
|
|
|
33
31
|
* maintenant — ceux dont une action ciblée est cochée dans la pile — de ceux
|
|
34
32
|
* qui ne sont qu'à portée : les premiers reçoivent le bonus de score de
|
|
35
33
|
* l'événement, les seconds 0 (souffle minimal).
|
|
34
|
+
*
|
|
35
|
+
* `stackEffects` (mode STACK, événements cochés de la pile) : la pile ne
|
|
36
|
+
* montre que des effets réels, donc seuls les satellites amplifiés reçoivent
|
|
37
|
+
* un cordon — et une facette distante seulement si elle en abrite un — et
|
|
38
|
+
* leur épaisseur suit le bonus EFFECTIF, réduit selon la position de
|
|
39
|
+
* l'action dans la fenêtre. L'aperçu (RECHERCHE ou bulle) garde la portée
|
|
40
|
+
* complète et le bonus nominal : il montre jusqu'où l'événement PEUT porter.
|
|
36
41
|
*/
|
|
37
42
|
export declare function buildEventFieldTargets(params: {
|
|
38
43
|
keyEvent: KeyEventDefinition;
|
|
@@ -44,4 +49,5 @@ export declare function buildEventFieldTargets(params: {
|
|
|
44
49
|
score: number;
|
|
45
50
|
cuttingIndex: number;
|
|
46
51
|
}>;
|
|
52
|
+
stackEffects?: boolean;
|
|
47
53
|
}): EventFieldTarget[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ActionStackItem } from "../action-stack/ActionStackState";
|
|
2
|
+
import type { KeyEventPropagationContext } from "../../../data/key-event-propagation";
|
|
3
|
+
/** Same event matches as delta/shield resolution, with actual source applicability. */
|
|
4
|
+
export declare function keyEventPropagationContext(item: ActionStackItem | undefined, items: ActionStackItem[]): KeyEventPropagationContext | undefined;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ActionStackItem } from "../action-stack/ActionStackState";
|
|
2
|
+
import type { KeyEventDefinition } from "../../../data/key-event-types";
|
|
3
|
+
import { type EventTargetBreakdown } from "../force-field/keyEventPresentation";
|
|
4
|
+
export declare function keyEventTargetBreakdowns(event: KeyEventDefinition, items: ActionStackItem[]): EventTargetBreakdown[];
|
|
@@ -3,3 +3,19 @@ export declare function parseTranslateTransform(transform: string): {
|
|
|
3
3
|
y: number;
|
|
4
4
|
found: boolean;
|
|
5
5
|
};
|
|
6
|
+
type TransformTarget = {
|
|
7
|
+
setAttribute: (name: string, value: string) => unknown;
|
|
8
|
+
};
|
|
9
|
+
/** Translation d'orbite, sur l'enveloppe d'orbite du satellite
|
|
10
|
+
* (viewInitializer.orbitGroup) — en plein mouvement, une animation du
|
|
11
|
+
* navigateur la recouvre (ChildrenOrbitManager). */
|
|
12
|
+
export declare function setSatelliteTranslation(target: TransformTarget, x: number, y: number): void;
|
|
13
|
+
/** Respiration du weightDelta (WeightPreviewRingRenderer), sur le
|
|
14
|
+
* globalGroup du satellite : scale autour de son centre. Séparée de
|
|
15
|
+
* l'orbite, qui est posée sur l'enveloppe. `scale` 1 (ou null) la retire. */
|
|
16
|
+
export declare function setSatellitePulseScale(target: TransformTarget, pulse: {
|
|
17
|
+
scale: number;
|
|
18
|
+
cx: number;
|
|
19
|
+
cy: number;
|
|
20
|
+
} | null): void;
|
|
21
|
+
export {};
|
|
@@ -13,4 +13,6 @@ export interface VizControlsDeps {
|
|
|
13
13
|
orbitRampMs: number;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
/** Retourne la fonction de démontage : désabonne les veilles d'inactivité
|
|
17
|
+
* (sinon elles relanceraient la rotation / l'orbite d'un diagramme détruit). */
|
|
18
|
+
export declare function mountVizControls(deps: VizControlsDeps): () => void;
|
|
@@ -42,6 +42,15 @@ export declare class PanelManager {
|
|
|
42
42
|
masterCuttingPending: boolean;
|
|
43
43
|
masterCuttingHistoryPushed: boolean;
|
|
44
44
|
diagramNavMasterHistLenAtStart: number;
|
|
45
|
+
/** Vrai pendant qu'une sélection mémorisée est rejouée sur le diagramme
|
|
46
|
+
* (bascule RECHERCHE ↔ STACK) : les rappels du diagramme n'écrivent alors
|
|
47
|
+
* pas dans le panneau RECHERCHE — voir isRecherchePanelMuted. */
|
|
48
|
+
private restoringModeSelection;
|
|
49
|
+
/** Sélection propre à chaque mode, photographiée au moment de le quitter.
|
|
50
|
+
* Les deux modes sont hermétiques : chacun retrouve la sienne au retour,
|
|
51
|
+
* et un mode jamais visité démarre sans sélection (vue Sphère). */
|
|
52
|
+
private rechercheSelection;
|
|
53
|
+
private stackSelection;
|
|
45
54
|
/** Jeton de génération pour historyBack/historyForward — voir leur commentaire. */
|
|
46
55
|
private navGen;
|
|
47
56
|
oddNavState: {
|
|
@@ -65,35 +74,46 @@ export declare class PanelManager {
|
|
|
65
74
|
private redistributeOpenHeights;
|
|
66
75
|
private setPanelCollapsed;
|
|
67
76
|
private updateLockButton;
|
|
68
|
-
/** Cible actuellement sélectionnée dans l'arbre du panneau maître, ou null.
|
|
69
|
-
* À lire AVANT de quitter RECHERCHE : voir resyncDiagramToMasterPanel. */
|
|
77
|
+
/** Cible actuellement sélectionnée dans l'arbre du panneau maître, ou null. */
|
|
70
78
|
getMasterSelectedTarget(): SearchNavTarget | null;
|
|
71
79
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
* Le panneau RECHERCHE n'écoute pas le diagramme : en mode STACK (les deux
|
|
81
|
+
* modes sont hermétiques — la navigation STACK ne touche ni l'arbre ni
|
|
82
|
+
* l'historique RECHERCHE), et pendant qu'une sélection mémorisée est
|
|
83
|
+
* rejouée (le panneau montre déjà ce qu'il faut).
|
|
84
|
+
*/
|
|
85
|
+
isRecherchePanelMuted(): boolean;
|
|
86
|
+
/** À appeler AVANT de quitter RECHERCHE (clic d'onglet ou bascule
|
|
87
|
+
* programmatique) : le passage en STACK peut effacer la sélection de
|
|
88
|
+
* l'arbre (le rendu des champs cumulés de la pile repasse par les blocs de
|
|
89
|
+
* détail du panneau). */
|
|
90
|
+
rememberRechercheSelection(): void;
|
|
91
|
+
/** À appeler AVANT de quitter STACK : sa sélection ne vit que dans le
|
|
92
|
+
* diagramme, qui va être réécrit par celle de RECHERCHE. */
|
|
93
|
+
rememberStackSelection(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Retour en RECHERCHE : rejoue sur le diagramme la sélection mémorisée en
|
|
96
|
+
* quittant RECHERCHE. Le panneau maître, lui, n'a pas bougé pendant STACK
|
|
97
|
+
* (isRecherchePanelMuted) ; il n'est resynchronisé que si sa sélection a
|
|
98
|
+
* malgré tout été perdue en route.
|
|
78
99
|
*
|
|
79
100
|
* Passe par les chemins de RESTAURATION (restoreActionDiagramState,
|
|
80
101
|
* restoreKeyEventDiagramState, forceOpen) et non par ceux d'un clic : l'état
|
|
81
102
|
* est déjà connu, il ne doit ni basculer en toggle-close ni redessiner la
|
|
82
103
|
* carte du panneau ni pousser une entrée d'historique.
|
|
83
|
-
*
|
|
84
|
-
* Ne traite que les niveaux qui portent un champ dans le diagramme (action,
|
|
85
|
-
* cutting, Événement Clé). Une facette ou un ODD n'en ont pas : les rejouer
|
|
86
|
-
* ne ferait que risquer un toggle de la vue ODD pour rien.
|
|
87
|
-
*
|
|
88
|
-
* @param fallbackTarget cible mémorisée au moment de QUITTER RECHERCHE.
|
|
89
|
-
* Le passage en STACK peut effacer la sélection de l'arbre (le rendu des
|
|
90
|
-
* champs cumulés de la pile repasse par les blocs de détail du panneau)
|
|
91
|
-
* ou la réécrire au niveau facette (navigation d'arc de bordure pendant
|
|
92
|
-
* STACK) : dans les deux cas c'est cette photographie qui dit quel
|
|
93
|
-
* élément l'utilisateur consultait, et sa restauration inclut le switch
|
|
94
|
-
* de facette si le diagramme est parti ailleurs entre temps.
|
|
95
104
|
*/
|
|
96
|
-
|
|
105
|
+
restoreRechercheSelection(): void;
|
|
106
|
+
/** Retour en STACK : rejoue sur le diagramme la sélection mémorisée en
|
|
107
|
+
* quittant STACK (aucune au premier passage). Le chip et l'historique
|
|
108
|
+
* STACK suivent par les rappels habituels du diagramme. */
|
|
109
|
+
restoreStackSelection(): void;
|
|
110
|
+
/**
|
|
111
|
+
* Remet le diagramme à blanc puis y rejoue `target` (null : vue Sphère),
|
|
112
|
+
* panneau RECHERCHE muet jusqu'à la fin d'un éventuel changement de facette
|
|
113
|
+
* — la navigation reportée après l'animation repasse elle aussi par les
|
|
114
|
+
* rappels du diagramme.
|
|
115
|
+
*/
|
|
116
|
+
private replayDiagramSelection;
|
|
97
117
|
/**
|
|
98
118
|
* @param forceOpen À passer à true quand target restaure un état déjà connu
|
|
99
119
|
* (rejeu d'historique back/forward, panneau qui redevient maître) plutôt
|
|
@@ -103,10 +123,58 @@ export declare class PanelManager {
|
|
|
103
123
|
* la mise à jour ne se faisait qu'un clic Retour/Suivant sur deux.
|
|
104
124
|
*/
|
|
105
125
|
syncDiagramToTarget(target: SearchNavTarget, forceOpen?: boolean): void;
|
|
126
|
+
/** Le panneau qui devient maître impose au diagramme l'élément qu'il
|
|
127
|
+
* mémorise, et lui seul : chaque panneau déverrouillé reste isolé des
|
|
128
|
+
* autres. Une action se rétablit sans bascule (re-sélectionner l'action
|
|
129
|
+
* déjà active la désactiverait) et sans redessiner le bloc, que le
|
|
130
|
+
* panneau affiche déjà. Sous verrou, l'action source reste celle du
|
|
131
|
+
* panneau verrouillé : on n'en montre que la propagation sur le
|
|
132
|
+
* satellite de ce panneau. */
|
|
133
|
+
private syncDiagramToMasterTarget;
|
|
106
134
|
private setMaster;
|
|
107
135
|
private setPanelLocked;
|
|
136
|
+
private noticeEl;
|
|
137
|
+
private noticeTimer;
|
|
138
|
+
/** Index d'un panneau verrouillé sur une action, ou -1. Cette action est
|
|
139
|
+
* l'action source du multi-blocs : ses champs de force et sa bulle
|
|
140
|
+
* restent affichés, en sélectionner une autre les remplacerait. */
|
|
141
|
+
private findActionLockedSlot;
|
|
142
|
+
isActionSelectionLocked(): boolean;
|
|
143
|
+
/** Estompe les actions de l'arbre des panneaux non verrouillés. */
|
|
144
|
+
private applyActionLockClasses;
|
|
145
|
+
/** Garde de l'arbre d'un panneau : refuse la sélection d'une action tant
|
|
146
|
+
* qu'un panneau est verrouillé sur une autre. */
|
|
147
|
+
private guardActionNav;
|
|
148
|
+
/** Panneau verrouillé autre que `exceptIdx`, ou -1. */
|
|
149
|
+
private findLockedSlot;
|
|
150
|
+
/** Clic refusé sur une action : bandeau sous l'en-tête du panneau maître,
|
|
151
|
+
* qui propose de déverrouiller puis de rejouer ce clic. */
|
|
152
|
+
showActionLockNotice(retry: () => void): void;
|
|
153
|
+
/** Verrou refusé : un autre panneau l'est déjà. Bandeau ancré sous le
|
|
154
|
+
* bouton verrou — en position fixe, car un panneau replié rognerait un
|
|
155
|
+
* bandeau qu'il contiendrait. */
|
|
156
|
+
private showSecondLockNotice;
|
|
157
|
+
/** Place un bandeau (posé sur body) sous `anchor`, aligné à sa droite —
|
|
158
|
+
* au-dessus s'il déborderait du bas de l'écran. */
|
|
159
|
+
private anchorNotice;
|
|
160
|
+
/** Bandeau de refus (un seul à la fois) : texte + bouton « Déverrouiller »
|
|
161
|
+
* qui exécute `onUnlock`. Disparaît seul au bout de 6 s. */
|
|
162
|
+
private showNotice;
|
|
163
|
+
private hideNotice;
|
|
164
|
+
/** Déverrouille les panneaux qui figent l'action source. Le panneau
|
|
165
|
+
* maître garde la main ; les panneaux libérés mémorisent leur action. */
|
|
166
|
+
private unlockActionLockedSlots;
|
|
108
167
|
openPanel(slotIdx: number, skipSync?: boolean): void;
|
|
109
|
-
private
|
|
168
|
+
private compareMode;
|
|
169
|
+
/** Hors mode Comparer, replie les blocs déverrouillés ouverts autres que
|
|
170
|
+
* `keepIdx` (null : aucun n'est gardé). */
|
|
171
|
+
private enforceSingleOpen;
|
|
172
|
+
private wireCompareToggle;
|
|
173
|
+
/** Clic sur l'en-tête : replie/déplie le bloc, rien d'autre. Ni bascule
|
|
174
|
+
* de maître (seul un clic dans le bloc la fait, voir wireSlotInteraction)
|
|
175
|
+
* ni repli des autres blocs, qu'on peut ainsi comparer ouverts ensemble.
|
|
176
|
+
* Un maître replié reste maître : le diagramme ne bouge pas. */
|
|
177
|
+
private togglePanelFromHeader;
|
|
110
178
|
activateLinkedPanel(slotIdx: number): void;
|
|
111
179
|
resolveTargetSlot(): {
|
|
112
180
|
idx: number;
|
|
@@ -140,6 +208,8 @@ export declare class PanelManager {
|
|
|
140
208
|
title: string;
|
|
141
209
|
description: string;
|
|
142
210
|
} | undefined, rationale: string | undefined, isLinked: boolean): () => void;
|
|
211
|
+
private lockSlot;
|
|
212
|
+
private unlockSlot;
|
|
143
213
|
private wireSlotInteraction;
|
|
144
214
|
private initPanel1;
|
|
145
215
|
private initPanel2;
|
|
@@ -49,7 +49,8 @@ export interface GlobalSearchControllerOptions {
|
|
|
49
49
|
/** Appelé au dépli/repli du groupe "Événements Clés" d'une facette. Le groupe
|
|
50
50
|
* n'est pas une cible de navigation (pas de data-nav-key, rien à
|
|
51
51
|
* sélectionner) mais il a bien un pendant dans le diagramme : le menu radial
|
|
52
|
-
* des Événements Clés, déployé
|
|
52
|
+
* des Événements Clés, déployé autour du satellite-facette (Idle
|
|
53
|
+
* « facettes »). */
|
|
53
54
|
onKeyEventGroupToggle?: (componentIndex: number, open: boolean) => void;
|
|
54
55
|
}
|
|
55
56
|
export declare class GlobalSearchController {
|
|
@@ -264,7 +265,8 @@ export declare class GlobalSearchController {
|
|
|
264
265
|
/**
|
|
265
266
|
* Diagramme → arbre : reflète l'état réel du menu radial des Événements Clés.
|
|
266
267
|
* Le diagramme referme ces bulles de lui-même dans plusieurs cas (ouverture
|
|
267
|
-
* du menu d'un Satellite,
|
|
268
|
+
* du menu d'un Satellite, bulles d'un autre satellite-facette, sortie du
|
|
269
|
+
* sous-état Idle « facettes ») ; sans ce
|
|
268
270
|
* miroir, le groupe resterait déplié au-dessus d'un diagramme vide et il
|
|
269
271
|
* aurait fallu deux clics pour le rouvrir (le premier ne faisant que
|
|
270
272
|
* rattraper le décalage). DOM seul — n'émet jamais vers le diagramme.
|
|
@@ -295,6 +297,13 @@ export declare class GlobalSearchController {
|
|
|
295
297
|
private setSelectedNavKey;
|
|
296
298
|
private restoreSelectedRow;
|
|
297
299
|
private _syncImpactBlockVisibility;
|
|
300
|
+
/** Garde de sélection d'action (multi-blocs, voir setActionNavGuard). */
|
|
301
|
+
private _actionNavGuard;
|
|
302
|
+
/** Multi-blocs : tant qu'un panneau est verrouillé sur une action, le garde
|
|
303
|
+
* refuse toute sélection d'action (retourne false) ; `retry` rejoue la
|
|
304
|
+
* sélection une fois le panneau déverrouillé. */
|
|
305
|
+
setActionNavGuard(guard: ((target: SearchNavTarget, retry: () => void) => boolean) | null): void;
|
|
306
|
+
/** Retourne false si la navigation a été refusée. */
|
|
298
307
|
private emitNav;
|
|
299
308
|
/** Lie le panneau de détail à droite de l'arbre de recherche. */
|
|
300
309
|
setDetailPanel(el: HTMLElement): void;
|
|
@@ -398,15 +407,13 @@ export declare class GlobalSearchController {
|
|
|
398
407
|
* placeholder (voir _syncPlaceholder).
|
|
399
408
|
*/
|
|
400
409
|
resetToSphereView(): void;
|
|
410
|
+
/** Verrouille ou déverrouille le panneau : bloque la navigation utilisateur et le bloc d'impact. */
|
|
411
|
+
setLocked(locked: boolean): void;
|
|
401
412
|
/**
|
|
402
413
|
* Injecte le HTML des cartes d'impact directement sous la ligne action dans l'arbre,
|
|
403
414
|
* comme élément frère suivant le <li class="gs-tree-action"> de l'action sélectionnée.
|
|
404
415
|
* Ré-utilisé après chaque renderTree pour que le bloc survive aux reconstructions DOM.
|
|
405
416
|
*/
|
|
406
|
-
private _markActionBeacon;
|
|
407
|
-
private _clearActionBeacon;
|
|
408
|
-
/** Verrouille ou déverrouille le panneau : bloque la navigation utilisateur et le bloc d'impact. */
|
|
409
|
-
setLocked(locked: boolean): void;
|
|
410
417
|
private _injectImpactBlockIfActive;
|
|
411
418
|
/** Anime la fermeture d'un bloc puis appelle onDone une seule fois. */
|
|
412
419
|
private _animateBlockOut;
|
|
@@ -21,10 +21,6 @@ export declare class BorderDrawer {
|
|
|
21
21
|
private readonly facetteImageElements;
|
|
22
22
|
private readonly facetteImagePositions;
|
|
23
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
24
|
private _hoverSegmentIndex;
|
|
29
25
|
/** Segment currently under the mouse pointer, tracked separately from
|
|
30
26
|
* _hoverSegmentIndex (which comes from the Recherche tree) so neither
|
|
@@ -43,8 +39,14 @@ export declare class BorderDrawer {
|
|
|
43
39
|
private readonly sourceBeaconColor;
|
|
44
40
|
private borderGhostGroupNode;
|
|
45
41
|
private borderGhostEntries;
|
|
42
|
+
/** Arcs d'onde du ghost des bordures et leur générateur, gardés d'une frame
|
|
43
|
+
* à l'autre tant que les entrées et la géométrie ne changent pas. */
|
|
44
|
+
private borderGhostWaveCache;
|
|
46
45
|
private borderGhostFrameId;
|
|
46
|
+
private facetteRevealFrameId;
|
|
47
47
|
constructor(ViewInitializer: ViewInitializer);
|
|
48
|
+
/** Fin de vie : arrête la vague du ghost et le fondu d'image en attente. */
|
|
49
|
+
destroy(): void;
|
|
48
50
|
/**
|
|
49
51
|
* Initializes the properties needed for drawing borders based on the ViewInitializer data.
|
|
50
52
|
* Uses borderArcsGroup for the persistent per-component border arcs.
|
|
@@ -143,16 +145,16 @@ export declare class BorderDrawer {
|
|
|
143
145
|
* (margin, fade start/opacity — see the "Images facette" dev controls) take
|
|
144
146
|
* effect immediately. */
|
|
145
147
|
rebuildFacetteImageRing(): void;
|
|
146
|
-
/** Lifts the "voile terne" on one facette's image
|
|
147
|
-
*
|
|
148
|
+
/** Lifts the "voile terne" on one facette's image (fade-in of its color
|
|
149
|
+
* version over the pre-rendered veiled one), veiling every other one —
|
|
150
|
+
* only one can be unveiled at a time. Driven by the outer spark
|
|
148
151
|
* sweeping across border arcs. Veils *all* others rather than just the
|
|
149
152
|
* previously-tracked index, so the single-spotlight invariant holds
|
|
150
153
|
* whatever state the ring was left in. */
|
|
151
154
|
revealFacetteImage(segmentIndex: number): void;
|
|
152
155
|
/** Thumbnails often overlap: SVG has no z-index, so the unveiled image's
|
|
153
156
|
* group is moved last in the ring to be painted above its neighbours.
|
|
154
|
-
*
|
|
155
|
-
* (a re-inserted node would otherwise jump straight to its new filter). */
|
|
157
|
+
* Returns whether the group was actually moved. */
|
|
156
158
|
private bringFacetteImageToFront;
|
|
157
159
|
/** Center + radius (pre-scale coordinate space) of a facette's image
|
|
158
160
|
* thumbnail, so labels can be anchored onto the image instead of
|
|
@@ -162,6 +164,9 @@ export declare class BorderDrawer {
|
|
|
162
164
|
y: number;
|
|
163
165
|
radius: number;
|
|
164
166
|
} | undefined;
|
|
167
|
+
/** Angle du milieu de l'arc de chaque facette (convention d3.arc : 0 = midi,
|
|
168
|
+
* sens horaire), indexé par id de facette. */
|
|
169
|
+
getSegmentMidAngles(): Map<string, number>;
|
|
165
170
|
private getSegmentMidAngle;
|
|
166
171
|
private getPointOnAngle;
|
|
167
172
|
/**
|
|
@@ -194,7 +199,9 @@ export declare class BorderDrawer {
|
|
|
194
199
|
clearSourceBeacon(): void;
|
|
195
200
|
/**
|
|
196
201
|
* Applique un survol léger sur un segment de bordure (hover depuis l'arbre Recherche).
|
|
197
|
-
* N'affecte pas l'index actif
|
|
202
|
+
* N'affecte pas l'index actif : une classe sur le groupe wrapper (marqueur
|
|
203
|
+
* d'état) et un halo cyan pré-rendu sous l'arc (emplacement "hover",
|
|
204
|
+
* indépendant de ceux de l'état actif et du beacon).
|
|
198
205
|
*/
|
|
199
206
|
setHoverSegment(segmentIndex: number | null): void;
|
|
200
207
|
/** Rebuilds every border segment so the live-tuned shape parameters (corner
|
|
@@ -202,6 +209,22 @@ export declare class BorderDrawer {
|
|
|
202
209
|
* are otherwise built exactly once, at init. Mirrors
|
|
203
210
|
* rebuildFacetteImageRing. The active/beacon state is re-applied at the
|
|
204
211
|
* end so a rebuild is visually invisible apart from the tuned parameter. */
|
|
212
|
+
/** Échelle des arcs repliés : assez petite pour que l'anneau passe
|
|
213
|
+
* entièrement sous l'illustration centrale, qui le
|
|
214
|
+
* recouvre — d'où l'effet d'arcs « rentrant » dans le cercle global. */
|
|
215
|
+
private static readonly RETRACTED_ARCS_SCALE;
|
|
216
|
+
private segmentsRetracted;
|
|
217
|
+
areSegmentsRetracted(): boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Sous-état Idle « facettes » : replie (ou redéploie) l'anneau des arcs de
|
|
220
|
+
* bordure vers le centre. Mouvement mécanique
|
|
221
|
+
* plutôt qu'un fondu : léger recul puis plongée sous l'illustration au
|
|
222
|
+
* repli (easeBackIn), sortie avec un léger dépassement du bord au
|
|
223
|
+
* redéploiement (easeBackOut). On anime le groupe conteneur des arcs, qui
|
|
224
|
+
* persiste à travers leurs reconstructions.
|
|
225
|
+
* Les arcs ne sont plus cliquables tant qu'ils sont repliés.
|
|
226
|
+
*/
|
|
227
|
+
setSegmentsRetracted(retracted: boolean, durationMs?: number): Promise<void>;
|
|
205
228
|
rebuildBorderSegments(): void;
|
|
206
229
|
/**
|
|
207
230
|
* Updates the style of border segments based on active index (lightweight, no redraw)
|
|
@@ -211,20 +234,23 @@ export declare class BorderDrawer {
|
|
|
211
234
|
private applySegmentStyle;
|
|
212
235
|
private getTotalBordersGroup;
|
|
213
236
|
/**
|
|
214
|
-
*
|
|
237
|
+
* Makes an active segment cycle through its ODD colours (see
|
|
238
|
+
* borderColorCycle: composed by the browser while the diagram is at rest,
|
|
239
|
+
* written on the main thread while a frame loop runs). Idempotent — the
|
|
240
|
+
* same colours and duration keep the running cycle and its phase. No cycle
|
|
241
|
+
* when the duration is 0 (film bake): the static gradient stays.
|
|
215
242
|
*/
|
|
216
243
|
private applySegmentColorAnimation;
|
|
217
|
-
/**
|
|
218
|
-
*
|
|
219
|
-
*/
|
|
244
|
+
/** Stops an inactive segment's colour cycle; its own fill is restored by
|
|
245
|
+
* the caller (fill-opacity of the inactive style). */
|
|
220
246
|
private removeSegmentColorAnimation;
|
|
247
|
+
private stopSegmentColorCycles;
|
|
221
248
|
/**
|
|
222
249
|
* Applies an animation that only increases the segment outer radius.
|
|
223
250
|
* The inner radius remains unchanged.
|
|
224
251
|
*/
|
|
225
252
|
private applySegmentOuterWidthAnimation;
|
|
226
253
|
private startBeaconPulse;
|
|
227
|
-
private toRgba;
|
|
228
254
|
/**
|
|
229
255
|
* Builds the ODD gradient painted inside one facette's arc.
|
|
230
256
|
*
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IdleTabLayout } from "../controller/children/idleTabLayout";
|
|
2
|
+
export declare class IdleTabGridDrawer {
|
|
3
|
+
private readonly getSvgRoot;
|
|
4
|
+
/** Nœud devant lequel le tableau s'insère (le globalGroup du diagramme). */
|
|
5
|
+
private readonly getBeforeNode;
|
|
6
|
+
private readonly getIdPrefix;
|
|
7
|
+
private group;
|
|
8
|
+
constructor(getSvgRoot: () => SVGSVGElement | null,
|
|
9
|
+
/** Nœud devant lequel le tableau s'insère (le globalGroup du diagramme). */
|
|
10
|
+
getBeforeNode: () => Element | null, getIdPrefix: () => string);
|
|
11
|
+
show(layout: IdleTabLayout, durationMs: number): Promise<void>;
|
|
12
|
+
hide(durationMs: number): Promise<void>;
|
|
13
|
+
removeNow(): void;
|
|
14
|
+
private draw;
|
|
15
|
+
}
|
|
@@ -6,6 +6,9 @@ export declare class SpikeDrawer {
|
|
|
6
6
|
private key;
|
|
7
7
|
private graphicStrategy;
|
|
8
8
|
spikesEnabled: boolean;
|
|
9
|
+
/** Points d'onde des spikes, gardés d'une frame à l'autre tant que les
|
|
10
|
+
* entrées et le calque ne changent pas. */
|
|
11
|
+
private spikeGhostWaveCache;
|
|
9
12
|
private spikeGhostEntries;
|
|
10
13
|
private spikeGhostFrameId;
|
|
11
14
|
/** ODD actuellement sélectionné dans le cercle central (clic sur un arc) :
|
|
@@ -15,6 +18,10 @@ export declare class SpikeDrawer {
|
|
|
15
18
|
private oddSpikeHighlight;
|
|
16
19
|
private oddCometEntries;
|
|
17
20
|
private oddCometFrameId;
|
|
21
|
+
/** Lignes et dégradés posés par le dernier drawSpikes, dans l'ordre de
|
|
22
|
+
* geometry.spikes : une frame de transition de facette n'en réécrit que
|
|
23
|
+
* les coordonnées et la couleur (updateSpikePositions). */
|
|
24
|
+
private spikeNodes;
|
|
18
25
|
constructor(ViewInitializer: ViewInitializer);
|
|
19
26
|
/**
|
|
20
27
|
* Initializes the necessary data for drawing spikes.
|
|
@@ -32,6 +39,15 @@ export declare class SpikeDrawer {
|
|
|
32
39
|
private clearSpikes;
|
|
33
40
|
private drawSpikes;
|
|
34
41
|
private drawSpike;
|
|
42
|
+
private spikeGradientId;
|
|
43
|
+
/**
|
|
44
|
+
* Frame de transition de facette : replace en place les spikes du dernier
|
|
45
|
+
* drawSpikes (extrémités de la ligne et de son dégradé, couleur de l'ODD),
|
|
46
|
+
* sans retirer ni recréer ni ligne ni dégradé — la mise en avant d'un ODD
|
|
47
|
+
* sélectionné et ses comètes restent donc posées dessus. Renvoie false si
|
|
48
|
+
* les spikes ne sont plus les mêmes (l'appelant refait un rendu complet).
|
|
49
|
+
*/
|
|
50
|
+
updateSpikePositions(): boolean;
|
|
35
51
|
/**
|
|
36
52
|
* Draws the weightDelta ghost overlay from ViewInitializer.spikesGhost on
|
|
37
53
|
* both yin and yang: a dashed gold line to each targeted spike's projected
|
|
@@ -47,6 +63,8 @@ export declare class SpikeDrawer {
|
|
|
47
63
|
private drawSpikeGhostsForType;
|
|
48
64
|
private drawSpikeGhostLines;
|
|
49
65
|
private ensureSpikeGhostLoop;
|
|
66
|
+
/** Fin de vie : arrête la vague du ghost et les comètes d'ODD. */
|
|
67
|
+
destroy(): void;
|
|
50
68
|
private stopSpikeGhostLoop;
|
|
51
69
|
/** Dot that travels between a spike's real tip and its projected tip, on
|
|
52
70
|
* the same lap duration/easing as the border-segment and ODD-arc ghost
|