@micheeeeel/yinyangapp 1.0.5 → 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 -0
- package/dist/bundle.js.LICENSE.txt +1 -0
- package/dist/types/adapters/yinYangAdapter.d.ts +10 -0
- package/dist/types/animations/AnimationsMngr.d.ts +14 -0
- 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 +987 -0
- 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 +60 -0
- package/dist/types/components/model/YinYangModel.d.ts +15 -0
- 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 +232 -0
- package/dist/types/components/view/SpikeDrawer.d.ts +60 -0
- package/dist/types/components/view/ViewInitializer.d.ts +527 -0
- package/dist/types/components/view/YinYangDrawer.d.ts +460 -0
- package/dist/types/components/view/YinYangView.d.ts +52 -0
- 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 +13 -0
- 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/IAnimator.d.ts +3 -0
- package/dist/types/interfaces/ICategory.d.ts +9 -0
- package/dist/types/interfaces/ICauseGraph.d.ts +9 -0
- package/dist/types/interfaces/ICauseModel.d.ts +33 -0
- package/dist/types/interfaces/ICircleManager.d.ts +8 -0
- package/dist/types/interfaces/IGradientStop.d.ts +5 -0
- package/dist/types/interfaces/IGraphicElement.d.ts +15 -0
- package/dist/types/interfaces/IGraphicsStrategy.d.ts +27 -0
- package/dist/types/interfaces/IPropagationLayers.d.ts +27 -0
- package/dist/types/interfaces/ISpikeManager.d.ts +4 -0
- package/dist/types/interfaces/IViewData.d.ts +17 -0
- package/dist/types/interfaces/IYinOrYangPattern.d.ts +8 -0
- package/dist/types/interfaces/IYinYangAppFactory.d.ts +17 -0
- package/dist/types/interfaces/IYinYangController.d.ts +317 -0
- 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 +10 -0
- package/dist/types/interfaces/IYinYangView.d.ts +19 -0
- 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/D3Animator.d.ts +4 -0
- package/dist/types/utils/d3/D3Element.d.ts +20 -0
- package/dist/types/utils/d3/D3GraphicsStrategy.d.ts +78 -0
- 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 +3 -0
- 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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks how many "blocking" animations (rotation, facette/ODD switch, and any
|
|
3
|
+
* future one) are currently running for a single YinYangController instance.
|
|
4
|
+
* Animation subsystems register themselves via begin()/end() instead of the
|
|
5
|
+
* gate having to know about each animation source individually — a new
|
|
6
|
+
* animation only has to call begin()/end() around its own loop to be covered.
|
|
7
|
+
*/
|
|
8
|
+
export declare class BlockingAnimationTracker {
|
|
9
|
+
private active;
|
|
10
|
+
private onChangeCb;
|
|
11
|
+
/** Called whenever the tracker transitions between "nothing active" and
|
|
12
|
+
* "something active" (in either direction). */
|
|
13
|
+
onChange(cb: () => void): void;
|
|
14
|
+
begin(label: string): symbol;
|
|
15
|
+
end(token: symbol): void;
|
|
16
|
+
get isAnyActive(): boolean;
|
|
17
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { ChildrenOrbitEntry } from "../utils/childrenOrbit";
|
|
2
|
+
import { ForceFieldLink, ForceFieldLinkDetail } from "../force-field/types";
|
|
3
|
+
import { EventFieldTarget } from "../utils/eventFieldTargets";
|
|
4
|
+
import { ProjectedCuttingState } from "../actions/ActionProjectionService";
|
|
5
|
+
import { BlockingAnimationTracker } from "./BlockingAnimationTracker";
|
|
6
|
+
type GhostState = {
|
|
7
|
+
projectedGhostTensionByOddId: Map<string, number> | null;
|
|
8
|
+
projectedGhostStateByOddId: Map<string, number> | null;
|
|
9
|
+
projectedGhostComponentTension: number | null;
|
|
10
|
+
projectedGhostCuttingStatesByOddId: Map<string, ProjectedCuttingState[]> | null;
|
|
11
|
+
};
|
|
12
|
+
export declare class YinYangControllerState {
|
|
13
|
+
children: {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
pendingRefresh: boolean;
|
|
16
|
+
activeChildKey: string | null;
|
|
17
|
+
orbitFrameId: number | undefined;
|
|
18
|
+
orbitEnabled: boolean;
|
|
19
|
+
orbitAngle: number;
|
|
20
|
+
orbitSpeed: number;
|
|
21
|
+
orbitRadiusScale: number;
|
|
22
|
+
};
|
|
23
|
+
menu: {
|
|
24
|
+
hasActiveChildAction: boolean;
|
|
25
|
+
activeChildKey: string | null;
|
|
26
|
+
/** Key of the cutting that owns the currently active action (may differ from
|
|
27
|
+
* activeChildKey when the user browses another cutting's buttons while an
|
|
28
|
+
* action is active). */
|
|
29
|
+
actionSourceChildKey: string | null;
|
|
30
|
+
activeActionId: string | null;
|
|
31
|
+
activeActionLabel: string | null;
|
|
32
|
+
itemDistance: number;
|
|
33
|
+
itemScale: number;
|
|
34
|
+
iconFontScale: number;
|
|
35
|
+
/** Ajustement fin (px) de la distance des boutons d'Événement Clé,
|
|
36
|
+
* de part et d'autre de la longueur auto-calculée (voir
|
|
37
|
+
* CoreEventMenuController — offsetDistance dérivé de l'orbite des
|
|
38
|
+
* satellites, pas de contrôle dédié à cette base). */
|
|
39
|
+
coreEventMenuDistanceOffset: number;
|
|
40
|
+
/** Taille des boutons du menu radial des Événements Clés — contrôle dédié
|
|
41
|
+
* ("Taille boutons", groupe "Événements clés"), séparé de itemScale qui
|
|
42
|
+
* ne pilote que les boutons d'action des satellites. */
|
|
43
|
+
coreEventMenuItemScale: number;
|
|
44
|
+
/** Taille des icônes dans les bulles du menu radial des Événements Clés —
|
|
45
|
+
* contrôle dédié ("Taille icônes", groupe "Événements clés"), séparé de
|
|
46
|
+
* iconFontScale qui ne pilote que les icônes d'action des satellites. */
|
|
47
|
+
coreEventIconFontScale: number;
|
|
48
|
+
};
|
|
49
|
+
action: {
|
|
50
|
+
propagationFactor: number;
|
|
51
|
+
delta: number;
|
|
52
|
+
};
|
|
53
|
+
visibility: {
|
|
54
|
+
actionDeltaLabels: boolean;
|
|
55
|
+
childrenContextLabels: boolean;
|
|
56
|
+
allLabelsVisible: boolean;
|
|
57
|
+
};
|
|
58
|
+
/** Réglages "Combos" — voir combo-engine.ts pour la sémantique exacte de
|
|
59
|
+
* chaque plafond levé. Bornés (false) par défaut : comportement actuel. */
|
|
60
|
+
combos: {
|
|
61
|
+
/** Lève le plafond à 1 sur le ratio de performance des prérequis
|
|
62
|
+
* DÉCLENCHEURS (combos non dangereux), ce qui autorise une cascade de
|
|
63
|
+
* combos à dépasser ×2. N'affecte pas les prérequis PROTECTEURS d'un
|
|
64
|
+
* combo dangereux (voir dangerousComboCanBecomeBonus). */
|
|
65
|
+
uncappedChainedPerformance: boolean;
|
|
66
|
+
/** Lève le plafond à 1 sur le ratio de performance des prérequis
|
|
67
|
+
* PROTECTEURS d'un combo dangereux, ce qui permet à m = avgRatio de
|
|
68
|
+
* dépasser ×1 (le risque devient un bonus net). N'affecte pas les
|
|
69
|
+
* combos non dangereux (voir uncappedChainedPerformance). */
|
|
70
|
+
dangerousComboCanBecomeBonus: boolean;
|
|
71
|
+
};
|
|
72
|
+
labels: {
|
|
73
|
+
fontScale: number;
|
|
74
|
+
componentFontScale: number;
|
|
75
|
+
oddFontScale: number;
|
|
76
|
+
facetteFontScale: number;
|
|
77
|
+
facetteSuffixVisible: boolean;
|
|
78
|
+
childStateDeltaFontScale: number;
|
|
79
|
+
childStateDeltaOffset: number;
|
|
80
|
+
childStateDeltaBoxScale: number;
|
|
81
|
+
componentLegendFontScale: number;
|
|
82
|
+
legendLabelsBgEnabled: boolean;
|
|
83
|
+
textShadowEnabled: boolean;
|
|
84
|
+
childMaxLines: number;
|
|
85
|
+
oddMaxLines: number;
|
|
86
|
+
labelShortMaxChars: number;
|
|
87
|
+
childPlacement: "top" | "bottom";
|
|
88
|
+
displayEllipsisForShortLabels: boolean;
|
|
89
|
+
};
|
|
90
|
+
forceField: {
|
|
91
|
+
randomCount: number;
|
|
92
|
+
sourceChildIndex: number;
|
|
93
|
+
sourceChildIndices: number[];
|
|
94
|
+
links: ForceFieldLink[];
|
|
95
|
+
allLinkDetails: ForceFieldLinkDetail[];
|
|
96
|
+
incomingMode: boolean;
|
|
97
|
+
frameId: number | undefined;
|
|
98
|
+
phase: number;
|
|
99
|
+
lastTimestamp: number | undefined;
|
|
100
|
+
orbitData: ChildrenOrbitEntry[] | null;
|
|
101
|
+
revealStartedAt: number | undefined;
|
|
102
|
+
selectedLinkIndex: number | null;
|
|
103
|
+
};
|
|
104
|
+
eventField: {
|
|
105
|
+
targets: EventFieldTarget[];
|
|
106
|
+
frameId: number | undefined;
|
|
107
|
+
phase: number;
|
|
108
|
+
lastTimestamp: number | undefined;
|
|
109
|
+
revealStartedAt: number | undefined;
|
|
110
|
+
};
|
|
111
|
+
ghost: GhostState;
|
|
112
|
+
/** Registers rotation / facette-switch / any future animation that should
|
|
113
|
+
* block ghost display while active. See YinYangController.beginBlockingAnimation. */
|
|
114
|
+
blockingAnimations: BlockingAnimationTracker;
|
|
115
|
+
setActiveChildKey(childKey: string | null): void;
|
|
116
|
+
setChildrenEnabled(isEnabled: boolean): void;
|
|
117
|
+
setChildrenPendingRefresh(isPending: boolean): void;
|
|
118
|
+
setOrbitEnabled(isEnabled: boolean): void;
|
|
119
|
+
setOrbitSpeed(speed: number): void;
|
|
120
|
+
setOrbitRadiusScale(scale: number): void;
|
|
121
|
+
setOrbitFrameId(frameId: number | undefined): void;
|
|
122
|
+
resetOrbitAngle(): void;
|
|
123
|
+
clearMenuActiveSelection(): void;
|
|
124
|
+
setMenuActiveChild(childKey: string | null): void;
|
|
125
|
+
setActionSourceChildKey(childKey: string | null): void;
|
|
126
|
+
setMenuActiveAction(actionId: string | null): void;
|
|
127
|
+
setHasActiveChildAction(isActive: boolean): void;
|
|
128
|
+
setForceFieldSourceChildIndex(index: number): void;
|
|
129
|
+
setForceFieldSourceChildIndices(indices: number[]): void;
|
|
130
|
+
setIncomingForceFieldLinks(links: ForceFieldLink[], allDetails: ForceFieldLinkDetail[]): void;
|
|
131
|
+
setForceFieldRandomCount(count: number): void;
|
|
132
|
+
setActionDeltaLabelsVisible(isVisible: boolean): void;
|
|
133
|
+
setComboUncappedChainedPerformance(isEnabled: boolean): void;
|
|
134
|
+
setComboDangerousCanBecomeBonus(isEnabled: boolean): void;
|
|
135
|
+
setChildrenContextLabelsVisible(isVisible: boolean): void;
|
|
136
|
+
getAllLabelsVisible(): boolean;
|
|
137
|
+
setAllLabelsVisible(isVisible: boolean): void;
|
|
138
|
+
setLabelsFontScale(scale: number): void;
|
|
139
|
+
setLabelsTextShadowEnabled(isEnabled: boolean): void;
|
|
140
|
+
setChildLabelPlacement(position: "top" | "bottom"): void;
|
|
141
|
+
setComponentLabelFontScale(scale: number): void;
|
|
142
|
+
setChildStateDeltaFontScale(scale: number): void;
|
|
143
|
+
setChildStateDeltaOffset(offset: number): void;
|
|
144
|
+
setChildStateDeltaBoxScale(scale: number): void;
|
|
145
|
+
setOddLabelFontScale(scale: number): void;
|
|
146
|
+
setFacetteLabelFontScale(scale: number): void;
|
|
147
|
+
setFacetteLabelSuffixVisible(isVisible: boolean): void;
|
|
148
|
+
setComponentLegendLabelFontScale(scale: number): void;
|
|
149
|
+
setLegendLabelsBgEnabled(enabled: boolean): void;
|
|
150
|
+
setMenuItemDistance(distance: number): void;
|
|
151
|
+
setMenuItemScale(scale: number): void;
|
|
152
|
+
setMenuIconFontScale(scale: number): void;
|
|
153
|
+
setCoreEventMenuDistanceOffset(offset: number): void;
|
|
154
|
+
setCoreEventMenuItemScale(scale: number): void;
|
|
155
|
+
setCoreEventIconFontScale(scale: number): void;
|
|
156
|
+
setChildLabelMaxLines(lines: number): void;
|
|
157
|
+
setOddLabelMaxLines(lines: number): void;
|
|
158
|
+
setLabelShortMaxChars(chars: number): void;
|
|
159
|
+
setDisplayEllipsisForShortLabels(enabled: boolean): void;
|
|
160
|
+
setForceFieldOrbitData(orbitData: ChildrenOrbitEntry[] | null): void;
|
|
161
|
+
setForceFieldFrameId(frameId: number | undefined): void;
|
|
162
|
+
setForceFieldLastTimestamp(timestamp: number | undefined): void;
|
|
163
|
+
setForceFieldSelectedLinkIndex(index: number | null): void;
|
|
164
|
+
setForceFieldRevealStartedAt(timestamp: number | undefined): void;
|
|
165
|
+
setForceFieldLinksAndDetails(links: ForceFieldLink[], allLinkDetails: ForceFieldLinkDetail[]): void;
|
|
166
|
+
setEventFieldTargets(targets: EventFieldTarget[]): void;
|
|
167
|
+
setEventFieldFrameId(frameId: number | undefined): void;
|
|
168
|
+
setEventFieldLastTimestamp(timestamp: number | undefined): void;
|
|
169
|
+
setEventFieldPhase(phase: number): void;
|
|
170
|
+
setEventFieldRevealStartedAt(timestamp: number | undefined): void;
|
|
171
|
+
toggleForceFieldSelection(index: number): boolean;
|
|
172
|
+
applyGhostProjection(ghost: GhostState): void;
|
|
173
|
+
clearForceFieldComputation(): void;
|
|
174
|
+
resetGhostProjection(): void;
|
|
175
|
+
}
|
|
176
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type StackLayoutMetrics = {
|
|
2
|
+
firstSlotCenterY: number;
|
|
3
|
+
slotSpacing: number;
|
|
4
|
+
compactLength: number;
|
|
5
|
+
};
|
|
6
|
+
export type ClientRectLike = {
|
|
7
|
+
left: number;
|
|
8
|
+
right: number;
|
|
9
|
+
top: number;
|
|
10
|
+
bottom: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function getStackInsertionIndexFromGlobalY(globalY: number, metrics: StackLayoutMetrics | null): number;
|
|
13
|
+
export declare function isPointInsideClientRect(clientX: number, clientY: number, rect: ClientRectLike | null): boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IYinYangController } from "../../../interfaces/IYinYangController";
|
|
2
|
+
export type ChildrenOrbitEntry = {
|
|
3
|
+
controller: IYinYangController;
|
|
4
|
+
dx: number;
|
|
5
|
+
dy: number;
|
|
6
|
+
radius: number;
|
|
7
|
+
baseAngle: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function buildChildrenOrbitData(params: {
|
|
10
|
+
parentX: number;
|
|
11
|
+
parentY: number;
|
|
12
|
+
childControllers: IYinYangController[];
|
|
13
|
+
radiusScale: number;
|
|
14
|
+
}): ChildrenOrbitEntry[];
|
|
15
|
+
export declare function computeOrbitTranslation(orbitEntry: ChildrenOrbitEntry, angleOffset: number): {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { YinYangComponentNode } from "../../../interfaces/IYinYangInternalModel";
|
|
2
|
+
export declare function getComponentTitle(component: YinYangComponentNode | null | undefined): string;
|
|
3
|
+
export declare function getCuttingLabel(component: YinYangComponentNode | null | undefined, oddId: string, cuttingIndex: number): string;
|
|
4
|
+
export declare function getCuttingShortLabel(params: {
|
|
5
|
+
component: YinYangComponentNode | null | undefined;
|
|
6
|
+
oddId: string;
|
|
7
|
+
cuttingIndex: number;
|
|
8
|
+
maxChars: number;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type EventFieldColors = {
|
|
2
|
+
/** Cordon au repos entre deux souffles — presque éteint. */
|
|
3
|
+
cord: string;
|
|
4
|
+
/** Segment de cordon allumé par le passage d'un anneau. */
|
|
5
|
+
capsule: string;
|
|
6
|
+
/** Anneaux émis par le cœur, et halo général. */
|
|
7
|
+
ring: string;
|
|
8
|
+
glow: string;
|
|
9
|
+
/** Blanc chaud du point d'impact. */
|
|
10
|
+
core: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function getEventFieldColors(): EventFieldColors;
|
|
13
|
+
export declare function getEventFieldCapsuleWidth(scoreBonus: number): number;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ActionStackItem } from "../action-stack/ActionStackController";
|
|
2
|
+
import type { KeyEventDefinition } from "../../../data/yasuni_key_events";
|
|
3
|
+
import { IYinYangController } from "../../../interfaces/IYinYangController";
|
|
4
|
+
export type EventFieldTarget = {
|
|
5
|
+
/** Index dans childControllers de la facette active — cible dans la même
|
|
6
|
+
* facette que le cœur émetteur. */
|
|
7
|
+
childIndex?: number;
|
|
8
|
+
/** Id de la facette cible, quand le satellite amplifié vit dans une autre
|
|
9
|
+
* facette — résolu par l'appelant vers le point de bordure de son arc
|
|
10
|
+
* (même mécanisme que ForceFieldRenderer pour les champs de force
|
|
11
|
+
* cross-composante). */
|
|
12
|
+
targetComponentId?: string;
|
|
13
|
+
/** Bonus de score de l'événement pour un satellite réellement amplifié,
|
|
14
|
+
* 0 pour un satellite simplement à portée — pilote l'épaisseur du
|
|
15
|
+
* souffle (voir getEventFieldCapsuleWidth). */
|
|
16
|
+
scoreBonus: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Whether `keyEvent`'s static scope (collectReachedSatellites) includes at
|
|
20
|
+
* least one satellite living in `componentId`. Used when the user switches
|
|
21
|
+
* facette to decide whether the active Champ d'événement should keep
|
|
22
|
+
* driving the field in the destination facette (incoming continuation) or
|
|
23
|
+
* be cleared like it is for any unrelated facette — see
|
|
24
|
+
* YinYangController.prepareForComponentSwitch.
|
|
25
|
+
*/
|
|
26
|
+
export declare function keyEventReachesComponent(keyEvent: KeyEventDefinition, componentId: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Résout les cibles du "Champ d'événement" pour l'Événement Clé actuellement
|
|
29
|
+
* actif (aperçu ou validé) : sa portée statique, résolue en index de satellite
|
|
30
|
+
* dans la facette courante ou en id de facette distante.
|
|
31
|
+
*
|
|
32
|
+
* L'épaisseur du souffle distingue les satellites RÉELLEMENT amplifiés ici et
|
|
33
|
+
* maintenant — ceux dont une action ciblée est cochée dans la pile — de ceux
|
|
34
|
+
* qui ne sont qu'à portée : les premiers reçoivent le bonus de score de
|
|
35
|
+
* l'événement, les seconds 0 (souffle minimal).
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildEventFieldTargets(params: {
|
|
38
|
+
keyEvent: KeyEventDefinition;
|
|
39
|
+
activeItems: ActionStackItem[];
|
|
40
|
+
currentComponentId: string | undefined;
|
|
41
|
+
childControllers: IYinYangController[];
|
|
42
|
+
childOddMap: Map<string, {
|
|
43
|
+
oddId: string;
|
|
44
|
+
score: number;
|
|
45
|
+
cuttingIndex: number;
|
|
46
|
+
}>;
|
|
47
|
+
}): EventFieldTarget[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function getInterOddRationale(componentId: string, fromOddId: string, toOddId: string): string | null;
|
|
2
|
+
export declare function getLayersInvolved(componentId: string, fromOddId: string, toOddId: string): string[];
|
|
3
|
+
export declare function getLocalLayerWeightSummary(componentId: string, fromOddId: string, toOddId: string): string | null;
|
|
4
|
+
export declare function getBridgeLayerWeightSummary(componentId: string, fromOddId: string, toOddId: string): string | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ForceFieldLayerType = "inter" | "intra" | "bridge";
|
|
2
|
+
export type ForceFieldDeltaDetail = {
|
|
3
|
+
layerType: ForceFieldLayerType;
|
|
4
|
+
deltaTo: number;
|
|
5
|
+
};
|
|
6
|
+
export declare function getForceFieldWeightLabel(layerType: ForceFieldLayerType): string;
|
|
7
|
+
export declare function getLayerDisplayName(layerType: ForceFieldLayerType): string;
|
|
8
|
+
export declare function getPropagationCardTitle(layerType: ForceFieldLayerType): string;
|
|
9
|
+
export declare function calculateDisplayedDelta(details: ForceFieldDeltaDetail[]): number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ForceFieldColors = {
|
|
2
|
+
aura: string;
|
|
3
|
+
auraGlow: string;
|
|
4
|
+
energy: string;
|
|
5
|
+
energyGlow: string;
|
|
6
|
+
core: string;
|
|
7
|
+
coreGlow: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function getForceFieldThickness(weight: number): number;
|
|
10
|
+
export declare function getForceFieldColors(potentialGain: number): ForceFieldColors;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { YinYangController } from "../controller/YinYangController";
|
|
2
|
+
import { YinYangAppFactory } from "../factory/YinYangAppFactory";
|
|
3
|
+
export interface VizControlsDeps {
|
|
4
|
+
controllerCause: YinYangController;
|
|
5
|
+
factory: YinYangAppFactory;
|
|
6
|
+
layoutState: {
|
|
7
|
+
actionStackColumnWidth: number;
|
|
8
|
+
};
|
|
9
|
+
renderColumnLayouts: () => void;
|
|
10
|
+
animationConfig: {
|
|
11
|
+
rotationDurationMs: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function mountVizControls(deps: VizControlsDeps): void;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { AnimationsMngr } from "../../animations/AnimationsMngr";
|
|
2
|
+
import { IYinYangModel } from "../../interfaces/IYinYangModel";
|
|
3
|
+
import { IYinYangView } from "../../interfaces/IYinYangView";
|
|
4
|
+
import { IYinYangController } from "../../interfaces/IYinYangController";
|
|
5
|
+
import { IGraphicsStrategy } from "../../interfaces/IGraphicsStrategy";
|
|
6
|
+
import { IYinYangAppFactory } from "../../interfaces/IYinYangAppFactory";
|
|
7
|
+
import { IViewData } from "../../interfaces/IViewData";
|
|
8
|
+
import { YinYangInternalModel } from "../../interfaces/IYinYangInternalModel";
|
|
9
|
+
export declare class YinYangAppFactory implements IYinYangAppFactory {
|
|
10
|
+
instances: Map<string, IYinYangController>;
|
|
11
|
+
private idCounter;
|
|
12
|
+
graphicsStrategy: IGraphicsStrategy;
|
|
13
|
+
animator: AnimationsMngr;
|
|
14
|
+
constructor(graphicsStrategy: IGraphicsStrategy);
|
|
15
|
+
/**
|
|
16
|
+
* Generates a unique ID for each created instance.
|
|
17
|
+
*/
|
|
18
|
+
private generateUniqueId;
|
|
19
|
+
/**
|
|
20
|
+
* Returns all created instances of YinYangController.
|
|
21
|
+
*/
|
|
22
|
+
getInstances(): Map<string, IYinYangController>;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new YinYang model.
|
|
25
|
+
*
|
|
26
|
+
* @param modelData - Internal model data for the instance.
|
|
27
|
+
* @param parentKey - The key of the parent model if any.
|
|
28
|
+
* @returns A new instance of YinYangModel.
|
|
29
|
+
*/
|
|
30
|
+
createModel(modelData: YinYangInternalModel, parentKey?: string | null): IYinYangModel;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new view for the YinYang diagram.
|
|
33
|
+
*
|
|
34
|
+
* @returns A new instance of YinYangView.
|
|
35
|
+
*/
|
|
36
|
+
createView(): IYinYangView;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new controller to manage interactions between the model and the view.
|
|
39
|
+
*
|
|
40
|
+
* @param model - The YinYang model instance.
|
|
41
|
+
* @param view - The YinYang view instance.
|
|
42
|
+
* @returns A new instance of YinYangController.
|
|
43
|
+
*/
|
|
44
|
+
createController(model: IYinYangModel, view: IYinYangView): IYinYangController;
|
|
45
|
+
/**
|
|
46
|
+
* Initializes the animation manager.
|
|
47
|
+
*
|
|
48
|
+
* @returns A new instance of AnimationsMngr to handle animations.
|
|
49
|
+
*/
|
|
50
|
+
createAnimationsManager(): AnimationsMngr;
|
|
51
|
+
/**
|
|
52
|
+
* Creates the full YinYang application including model, view, and controller.
|
|
53
|
+
*
|
|
54
|
+
* @param modelData - The data for the model.
|
|
55
|
+
* @param viewData - The data for the view (e.g., dimensions, container ID).
|
|
56
|
+
* @param parentKey - Optional key for a parent instance.
|
|
57
|
+
* @returns The created YinYangController.
|
|
58
|
+
*/
|
|
59
|
+
create(modelData: YinYangInternalModel, viewData: IViewData, parentKey?: string | null): IYinYangController;
|
|
60
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { YinYangInternalModel } from "../../interfaces/IYinYangInternalModel";
|
|
2
|
+
import { IYinYangModel } from "../../interfaces/IYinYangModel";
|
|
3
|
+
export declare class YinYangModel implements IYinYangModel {
|
|
4
|
+
internalModel: YinYangInternalModel;
|
|
5
|
+
key: string;
|
|
6
|
+
parentKey: string | null;
|
|
7
|
+
childCounter: number;
|
|
8
|
+
borderNb: number;
|
|
9
|
+
constructor(internalModel: YinYangInternalModel, key: string, parentKey?: string | null);
|
|
10
|
+
/**
|
|
11
|
+
* Generates a unique key for child instances.
|
|
12
|
+
*/
|
|
13
|
+
generateChildKey(): string;
|
|
14
|
+
resetChildCounter(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { YinYangController } from "../controller/YinYangController";
|
|
2
|
+
import { type Composante } from "../../data/yasuni_cause";
|
|
3
|
+
import { PanelManager } from "./PanelManager";
|
|
4
|
+
export interface DiagramPanelBridgeDeps {
|
|
5
|
+
panelManager: PanelManager;
|
|
6
|
+
controllerCause: YinYangController;
|
|
7
|
+
switchToTab: (id: string) => void;
|
|
8
|
+
yasuniCause: Composante[];
|
|
9
|
+
actionNameMap: Map<string, string>;
|
|
10
|
+
causeOddColors: Record<string, string>;
|
|
11
|
+
/** Called when the user clicks a cutting satellite in the diagram. Used to
|
|
12
|
+
* sync the STACK hierarchy in the other direction (diagram → hierarchy). */
|
|
13
|
+
onDiagramCuttingNav?: (event: {
|
|
14
|
+
componentIndex: number;
|
|
15
|
+
oddId: string;
|
|
16
|
+
cuttingIndex: number;
|
|
17
|
+
}) => void;
|
|
18
|
+
/** Called when the user clicks a composante (Facette) — arc de bordure du diagramme
|
|
19
|
+
* ou navigation indirecte via searchHandleComposanteClick. Sert à synchroniser le
|
|
20
|
+
* chip et l'historique STACK au niveau Facette. */
|
|
21
|
+
onDiagramComposanteNav?: (componentIndex: number) => void;
|
|
22
|
+
/** Called when a diagram action drag intent is detected, after the built-in
|
|
23
|
+
* tab switch logic. Used to e.g. close the stack hierarchy dropdown. */
|
|
24
|
+
onDiagramActionDragIntent?: () => void;
|
|
25
|
+
/** Called when a propagation block fires while in STACK mode, so that card-link
|
|
26
|
+
* navigation (clicking a propagation target in the ANALYSE detail cards) is
|
|
27
|
+
* recorded in the STACK navigation history. */
|
|
28
|
+
onStackPropagationNav?: (compId: string, oddId: string, cutIdx: number) => void;
|
|
29
|
+
}
|
|
30
|
+
export declare class DiagramPanelBridge {
|
|
31
|
+
private readonly deps;
|
|
32
|
+
constructor(deps: DiagramPanelBridgeDeps);
|
|
33
|
+
wire(): void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { YinYangController } from "../controller/YinYangController";
|
|
2
|
+
import { GlobalSearchController, SearchNavTarget } from "../search/GlobalSearchController";
|
|
3
|
+
import { type Composante } from "../../data/yasuni_cause";
|
|
4
|
+
export interface PanelSlot {
|
|
5
|
+
controller: GlobalSearchController;
|
|
6
|
+
panelEl: HTMLElement;
|
|
7
|
+
headerEl: HTMLElement;
|
|
8
|
+
titleEl: HTMLElement;
|
|
9
|
+
lockEl: HTMLButtonElement;
|
|
10
|
+
backEl: HTMLButtonElement | null;
|
|
11
|
+
forwardEl: HTMLButtonElement | null;
|
|
12
|
+
resizerEl: HTMLElement;
|
|
13
|
+
collapsed: boolean;
|
|
14
|
+
locked: boolean;
|
|
15
|
+
isMaster: boolean;
|
|
16
|
+
_openHeight: number;
|
|
17
|
+
_linkedTitle: boolean;
|
|
18
|
+
_history: Array<() => void>;
|
|
19
|
+
_histIdx: number;
|
|
20
|
+
_histNav: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface PanelManagerDeps {
|
|
23
|
+
controllerCause: YinYangController;
|
|
24
|
+
yasuniCause: Composante[];
|
|
25
|
+
actionNameMap: Map<string, string>;
|
|
26
|
+
globalSearch: GlobalSearchController;
|
|
27
|
+
switchToTab: (id: string) => void;
|
|
28
|
+
attachAxisResizer: (handle: HTMLDivElement | null, axis: "x" | "y", cursor: string, onStart: () => number, onDelta: (nextValue: number) => void) => void;
|
|
29
|
+
layoutState: {
|
|
30
|
+
rechercheContextHeight: number;
|
|
31
|
+
};
|
|
32
|
+
applyRechercheContextHeight: (h: number) => void;
|
|
33
|
+
resizerRechercheContext: HTMLElement | null;
|
|
34
|
+
}
|
|
35
|
+
export declare class PanelManager {
|
|
36
|
+
private readonly deps;
|
|
37
|
+
readonly panelSlots: (PanelSlot | null)[];
|
|
38
|
+
masterSlotIdx: number | null;
|
|
39
|
+
suppressSatelliteSearchUpdate: boolean;
|
|
40
|
+
pendingNavSourceSlot: number;
|
|
41
|
+
lastPropagationSlot: number;
|
|
42
|
+
masterCuttingPending: boolean;
|
|
43
|
+
masterCuttingHistoryPushed: boolean;
|
|
44
|
+
diagramNavMasterHistLenAtStart: number;
|
|
45
|
+
/** Jeton de génération pour historyBack/historyForward — voir leur commentaire. */
|
|
46
|
+
private navGen;
|
|
47
|
+
oddNavState: {
|
|
48
|
+
componentIndex: number;
|
|
49
|
+
oddId: string;
|
|
50
|
+
mode: "highlight";
|
|
51
|
+
} | null;
|
|
52
|
+
constructor(deps: PanelManagerDeps);
|
|
53
|
+
/** Appelé après le constructeur une fois le DOM prêt. */
|
|
54
|
+
init(): void;
|
|
55
|
+
/** Diagramme → arbre : reflète l'état du menu radial des Événements Clés dans
|
|
56
|
+
* le panneau qui pilote le diagramme (le maître, ou le panneau 1 tant qu'il
|
|
57
|
+
* n'y en a pas — même règle que setOnKeyEventGroupToggle). */
|
|
58
|
+
syncKeyEventGroupFromDiagram(componentIndex: number, open: boolean): void;
|
|
59
|
+
getMasterController(): GlobalSearchController | null;
|
|
60
|
+
private findNextUnlocked;
|
|
61
|
+
setPanelTitle(slotIdx: number, prefix: string, name?: string, badge?: {
|
|
62
|
+
label: string;
|
|
63
|
+
cssClass: string;
|
|
64
|
+
}, rationale?: string, oddColor?: string, stateValue?: number, weightValue?: number, iconUrl?: string): void;
|
|
65
|
+
private redistributeOpenHeights;
|
|
66
|
+
private setPanelCollapsed;
|
|
67
|
+
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. */
|
|
70
|
+
getMasterSelectedTarget(): SearchNavTarget | null;
|
|
71
|
+
/**
|
|
72
|
+
* Rejoue sur le diagramme ce que le panneau MAÎTRE montre déjà — appelé au
|
|
73
|
+
* retour en mode RECHERCHE, où l'onglet réaffiche le dernier élément
|
|
74
|
+
* sélectionné alors que le diagramme, lui, vient d'être vidé des champs de
|
|
75
|
+
* la pile (clearForceFieldForModeSwitch). Les deux côtés doivent montrer la
|
|
76
|
+
* même chose quel que soit le mode ; sans ça, il fallait recliquer sur
|
|
77
|
+
* l'élément déjà affiché pour retrouver ses champs.
|
|
78
|
+
*
|
|
79
|
+
* Passe par les chemins de RESTAURATION (restoreActionDiagramState,
|
|
80
|
+
* restoreKeyEventDiagramState, forceOpen) et non par ceux d'un clic : l'état
|
|
81
|
+
* est déjà connu, il ne doit ni basculer en toggle-close ni redessiner la
|
|
82
|
+
* 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
|
+
*/
|
|
96
|
+
resyncDiagramToMasterPanel(fallbackTarget?: SearchNavTarget | null): void;
|
|
97
|
+
/**
|
|
98
|
+
* @param forceOpen À passer à true quand target restaure un état déjà connu
|
|
99
|
+
* (rejeu d'historique back/forward, panneau qui redevient maître) plutôt
|
|
100
|
+
* qu'un vrai clic utilisateur. searchNavigateToCutting bascule sinon en
|
|
101
|
+
* toggle-close si le satellite ciblé est encore celui dont le menu est
|
|
102
|
+
* flaggé actif (state.menu.activeChildKey périmé) — symptôme observé :
|
|
103
|
+
* la mise à jour ne se faisait qu'un clic Retour/Suivant sur deux.
|
|
104
|
+
*/
|
|
105
|
+
syncDiagramToTarget(target: SearchNavTarget, forceOpen?: boolean): void;
|
|
106
|
+
private setMaster;
|
|
107
|
+
private setPanelLocked;
|
|
108
|
+
openPanel(slotIdx: number, skipSync?: boolean): void;
|
|
109
|
+
private closePanel;
|
|
110
|
+
activateLinkedPanel(slotIdx: number): void;
|
|
111
|
+
resolveTargetSlot(): {
|
|
112
|
+
idx: number;
|
|
113
|
+
isLinked: boolean;
|
|
114
|
+
src: number;
|
|
115
|
+
};
|
|
116
|
+
wrapAttachHandlersForSlot(originalAttach: (c: HTMLElement) => void, slotIdx: number): (c: HTMLElement) => void;
|
|
117
|
+
private wireSlotNavigation;
|
|
118
|
+
private buildContextPanelDOM;
|
|
119
|
+
ensureSlot(slotIdx: number): PanelSlot;
|
|
120
|
+
pushHistory(slotIdx: number, restore: () => void): void;
|
|
121
|
+
private updateHistoryBtns;
|
|
122
|
+
/**
|
|
123
|
+
* Rejoue l'entrée d'historique courante du slot, en attendant qu'un éventuel
|
|
124
|
+
* switch de composante en cours (déclenché par un clic Retour/Suivant précédent,
|
|
125
|
+
* animation ~800ms) se termine avant d'appliquer la restauration. Sans ce garde,
|
|
126
|
+
* un clic rapide pendant l'animation faisait avancer _histIdx alors que la
|
|
127
|
+
* closure de restauration s'exécutait quand même sur un diagramme "occupé" —
|
|
128
|
+
* certains de ses effets (syncDiagramToTarget -> searchHandleComposanteClick)
|
|
129
|
+
* sont silencieusement ignorés par le guard isComponentSwitching interne,
|
|
130
|
+
* désynchronisant diagramme/panneau/hiérarchie de la position réelle de
|
|
131
|
+
* l'historique. gen permet d'abandonner si une navigation plus récente a
|
|
132
|
+
* entretemps pris le dessus (même slot ou un autre, le diagramme étant partagé).
|
|
133
|
+
*/
|
|
134
|
+
private replayHistoryEntry;
|
|
135
|
+
private historyBack;
|
|
136
|
+
private historyForward;
|
|
137
|
+
makeActionRestoreFn(idx: number, compId: string, oddId: string, cutIdx: number, actionId: string, cardsHtml: string, attachHandlers: (c: HTMLElement) => void, src: number, actionName: string, titlePrefix?: string, linkedTitle?: boolean): () => void;
|
|
138
|
+
makePropRestoreFn(idx: number, compId: string, oddId: string, cutIdx: number, html: string, attachHandlers: (c: HTMLElement) => void, src: number, sourceDesc: {
|
|
139
|
+
breadcrumb: string;
|
|
140
|
+
title: string;
|
|
141
|
+
description: string;
|
|
142
|
+
} | undefined, rationale: string | undefined, isLinked: boolean): () => void;
|
|
143
|
+
private wireSlotInteraction;
|
|
144
|
+
private initPanel1;
|
|
145
|
+
private initPanel2;
|
|
146
|
+
updateStackBadge(): void;
|
|
147
|
+
private wireSearchDrag;
|
|
148
|
+
/** Initialise le master et les hauteurs apres rendu. */
|
|
149
|
+
initMasterAndHeights(): void;
|
|
150
|
+
}
|