@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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animation commune des replis/déploiements : la bascule d'état reste
|
|
3
|
+
* synchrone (classe, attribut `hidden`…), seule la hauteur de l'élément est
|
|
4
|
+
* interpolée de l'ancienne valeur à la nouvelle (mesure avant/après, Web
|
|
5
|
+
* Animations). L'état logique est donc à jour dès le clic — un re-rendu ou
|
|
6
|
+
* une mesure lit la valeur finale, jamais une valeur différée.
|
|
7
|
+
*
|
|
8
|
+
* Au repli, le contenu masqué par la bascule (display:none, hidden, line-clamp)
|
|
9
|
+
* disparaîtrait d'un coup et l'élément se refermerait sur du vide : `hold`
|
|
10
|
+
* le garde visible le temps de l'animation et rend la fonction qui le relâche.
|
|
11
|
+
*
|
|
12
|
+
* Pendant l'animation, l'élément porte `data-collapse-anim` ; à la fin il
|
|
13
|
+
* émet COLLAPSE_ANIM_END (bulle), ce qui permet aux calculs de mise en page
|
|
14
|
+
* (chainCardHeight) d'ignorer les hauteurs intermédiaires et de se recaler.
|
|
15
|
+
*
|
|
16
|
+
* Les zones défilantes qui ne débordaient pas avant la bascule (panneau
|
|
17
|
+
* parent, liste interne) gardent leur barre de défilement masquée pendant
|
|
18
|
+
* l'animation : une hauteur intermédiaire peut les faire déborder un instant.
|
|
19
|
+
*/
|
|
20
|
+
export declare const COLLAPSE_ANIM_DURATION_MS = 240;
|
|
21
|
+
export declare const COLLAPSE_ANIM_END = "collapseanimend";
|
|
22
|
+
export declare const COLLAPSE_ANIM_ATTR = "data-collapse-anim";
|
|
23
|
+
export interface HeightAnimationOptions {
|
|
24
|
+
/** Repli : garde visible le contenu sortant, rend la fonction qui le relâche. */
|
|
25
|
+
hold?: () => (() => void) | void;
|
|
26
|
+
/** Élément dont l'opacité suit le mouvement (contenu entrant / sortant). */
|
|
27
|
+
fade?: HTMLElement | null;
|
|
28
|
+
duration?: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function prefersReducedMotion(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Applique `mutate` (la bascule d'état) et anime la hauteur de `el` de sa
|
|
33
|
+
* valeur courante — éventuellement en cours d'animation, un double clic
|
|
34
|
+
* repart donc d'où il en est — à sa nouvelle valeur.
|
|
35
|
+
*/
|
|
36
|
+
export declare function animateHeightChange(el: HTMLElement, mutate: () => void, options?: HeightAnimationOptions): void;
|
|
37
|
+
/** Apparition d'un contenu révélé autrement que par la hauteur (ex. carte qui
|
|
38
|
+
* s'élargit) : fondu seul. */
|
|
39
|
+
export declare function fadeIn(el: HTMLElement | null | undefined): void;
|
|
@@ -10,6 +10,8 @@ export declare class D3GraphicsStrategy implements IGraphicsStrategy {
|
|
|
10
10
|
private arcMaskCache;
|
|
11
11
|
private underlyingGradientCache;
|
|
12
12
|
private maskIdCurrentCacheKey;
|
|
13
|
+
private gradientIdCurrentCacheKey;
|
|
14
|
+
private liveDefNodes;
|
|
13
15
|
/**
|
|
14
16
|
* Initializes the SVG element and appends it to the given selector.
|
|
15
17
|
* Also creates a 'defs' section for reusable graphical elements like gradients.
|
|
@@ -26,6 +28,8 @@ export declare class D3GraphicsStrategy implements IGraphicsStrategy {
|
|
|
26
28
|
drawCircle(parent: D3Element, cx: number, cy: number, radius: number, fill: string, opacity?: number): D3Element;
|
|
27
29
|
private escapeAttributeValue;
|
|
28
30
|
private getDefById;
|
|
31
|
+
private getLiveDefById;
|
|
32
|
+
removeDefsByIds(ids: Iterable<string>): void;
|
|
29
33
|
private defExists;
|
|
30
34
|
private getCacheKey;
|
|
31
35
|
/**
|
|
@@ -56,13 +60,26 @@ export declare class D3GraphicsStrategy implements IGraphicsStrategy {
|
|
|
56
60
|
*/
|
|
57
61
|
createYinOrYangArcMask(maskId: string, cx: number, cy: number, innerRadius: number, outerRadius: number, startAngle: number, endAngle: number, type: "yin" | "yang", blendOpacity?: number): string;
|
|
58
62
|
/**
|
|
59
|
-
*
|
|
63
|
+
* Géométrie d'un masque d'arc (createYinOrYangArcMask) : deux bandes en
|
|
64
|
+
* dégradé aux bords de l'arc (fondu des extrémités) et l'arc plein. Partagée
|
|
65
|
+
* par la création et la mise à jour en place (updateYinOrYangArcMask), pour
|
|
66
|
+
* qu'une frame de transition écrive exactement les attributs qu'un rendu
|
|
67
|
+
* complet aurait posés.
|
|
60
68
|
*/
|
|
61
|
-
|
|
69
|
+
private computeArcMaskShape;
|
|
70
|
+
/**
|
|
71
|
+
* Met à jour EN PLACE un masque posé par createYinOrYangArcMask (mêmes
|
|
72
|
+
* paramètres) : attributs des deux bandes, de l'arc et opacité de fondu,
|
|
73
|
+
* sans rien retirer ni ajouter au <defs>. Sert aux frames de transition de
|
|
74
|
+
* facette (YinYangDrawer.updateSwitchFrame). Renvoie false si le masque
|
|
75
|
+
* n'existe pas ou n'a pas la structure attendue : l'appelant repasse alors
|
|
76
|
+
* par un rendu complet.
|
|
77
|
+
*/
|
|
78
|
+
updateYinOrYangArcMask(maskId: string, cx: number, cy: number, innerRadius: number, outerRadius: number, startAngle: number, endAngle: number, type: "yin" | "yang", blendOpacity?: number): boolean;
|
|
62
79
|
/**
|
|
63
|
-
*
|
|
80
|
+
* Creates a mask for the border with a radial gradient to simulate fading edges.
|
|
64
81
|
*/
|
|
65
|
-
|
|
82
|
+
createBorderMask(id: string, centerX: number, centerY: number, innerRadius: number, outerRadius: number): void;
|
|
66
83
|
/**
|
|
67
84
|
* Draws a line with a gradient stroke.
|
|
68
85
|
*/
|
|
@@ -71,8 +88,14 @@ export declare class D3GraphicsStrategy implements IGraphicsStrategy {
|
|
|
71
88
|
* Creates a radial gradient for an underlying circle.
|
|
72
89
|
*/
|
|
73
90
|
createUnderlyingCircleGradient(id: string, color: string, spread?: number, intensity?: number): string;
|
|
91
|
+
/**
|
|
92
|
+
* Repeint en place un dégradé posé par createUnderlyingCircleGradient
|
|
93
|
+
* (mêmes étalement et intensité) : seule la couleur de ses arrêts change.
|
|
94
|
+
* Renvoie false s'il n'existe plus (l'appelant repasse par un rendu complet).
|
|
95
|
+
*/
|
|
96
|
+
updateUnderlyingCircleGradientColor(id: string, color: string, spread?: number, intensity?: number): boolean;
|
|
74
97
|
/**
|
|
75
98
|
* Creates an underlying circle with a gradient and applies an arc mask.
|
|
76
99
|
*/
|
|
77
|
-
createUnderlyingCircleWithArcMask(maskId: string | undefined, gradientId: string, parent: D3Element, cx: number, cy: number, radius: number):
|
|
100
|
+
createUnderlyingCircleWithArcMask(maskId: string | undefined, gradientId: string, parent: D3Element, cx: number, cy: number, radius: number): D3Element;
|
|
78
101
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { KeyEventEffect } from "../data/yasuni_key_events";
|
|
2
1
|
/** Ce dont une chip a besoin — sous-ensemble d'ActionDefinition. */
|
|
3
2
|
export interface ChipDeltas {
|
|
4
3
|
baseDelta: number;
|
|
@@ -10,6 +9,3 @@ export declare function formatDelta(value: number): string;
|
|
|
10
9
|
export declare function formatSignedDelta(value: number): string;
|
|
11
10
|
/** Deltas du catalogue, sur une ligne Action. */
|
|
12
11
|
export declare function buildActionChipsHtml(action: ChipDeltas): string;
|
|
13
|
-
/** Bonus d'un Événement Clé — points ajoutés aux actions amplifiées. Sert
|
|
14
|
-
* aussi au malus d'une action adverse (mêmes champs, signe négatif). */
|
|
15
|
-
export declare function buildKeyEventChipsHtml(effect: KeyEventEffect): string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Utilitaire pour exporter et copier les contrôles du panneau debug */
|
|
2
|
+
export interface ExportOptions {
|
|
3
|
+
selectedIds?: Set<string>;
|
|
4
|
+
showPreview?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function generateControlsCode(snapshot: Record<string, unknown>, selectedIds?: Set<string>): string;
|
|
7
|
+
export declare function copyToClipboard(text: string): Promise<boolean>;
|
|
8
|
+
export declare function showToast(message: string, duration?: number): void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Libellé de la pastille de poids d'une facette ou d'une catégorie (ODD),
|
|
3
|
+
* pour une cause comme pour un contact. Règle `mean` (défaut, POC-05A4) :
|
|
4
|
+
* moyenne des poids de tous ses satellites, arrondie à un chiffre après la
|
|
5
|
+
* virgule, avec une virgule décimale — « 7,2 », sur 10. Règle `sum`
|
|
6
|
+
* (ancienne, voir `FacetWeightRule`) : somme entière — « 61 », sur
|
|
7
|
+
* « satellites × 10 ». `max` ne s'affiche qu'avec le suffixe
|
|
8
|
+
* (`facetteLabelSuffixVisible`).
|
|
9
|
+
*/
|
|
10
|
+
export declare function facetWeightLabel(weights: readonly number[]): {
|
|
11
|
+
value: string;
|
|
12
|
+
max: number;
|
|
13
|
+
};
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
export declare function hasFacetteImage(composanteId: string): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Les originaux (1254×1254, ~6 Mo décodés) ne sont jamais affichés tels quels :
|
|
4
|
+
* on sert une miniature de 512 px et sa variante « voilée » pré-rendue (voir
|
|
5
|
+
* scripts/generate-facette-thumbs.py).
|
|
6
|
+
*/
|
|
2
7
|
export declare function getFacetteImageUrl(composanteId: string): string;
|
|
8
|
+
export declare function getFacetteVeiledImageUrl(composanteId: string): string;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export type GlowStrokeLayer = {
|
|
2
|
+
/** Débord du trait de halo au-delà du bord de la forme, en px. */
|
|
3
|
+
spread: number;
|
|
4
|
+
/** Opacité propre de ce trait (les traits se superposent). */
|
|
5
|
+
opacity: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Traits superposés équivalant à `drop-shadow(0 0 ${blur}px couleur)` d'alpha
|
|
9
|
+
* `alpha` : à peindre du plus large au plus étroit, chacun de largeur
|
|
10
|
+
* `largeurDeBase + 2 × spread`, même couleur, `stroke-opacity` = `opacity`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function glowStrokeLayers(blur: number, alpha?: number): GlowStrokeLayer[];
|
|
13
|
+
/** Débord total (px) du halo de `glowStrokeLayers(blur)`. */
|
|
14
|
+
export declare function glowStrokeReach(blur: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Crée (ou recâble) dans `group` les traits d'un halo de chemin. `tag` est
|
|
17
|
+
* l'élément copié (`path`, `line`…) ; la géométrie est posée ensuite par
|
|
18
|
+
* l'appelant sur chaque trait (`d`, `x1`…), via `forEachStroke`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function ensureGlowStrokes(group: SVGGElement, tag: "path" | "line" | "circle", layerCount?: number): SVGElement[];
|
|
21
|
+
/**
|
|
22
|
+
* Habille les traits d'un halo : couleur, largeurs et opacités équivalant à
|
|
23
|
+
* un `drop-shadow(0 0 ${blur}px color)` posé sur une forme dont le trait fait
|
|
24
|
+
* `baseWidth` (0 pour une forme seulement remplie).
|
|
25
|
+
*/
|
|
26
|
+
export declare function styleGlowStrokes(strokes: readonly SVGElement[], options: {
|
|
27
|
+
color: string;
|
|
28
|
+
blur: number;
|
|
29
|
+
alpha?: number;
|
|
30
|
+
baseWidth?: number;
|
|
31
|
+
}): void;
|
|
32
|
+
export type SoftEdgeLayer = {
|
|
33
|
+
/** Décalage du bord de la couche (px) : > 0 vers l'extérieur. */
|
|
34
|
+
offset: number;
|
|
35
|
+
opacity: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Couches superposées équivalant à une forme pleine d'alpha `alpha` floutée
|
|
39
|
+
* par `filter: blur(${sigma}px)` (σ = l'argument de blur()) : à peindre dans
|
|
40
|
+
* l'ordre, chacune agrandie de `offset` (ou réduite si négatif), même
|
|
41
|
+
* couleur, `fill-opacity` = `opacity`.
|
|
42
|
+
*/
|
|
43
|
+
export declare function softEdgeLayers(sigma: number, alpha?: number): SoftEdgeLayer[];
|
|
44
|
+
/** Rayon du disque de halo d'un cercle de rayon `radius`. */
|
|
45
|
+
export declare function circleGlowRadius(radius: number, blur: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* `fill` d'un disque de rayon `circleGlowRadius(radius, blur)` centré sur un
|
|
48
|
+
* cercle de rayon `radius`, équivalant à `drop-shadow(0 0 ${blur}px color)`
|
|
49
|
+
* de ce cercle. Le dégradé (objectBoundingBox) est partagé par tous les
|
|
50
|
+
* cercles de même couleur et de même rapport rayon / flou, et recréé s'il a
|
|
51
|
+
* été purgé des defs.
|
|
52
|
+
*/
|
|
53
|
+
export declare function circleGlowFill(svg: SVGSVGElement, color: string, radius: number, blur: number): string;
|
|
54
|
+
/** Une lueur : équivalent de `drop-shadow(0 0 ${blur}px color)` d'alpha `alpha`. */
|
|
55
|
+
export type GlowSpec = {
|
|
56
|
+
color: string;
|
|
57
|
+
blur: number;
|
|
58
|
+
alpha?: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Pose (ou retire, `glows` null) un halo d'une forme : un `<g>` inséré
|
|
62
|
+
* avant elle (donc peint dessous), qui contient des copies de sa géométrie
|
|
63
|
+
* en traits de lueur (voir styleGlowStrokes). Plusieurs lueurs s'empilent,
|
|
64
|
+
* la plus large d'abord. `baseWidth` : largeur du trait de la forme. `slot`
|
|
65
|
+
* distingue plusieurs halos indépendants sur la même forme. Renvoie le
|
|
66
|
+
* groupe du halo (null s'il est retiré).
|
|
67
|
+
*/
|
|
68
|
+
export declare function syncShapeGlow(shape: SVGElement, glows: readonly GlowSpec[] | null, baseWidth?: number, slot?: string): SVGGElement | null;
|
|
69
|
+
/** Recopie la géométrie d'une forme sur ses halos, s'il y en a — à appeler
|
|
70
|
+
* quand la forme est modifiée en place. */
|
|
71
|
+
export declare function syncShapeGlowGeometry(shape: SVGElement): void;
|
|
72
|
+
/** Pose un attribut de géométrie sur les halos d'une forme (quand la forme
|
|
73
|
+
* elle-même le reçoit plus tard, p. ex. dans un attrTween d3). */
|
|
74
|
+
export declare function setShapeGlowAttribute(shape: Element, name: string, value: string): void;
|
|
@@ -22,7 +22,7 @@ export declare function buildOddDotHtml(oddColor: string): string;
|
|
|
22
22
|
* couvert). `isKeyEvent` ajoute le médaillon (plaque + anneau doré +
|
|
23
23
|
* Yin/Yang en filigrane, voir `.ke-medallion` dans details-panel.css) qui
|
|
24
24
|
* distingue un Événement d'une Action à la silhouette seule. */
|
|
25
|
-
export declare function buildItemIconHtml(iconUrl: string, isKeyEvent?: boolean): string;
|
|
25
|
+
export declare function buildItemIconHtml(iconUrl: string, isKeyEvent?: boolean, lazy?: boolean): string;
|
|
26
26
|
/** Pastille d'état (score /100) affichée après le nom, dans le champ
|
|
27
27
|
* "élément sélectionné" tout en haut du panneau — uniquement quand cet
|
|
28
28
|
* élément est un satellite. Pas de delta : jugé trop chargé visuellement à
|
|
@@ -6,7 +6,7 @@ export type KeyEventImageSize = "thumb" | "full";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function getKeyEventImageUrl(keyEventId: string, size: KeyEventImageSize): string;
|
|
8
8
|
/**
|
|
9
|
-
* Icône vectorielle courte (bulle du menu radial du
|
|
9
|
+
* Icône vectorielle courte (bulle du menu radial du satellite-facette, badge
|
|
10
10
|
* de carte), même convention de nommage.
|
|
11
11
|
*/
|
|
12
12
|
export declare function getKeyEventIconUrl(keyEventId: string): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Utilitaire centralisé pour calculer la taille des icônes dans les menus radiaux
|
|
2
|
+
* (actions et événements clés). Assure l'harmonie visuelle entre les deux. */
|
|
3
|
+
/** Ratio de taille de l'icône quand elle est active (en focus/sélectionnée) */
|
|
4
|
+
export declare const ACTIVE_ICON_SIZE_RATIO = 1.85;
|
|
5
|
+
/** Ratio de taille de l'icône quand elle est inactive */
|
|
6
|
+
export declare const INACTIVE_ICON_SIZE_RATIO = 1.65;
|
|
7
|
+
/**
|
|
8
|
+
* Calcule la taille d'une icône dans un menu radial (bulle).
|
|
9
|
+
* Harmonise le dimensionnement entre les actions et les événements clés.
|
|
10
|
+
*
|
|
11
|
+
* @param bubbleRadius - Rayon de la bulle contenant l'icône
|
|
12
|
+
* @param isActive - L'icône est-elle en focus/active?
|
|
13
|
+
* @param iconFontScale - Facteur d'échelle du debug pour l'icône (slider utilisateur)
|
|
14
|
+
* @param applyFitScale - Appliquer le plafonnement fitScale (pour ne pas dépasser du cercle)?
|
|
15
|
+
* @returns Taille de l'icône en pixels
|
|
16
|
+
*/
|
|
17
|
+
export declare function calculateMenuIconSize(bubbleRadius: number, isActive: boolean, iconFontScale?: number, applyFitScale?: boolean): number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Écarte des angles (radians) placés sur un cercle de rayon `distance` pour
|
|
3
|
+
* que des disques de rayons `radii` centrés dessus ne se chevauchent pas,
|
|
4
|
+
* en déplaçant le moins possible chaque angle de sa position d'origine :
|
|
5
|
+
* chaque paire voisine trop serrée est écartée symétriquement, sur quelques
|
|
6
|
+
* passes. Renvoie les angles dans l'ordre d'entrée.
|
|
7
|
+
*/
|
|
8
|
+
export declare function spreadAngles(angles: number[], radii: number[], distance: number, gap: number): number[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@micheeeeel/yinyangapp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "A program to visualize human activity balance to reach Sustainable Development Objectives",
|
|
5
5
|
"main": "dist/bundle.js",
|
|
6
6
|
"types": "dist/types/main.d.ts",
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
"analyze": "ANALYZE=true webpack --mode production && tsc -p tsconfig.types.json",
|
|
15
15
|
"benchmark:compare": "node benchmarks/compare.js",
|
|
16
16
|
"catalogue:matrix": "npx tsx scripts/catalogue-matrix.ts",
|
|
17
|
+
"events:balance": "node scripts/key-event-balance.cjs",
|
|
18
|
+
"events:adverse-balance": "node scripts/adverse-event-balance.cjs",
|
|
17
19
|
"propagation:cycles-audit": "npx tsx scripts/propagation-cycles-audit.ts"
|
|
18
20
|
},
|
|
19
21
|
"author": "Thomas MICHEL",
|
|
@@ -47,6 +49,7 @@
|
|
|
47
49
|
"files": [
|
|
48
50
|
"dist/bundle.js",
|
|
49
51
|
"dist/bundle.js.LICENSE.txt",
|
|
52
|
+
"dist/bundle.css",
|
|
50
53
|
"dist/types",
|
|
51
54
|
"README.md",
|
|
52
55
|
"LICENSE"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|