@micheeeeel/yinyangapp 2.4.2 → 2.5.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 (31) hide show
  1. package/dist/bundle.js +1 -1
  2. package/dist/types/adapters/yasuniCauseAdapter.d.ts +13 -0
  3. package/dist/types/api.d.ts +2 -1
  4. package/dist/types/components/controller/YinYangController.d.ts +4 -1
  5. package/dist/types/components/controls/DiagramSwitcherControl.d.ts +3 -0
  6. package/dist/types/components/view/ViewInitializer.d.ts +10 -0
  7. package/dist/types/components/view/YinYangDrawer.d.ts +56 -25
  8. package/dist/types/components/workspace/workspaceTemplate.d.ts +1 -1
  9. package/dist/types/data/OddCategoryColors.d.ts +7 -0
  10. package/dist/types/data/activeDiagram.d.ts +60 -0
  11. package/dist/types/data/contacts/buildContactSphere.d.ts +27 -0
  12. package/dist/types/data/contacts/index.d.ts +11 -0
  13. package/dist/types/data/contacts/profiles/andres_cevallos.d.ts +2 -0
  14. package/dist/types/data/contacts/profiles/camila_serrano.d.ts +2 -0
  15. package/dist/types/data/contacts/profiles/dika.d.ts +2 -0
  16. package/dist/types/data/contacts/profiles/elena_viteri.d.ts +2 -0
  17. package/dist/types/data/contacts/profiles/etawane.d.ts +2 -0
  18. package/dist/types/data/contacts/profiles/gabriel_mena.d.ts +2 -0
  19. package/dist/types/data/contacts/profiles/kuri_tapuy.d.ts +2 -0
  20. package/dist/types/data/contacts/profiles/lucia_cardenas.d.ts +2 -0
  21. package/dist/types/data/contacts/profiles/mariana_paredes.d.ts +2 -0
  22. package/dist/types/data/contacts/profiles/martin_aguirre.d.ts +2 -0
  23. package/dist/types/data/contacts/profiles/mateo_salazar.d.ts +2 -0
  24. package/dist/types/data/contacts/profiles/sofia_almeida.d.ts +2 -0
  25. package/dist/types/data/contacts/profiles/tomas_valverde.d.ts +2 -0
  26. package/dist/types/data/contacts/universalFacets.d.ts +263 -0
  27. package/dist/types/interfaces/ICauseModel.d.ts +4 -0
  28. package/dist/types/interfaces/IYinYangInternalModel.d.ts +6 -0
  29. package/dist/types/utils/facetteImages.d.ts +1 -0
  30. package/dist/types/utils/oddLegend.d.ts +1 -1
  31. package/package.json +1 -1
@@ -10,3 +10,16 @@ export declare function composantesToCause(composantes: Composante[], id?: strin
10
10
  /** La `Cause` du Yasuní, fraîchement construite à chaque appel (l'hôte peut
11
11
  * la muter sans effet de bord). `id` par défaut : "yasuni". */
12
12
  export declare function getYasuniCause(id?: string): Cause;
13
+ /** La `Cause` d'un contact (sphère individuelle, 8 facettes / 38 satellites),
14
+ * fraîchement construite à chaque appel. `id` par défaut : l'id du contact.
15
+ * Lève une erreur si le contact est inconnu (voir `listContacts`). */
16
+ export declare function getContactCause(contactId: string, id?: string): Cause;
17
+ export interface ContactSummary {
18
+ id: string;
19
+ name: string;
20
+ role: string;
21
+ organisation: string;
22
+ provisional: boolean;
23
+ }
24
+ /** Les contacts disponibles, dans l'ordre de la calibration Notion. */
25
+ export declare function listContacts(): ContactSummary[];
@@ -58,6 +58,7 @@ export { createYinYangFilmSvg, createYinYangFilmSvgAsync } from "./api-film";
58
58
  export type { YinYangFilmConfig, YinYangFilmAsyncOptions } from "./api-film";
59
59
  export { createRandomCause } from "./api-random";
60
60
  export type { RandomCauseOptions, RandomRange } from "./api-random";
61
- export { getYasuniCause } from "./adapters/yasuniCauseAdapter";
61
+ export { getYasuniCause, getContactCause, listContacts, } from "./adapters/yasuniCauseAdapter";
62
+ export type { ContactSummary } from "./adapters/yasuniCauseAdapter";
62
63
  export { mountYinYangWorkspace } from "./api-workspace";
63
64
  export type { YinYangWorkspaceConfig, YinYangWorkspaceHandle, } from "./api-workspace";
@@ -758,6 +758,9 @@ export declare class YinYangController implements IYinYangController {
758
758
  private _animateComet;
759
759
  private getCurrentComponent;
760
760
  private getCurrentComponentOrUndefined;
761
+ /** Nom de l'objet racine : celui de la Cause montée quand elle en porte un
762
+ * (sphère de contact), sinon la sphère active de la page. */
763
+ private rootName;
761
764
  private getCurrentComponentTitle;
762
765
  /** Second (et, le cas échéant, troisième) niveau du titre : libellé + couleur
763
766
  * ODD du satellite actif sous la facette courante (menu ouvert, ou
@@ -1140,7 +1143,7 @@ export declare class YinYangController implements IYinYangController {
1140
1143
  highlightOddByStackItemId(stackItemId: string | null): void;
1141
1144
  /**
1142
1145
  * Retourne les actions applicables au cutting associé à `childKey`,
1143
- * en consultant `yasuniCause` via `actionMap` (lookup O(1)).
1146
+ * en consultant `activeComposantes` via `actionMap` (lookup O(1)).
1144
1147
  *
1145
1148
  * Les actions adverses vivent sous le même satellite (l'invariant "une
1146
1149
  * action vit sous un satellite" tient) mais ne sont jamais proposées au
@@ -0,0 +1,3 @@
1
+ /** Câble le sélecteur #debug-diagram-switcher et neutralise les contrôles
2
+ * Debug qui supposent un catalogue d'actions. */
3
+ export declare function mountDiagramSwitcher(debugTabButton: HTMLButtonElement | null): void;
@@ -6,6 +6,7 @@ import { IYinYangView } from "../../interfaces/IYinYangView";
6
6
  import { IYinOrYangPattern } from "../../interfaces/IYinOrYangPattern";
7
7
  import { IViewData } from "../../interfaces/IViewData";
8
8
  import { IYinYangGeometry, YinYangCategoryArcGeometry, YinYangSpikeGeometry } from "../../interfaces/IYinYangGeometry";
9
+ import { YinYangComponentNode } from "../../interfaces/IYinYangInternalModel";
9
10
  export declare class ViewInitializer {
10
11
  graphicContainer: IGraphicElement;
11
12
  graphicStrategy: IGraphicsStrategy;
@@ -188,6 +189,10 @@ export declare class ViewInitializer {
188
189
  oddContextLabelsVisible: boolean;
189
190
  oddContextLabelsSuppressed: boolean;
190
191
  oddLabelsCompact: boolean;
192
+ /** Reflet de "Afficher libellés" (YinYangControllerState.allLabelsVisible),
193
+ * posé par ControllerSettingsApplier : affiche le poids de toutes les
194
+ * facettes sur leur arc, pas seulement celui de la facette active. */
195
+ allLabelsVisible: boolean;
191
196
  legendLabelsBgEnabled: boolean;
192
197
  labelsFontAutoScale: number;
193
198
  labelsFontScale: number;
@@ -309,6 +314,11 @@ export declare class ViewInitializer {
309
314
  * (même règle que le plafond par-ODD affiché sur les arcs, voir
310
315
  * buildOddArcLabelLines dans YinYangDrawer). */
311
316
  getFacetteWeightMax(): number;
317
+ /** getFacetteWeight pour une facette quelconque (poids de chaque arc de
318
+ * bordure quand "Afficher libellés" est actif). */
319
+ getComponentWeight(component: YinYangComponentNode | null | undefined): number;
320
+ /** getFacetteWeightMax pour une facette quelconque. */
321
+ getComponentWeightMax(component: YinYangComponentNode | null | undefined): number;
312
322
  getCurrentComponentIndex(): number;
313
323
  getCurrentComponentName(): string;
314
324
  getCurrentComponentOrientation(): "yin" | "yang";
@@ -27,6 +27,8 @@ export declare class YinYangDrawer {
27
27
  private categoryArcGhostFrameId;
28
28
  private readonly CHILD_SCORE_BAND_FRACTION;
29
29
  private readonly CHILD_WEIGHT_LABEL_BAND_FRACTION;
30
+ private readonly FACETTE_SCORE_BAND_FRACTION;
31
+ private readonly SCORE_FONT_SCALE;
30
32
  private readonly BASE_MAIN_SELECTOR;
31
33
  private readonly IDLE_SPHERE_OVERLAY_ROLE;
32
34
  private readonly MIN_VISIBLE_ARC_ANGLE_RAD;
@@ -240,7 +242,7 @@ export declare class YinYangDrawer {
240
242
  */
241
243
  private drawYinOrYangWithGroup;
242
244
  /**
243
- * Affiche le score d'état ("40/100") dans l'anneau extérieur de la moitié
245
+ * Affiche le score d'état ("40%") dans l'anneau extérieur de la moitié
244
246
  * dominante du satellite — entre le petit cercle "noyau"
245
247
  * (smallRadius) et le bord du lobe (radius) — plutôt qu'en son centre
246
248
  * exact, pour laisser le noyau visible. La moitié orientée grandit
@@ -266,43 +268,63 @@ export declare class YinYangDrawer {
266
268
  * plus grand, et le texte doit suivre dans les deux cas.
267
269
  */
268
270
  private renderChildStateLabel;
271
+ /** Score "47%" : valeur pleine, signe % réduit — le score est une part de
272
+ * 100, le suffixe "/100" n'apprenait rien de plus. */
273
+ private writeScorePercent;
269
274
  /**
270
- * Affiche le poids ("6/10") dans le même lobe dominant que le score, mais
275
+ * Affiche le poids ("6") dans le même lobe dominant que le score, mais
271
276
  * sur le rayon OPPOSÉ (score : vers l'extérieur du satellite ; poids :
272
277
  * vers son centre) — même mécanique que renderChildStateLabel (taille
273
- * proportionnelle au rayon réel) pour la même nature visuelle "posée sur
274
- * le disque", avec deux différences volontaires : la couleur de
275
- * remplissage (la teinte du poids, reprise du chip des cartes et de l'onde
276
- * de prévisualisation) pour rester identifiable comme "poids" au premier
277
- * coup d'œil, et un fond en dégradé radial (pas de liseret) qui calme le
278
- * lobe sous les chiffres. Même technique que les libellés d'arcs du cercle
279
- * central (renderOddArcLabels) : cercle rempli d'un radialGradient
280
- * couleur→transparent, dimensionné sur le bbox du texte.
281
- *
282
- * Teinte comme voile suivent le lobe (weightColorForLobe, labelVeilColor) :
283
- * doré sur fond noir, ambre profond sur fond blanc, où le doré ne tient
284
- * pas — c'est la même règle que le score, qui lui s'inverse franchement.
278
+ * proportionnelle au rayon réel). Même pastille sombre que le poids de la
279
+ * facette (ensureWeightPill/fitWeightPill) : le doré y reste lisible sur
280
+ * un lobe noir comme blanc, et le poids se reconnaît au même encadré
281
+ * partout dans le diagramme.
285
282
  */
286
283
  private renderChildWeightLabel;
287
284
  /**
288
- * Affiche le score de la facette courante ("40/100") dans le cercle
285
+ * Pastille du poids — partagée par le poids de la facette (dans son arc)
286
+ * et celui des satellites (dans leur lobe) : fond sombre arrondi, chiffre
287
+ * doré. Le fond ne dépend pas de ce qu'il y a dessous (lobe noir ou
288
+ * blanc, arc de n'importe quelle teinte), le doré y reste toujours lisible.
289
+ * Crée le groupe (rect + text) s'il n'existe pas encore sous `parent` ;
290
+ * `key` distingue plusieurs pastilles du même rôle (une par arc de facette).
291
+ */
292
+ private ensureWeightPill;
293
+ /** Ajuste la pastille (ensureWeightPill) au texte qu'elle porte — à
294
+ * rappeler après chaque changement de texte ou de police. */
295
+ private fitWeightPill;
296
+ /**
297
+ * Affiche le score de la facette courante ("40%") dans le cercle
289
298
  * principal — même règle que renderChildStateLabel au niveau d'un
290
299
  * satellite (bande [smallRadius, radius] du lobe dominant, même
291
300
  * contraste), maintenant que les arcs ODD n'affichent plus systématiquement
292
301
  * cette information (voir buildOddArcLabelLines, réservé à l'ODD
293
- * sélectionné). Contrairement au satellite, le suffixe "/100" est affiché
294
- * (même convention que les libellés d'arcs) : au niveau facette il n'y a
295
- * pas de fratrie pour donner le contexte d'échelle par comparaison.
302
+ * sélectionné). Seul occupant du lobe depuis que le poids a rejoint l'arc
303
+ * de facette (renderFacetteWeightLabel), il est centré dans l'anneau.
296
304
  */
297
305
  private renderFacetteStateLabel;
298
306
  /**
299
- * Affiche le poids de la facette courante ("18/40") dans le cercle
300
- * principal, sur le rayon opposé au score — même règle que
301
- * renderChildWeightLabel au niveau d'un satellite (fond en dégradé
302
- * radial, teinte du poids). Le poids et son plafond sont la somme des
303
- * poids de tous les ODD de la facette (voir
304
- * ViewInitializer.getFacetteWeight/getFacetteWeightMax), la même formule
305
- * que celle qui dimensionne chaque arc.
307
+ * Affiche le poids d'une facette ("18/40") DANS son arc de bordure
308
+ * (segment de BorderDrawer), et non dans un lobe : ce poids est celui qui
309
+ * dimensionne l'arc, il se lit donc sur lui. Le poids et son plafond sont
310
+ * la somme des poids de tous les ODD de la facette (voir
311
+ * ViewInitializer.getComponentWeight/getComponentWeightMax).
312
+ *
313
+ * Par défaut seule la facette active porte son poids (et seulement quand
314
+ * ses libellés sont visibles, voir shouldShowFacetteLabels) ; avec
315
+ * "Afficher libellés" (ViewInitializer.allLabelsVisible), chaque arc porte
316
+ * le sien, facette ouverte ou non.
317
+ *
318
+ * Police calée sur l'épaisseur de l'anneau, texte couché le long de l'arc
319
+ * (tangent à son milieu, retourné sur la moitié basse pour rester à
320
+ * l'endroit) : il épouse la courbe du cercle, et tient dans la bande à
321
+ * n'importe quel angle. Posé sur une pastille sombre (ensureWeightPill) :
322
+ * l'arc peut porter n'importe quelle teinte, y compris le doré du poids.
323
+ *
324
+ * Calque propre, enfant direct de globalGroup et non du lobe : yinYangGroup
325
+ * tourne pendant les animations alors que les arcs de bordure restent
326
+ * fixes — les libellés doivent rester collés à leur arc, pas au spin.
327
+ * Réinséré en dernier pour passer au-dessus des arcs comme du yin-yang.
306
328
  */
307
329
  private renderFacetteWeightLabel;
308
330
  private drawGhostCircle;
@@ -485,6 +507,15 @@ export declare class YinYangDrawer {
485
507
  */
486
508
  setHoverOddId(oddId: string | null): void;
487
509
  private refreshHoverArcStyles;
510
+ /**
511
+ * Allume les zones de clic des arcs ODD d'une couche : un arc SURVOLÉ ou
512
+ * ACTIF reçoit la couleur de son ODD et son halo, les autres redeviennent
513
+ * transparents. L'arc actif était auparavant allumé par accident — le
514
+ * style de survol, posé juste avant le clic, n'était jamais retiré tant
515
+ * que l'arc restait actif ; activé sans survol (par l'hôte :
516
+ * searchHighlightOdd, searchActivateOdd), il n'avait que son liseré.
517
+ */
518
+ private refreshOddHitZones;
488
519
  /**
489
520
  * Re-applies the highlight / dim styles on all existing interactive arc hit-zones
490
521
  * based on the current `activeOddId`, without recreating the DOM elements.