@creezio/interactive-demo 0.22.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.
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Contrat déclaratif des scénarios de démo interactive.
4
+ *
5
+ * Un scénario = une liste ordonnée d'étapes JSON-sérialisables : c'est ce
6
+ * format qui vit en DB (overrides) et dans le fichier de défauts marque
7
+ * (`server/src/electron/brand-interactive-demo-content.ts`). Ajouter /
8
+ * enlever / réordonner des étapes = éditer ce tableau, rien d'autre.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.scenarioMatchesRole = scenarioMatchesRole;
12
+ exports.validateDemoScenario = validateDemoScenario;
13
+ const STEP_KINDS = [
14
+ "say",
15
+ "navigate",
16
+ "highlight",
17
+ "click",
18
+ "type",
19
+ "scroll",
20
+ "wait",
21
+ "waitFor",
22
+ ];
23
+ /**
24
+ * Filtre par rôle du lanceur et de l'autoStart : un scénario sans `roles`
25
+ * (ou avec un tableau vide) est visible pour tous ; `role` null/undefined
26
+ * = pas de filtrage (comportement historique).
27
+ */
28
+ function scenarioMatchesRole(scenario, role) {
29
+ if (role == null)
30
+ return true;
31
+ const roles = scenario.roles;
32
+ if (!Array.isArray(roles) || roles.length === 0)
33
+ return true;
34
+ return roles.includes(role);
35
+ }
36
+ function isValidTarget(t) {
37
+ if (typeof t === "string")
38
+ return t.trim().length > 0;
39
+ if (!t || typeof t !== "object" || Array.isArray(t))
40
+ return false;
41
+ const o = t;
42
+ return ["selector", "aid", "text"].some((k) => typeof o[k] === "string" && o[k].trim().length > 0);
43
+ }
44
+ /**
45
+ * Validation pure d'un scénario (défauts marque ou scénario mergé) —
46
+ * renvoie la liste des erreurs (vide = valide). Jamais de throw.
47
+ */
48
+ function validateDemoScenario(scenario) {
49
+ const errors = [];
50
+ if (!scenario || typeof scenario !== "object" || Array.isArray(scenario)) {
51
+ return ["scenario_invalide"];
52
+ }
53
+ const s = scenario;
54
+ if (typeof s.id !== "string" || !s.id.trim())
55
+ errors.push("id_requis");
56
+ if (typeof s.title !== "string" || !s.title.trim())
57
+ errors.push("titre_requis");
58
+ if (s.roles !== undefined &&
59
+ (!Array.isArray(s.roles) ||
60
+ s.roles.some((r) => typeof r !== "string" || !r.trim()))) {
61
+ errors.push("roles_invalide");
62
+ }
63
+ if (!Array.isArray(s.steps) || s.steps.length === 0) {
64
+ errors.push("etapes_requises");
65
+ return errors;
66
+ }
67
+ const seen = new Set();
68
+ s.steps.forEach((step, i) => {
69
+ const at = `etape_${i}`;
70
+ if (!step || typeof step !== "object") {
71
+ errors.push(`${at}_invalide`);
72
+ return;
73
+ }
74
+ const st = step;
75
+ if (typeof st.id !== "string" || !st.id.trim())
76
+ errors.push(`${at}_id_requis`);
77
+ else if (seen.has(st.id))
78
+ errors.push(`${at}_id_duplique`);
79
+ else
80
+ seen.add(st.id);
81
+ if (!STEP_KINDS.includes(st.kind)) {
82
+ errors.push(`${at}_kind_invalide`);
83
+ return;
84
+ }
85
+ switch (st.kind) {
86
+ case "say":
87
+ if (typeof st.title !== "string" || !st.title.trim()) {
88
+ errors.push(`${at}_titre_requis`);
89
+ }
90
+ break;
91
+ case "navigate":
92
+ if (typeof st.href !== "string" || !st.href.startsWith("/")) {
93
+ errors.push(`${at}_href_invalide`);
94
+ }
95
+ break;
96
+ case "highlight":
97
+ case "click":
98
+ if (!isValidTarget(st.target))
99
+ errors.push(`${at}_cible_invalide`);
100
+ break;
101
+ case "type":
102
+ if (!isValidTarget(st.target))
103
+ errors.push(`${at}_cible_invalide`);
104
+ if (typeof st.text !== "string")
105
+ errors.push(`${at}_texte_requis`);
106
+ break;
107
+ case "scroll":
108
+ if (st.target !== undefined && !isValidTarget(st.target)) {
109
+ errors.push(`${at}_cible_invalide`);
110
+ }
111
+ break;
112
+ case "wait":
113
+ if (typeof st.ms !== "number" || !(st.ms > 0))
114
+ errors.push(`${at}_ms_invalide`);
115
+ break;
116
+ case "waitFor": {
117
+ const hasTarget = st.target !== undefined;
118
+ const hasUrl = st.url !== undefined;
119
+ if (!hasTarget && !hasUrl) {
120
+ errors.push(`${at}_cible_ou_url_requise`);
121
+ break;
122
+ }
123
+ if (hasTarget && !isValidTarget(st.target)) {
124
+ errors.push(`${at}_cible_invalide`);
125
+ }
126
+ if (hasUrl &&
127
+ (typeof st.url !== "string" || !st.url.startsWith("/"))) {
128
+ errors.push(`${at}_url_invalide`);
129
+ }
130
+ break;
131
+ }
132
+ }
133
+ });
134
+ return errors;
135
+ }
136
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@creezio/interactive-demo",
3
+ "version": "0.22.0",
4
+ "description": "Démo interactive native (product tour live) : moteur de scénarios déclaratifs + faux curseur animé, contenu hybride DB",
5
+ "type": "module",
6
+ "main": "./dist-cjs/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist-cjs/index.js",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./ui": {
16
+ "types": "./ui/index.ts",
17
+ "import": "./ui/index.ts",
18
+ "default": "./ui/index.ts"
19
+ },
20
+ "./ui/interactive-demo.css": "./ui/interactive-demo.css"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "dist-cjs",
25
+ "ui"
26
+ ],
27
+ "scripts": {
28
+ "build": "tsc -p tsconfig.json",
29
+ "typecheck": "tsc -p tsconfig.json --noEmit"
30
+ },
31
+ "dependencies": {
32
+ "@creezio/api-kernel": "^0.22.0",
33
+ "@creezio/platform-core": "^0.22.0",
34
+ "@creezio/shell-ui": "^0.22.0"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "^22.15.3",
38
+ "@types/react": "^18.3.12",
39
+ "typescript": "^5.8.3"
40
+ },
41
+ "peerDependencies": {
42
+ "lucide-react": ">=0.400.0",
43
+ "react": "^18.0.0 || ^19.0.0"
44
+ },
45
+ "peerDependenciesMeta": {
46
+ "lucide-react": {
47
+ "optional": true
48
+ },
49
+ "react": {
50
+ "optional": true
51
+ }
52
+ },
53
+ "license": "UNLICENSED",
54
+ "module": "./dist/index.js",
55
+ "publishConfig": {
56
+ "registry": "https://registry.npmjs.org",
57
+ "access": "public"
58
+ },
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/creezio/creezio.git",
62
+ "directory": "packages/interactive-demo"
63
+ },
64
+ "engines": {
65
+ "node": ">=22.5"
66
+ }
67
+ }