@micheeeeel/yinyangapp 2.6.0 → 3.0.1
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.js +1 -1
- package/dist/types/adapters/yasuniCauseAdapter.d.ts +3 -24
- package/dist/types/api.d.ts +1 -2
- package/dist/types/components/controller/actions/ActionProjectionService.d.ts +4 -0
- package/dist/types/components/view/ViewInitializer.d.ts +11 -9
- package/dist/types/components/view/YinYangDrawer.d.ts +7 -10
- package/dist/types/data/activeDiagram.d.ts +3 -2
- package/dist/types/data/contacts/buildContactSphere.d.ts +0 -8
- package/dist/types/data/contacts/demoContact.d.ts +3 -0
- package/dist/types/data/contacts/index.d.ts +2 -11
- package/dist/types/interfaces/ICauseModel.d.ts +3 -1
- package/dist/types/utils/causeMetrics.d.ts +32 -0
- package/dist/types/utils/facetWeightLabel.d.ts +11 -0
- package/package.json +1 -1
- package/dist/types/data/contacts/profiles/andres_cevallos.d.ts +0 -2
- package/dist/types/data/contacts/profiles/camila_serrano.d.ts +0 -2
- package/dist/types/data/contacts/profiles/dika.d.ts +0 -2
- package/dist/types/data/contacts/profiles/elena_viteri.d.ts +0 -2
- package/dist/types/data/contacts/profiles/etawane.d.ts +0 -2
- package/dist/types/data/contacts/profiles/gabriel_mena.d.ts +0 -2
- package/dist/types/data/contacts/profiles/kuri_tapuy.d.ts +0 -2
- package/dist/types/data/contacts/profiles/lucia_cardenas.d.ts +0 -2
- package/dist/types/data/contacts/profiles/mariana_paredes.d.ts +0 -2
- package/dist/types/data/contacts/profiles/martin_aguirre.d.ts +0 -2
- package/dist/types/data/contacts/profiles/mateo_salazar.d.ts +0 -2
- package/dist/types/data/contacts/profiles/sofia_almeida.d.ts +0 -2
- package/dist/types/data/contacts/profiles/tomas_valverde.d.ts +0 -2
|
@@ -6,6 +6,9 @@ import { type ContactProfileData } from "../data/contacts";
|
|
|
6
6
|
* Cause attendu par mapCauseToInternalModel.
|
|
7
7
|
* Les scores initiaux sont neutres (0.5 = 50 % de tension), les poids valent 1
|
|
8
8
|
* par satellite tant qu'aucune valeur n'est renseignée dans les données.
|
|
9
|
+
* Poids d'une facette (taille de son arc) : C_f, moyenne des poids de TOUS
|
|
10
|
+
* ses satellites, catégories confondues, zéros inclus (`meanWeight`) — même
|
|
11
|
+
* règle pour une cause et pour un contact (POC-05A4).
|
|
9
12
|
*/
|
|
10
13
|
export declare function composantesToCause(composantes: Composante[], id?: string, name?: string): Cause;
|
|
11
14
|
/** La `Cause` du Yasuní, fraîchement construite à chaque appel (l'hôte peut
|
|
@@ -25,27 +28,3 @@ export declare function getYasuniCause(id?: string): Cause;
|
|
|
25
28
|
* bornes (`validateContactProfile`).
|
|
26
29
|
*/
|
|
27
30
|
export declare function contactProfileToCause(profile: ContactProfileData, id?: string): Cause;
|
|
28
|
-
/**
|
|
29
|
-
* La `Cause` d'un contact EMBARQUÉ dans la lib, fraîchement construite à
|
|
30
|
-
* chaque appel. `id` par défaut : l'id du contact. Lève une erreur si le
|
|
31
|
-
* contact est inconnu (voir `listContacts`).
|
|
32
|
-
*
|
|
33
|
-
* @deprecated Les profils embarqués sont des fixtures gelées de la page
|
|
34
|
-
* standalone ; une app hôte fournit ses profils à `contactProfileToCause`.
|
|
35
|
-
* Retrait prévu en 3.0.0.
|
|
36
|
-
*/
|
|
37
|
-
export declare function getContactCause(contactId: string, id?: string): Cause;
|
|
38
|
-
export interface ContactSummary {
|
|
39
|
-
id: string;
|
|
40
|
-
name: string;
|
|
41
|
-
role: string;
|
|
42
|
-
organisation: string;
|
|
43
|
-
provisional: boolean;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Les contacts EMBARQUÉS, dans l'ordre de la calibration Notion.
|
|
47
|
-
*
|
|
48
|
-
* @deprecated Fixtures gelées de la page standalone ; la liste des contacts
|
|
49
|
-
* d'une app hôte vient de sa propre source. Retrait prévu en 3.0.0.
|
|
50
|
-
*/
|
|
51
|
-
export declare function listContacts(): ContactSummary[];
|
package/dist/types/api.d.ts
CHANGED
|
@@ -58,8 +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,
|
|
62
|
-
export type { ContactSummary } from "./adapters/yasuniCauseAdapter";
|
|
61
|
+
export { getYasuniCause, contactProfileToCause } from "./adapters/yasuniCauseAdapter";
|
|
63
62
|
export { validateContactProfile } from "./data/contacts/buildContactSphere";
|
|
64
63
|
export type { ContactProfileData, ContactSatelliteValue, } from "./data/contacts/buildContactSphere";
|
|
65
64
|
export { UNIVERSAL_FACETS, CONTACT_CATEGORIES } from "./data/contacts/universalFacets";
|
|
@@ -98,5 +98,9 @@ export declare function projectGhostStateForComponent(params: {
|
|
|
98
98
|
sourceCuttingIndex: number;
|
|
99
99
|
actionDelta: number;
|
|
100
100
|
}): GhostProjectionResult | null;
|
|
101
|
+
/** Tension projetée de la facette : même règle que sa tension courante
|
|
102
|
+
* (`facetTensionFromOdds`, moyenne pondérée sur tous ses satellites), sur
|
|
103
|
+
* les tensions projetées de chaque satellite. */
|
|
104
|
+
export declare function projectedComponentTension(component: YinYangInternalModel["components"][number], projectedCuttingStatesByOddId: ReadonlyMap<string, readonly ProjectedCuttingState[]>): number;
|
|
101
105
|
export declare function getOriginalComponentTension(component: YinYangInternalModel["components"][number] | undefined): number | null;
|
|
102
106
|
export declare function getOriginalOddTension(component: YinYangInternalModel["components"][number] | undefined, oddId: string): number | null;
|
|
@@ -305,20 +305,16 @@ export declare class ViewInitializer {
|
|
|
305
305
|
*/
|
|
306
306
|
getAverageTension(): number;
|
|
307
307
|
getAverageState(): number;
|
|
308
|
-
/** Poids
|
|
309
|
-
* (même
|
|
310
|
-
*
|
|
311
|
-
* des arcs qui l'entourent). */
|
|
308
|
+
/** Poids C_f de la facette courante : moyenne des poids de tous ses
|
|
309
|
+
* satellites (`meanWeight`, même règle que `perimeterWeight`, qui fixe la
|
|
310
|
+
* taille de son arc de bordure). */
|
|
312
311
|
getFacetteWeight(): number;
|
|
313
|
-
/** Plafond du poids
|
|
314
|
-
*
|
|
315
|
-
* buildOddArcLabelLines dans YinYangDrawer). */
|
|
312
|
+
/** Plafond du poids C_f : WEIGHT_MAX, quel que soit le nombre de
|
|
313
|
+
* satellites. */
|
|
316
314
|
getFacetteWeightMax(): number;
|
|
317
315
|
/** getFacetteWeight pour une facette quelconque (poids de chaque arc de
|
|
318
316
|
* bordure quand "Afficher libellés" est actif). */
|
|
319
317
|
getComponentWeight(component: YinYangComponentNode | null | undefined): number;
|
|
320
|
-
/** getFacetteWeightMax pour une facette quelconque. */
|
|
321
|
-
getComponentWeightMax(component: YinYangComponentNode | null | undefined): number;
|
|
322
318
|
getCurrentComponentIndex(): number;
|
|
323
319
|
getCurrentComponentName(): string;
|
|
324
320
|
getCurrentComponentOrientation(): "yin" | "yang";
|
|
@@ -414,6 +410,10 @@ export declare class ViewInitializer {
|
|
|
414
410
|
private getAnimationCurrentState;
|
|
415
411
|
private getComponentAnimationState;
|
|
416
412
|
private buildOddCategories;
|
|
413
|
+
/** Part d'une catégorie DANS sa facette (angle de son arc au cercle
|
|
414
|
+
* central) : somme des poids de ses satellites — chaque satellite compte
|
|
415
|
+
* une fois, comme dans Q_f. Sa pastille, elle, affiche la moyenne
|
|
416
|
+
* (`facetWeightLabel`). */
|
|
417
417
|
private getOddWeight;
|
|
418
418
|
private buildCategoriesFromComponent;
|
|
419
419
|
/**
|
|
@@ -483,6 +483,8 @@ export declare class ViewInitializer {
|
|
|
483
483
|
private buildOddSpikes;
|
|
484
484
|
private buildComponentSpikes;
|
|
485
485
|
private buildSpike;
|
|
486
|
+
/** Tension de la facette : moyenne pondérée sur tous ses satellites,
|
|
487
|
+
* repli sur leur moyenne simple (`facetTensionFromOdds`, POC-05A4). */
|
|
486
488
|
private calculateAverageTension;
|
|
487
489
|
private getCurrentComponent;
|
|
488
490
|
handleSparkAngleUpdate(currentAngle: number, previousAngle: number | null): void;
|
|
@@ -304,11 +304,11 @@ export declare class YinYangDrawer {
|
|
|
304
304
|
*/
|
|
305
305
|
private renderFacetteStateLabel;
|
|
306
306
|
/**
|
|
307
|
-
* Affiche le poids d'une facette (
|
|
307
|
+
* Affiche le poids d'une facette (« 6,8 ») DANS son arc de bordure
|
|
308
308
|
* (segment de BorderDrawer), et non dans un lobe : ce poids est celui qui
|
|
309
|
-
* dimensionne l'arc, il se lit donc sur lui.
|
|
310
|
-
*
|
|
311
|
-
*
|
|
309
|
+
* dimensionne l'arc, il se lit donc sur lui. C'est C_f, la moyenne des
|
|
310
|
+
* poids de tous ses satellites (`facetWeightLabel`), sur 10 avec le
|
|
311
|
+
* suffixe.
|
|
312
312
|
*
|
|
313
313
|
* Par défaut seule la facette active porte son poids (et seulement quand
|
|
314
314
|
* ses libellés sont visibles, voir shouldShowFacetteLabels) ; avec
|
|
@@ -475,12 +475,9 @@ export declare class YinYangDrawer {
|
|
|
475
475
|
* (renderChildStateLabel/renderChildWeightLabel), donc le cercle central
|
|
476
476
|
* et son cortège se lisent enfin de la même façon.
|
|
477
477
|
*
|
|
478
|
-
* Le
|
|
479
|
-
*
|
|
480
|
-
*
|
|
481
|
-
* taille de l'arc sous lui), et son plafond est WEIGHT_MAX × nombre de
|
|
482
|
-
* satellites. Il est affiché tel quel plutôt que ramené à une échelle /10
|
|
483
|
-
* qui n'existe qu'au niveau satellite.
|
|
478
|
+
* Le poids d'un ODD est la moyenne des poids de ses seuls satellites
|
|
479
|
+
* (`facetWeightLabel`, « 6,8 »), sur WEIGHT_MAX avec le suffixe — même
|
|
480
|
+
* lecture que la pastille de sa facette (POC-05A4).
|
|
484
481
|
*
|
|
485
482
|
* En mode non compact, le nom court de l'ODD reste affiché au-dessus des
|
|
486
483
|
* deux métriques : c'est une information que le numéro ne portait pas.
|
|
@@ -26,7 +26,7 @@ export interface DiagramOption {
|
|
|
26
26
|
label: string;
|
|
27
27
|
}
|
|
28
28
|
export interface DiagramEnvironment {
|
|
29
|
-
/** `location.search` de la page (ex. "?diagram=
|
|
29
|
+
/** `location.search` de la page (ex. "?diagram=demo_contact"). */
|
|
30
30
|
search: string | null | undefined;
|
|
31
31
|
/** Page standalone de la lib (seule à honorer le paramètre d'URL). */
|
|
32
32
|
standalone: boolean;
|
|
@@ -42,7 +42,8 @@ export declare function detectDiagramEnvironment(): DiagramEnvironment;
|
|
|
42
42
|
/** Données d'un diagramme : les catalogues Yasuní tels quels, ou une sphère
|
|
43
43
|
* de contact (pas d'actions, d'événements, de graphe ni de propagation). */
|
|
44
44
|
export declare function buildDiagramData(id: string): DiagramData;
|
|
45
|
-
/** Options du sélecteur de diagramme : le Yasuní puis
|
|
45
|
+
/** Options du sélecteur de diagramme : le Yasuní puis le contact de
|
|
46
|
+
* démonstration. */
|
|
46
47
|
export declare function listDiagramOptions(): DiagramOption[];
|
|
47
48
|
/** URL de la page courante pointant sur `diagramId` (les autres paramètres
|
|
48
49
|
* sont conservés ; le Yasuní, diagramme par défaut, retire le paramètre). */
|
|
@@ -23,12 +23,6 @@ export interface ContactProfileData {
|
|
|
23
23
|
/** Une valeur par satellite de la grille universelle, ni plus ni moins. */
|
|
24
24
|
values: Record<SatelliteKey, ContactSatelliteValue>;
|
|
25
25
|
}
|
|
26
|
-
/** Profil EMBARQUÉ (fixtures `profiles/<id>.ts`, page standalone et
|
|
27
|
-
* `getContactCause` dépréciée) : identité complète de la calibration. */
|
|
28
|
-
export interface ContactProfile extends ContactProfileData {
|
|
29
|
-
role: string;
|
|
30
|
-
organisation: string;
|
|
31
|
-
}
|
|
32
26
|
/**
|
|
33
27
|
* Vérifie un profil reçu de l'hôte AVANT de construire sa sphère : une clé
|
|
34
28
|
* de satellite manquante ou inconnue, un score ou un poids non fini ou hors
|
|
@@ -42,5 +36,3 @@ export declare function validateContactProfile(profile: ContactProfileData): voi
|
|
|
42
36
|
*/
|
|
43
37
|
export declare function qualityPercentToTension(percent: number): number;
|
|
44
38
|
export declare function buildContactSphere(profile: ContactProfileData): Sphere;
|
|
45
|
-
/** Valeurs identiques pour les 38 satellites — gabarit de profil non calibré. */
|
|
46
|
-
export declare function uniformContactValues(score: number, weight: number): Record<SatelliteKey, ContactSatelliteValue>;
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
import type { Sphere } from "../yasuni_cause";
|
|
2
|
-
import { type ContactProfile, type ContactProfileData } from "./buildContactSphere";
|
|
3
|
-
export declare const contactProfiles: readonly ContactProfile[];
|
|
4
|
-
export declare const CONTACT_IDS: readonly string[];
|
|
5
|
-
export declare function getContactProfile(contactId: string): ContactProfile | undefined;
|
|
6
|
-
/** Le profil embarqué `contactId` au format injectable, présenté comme
|
|
7
|
-
* avant 2.6.0 (« rôle — organisme ») ; lève une erreur si l'id est inconnu. */
|
|
8
|
-
export declare function getEmbeddedContactProfileData(contactId: string): ContactProfileData;
|
|
9
|
-
/** Sphere fraîchement construite du contact ; lève une erreur si l'id est inconnu. */
|
|
10
|
-
export declare function getContactSphere(contactId: string): Sphere;
|
|
11
1
|
export { buildContactSphere, qualityPercentToTension, validateContactProfile, } from "./buildContactSphere";
|
|
12
|
-
export type {
|
|
2
|
+
export type { ContactProfileData, ContactSatelliteValue } from "./buildContactSphere";
|
|
3
|
+
export { DEMO_CONTACT_ID, demoContactProfile } from "./demoContact";
|
|
13
4
|
export { UNIVERSAL_FACETS, CONTACT_CATEGORIES } from "./universalFacets";
|
|
14
5
|
export type { SatelliteKey, ContactFacetId, ContactCategoryId } from "./universalFacets";
|
|
@@ -23,7 +23,9 @@ export interface CauseComponent {
|
|
|
23
23
|
description?: string;
|
|
24
24
|
orientation: YinYangOrientation;
|
|
25
25
|
odds: CauseOdd[];
|
|
26
|
-
/**
|
|
26
|
+
/** Poids de la facette (taille relative de son arc) : C_f, moyenne des
|
|
27
|
+
* poids de TOUS ses satellites, zéros inclus, de 0 à 10 — même règle pour
|
|
28
|
+
* une cause et pour un contact (`meanWeight`, POC-05A4). */
|
|
27
29
|
perimeterWeight: number;
|
|
28
30
|
}
|
|
29
31
|
export interface Cause {
|
|
@@ -5,9 +5,40 @@ export declare function clampScore(value: number): number;
|
|
|
5
5
|
* Canonical domain metric in [0, 1]. Weighted by each satellite's `weight`
|
|
6
6
|
* when provided, so a heavier satellite pulls the tension further toward
|
|
7
7
|
* its own score; falls back to a simple average otherwise.
|
|
8
|
+
*
|
|
9
|
+
* ⚠️ FACETTES D'UN CONTACT : cette règle est reproduite à l'identique par
|
|
10
|
+
* yvy-backend (`src/contacts/contact-facets.ts`), qui fait autorité pour le
|
|
11
|
+
* jeu. Deux implémentations à maintenir identiques : toute évolution met à
|
|
12
|
+
* jour les deux, ainsi que le fichier de cas commun
|
|
13
|
+
* `src/data/contacts/contact-facets.reference.json` (POC-05A2).
|
|
8
14
|
*/
|
|
9
15
|
export declare function tensionFromCuttings(cuttingScores: number[], cuttingWeights?: number[]): number;
|
|
10
16
|
export declare const oddTensionFromCuttings: typeof tensionFromCuttings;
|
|
17
|
+
/** Satellites d'une catégorie (ODD) d'une facette : tensions et poids. */
|
|
18
|
+
interface FacetOddCuttings {
|
|
19
|
+
cuttingScores: readonly number[];
|
|
20
|
+
cuttingWeights: readonly number[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Tension d'une FACETTE (cause ou contact, POC-05A4) : `tensionFromCuttings`
|
|
24
|
+
* sur TOUS ses satellites, catégories confondues — moyenne pondérée par les
|
|
25
|
+
* poids, ou moyenne simple de la facette si tous ses poids sont nuls (pas de
|
|
26
|
+
* repli par catégorie). Q_f = (1 − T) × 100. `cuttingTensions` remplace les
|
|
27
|
+
* tensions de la catégorie d'indice donné (projection d'une action) ; une catégorie dont
|
|
28
|
+
* les poids ne sont pas alignés sur les scores compte ses satellites à 1.
|
|
29
|
+
* Facette sans satellite : 0,5.
|
|
30
|
+
*/
|
|
31
|
+
export declare function facetTensionFromOdds(odds: readonly FacetOddCuttings[], cuttingTensions?: (oddIndex: number) => readonly number[] | undefined): number;
|
|
32
|
+
/**
|
|
33
|
+
* POIDS C_f d'une facette — ou d'une catégorie, pour sa pastille — (causes
|
|
34
|
+
* et contacts, POC-05A4) : moyenne arithmétique des poids (bornés à 0) de
|
|
35
|
+
* TOUS ses satellites, zéros inclus, de 0 à 10, indépendante de leur nombre.
|
|
36
|
+
* Fixe la taille des arcs de facette et la valeur des pastilles. Facettes
|
|
37
|
+
* d'un contact : reproduite à l'identique par yvy-backend
|
|
38
|
+
* (`contactFacetWeights`), cas communs dans
|
|
39
|
+
* `src/data/contacts/contact-facets.reference.json`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function meanWeight(weights: readonly number[]): number;
|
|
11
42
|
export declare function stateFromTension(tension: number): number;
|
|
12
43
|
/** Bornes du poids d'un satellite (importance dans sa facette). Un satellite
|
|
13
44
|
* vaut 1 par défaut ; les actions le font varier par pas entiers, mais ne
|
|
@@ -24,3 +55,4 @@ export declare function clampWeight(value: number): number;
|
|
|
24
55
|
* signe — ex: +1 sur un satellite déjà à WEIGHT_MAX ne change rien.
|
|
25
56
|
*/
|
|
26
57
|
export declare function effectiveWeightDelta(currentWeight: number, delta: number): number;
|
|
58
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
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 (POC-05A4) : C_f, moyenne des poids
|
|
4
|
+
* de tous ses satellites (`meanWeight`), arrondie à un chiffre après la
|
|
5
|
+
* virgule, avec une virgule décimale — « 7,2 ». `max` (WEIGHT_MAX, 10) ne
|
|
6
|
+
* s'affiche qu'avec le suffixe (`facetteLabelSuffixVisible`).
|
|
7
|
+
*/
|
|
8
|
+
export declare function facetWeightLabel(weights: readonly number[]): {
|
|
9
|
+
value: string;
|
|
10
|
+
max: number;
|
|
11
|
+
};
|
package/package.json
CHANGED