@micheeeeel/yinyangapp 1.0.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +105 -0
  2. package/dist/bundle.js +2 -1
  3. package/dist/bundle.js.LICENSE.txt +1 -0
  4. package/dist/types/adapters/yinYangAdapter.d.ts +10 -0
  5. package/dist/types/animations/AnimationsMngr.d.ts +7 -19
  6. package/dist/types/api-film.d.ts +22 -0
  7. package/dist/types/api.d.ts +48 -0
  8. package/dist/types/benchmark/runner.d.ts +5 -0
  9. package/dist/types/benchmark/scenarios.d.ts +118 -0
  10. package/dist/types/components/action-image/ActionImageModal.d.ts +42 -0
  11. package/dist/types/components/controller/YinYangController.d.ts +946 -18
  12. package/dist/types/components/controller/action-stack/ActionStackController.d.ts +149 -0
  13. package/dist/types/components/controller/action-stack/ActionStackDragHandler.d.ts +111 -0
  14. package/dist/types/components/controller/action-stack/ActionStackManager.d.ts +118 -0
  15. package/dist/types/components/controller/action-stack/ActionStackState.d.ts +169 -0
  16. package/dist/types/components/controller/actions/ActionProjectionService.d.ts +73 -0
  17. package/dist/types/components/controller/actions/ChildActionMenuController.d.ts +83 -0
  18. package/dist/types/components/controller/actions/CoreEventMenuController.d.ts +90 -0
  19. package/dist/types/components/controller/actions/radialItemMenu.d.ts +117 -0
  20. package/dist/types/components/controller/children/ChildInteractionController.d.ts +38 -0
  21. package/dist/types/components/controller/children/ChildrenOrbitService.d.ts +14 -0
  22. package/dist/types/components/controller/force-field/EventFieldLifecycleController.d.ts +104 -0
  23. package/dist/types/components/controller/force-field/EventFieldRenderer.d.ts +86 -0
  24. package/dist/types/components/controller/force-field/ForceFieldComputationService.d.ts +50 -0
  25. package/dist/types/components/controller/force-field/ForceFieldDetailsPanel.d.ts +639 -0
  26. package/dist/types/components/controller/force-field/ForceFieldLifecycleController.d.ts +53 -0
  27. package/dist/types/components/controller/force-field/ForceFieldRenderer.d.ts +67 -0
  28. package/dist/types/components/controller/force-field/types.d.ts +42 -0
  29. package/dist/types/components/controller/labels/ChildScoresDeltaRenderer.d.ts +33 -0
  30. package/dist/types/components/controller/labels/ContextLabelsRenderer.d.ts +155 -0
  31. package/dist/types/components/controller/labels/WeightPreviewRingRenderer.d.ts +61 -0
  32. package/dist/types/components/controller/odd/ChildrenOrbitManager.d.ts +25 -0
  33. package/dist/types/components/controller/odd/OddViewManager.d.ts +44 -0
  34. package/dist/types/components/controller/search/SearchPanelSynchronizer.d.ts +125 -0
  35. package/dist/types/components/controller/settings/ControllerSettingsApplier.d.ts +50 -0
  36. package/dist/types/components/controller/state/BlockingAnimationTracker.d.ts +17 -0
  37. package/dist/types/components/controller/state/YinYangControllerState.d.ts +176 -0
  38. package/dist/types/components/controller/utils/actionStackMath.d.ts +13 -0
  39. package/dist/types/components/controller/utils/actionStackReorder.d.ts +7 -0
  40. package/dist/types/components/controller/utils/childrenOrbit.d.ts +18 -0
  41. package/dist/types/components/controller/utils/cuttingLabels.d.ts +9 -0
  42. package/dist/types/components/controller/utils/eventFieldStyle.d.ts +13 -0
  43. package/dist/types/components/controller/utils/eventFieldTargets.d.ts +47 -0
  44. package/dist/types/components/controller/utils/forceFieldMetadata.d.ts +4 -0
  45. package/dist/types/components/controller/utils/forceFieldPresentation.d.ts +9 -0
  46. package/dist/types/components/controller/utils/forceFieldStyle.d.ts +10 -0
  47. package/dist/types/components/controller/utils/labelGeometry.d.ts +5 -0
  48. package/dist/types/components/controller/utils/oddCutting.d.ts +2 -0
  49. package/dist/types/components/controller/utils/svgCoordinates.d.ts +9 -0
  50. package/dist/types/components/controller/utils/svgTransform.d.ts +5 -0
  51. package/dist/types/components/controller/utils/textLayout.d.ts +2 -0
  52. package/dist/types/components/controls/VizControlsPanel.d.ts +14 -0
  53. package/dist/types/components/factory/YinYangAppFactory.d.ts +4 -6
  54. package/dist/types/components/model/YinYangModel.d.ts +4 -30
  55. package/dist/types/components/panel/DiagramPanelBridge.d.ts +34 -0
  56. package/dist/types/components/panel/PanelManager.d.ts +150 -0
  57. package/dist/types/components/search/GlobalSearchController.d.ts +396 -0
  58. package/dist/types/components/stack-nav/StackNavOverlay.d.ts +82 -0
  59. package/dist/types/components/view/BorderDrawer.d.ts +203 -13
  60. package/dist/types/components/view/SpikeDrawer.d.ts +37 -31
  61. package/dist/types/components/view/ViewInitializer.d.ts +438 -2
  62. package/dist/types/components/view/YinYangDrawer.d.ts +414 -11
  63. package/dist/types/config/animationConfig.d.ts +37 -0
  64. package/dist/types/config/deltaColors.d.ts +64 -0
  65. package/dist/types/config/labelStyleConfig.d.ts +50 -0
  66. package/dist/types/data/OddCategoryColors.d.ts +12 -2
  67. package/dist/types/data/adverse-action-planner.d.ts +51 -0
  68. package/dist/types/data/adverse-action-planner.test.d.ts +1 -0
  69. package/dist/types/data/amplifier-engine.d.ts +107 -0
  70. package/dist/types/data/amplifier-engine.test.d.ts +1 -0
  71. package/dist/types/data/combo-engine.d.ts +94 -0
  72. package/dist/types/data/combo-engine.test.d.ts +1 -0
  73. package/dist/types/data/odd_generic_descriptions.d.ts +4 -0
  74. package/dist/types/data/odd_labels.d.ts +5 -0
  75. package/dist/types/data/yasuni_actions.d.ts +47 -0
  76. package/dist/types/data/yasuni_adverse_actions.d.ts +2 -0
  77. package/dist/types/data/yasuni_adverse_key_events.d.ts +2 -0
  78. package/dist/types/data/yasuni_cause.d.ts +33 -0
  79. package/dist/types/data/yasuni_graph.d.ts +22 -0
  80. package/dist/types/data/yasuni_key_events.d.ts +61 -0
  81. package/dist/types/data/yasuni_propagation_layers.d.ts +3 -0
  82. package/dist/types/interfaces/IActions.d.ts +1 -0
  83. package/dist/types/interfaces/ICauseGraph.d.ts +9 -0
  84. package/dist/types/interfaces/ICauseModel.d.ts +33 -0
  85. package/dist/types/interfaces/IGraphicsStrategy.d.ts +9 -5
  86. package/dist/types/interfaces/IPropagationLayers.d.ts +27 -0
  87. package/dist/types/interfaces/IViewData.d.ts +12 -0
  88. package/dist/types/interfaces/IYinYangAppFactory.d.ts +3 -3
  89. package/dist/types/interfaces/IYinYangController.d.ts +301 -6
  90. package/dist/types/interfaces/IYinYangGeometry.d.ts +43 -0
  91. package/dist/types/interfaces/IYinYangInternalModel.d.ts +34 -0
  92. package/dist/types/interfaces/IYinYangModel.d.ts +3 -11
  93. package/dist/types/main.d.ts +9 -0
  94. package/dist/types/utils/actionImages.d.ts +14 -0
  95. package/dist/types/utils/actionPropagation.d.ts +74 -0
  96. package/dist/types/utils/appMode.d.ts +5 -0
  97. package/dist/types/utils/causeGraph.d.ts +6 -0
  98. package/dist/types/utils/causeMetrics.d.ts +26 -0
  99. package/dist/types/utils/chainCardHeight.d.ts +27 -0
  100. package/dist/types/utils/d3/D3Element.d.ts +2 -2
  101. package/dist/types/utils/d3/D3GraphicsStrategy.d.ts +21 -4
  102. package/dist/types/utils/deltaChips.d.ts +15 -0
  103. package/dist/types/utils/deltaLabels.d.ts +54 -0
  104. package/dist/types/utils/facetteImages.d.ts +1 -0
  105. package/dist/types/utils/geometryUtils.d.ts +0 -1
  106. package/dist/types/utils/hierBadge.d.ts +44 -0
  107. package/dist/types/utils/idleSphereImage.d.ts +8 -0
  108. package/dist/types/utils/keyEventImages.d.ts +41 -0
  109. package/dist/types/utils/oddLegend.d.ts +30 -0
  110. package/dist/types/utils/positionalEfficiency.d.ts +16 -0
  111. package/dist/types/utils/yinYangWatermark.d.ts +29 -0
  112. package/package.json +27 -12
  113. package/dist/index.html +0 -1
  114. package/dist/types/data/coupe_rase_Orangs-outans/data_Kalimantan.d.ts +0 -3
  115. package/dist/types/data/coupe_rase_Orangs-outans/data_PT_Mayawana_Persada.d.ts +0 -3
  116. package/dist/types/data/data_institu_bancaire.d.ts +0 -3
  117. package/dist/types/interfaces/IOddItem.d.ts +0 -6
  118. package/dist/types/script.d.ts +0 -13
package/README.md ADDED
@@ -0,0 +1,105 @@
1
+ # @micheeeeel/yinyangapp
2
+
3
+ Visualisation « Sphères » (diagramme yin/yang + satellites) de l'équilibre des
4
+ activités humaines vis-à-vis des Objectifs de Développement Durable.
5
+
6
+ Deux usages :
7
+
8
+ - **Page standalone** (`npm start`, déployée sur GitHub Pages) : l'application
9
+ complète (panneaux, pile d'actions, recherche…) bootstrapée par `src/main.ts`.
10
+ - **Librairie npm** : une app hôte (ex. React) importe les fonctions de
11
+ `src/api.ts` pour obtenir un diagramme.
12
+
13
+ ## Installation dans une app hôte
14
+
15
+ ```bash
16
+ npm install @micheeeeel/yinyangapp d3
17
+ ```
18
+
19
+ `d3` (v7) est un **peer dependency** : il n'est pas embarqué dans le bundle, c'est
20
+ l'app hôte qui le fournit — soit via son propre bundler (`import "d3"`, résolu
21
+ automatiquement), soit en global `window.d3` si le bundle est chargé en `<script>`
22
+ (voir `webpack.config.js` → `externals`).
23
+
24
+ Importer le CSS une fois :
25
+
26
+ ```ts
27
+ import "@micheeeeel/yinyangapp/dist/bundle.css";
28
+ ```
29
+
30
+ ## API
31
+
32
+ ```ts
33
+ import {
34
+ createYinYangSvg, // rendu hors écran → SVGSVGElement détaché (ou null)
35
+ createYinYangSvgs, // idem, en lot
36
+ mountYinYang, // diagramme vivant dans un conteneur de l'hôte → { controller, destroy }
37
+ mapCauseToInternalModel,
38
+ type Cause, type YinYangSvgConfig, type YinYangMountConfig,
39
+ } from "@micheeeeel/yinyangapp";
40
+ ```
41
+
42
+ `data` accepte une `Cause` (format métier : composantes → ODD → facettes avec
43
+ `score`/`weight`) ou un `YinYangInternalModel` déjà adapté.
44
+
45
+ Toutes ces fonctions touchent le DOM : à appeler côté client uniquement
46
+ (`useEffect` en React, pas de SSR).
47
+
48
+ ### Exemple React
49
+
50
+ ```tsx
51
+ import { useEffect, useRef } from "react";
52
+ import { createYinYangSvg, type Cause } from "@micheeeeel/yinyangapp";
53
+
54
+ export function YinYang({ data, size = 400 }: { data: Cause; size?: number }) {
55
+ const ref = useRef<HTMLDivElement>(null);
56
+ useEffect(() => {
57
+ const host = ref.current;
58
+ if (!host) return;
59
+ const svg = createYinYangSvg({ data, viewData: { minEdge: size } });
60
+ if (svg) host.appendChild(svg);
61
+ return () => { host.innerHTML = ""; };
62
+ }, [data, size]);
63
+ return <div ref={ref} />;
64
+ }
65
+ ```
66
+
67
+ Pour un diagramme interactif, préférer `mountYinYang({ data, container: ref.current })`
68
+ et appeler `destroy()` dans le cleanup du `useEffect`.
69
+
70
+ ### Film léger pour markers de carte
71
+
72
+ `createYinYangFilmSvg` « cuit » un tour complet de l'étincelle périmètre (sans
73
+ satellites, sans glow) en un **SVG autonome sans JavaScript** : rotation CSS de
74
+ l'étincelle + flip-book de calques pré-rendus pour les bascules de composante.
75
+ Coût runtime par instance ≈ un GIF ; prévu pour des dizaines de markers Mapbox.
76
+
77
+ ```ts
78
+ import { createYinYangFilmSvg } from "@micheeeeel/yinyangapp";
79
+
80
+ const film = createYinYangFilmSvg({
81
+ data, // Cause ou YinYangInternalModel
82
+ size: 120, // px
83
+ rotationDurationMs: 6000,
84
+ transitionFrames: 4, // images par bascule (0 = switch immédiat)
85
+ });
86
+ new mapboxgl.Marker({ element: film }).setLngLat([lng, lat]).addTo(map);
87
+ ```
88
+
89
+ - Cuire **une fois par lieu** (~300 ms) et cloner : `film.cloneNode(true)`.
90
+ - Vitesse par instance sans recuire : `clone.style.setProperty("--yy-rotation", "5200ms")`.
91
+ - Ordres de grandeur (4 composantes, 120 px) : `transitionFrames: 4` → ~170 Ko brut /
92
+ 16 Ko gzip / 1 700 nœuds ; `transitionFrames: 0` → ~40 Ko / 350 nœuds.
93
+ - Survol / sélection : remplacer le film par `mountYinYang` (diagramme vivant),
94
+ puis revenir au film.
95
+
96
+ Guide d'intégration détaillé (React + Mapbox, cache, survol) : [docs/integration-yvy-frontend.md](docs/integration-yvy-frontend.md).
97
+
98
+ ## Développement
99
+
100
+ ```bash
101
+ npm start # dev server
102
+ npm test # vitest
103
+ npm run build # dist/bundle.js + dist/bundle.css + dist/types/
104
+ npm publish --access public
105
+ ```