@micheeeeel/yinyangapp 3.0.1 → 3.1.1
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 +13 -2
- 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 +31 -3
- 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 +109 -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 +12 -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 +19 -22
- package/dist/types/components/controller/children/ComponentSwitchCoordinator.d.ts +3 -1
- package/dist/types/components/controller/children/IdleFacettesController.d.ts +205 -0
- package/dist/types/components/controller/children/facetModulation.d.ts +49 -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/children/signatureLook.d.ts +10 -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 +33 -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/ObstacleDemoControl.d.ts +3 -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 +45 -7
- package/dist/types/components/view/YinYangDrawer.d.ts +132 -30
- 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/activeDiagram.d.ts +6 -2
- 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/contacts/demoObstacle.d.ts +3 -0
- package/dist/types/data/contacts/index.d.ts +3 -0
- package/dist/types/data/contacts/obstacleSignature.d.ts +56 -0
- 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 +16 -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 +19 -3
- package/dist/types/interfaces/IYinYangController.d.ts +35 -7
- package/dist/types/interfaces/IYinYangInternalModel.d.ts +7 -0
- package/dist/types/main.d.ts +1 -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 +29 -11
- 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 +6 -4
- 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 +17 -0
- package/package.json +4 -1
- package/dist/bundle.js.LICENSE.txt +0 -1
|
@@ -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
|
|
@@ -11,6 +11,12 @@ export declare class ViewInitializer {
|
|
|
11
11
|
graphicContainer: IGraphicElement;
|
|
12
12
|
graphicStrategy: IGraphicsStrategy;
|
|
13
13
|
globalGroup: IGraphicElement;
|
|
14
|
+
/** Enveloppe du globalGroup d'un satellite, sous le children-group du
|
|
15
|
+
* parent : porte la seule translation d'orbite, jouée par le navigateur
|
|
16
|
+
* (ChildrenOrbitManager), sans toucher aux transforms que d'autres posent
|
|
17
|
+
* sur le globalGroup (respiration du poids). C'est le nœud à retirer pour
|
|
18
|
+
* supprimer le satellite. Pour le parent : son globalGroup. */
|
|
19
|
+
orbitGroup: IGraphicElement;
|
|
14
20
|
yinOrYangGroup: {
|
|
15
21
|
yin: IYinOrYangPattern;
|
|
16
22
|
yang: IYinOrYangPattern;
|
|
@@ -20,6 +26,11 @@ export declare class ViewInitializer {
|
|
|
20
26
|
yang: IYinOrYangPattern;
|
|
21
27
|
};
|
|
22
28
|
yinYangGroup: IGraphicElement;
|
|
29
|
+
/** Rappelé, une fois par tâche, quand ce qui suit la rotation Yin/Yang
|
|
30
|
+
* change : géométrie des lobes, libellés contre-tournés redessinés.
|
|
31
|
+
* AnimationsMngr y refait ses animations pendant une rotation. */
|
|
32
|
+
onRotationTargetsChanged: (() => void) | null;
|
|
33
|
+
private rotationTargetsChangePending;
|
|
23
34
|
childrenGroup: IGraphicElement;
|
|
24
35
|
facetteImageBackgroundGroup: IGraphicElement;
|
|
25
36
|
borderArcsGroup: IGraphicElement;
|
|
@@ -220,6 +231,8 @@ export declare class ViewInitializer {
|
|
|
220
231
|
private currentComponentIndex;
|
|
221
232
|
private animationSequence;
|
|
222
233
|
private isAnimationRunning;
|
|
234
|
+
private transitionFrameId;
|
|
235
|
+
private observedRoot;
|
|
223
236
|
private isDisplayingOddMode;
|
|
224
237
|
/**
|
|
225
238
|
* Returns whether the view is currently in ODD display mode.
|
|
@@ -285,6 +298,18 @@ export declare class ViewInitializer {
|
|
|
285
298
|
* Keeps yinYangGroup intact while refreshing symbol groups and spikes.
|
|
286
299
|
*/
|
|
287
300
|
private redrawYinYangGeometry;
|
|
301
|
+
/**
|
|
302
|
+
* Frame d'une transition de facette ou d'ODD : quand les nœuds du dernier
|
|
303
|
+
* rendu complet couvrent déjà les catégories de la frame, seuls leurs
|
|
304
|
+
* attributs sont réécrits (YinYangDrawer.updateSwitchFrame,
|
|
305
|
+
* SpikeDrawer.updateSpikePositions) ; sinon — typiquement la première
|
|
306
|
+
* frame, où les catégories entrantes rejoignent les sortantes — rendu
|
|
307
|
+
* complet. Bordures, poids de la facette et illustration idle ne dépendent
|
|
308
|
+
* pas de l'interpolation : ils attendent la dernière frame, toujours rendue
|
|
309
|
+
* en entier pour que l'état final soit exactement celui d'un rendu complet.
|
|
310
|
+
*/
|
|
311
|
+
private renderTransitionFrame;
|
|
312
|
+
private updateGeometryInPlace;
|
|
288
313
|
/**
|
|
289
314
|
* Redraws the ghost Yin/Yang geometry without touching borders or spikes.
|
|
290
315
|
*/
|
|
@@ -306,11 +331,10 @@ export declare class ViewInitializer {
|
|
|
306
331
|
getAverageTension(): number;
|
|
307
332
|
getAverageState(): number;
|
|
308
333
|
/** Poids C_f de la facette courante : moyenne des poids de tous ses
|
|
309
|
-
* satellites (`
|
|
334
|
+
* satellites (`facetWeight`, même règle que `perimeterWeight`, qui fixe la
|
|
310
335
|
* taille de son arc de bordure). */
|
|
311
336
|
getFacetteWeight(): number;
|
|
312
|
-
/** Plafond du poids
|
|
313
|
-
* satellites. */
|
|
337
|
+
/** Plafond du poids de la facette courante (`facetWeightMax`). */
|
|
314
338
|
getFacetteWeightMax(): number;
|
|
315
339
|
/** getFacetteWeight pour une facette quelconque (poids de chaque arc de
|
|
316
340
|
* bordure quand "Afficher libellés" est actif). */
|
|
@@ -321,9 +345,9 @@ export declare class ViewInitializer {
|
|
|
321
345
|
/**
|
|
322
346
|
* Centre courant (écran, repère de `globalGroup`) du sous-cercle yin ou
|
|
323
347
|
* yang, en tenant compte d'une éventuelle rotation Yin/Yang en cours
|
|
324
|
-
* (AnimationsMngr
|
|
325
|
-
* `yinOrYangGroup[orientation].graphElementGroup
|
|
326
|
-
*
|
|
348
|
+
* (AnimationsMngr anime, par Web Animations, un `transform` orbite+spin
|
|
349
|
+
* sur `yinOrYangGroup[orientation].graphElementGroup`, sans jamais
|
|
350
|
+
* toucher `geometry` ; le CTM reflète la valeur animée courante). Résolu via le CTM plutôt qu'en rejouant la
|
|
327
351
|
* formule d'orbite d'AnimationsMngr : le point transformé est le centre
|
|
328
352
|
* CANONIQUE du lobe, qui est aussi le pivot de sa rotation locale — une
|
|
329
353
|
* rotation autour de son propre point fixe n'a par construction aucun
|
|
@@ -406,6 +430,10 @@ export declare class ViewInitializer {
|
|
|
406
430
|
*/
|
|
407
431
|
private interpolateCategoriesRGB;
|
|
408
432
|
private startCategoryAnimation;
|
|
433
|
+
private requestTransitionFrame;
|
|
434
|
+
/** Fin de vie : coupe la transition de facette en cours, le suivi de
|
|
435
|
+
* visibilité du diagramme et le rappel de rotation. */
|
|
436
|
+
destroy(): void;
|
|
409
437
|
private startComponentAnimationLoop;
|
|
410
438
|
private getAnimationCurrentState;
|
|
411
439
|
private getComponentAnimationState;
|
|
@@ -442,7 +470,14 @@ export declare class ViewInitializer {
|
|
|
442
470
|
private buildGhostOddSpikes;
|
|
443
471
|
private buildGhostComponentSpikes;
|
|
444
472
|
private areCategoriesEqual;
|
|
445
|
-
|
|
473
|
+
/**
|
|
474
|
+
* Vide un lobe avant son rendu complet, sauf ses libellés (calque des
|
|
475
|
+
* libellés d'arc ODD, score de la facette) : leurs rendus les mettent à
|
|
476
|
+
* jour par jointure, ce qui les garde visibles d'un rendu à l'autre. Les
|
|
477
|
+
* recréer à chaque rendu les faisait repartir d'une opacité nulle — et les
|
|
478
|
+
* laissait invisibles pendant toute une transition de facette.
|
|
479
|
+
*/
|
|
480
|
+
private clearLobeGroup;
|
|
446
481
|
/**
|
|
447
482
|
* Converts hex color to RGB object.
|
|
448
483
|
* @param hex Hex color (e.g., "#FF0000")
|
|
@@ -473,6 +508,9 @@ export declare class ViewInitializer {
|
|
|
473
508
|
*/
|
|
474
509
|
private createYinOrYangGroups;
|
|
475
510
|
private updateYinOrYangGroup;
|
|
511
|
+
/** Signale (en fin de tâche, après le rendu en cours) que les cibles de
|
|
512
|
+
* la rotation ont changé — voir onRotationTargetsChanged. */
|
|
513
|
+
notifyRotationTargetsChanged(): void;
|
|
476
514
|
private applyGhostOverlapRules;
|
|
477
515
|
private buildGeometry;
|
|
478
516
|
private buildSpikes;
|