fcad-core-dragon 2.1.0-beta.3 → 2.1.0-beta.4

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 (46) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +3 -0
  5. package/bk.scss +117 -117
  6. package/documentation/composants/app-comp-audio.md +35 -3
  7. package/documentation/composants/app-comp-video-player.md +42 -3
  8. package/package.json +1 -1
  9. package/src/assets/data/onboardingMessages.json +47 -47
  10. package/src/components/AppBaseErrorDisplay.vue +438 -438
  11. package/src/components/AppBaseFlipCard.vue +84 -84
  12. package/src/components/AppBasePopover.vue +41 -41
  13. package/src/components/AppCompSettingsMenu.vue +172 -172
  14. package/src/components/AppCompViewDisplay.vue +6 -6
  15. package/src/externalComps/ModuleView.vue +22 -22
  16. package/src/externalComps/SummaryView.vue +91 -91
  17. package/src/module/xapi/Crypto/Hasher.js +241 -241
  18. package/src/module/xapi/Crypto/WordArray.js +278 -278
  19. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  20. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  21. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  22. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  23. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  24. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  25. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  26. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  27. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  28. package/src/module/xapi/Crypto/index.js +53 -53
  29. package/src/module/xapi/Statement/activity.js +47 -47
  30. package/src/module/xapi/Statement/agent.js +55 -55
  31. package/src/module/xapi/Statement/group.js +26 -26
  32. package/src/module/xapi/Statement/index.js +259 -259
  33. package/src/module/xapi/Statement/statement.js +253 -253
  34. package/src/module/xapi/Statement/statementRef.js +23 -23
  35. package/src/module/xapi/Statement/substatement.js +22 -22
  36. package/src/module/xapi/Statement/verb.js +36 -36
  37. package/src/module/xapi/activitytypes.js +17 -17
  38. package/src/module/xapi/utils.js +167 -167
  39. package/src/module/xapi/verbs.js +294 -294
  40. package/src/module/xapi/xapiStatement.js +444 -444
  41. package/src/plugins/bus.js +8 -8
  42. package/src/plugins/gsap.js +1 -0
  43. package/src/plugins/save.js +37 -37
  44. package/src/plugins/scorm.js +287 -287
  45. package/src/plugins/xapi.js +11 -11
  46. package/src/public/index.html +33 -33
package/.editorconfig CHANGED
@@ -1,33 +1,33 @@
1
- # http://editorconfig.org
2
- root = true
3
-
4
- [*]
5
- indent_style = space
6
- indent_size = 2
7
- end_of_line = lf
8
- charset = utf-8
9
- trim_trailing_whitespace = true
10
- insert_final_newline = true
11
-
12
-
13
- # The JSON files contain newlines inconsistently
14
- [*.json]
15
- insert_final_newline = ignore
16
-
17
- # Minified JavaScript files shouldn't be changed
18
- [**.min.js]
19
- indent_style = ignore
20
- insert_final_newline = ignore
21
-
22
- # Makefiles always use tabs for indentation
23
- [Makefile]
24
- indent_style = tab
25
-
26
- # Batch files use tabs for indentation
27
- [*.bat]
28
- indent_style = tab
29
-
30
- [*.md]
31
- trim_trailing_whitespace = false
32
- insert_final_newline = false
33
-
1
+ # http://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ indent_style = space
6
+ indent_size = 2
7
+ end_of_line = lf
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+
12
+
13
+ # The JSON files contain newlines inconsistently
14
+ [*.json]
15
+ insert_final_newline = ignore
16
+
17
+ # Minified JavaScript files shouldn't be changed
18
+ [**.min.js]
19
+ indent_style = ignore
20
+ insert_final_newline = ignore
21
+
22
+ # Makefiles always use tabs for indentation
23
+ [Makefile]
24
+ indent_style = tab
25
+
26
+ # Batch files use tabs for indentation
27
+ [*.bat]
28
+ indent_style = tab
29
+
30
+ [*.md]
31
+ trim_trailing_whitespace = false
32
+ insert_final_newline = false
33
+
package/.eslintignore CHANGED
@@ -1,29 +1,29 @@
1
- .DS_Store
2
- node_modules
3
- /dist
4
- yalc.lock
5
- package-lock.json
6
- .zip
7
-
8
- # local env files
9
- .env.local
10
- .env.*.local
11
-
12
- # Log files
13
- npm-debug.log*
14
- yarn-debug.log*
15
- yarn-error.log*
16
- pnpm-debug.log*
17
-
18
- # Editor directories and files
19
- .idea
20
- .vscode
21
- *.suo
22
- *.ntvs*
23
- *.njsproj
24
- *.sln
25
- *.sw?
26
- \_*
27
- .eslintrc
28
- .gitignore
29
-
1
+ .DS_Store
2
+ node_modules
3
+ /dist
4
+ yalc.lock
5
+ package-lock.json
6
+ .zip
7
+
8
+ # local env files
9
+ .env.local
10
+ .env.*.local
11
+
12
+ # Log files
13
+ npm-debug.log*
14
+ yarn-debug.log*
15
+ yarn-error.log*
16
+ pnpm-debug.log*
17
+
18
+ # Editor directories and files
19
+ .idea
20
+ .vscode
21
+ *.suo
22
+ *.ntvs*
23
+ *.njsproj
24
+ *.sln
25
+ *.sw?
26
+ \_*
27
+ .eslintrc
28
+ .gitignore
29
+
package/.eslintrc.cjs CHANGED
@@ -1,81 +1,81 @@
1
- // Special confirugation for pettier for this project. Creating this file is optional in a project.
2
- module.exports = {
3
- root: true,
4
- env: {
5
- node: true,
6
- browser: true
7
- },
8
- plugins: ['prettier'],
9
- extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'prettier'],
10
- rules: {
11
- // Only allow debugger in development
12
- 'no-debugger': process.env.PRE_COMMIT ? 'error' : 'off',
13
- // Only allow `console.log` in development
14
- 'no-console': process.env.PRE_COMMIT
15
- ? ['error', { allow: ['warn', 'error'] }]
16
- : 'off',
17
- //'comma-dangle': ['error', 'never'],
18
- 'no-alert': 'off',
19
- //'vue/array-bracket-spacing': 'error',
20
- //'vue/block-spacing': 'error',
21
- // 'vue/comma-dangle': ['error', 'never'],
22
- //'vue/object-curly-spacing': ['error', 'always'],
23
- 'vue/no-v-for-template-key': 'off',
24
- 'vue/valid-template-root': 'off',
25
- // 'vue/no-v-for-template-key-on-child':'off',
26
- 'vue/component-name-in-template-casing': [
27
- 'error',
28
- 'kebab-case',
29
- {
30
- ignores: []
31
- }
32
- ],
33
- 'vue/no-v-html': 'off',
34
- 'prettier/prettier': [
35
- 'error',
36
- {
37
- singleQuote: true,
38
- semi: false,
39
- tabWidth: 2,
40
- trailingComma: 'none',
41
- arrowParens: 'always',
42
- htmlWhitespaceSensitivity: 'ignore',
43
- endOfLine: 'auto'
44
- }
45
- ],
46
- 'no-param-reassign': [0, { allowPassedByValue: true }],
47
- 'no-shadow': 'off',
48
- 'prefer-const': [
49
- 'off',
50
- {
51
- destructuring: 'any',
52
- ignoreReadBeforeAssign: false
53
- }
54
- ],
55
- 'consistent-return': 'off',
56
- camelcase: 'off',
57
- 'no-underscore-dangle': 'off',
58
- 'no-restricted-syntax': 'off',
59
- 'no-lonely-if': 'off',
60
- 'default-case': 'off',
61
- 'no-plusplus': 'off',
62
- 'no-loop-func': 'off',
63
- 'no-prototype-builtins': 'off',
64
- 'func-names': 'off',
65
- 'no-unused-vars': ['error', { args: 'none', ignoreRestSiblings: true }]
66
- },
67
- parserOptions: {
68
- sourceType: 'module'
69
- },
70
- overrides: [
71
- {
72
- files: [
73
- '**/__tests__/*.{j,t}s?(x)',
74
- '**/tests/unit/**/*.spec.{j,t}s?(x)'
75
- ],
76
- env: {
77
- jest: true
78
- }
79
- }
80
- ]
81
- }
1
+ // Special confirugation for pettier for this project. Creating this file is optional in a project.
2
+ module.exports = {
3
+ root: true,
4
+ env: {
5
+ node: true,
6
+ browser: true
7
+ },
8
+ plugins: ['prettier'],
9
+ extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'prettier'],
10
+ rules: {
11
+ // Only allow debugger in development
12
+ 'no-debugger': process.env.PRE_COMMIT ? 'error' : 'off',
13
+ // Only allow `console.log` in development
14
+ 'no-console': process.env.PRE_COMMIT
15
+ ? ['error', { allow: ['warn', 'error'] }]
16
+ : 'off',
17
+ //'comma-dangle': ['error', 'never'],
18
+ 'no-alert': 'off',
19
+ //'vue/array-bracket-spacing': 'error',
20
+ //'vue/block-spacing': 'error',
21
+ // 'vue/comma-dangle': ['error', 'never'],
22
+ //'vue/object-curly-spacing': ['error', 'always'],
23
+ 'vue/no-v-for-template-key': 'off',
24
+ 'vue/valid-template-root': 'off',
25
+ // 'vue/no-v-for-template-key-on-child':'off',
26
+ 'vue/component-name-in-template-casing': [
27
+ 'error',
28
+ 'kebab-case',
29
+ {
30
+ ignores: []
31
+ }
32
+ ],
33
+ 'vue/no-v-html': 'off',
34
+ 'prettier/prettier': [
35
+ 'error',
36
+ {
37
+ singleQuote: true,
38
+ semi: false,
39
+ tabWidth: 2,
40
+ trailingComma: 'none',
41
+ arrowParens: 'always',
42
+ htmlWhitespaceSensitivity: 'ignore',
43
+ endOfLine: 'auto'
44
+ }
45
+ ],
46
+ 'no-param-reassign': [0, { allowPassedByValue: true }],
47
+ 'no-shadow': 'off',
48
+ 'prefer-const': [
49
+ 'off',
50
+ {
51
+ destructuring: 'any',
52
+ ignoreReadBeforeAssign: false
53
+ }
54
+ ],
55
+ 'consistent-return': 'off',
56
+ camelcase: 'off',
57
+ 'no-underscore-dangle': 'off',
58
+ 'no-restricted-syntax': 'off',
59
+ 'no-lonely-if': 'off',
60
+ 'default-case': 'off',
61
+ 'no-plusplus': 'off',
62
+ 'no-loop-func': 'off',
63
+ 'no-prototype-builtins': 'off',
64
+ 'func-names': 'off',
65
+ 'no-unused-vars': ['error', { args: 'none', ignoreRestSiblings: true }]
66
+ },
67
+ parserOptions: {
68
+ sourceType: 'module'
69
+ },
70
+ overrides: [
71
+ {
72
+ files: [
73
+ '**/__tests__/*.{j,t}s?(x)',
74
+ '**/tests/unit/**/*.spec.{j,t}s?(x)'
75
+ ],
76
+ env: {
77
+ jest: true
78
+ }
79
+ }
80
+ ]
81
+ }
package/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 2.1.0-beta.4(26 septembre 2025)
2
+ ajout du plugin ScrollTrigger à l’objet $gsap
3
+
1
4
  2.1.0-beta.3(24 septembre 2025)
2
5
  RUPTURE DE COMPATIBILITÉ : Ajout de Google Analytics (analytics_id dans app.vue) nouvelle dépendance : npm install vue-gtag@2.0.1
3
6
 
package/bk.scss CHANGED
@@ -1,117 +1,117 @@
1
-
2
-
3
- .navbar {
4
- position: absolute;
5
- top: 0;
6
- left: 0;
7
- z-index: 10;
8
- display: flex;
9
- flex-direction: column;
10
- flex-wrap: wrap;
11
- align-content: start;
12
- width: 67px;
13
- height: 100%;
14
- }
15
-
16
- .module-wrapper {
17
- width: 100%;
18
- position: relative;
19
-
20
- #wrapper-content {
21
- width: 100%;
22
- position: relative;
23
- padding-right: 0 !important;
24
- padding-left: 0 !important;
25
-
26
- &.active {
27
- overflow: hidden;
28
- }
29
-
30
- .box {
31
- width: 100%;
32
- height: 95%;
33
-
34
- .app-page {
35
- width: 100%;
36
- margin-top: 60px;
37
-
38
- .row {
39
- width: 100%;
40
- margin-right: 0;
41
- margin-left: 0;
42
- }
43
- }
44
- }
45
- }
46
-
47
- .app-comp-table-of-content {
48
- display: -webkit-flex;
49
- display: flex;
50
- flex-direction: column;
51
- flex-wrap: wrap;
52
- position: absolute;
53
- top: 0px;
54
- min-height: 100%;
55
- z-index: 1;
56
- }
57
- }
58
-
59
- .app-nav {
60
- .md-controller {
61
- display: -webkit-flex;
62
- display: flex;
63
- flex-direction: row;
64
- align-items: baseline;
65
- //width: $widthPlayer;
66
- width: 50%;
67
-
68
- .ctrl-play {
69
- display: -webkit-flex;
70
- display: flex;
71
- flex-direction: row;
72
- align-items: baseline;
73
- //width: $widthPlayer;
74
- width: 50%;
75
-
76
- #progress-bar {
77
- display: block;
78
- //width: $widthProgressBar;
79
- width: 150px;
80
- //height: $heigthProgressBar;
81
- height: 10px;
82
- position: relative;
83
- overflow: hidden;
84
-
85
- #progress {
86
- display: block;
87
- height: 100%;
88
- background-color: red;
89
- }
90
-
91
- #progress-shaddow {
92
- display: block;
93
- height: 100%;
94
- position: absolute;
95
- top: 0px;
96
- left: 0px;
97
- z-index: -1;
98
- }
99
- }
100
- }
101
-
102
- .ctrl-subtitle {
103
- //width: $widthCtrSubtitle;
104
- width: 10%;
105
- }
106
-
107
- .ctrl-sound {
108
- display: -webkit-flex;
109
- display: flex;
110
- flex-direction: row;
111
- align-items: baseline;
112
- justify-content: space-between;
113
- //width: $widthCtrlSound;
114
- width: 40%;
115
- }
116
- }
117
- }
1
+
2
+
3
+ .navbar {
4
+ position: absolute;
5
+ top: 0;
6
+ left: 0;
7
+ z-index: 10;
8
+ display: flex;
9
+ flex-direction: column;
10
+ flex-wrap: wrap;
11
+ align-content: start;
12
+ width: 67px;
13
+ height: 100%;
14
+ }
15
+
16
+ .module-wrapper {
17
+ width: 100%;
18
+ position: relative;
19
+
20
+ #wrapper-content {
21
+ width: 100%;
22
+ position: relative;
23
+ padding-right: 0 !important;
24
+ padding-left: 0 !important;
25
+
26
+ &.active {
27
+ overflow: hidden;
28
+ }
29
+
30
+ .box {
31
+ width: 100%;
32
+ height: 95%;
33
+
34
+ .app-page {
35
+ width: 100%;
36
+ margin-top: 60px;
37
+
38
+ .row {
39
+ width: 100%;
40
+ margin-right: 0;
41
+ margin-left: 0;
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ .app-comp-table-of-content {
48
+ display: -webkit-flex;
49
+ display: flex;
50
+ flex-direction: column;
51
+ flex-wrap: wrap;
52
+ position: absolute;
53
+ top: 0px;
54
+ min-height: 100%;
55
+ z-index: 1;
56
+ }
57
+ }
58
+
59
+ .app-nav {
60
+ .md-controller {
61
+ display: -webkit-flex;
62
+ display: flex;
63
+ flex-direction: row;
64
+ align-items: baseline;
65
+ //width: $widthPlayer;
66
+ width: 50%;
67
+
68
+ .ctrl-play {
69
+ display: -webkit-flex;
70
+ display: flex;
71
+ flex-direction: row;
72
+ align-items: baseline;
73
+ //width: $widthPlayer;
74
+ width: 50%;
75
+
76
+ #progress-bar {
77
+ display: block;
78
+ //width: $widthProgressBar;
79
+ width: 150px;
80
+ //height: $heigthProgressBar;
81
+ height: 10px;
82
+ position: relative;
83
+ overflow: hidden;
84
+
85
+ #progress {
86
+ display: block;
87
+ height: 100%;
88
+ background-color: red;
89
+ }
90
+
91
+ #progress-shaddow {
92
+ display: block;
93
+ height: 100%;
94
+ position: absolute;
95
+ top: 0px;
96
+ left: 0px;
97
+ z-index: -1;
98
+ }
99
+ }
100
+ }
101
+
102
+ .ctrl-subtitle {
103
+ //width: $widthCtrSubtitle;
104
+ width: 10%;
105
+ }
106
+
107
+ .ctrl-sound {
108
+ display: -webkit-flex;
109
+ display: flex;
110
+ flex-direction: row;
111
+ align-items: baseline;
112
+ justify-content: space-between;
113
+ //width: $widthCtrlSound;
114
+ width: 40%;
115
+ }
116
+ }
117
+ }
@@ -15,9 +15,41 @@ S'affiche dans un en cadré avec un titre (obligatoire), une image (pas obligat
15
15
  `<app-comp-audio-player :aud-data="audioData2"/>`
16
16
 
17
17
 
18
- ## Paramètre
19
-
20
- Aucun paramètre n'est nécessaire pour ce composant.
18
+ ## Structure de données
19
+ Voici la structure à utiliser pour les données d'un contenu audio
20
+ > [!IMPORTANT]
21
+ > audiosData doit être un tableau (array)
22
+ ```js
23
+ import aud1 from '@/assets/medias/exemple_audio.mp3'
24
+ import posterAud1 from '@/assets/img/audio_poster.png'
25
+
26
+ export default {
27
+ data() {
28
+ return {
29
+ id: 'P01',
30
+ activityRef: 'A03',
31
+ title: 'Lecteurs médias',
32
+ type: 'pg_normal',
33
+ audiosData: [
34
+ {
35
+ id: 'aud1',
36
+ mTitle: 'Et si... Annie Ernaux nous parlait',
37
+ mSources: [
38
+ {
39
+ type: 'mp3',
40
+ src: aud1
41
+ }
42
+ ],
43
+ mPoster: posterAud1,
44
+ mAlt: "Portrait de l'autrice Annie Ernaux",
45
+ mTranscript:
46
+ '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>'
47
+ }
48
+ ]
49
+ }
50
+ }
51
+ }
52
+ ```
21
53
 
22
54
  ### Props
23
55
 
@@ -20,9 +20,48 @@ Les transcripts ouvrent dans une fenêtre latérale. Une seule fenêtre peux êt
20
20
 
21
21
  `<app-comp-video-player :vid-data="videoData" />`
22
22
 
23
- ## Paramètre
24
-
25
- Il n'y a pas de paramètre pour ce composant.
23
+ ## Structure de données
24
+
25
+ Voici la structure à utiliser pour les données d'une vidéo
26
+ > [!IMPORTANT]
27
+ > videosData doit être un tableau (array)
28
+
29
+ ```js
30
+ import videoExemple from '@/assets/medias/exemple_video.mp4'
31
+ import posterDandurand from '@/assets/img/video_poster.jpg'
32
+ import vttVid1FR from '@/assets/medias/exemple_soustitres.vtt'
33
+
34
+ export default {
35
+ data() {
36
+ return {
37
+ id: 'P01',
38
+ activityRef: 'A03',
39
+ title: 'Lecteurs médias',
40
+ type: 'pg_normal',
41
+ videosData: [
42
+ {
43
+ id: 'vid1',
44
+ mSources: [
45
+ {
46
+ type: 'mp4',
47
+ src: videoExemple
48
+ }
49
+ ],
50
+ mSubtitles: [
51
+ {
52
+ label: 'Français',
53
+ src: vttVid1FR,
54
+ srclang: 'fr'
55
+ }
56
+ ],
57
+ mPoster: posterDandurand,
58
+ mTranscript: 'exemple_transcript.html' // The file MUST be in the public folder of the project
59
+ }
60
+ ]
61
+ }
62
+ }
63
+ }
64
+ ```
26
65
 
27
66
  ### Props
28
67
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fcad-core-dragon",
3
- "version": "2.1.0-beta.3",
3
+ "version": "2.1.0-beta.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./src/main.js",