@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.
- package/README.md +105 -0
- package/dist/bundle.js +2 -1
- package/dist/bundle.js.LICENSE.txt +1 -0
- package/dist/types/adapters/yinYangAdapter.d.ts +10 -0
- package/dist/types/animations/AnimationsMngr.d.ts +7 -19
- 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 +946 -18
- 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 +4 -6
- package/dist/types/components/model/YinYangModel.d.ts +4 -30
- 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 +203 -13
- package/dist/types/components/view/SpikeDrawer.d.ts +37 -31
- package/dist/types/components/view/ViewInitializer.d.ts +438 -2
- package/dist/types/components/view/YinYangDrawer.d.ts +414 -11
- 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 +12 -2
- 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/ICauseGraph.d.ts +9 -0
- package/dist/types/interfaces/ICauseModel.d.ts +33 -0
- package/dist/types/interfaces/IGraphicsStrategy.d.ts +9 -5
- package/dist/types/interfaces/IPropagationLayers.d.ts +27 -0
- package/dist/types/interfaces/IViewData.d.ts +12 -0
- package/dist/types/interfaces/IYinYangAppFactory.d.ts +3 -3
- package/dist/types/interfaces/IYinYangController.d.ts +301 -6
- 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 +3 -11
- 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/D3Element.d.ts +2 -2
- package/dist/types/utils/d3/D3GraphicsStrategy.d.ts +21 -4
- 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 +0 -1
- 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
- package/dist/index.html +0 -1
- package/dist/types/data/coupe_rase_Orangs-outans/data_Kalimantan.d.ts +0 -3
- package/dist/types/data/coupe_rase_Orangs-outans/data_PT_Mayawana_Persada.d.ts +0 -3
- package/dist/types/data/data_institu_bancaire.d.ts +0 -3
- package/dist/types/interfaces/IOddItem.d.ts +0 -6
- 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
|
+
```
|