fcad-core-dragon 2.1.1 → 2.1.2

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 (160) hide show
  1. package/.editorconfig +7 -7
  2. package/.gitlab-ci.yml +124 -0
  3. package/.prettierrc +11 -11
  4. package/.vscode/extensions.json +8 -8
  5. package/.vscode/settings.json +46 -16
  6. package/CHANGELOG +520 -520
  7. package/README.md +57 -57
  8. package/documentation/.vitepress/config.js +114 -114
  9. package/documentation/api-examples.md +49 -49
  10. package/documentation/composants/app-base-button.md +58 -58
  11. package/documentation/composants/app-base-error-display.md +59 -59
  12. package/documentation/composants/app-base-popover.md +68 -68
  13. package/documentation/composants/app-comp-audio.md +75 -75
  14. package/documentation/composants/app-comp-branch-buttons.md +111 -111
  15. package/documentation/composants/app-comp-button-progress.md +53 -53
  16. package/documentation/composants/app-comp-carousel.md +53 -53
  17. package/documentation/composants/app-comp-container.md +53 -53
  18. package/documentation/composants/app-comp-input-checkbox-next.md +42 -42
  19. package/documentation/composants/app-comp-input-dropdown-next.md +34 -34
  20. package/documentation/composants/app-comp-input-radio-next.md +39 -39
  21. package/documentation/composants/app-comp-input-text-next.md +35 -35
  22. package/documentation/composants/app-comp-input-text-table-next.md +34 -34
  23. package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -53
  24. package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -31
  25. package/documentation/composants/app-comp-jauge.md +31 -31
  26. package/documentation/composants/app-comp-menu-item.md +55 -55
  27. package/documentation/composants/app-comp-menu.md +29 -29
  28. package/documentation/composants/app-comp-navigation.md +41 -41
  29. package/documentation/composants/app-comp-note-call.md +53 -53
  30. package/documentation/composants/app-comp-note-credit.md +53 -53
  31. package/documentation/composants/app-comp-play-bar-next.md +53 -53
  32. package/documentation/composants/app-comp-pop-up-next.md +93 -93
  33. package/documentation/composants/app-comp-quiz-next.md +235 -235
  34. package/documentation/composants/app-comp-quiz-recall.md +53 -53
  35. package/documentation/composants/app-comp-svg-next.md +53 -53
  36. package/documentation/composants/app-comp-table-of-content.md +50 -50
  37. package/documentation/composants/app-comp-video-player.md +82 -82
  38. package/documentation/composants.md +46 -46
  39. package/documentation/composants_critiques/ModelPageComposant.md +53 -53
  40. package/documentation/composants_critiques/app-base-module.md +43 -43
  41. package/documentation/composants_critiques/app-base-page.md +48 -48
  42. package/documentation/composants_critiques/app-base.md +311 -311
  43. package/documentation/composants_critiques/main.md +15 -15
  44. package/documentation/demarrage.md +50 -50
  45. package/documentation/deploiement.md +57 -57
  46. package/documentation/index.md +33 -33
  47. package/documentation/markdown-examples.md +85 -85
  48. package/documentation/public/vite.svg +14 -14
  49. package/documentation/public/vuejs.svg +1 -1
  50. package/documentation/public/vuetify.svg +5 -5
  51. package/eslint.config.js +60 -60
  52. package/junit-report.xml +182 -0
  53. package/package.json +66 -59
  54. package/playwright/index.html +12 -0
  55. package/playwright/index.js +21 -0
  56. package/playwright-ct.config.js +95 -0
  57. package/src/$locales/en.json +157 -157
  58. package/src/$locales/fr.json +120 -120
  59. package/src/assets/data/onboardingMessages.json +47 -47
  60. package/src/components/AppBase.vue +1171 -1169
  61. package/src/components/AppBaseButton.vue +90 -95
  62. package/src/components/AppBaseErrorDisplay.vue +438 -438
  63. package/src/components/AppBaseFlipCard.vue +84 -84
  64. package/src/components/AppBaseModule.vue +1639 -1634
  65. package/src/components/AppBasePage.vue +867 -866
  66. package/src/components/AppBasePopover.vue +41 -41
  67. package/src/components/AppBaseSkeleton.vue +66 -66
  68. package/src/components/AppCompAudio.vue +261 -256
  69. package/src/components/AppCompBranchButtons.vue +508 -508
  70. package/src/components/AppCompButtonProgress.vue +137 -132
  71. package/src/components/AppCompCarousel.vue +342 -336
  72. package/src/components/AppCompContainer.vue +29 -29
  73. package/src/components/AppCompInputCheckBoxNx.vue +325 -323
  74. package/src/components/AppCompInputDropdownNx.vue +302 -299
  75. package/src/components/AppCompInputRadioNx.vue +287 -284
  76. package/src/components/AppCompInputTextNx.vue +156 -153
  77. package/src/components/AppCompInputTextTableNx.vue +205 -202
  78. package/src/components/AppCompInputTextToFillDropdownNx.vue +343 -340
  79. package/src/components/AppCompInputTextToFillNx.vue +316 -313
  80. package/src/components/AppCompJauge.vue +81 -81
  81. package/src/components/AppCompMenu.vue +6 -1
  82. package/src/components/AppCompMenuItem.vue +246 -240
  83. package/src/components/AppCompNavigation.vue +977 -972
  84. package/src/components/AppCompNoteCall.vue +167 -161
  85. package/src/components/AppCompNoteCredit.vue +496 -491
  86. package/src/components/AppCompPlayBarNext.vue +2290 -2288
  87. package/src/components/AppCompPopUpNext.vue +508 -504
  88. package/src/components/AppCompQuizNext.vue +515 -510
  89. package/src/components/AppCompQuizRecall.vue +355 -350
  90. package/src/components/AppCompSVGNext.vue +346 -346
  91. package/src/components/AppCompSettingsMenu.vue +177 -172
  92. package/src/components/AppCompTableOfContent.vue +433 -427
  93. package/src/components/AppCompVideoPlayer.vue +377 -377
  94. package/src/components/AppCompViewDisplay.vue +6 -6
  95. package/src/components/BaseModule.vue +55 -55
  96. package/src/composables/useIdleDetector.js +56 -56
  97. package/src/composables/useQuiz.js +89 -89
  98. package/src/composables/useTimer.js +172 -172
  99. package/src/directives/nvdaFix.js +53 -53
  100. package/src/externalComps/ModuleView.vue +22 -22
  101. package/src/externalComps/SummaryView.vue +91 -91
  102. package/src/main.js +493 -476
  103. package/src/module/stores/appStore.js +960 -947
  104. package/src/module/xapi/ADL.js +520 -520
  105. package/src/module/xapi/Crypto/Hasher.js +241 -241
  106. package/src/module/xapi/Crypto/WordArray.js +278 -278
  107. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  108. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  109. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  110. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  111. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  112. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  113. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  114. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  115. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  116. package/src/module/xapi/Crypto/index.js +53 -53
  117. package/src/module/xapi/Statement/activity.js +47 -47
  118. package/src/module/xapi/Statement/agent.js +55 -55
  119. package/src/module/xapi/Statement/group.js +26 -26
  120. package/src/module/xapi/Statement/index.js +259 -259
  121. package/src/module/xapi/Statement/statement.js +253 -253
  122. package/src/module/xapi/Statement/statementRef.js +23 -23
  123. package/src/module/xapi/Statement/substatement.js +22 -22
  124. package/src/module/xapi/Statement/verb.js +36 -36
  125. package/src/module/xapi/activitytypes.js +17 -17
  126. package/src/module/xapi/launch.js +157 -157
  127. package/src/module/xapi/utils.js +167 -167
  128. package/src/module/xapi/verbs.js +294 -294
  129. package/src/module/xapi/wrapper.js +1895 -1895
  130. package/src/module/xapi/xapiStatement.js +444 -444
  131. package/src/plugins/analytics.js +34 -34
  132. package/src/plugins/bus.js +12 -8
  133. package/src/plugins/gsap.js +17 -17
  134. package/src/plugins/helper.js +355 -358
  135. package/src/plugins/i18n.js +27 -26
  136. package/src/plugins/idb.js +227 -227
  137. package/src/plugins/save.js +37 -37
  138. package/src/plugins/scorm.js +287 -287
  139. package/src/plugins/xapi.js +11 -11
  140. package/src/public/index.html +33 -33
  141. package/src/router/index.js +57 -57
  142. package/src/router/routes.js +312 -312
  143. package/src/shared/generalfuncs.js +344 -344
  144. package/src/shared/validators.js +1018 -1018
  145. package/tests/component/AppBaseButton.spec.js +53 -0
  146. package/tests/component/pinia.spec.js +24 -0
  147. package/{src/components/tests__ → tests/unit}/AppBaseButton.spec.js +53 -53
  148. package/tests/unit/AppCompInputCheckBoxNx.spec.js +59 -0
  149. package/tests/unit/AppCompInputDropdownNx.spec.js +51 -0
  150. package/tests/unit/AppCompInputRadioNx.spec.js +59 -0
  151. package/tests/unit/AppCompInputTextNx.spec.js +44 -0
  152. package/tests/unit/AppCompInputTextTableNx.spec.js +77 -0
  153. package/tests/unit/AppCompInputTextToFillDropdownNx.spec.js +60 -0
  154. package/tests/unit/AppCompInputTextToFillNx.spec.js +45 -0
  155. package/tests/unit/AppCompQuizNext.spec.js +114 -0
  156. package/tests/unit/AppCompVideoPlayer.spec.js +177 -0
  157. package/{src/components/tests__ → tests/unit}/useTimer.spec.js +91 -91
  158. package/vitest.config.js +28 -19
  159. package/vitest.setup.js +28 -0
  160. package/src/components/AppBaseButton.test.js +0 -21
@@ -1,167 +1,167 @@
1
- export const defineUtils = function (obj = {}) {
2
- let ADL = obj
3
- let onBrowser = false
4
- if (typeof window !== 'undefined') {
5
- ADL = window.ADL = obj.ADL || {}
6
- onBrowser = true
7
- }
8
-
9
- const getObjDefName = function (o) {
10
- if (o.definition && o.definition.name) {
11
- return ADL.xapiutil.getLangVal(o.definition.name)
12
- }
13
- return undefined
14
- }
15
-
16
- const getSubStatementDisplay = function (o) {
17
- if (o.objectType !== 'SubStatement') return
18
- if (o.object.objectType === 'SubStatement') return
19
- if (o.id || o.stored || o.version || o.authority) return
20
- const disp =
21
- ADL.xapiutil.getActorId(o.actor) +
22
- ':' +
23
- ADL.xapiutil.getVerbDisplay(o.verb) +
24
- ':' +
25
- ADL.xapiutil.getObjectId(o.object)
26
- return disp
27
- }
28
-
29
- ADL.xapiutil = {}
30
-
31
- ADL.xapiutil.getLang = function () {
32
- let lang
33
- if (typeof navigator !== 'undefined')
34
- lang =
35
- navigator.language ||
36
- navigator.browserLanguage ||
37
- navigator.systemLanguage ||
38
- navigator.userLanguage
39
- else if (
40
- typeof process !== 'undefined' &&
41
- typeof import.meta.env !== 'undefined' &&
42
- typeof import.meta.env.LANG !== 'undefined'
43
- ) {
44
- const str = import.meta.env.LANG
45
- lang = str.slice(0, str.indexOf('.'))
46
- lang = lang.replace(/_/, '-')
47
- }
48
- return lang || 'en-US'
49
- }
50
-
51
- ADL.xapiutil.getLangVal = function (langprop) {
52
- if (!langprop) return
53
-
54
- const options = Object.keys(langprop)
55
- // test that langprop is a dict (obj)
56
- // skips if not a dict(obj) and returns
57
- if (options.length == 0) return undefined
58
-
59
- let lang = ADL.xapiutil.getLang(),
60
- ret,
61
- dispGotten = false
62
-
63
- do {
64
- //test and retest
65
- if (langprop[lang]) {
66
- ret = langprop[lang]
67
- dispGotten = true
68
- } else if (lang.indexOf('-')) {
69
- lang = lang.substring(0, lang.lastIndexOf('-'))
70
- }
71
- } while (!dispGotten && lang !== '')
72
-
73
- return ret
74
- }
75
-
76
- ADL.xapiutil.getMoreStatements = function (
77
- iterations,
78
- callback,
79
- searchParams
80
- ) {
81
- if (!onBrowser) throw new Error('Node not supported.')
82
-
83
- let stmts = []
84
-
85
- ADL.XAPIWrapper.getStatements(searchParams, null, function getMore(r) {
86
- if (!(r && r.response)) return
87
- const res = JSON.parse(r.response)
88
- if (!res.statements) return
89
- stmts = stmts.concat(res.statements)
90
-
91
- if (iterations-- <= 0) {
92
- callback(stmts)
93
- } else {
94
- if (res.more && res.more !== '') {
95
- ADL.XAPIWrapper.getStatements(searchParams, res.more, getMore)
96
- } else if (res.more === '') {
97
- callback(stmts)
98
- }
99
- }
100
- })
101
- }
102
-
103
- ADL.xapiutil.getActorId = function (a) {
104
- return a.mbox || a.openid || a.mbox_sha1sum || a.account
105
- }
106
-
107
- ADL.xapiutil.getActorIdString = function (a) {
108
- let id = a.mbox || a.openid || a.mbox_sha1sum
109
- if (!id) {
110
- if (a.account) id = a.account.homePage + ':' + a.account.name
111
- else if (a.member) id = 'Anon Group ' + a.member
112
- else id = 'unknown'
113
- }
114
- return id
115
- }
116
-
117
- ADL.xapiutil.getActorDisplay = function (a) {
118
- return a.name || ADL.xapiutil.getActorIdString(a)
119
- }
120
-
121
- ADL.xapiutil.getVerbDisplay = function (v) {
122
- if (!v) return
123
- if (v.display) {
124
- return ADL.xapiutil.getLangVal(v.display) || v.id
125
- }
126
- return v.id
127
- }
128
-
129
- ADL.xapiutil.getObjectType = function (o) {
130
- return o.objectType || (o.id ? 'Activity' : 'Agent')
131
- }
132
-
133
- ADL.xapiutil.getObjectId = function (o) {
134
- if (o.id) return o.id
135
- const type = ADL.xapiutil.getObjectType(o)
136
- if (type === 'Agent' || type === 'Group') return ADL.xapiutil.getActorId(o)
137
- return undefined
138
- }
139
-
140
- ADL.xapiutil.getObjectIdString = function (o) {
141
- if (!o) return 'unknown'
142
- if (o.id) return o.id
143
- const type = ADL.xapiutil.getObjectType(o)
144
- if (type === 'Agent' || type === 'Group')
145
- return ADL.xapiutil.getActorIdString(o)
146
- else if (type == 'SubStatement') {
147
- return getSubStatementDisplay(o)
148
- }
149
- return 'unknown'
150
- }
151
-
152
- ADL.xapiutil.getObjectDisplay = function (o) {
153
- if (!o) return 'unknown'
154
- let disp = getObjDefName(o) || o.name || o.id
155
- if (!disp) {
156
- const type = ADL.xapiutil.getObjectType(o)
157
- if (type === 'Agent' || type == 'Group')
158
- disp = ADL.xapiutil.getActorDisplay(o)
159
- else if (type == 'SubStatement') {
160
- disp = getSubStatementDisplay(o)
161
- }
162
- }
163
-
164
- return disp
165
- }
166
- return ADL.xapiutil
167
- }
1
+ export const defineUtils = function (obj = {}) {
2
+ let ADL = obj
3
+ let onBrowser = false
4
+ if (typeof window !== 'undefined') {
5
+ ADL = window.ADL = obj.ADL || {}
6
+ onBrowser = true
7
+ }
8
+
9
+ const getObjDefName = function (o) {
10
+ if (o.definition && o.definition.name) {
11
+ return ADL.xapiutil.getLangVal(o.definition.name)
12
+ }
13
+ return undefined
14
+ }
15
+
16
+ const getSubStatementDisplay = function (o) {
17
+ if (o.objectType !== 'SubStatement') return
18
+ if (o.object.objectType === 'SubStatement') return
19
+ if (o.id || o.stored || o.version || o.authority) return
20
+ const disp =
21
+ ADL.xapiutil.getActorId(o.actor) +
22
+ ':' +
23
+ ADL.xapiutil.getVerbDisplay(o.verb) +
24
+ ':' +
25
+ ADL.xapiutil.getObjectId(o.object)
26
+ return disp
27
+ }
28
+
29
+ ADL.xapiutil = {}
30
+
31
+ ADL.xapiutil.getLang = function () {
32
+ let lang
33
+ if (typeof navigator !== 'undefined')
34
+ lang =
35
+ navigator.language ||
36
+ navigator.browserLanguage ||
37
+ navigator.systemLanguage ||
38
+ navigator.userLanguage
39
+ else if (
40
+ typeof process !== 'undefined' &&
41
+ typeof import.meta.env !== 'undefined' &&
42
+ typeof import.meta.env.LANG !== 'undefined'
43
+ ) {
44
+ const str = import.meta.env.LANG
45
+ lang = str.slice(0, str.indexOf('.'))
46
+ lang = lang.replace(/_/, '-')
47
+ }
48
+ return lang || 'en-US'
49
+ }
50
+
51
+ ADL.xapiutil.getLangVal = function (langprop) {
52
+ if (!langprop) return
53
+
54
+ const options = Object.keys(langprop)
55
+ // test that langprop is a dict (obj)
56
+ // skips if not a dict(obj) and returns
57
+ if (options.length == 0) return undefined
58
+
59
+ let lang = ADL.xapiutil.getLang(),
60
+ ret,
61
+ dispGotten = false
62
+
63
+ do {
64
+ //test and retest
65
+ if (langprop[lang]) {
66
+ ret = langprop[lang]
67
+ dispGotten = true
68
+ } else if (lang.indexOf('-')) {
69
+ lang = lang.substring(0, lang.lastIndexOf('-'))
70
+ }
71
+ } while (!dispGotten && lang !== '')
72
+
73
+ return ret
74
+ }
75
+
76
+ ADL.xapiutil.getMoreStatements = function (
77
+ iterations,
78
+ callback,
79
+ searchParams
80
+ ) {
81
+ if (!onBrowser) throw new Error('Node not supported.')
82
+
83
+ let stmts = []
84
+
85
+ ADL.XAPIWrapper.getStatements(searchParams, null, function getMore(r) {
86
+ if (!(r && r.response)) return
87
+ const res = JSON.parse(r.response)
88
+ if (!res.statements) return
89
+ stmts = stmts.concat(res.statements)
90
+
91
+ if (iterations-- <= 0) {
92
+ callback(stmts)
93
+ } else {
94
+ if (res.more && res.more !== '') {
95
+ ADL.XAPIWrapper.getStatements(searchParams, res.more, getMore)
96
+ } else if (res.more === '') {
97
+ callback(stmts)
98
+ }
99
+ }
100
+ })
101
+ }
102
+
103
+ ADL.xapiutil.getActorId = function (a) {
104
+ return a.mbox || a.openid || a.mbox_sha1sum || a.account
105
+ }
106
+
107
+ ADL.xapiutil.getActorIdString = function (a) {
108
+ let id = a.mbox || a.openid || a.mbox_sha1sum
109
+ if (!id) {
110
+ if (a.account) id = a.account.homePage + ':' + a.account.name
111
+ else if (a.member) id = 'Anon Group ' + a.member
112
+ else id = 'unknown'
113
+ }
114
+ return id
115
+ }
116
+
117
+ ADL.xapiutil.getActorDisplay = function (a) {
118
+ return a.name || ADL.xapiutil.getActorIdString(a)
119
+ }
120
+
121
+ ADL.xapiutil.getVerbDisplay = function (v) {
122
+ if (!v) return
123
+ if (v.display) {
124
+ return ADL.xapiutil.getLangVal(v.display) || v.id
125
+ }
126
+ return v.id
127
+ }
128
+
129
+ ADL.xapiutil.getObjectType = function (o) {
130
+ return o.objectType || (o.id ? 'Activity' : 'Agent')
131
+ }
132
+
133
+ ADL.xapiutil.getObjectId = function (o) {
134
+ if (o.id) return o.id
135
+ const type = ADL.xapiutil.getObjectType(o)
136
+ if (type === 'Agent' || type === 'Group') return ADL.xapiutil.getActorId(o)
137
+ return undefined
138
+ }
139
+
140
+ ADL.xapiutil.getObjectIdString = function (o) {
141
+ if (!o) return 'unknown'
142
+ if (o.id) return o.id
143
+ const type = ADL.xapiutil.getObjectType(o)
144
+ if (type === 'Agent' || type === 'Group')
145
+ return ADL.xapiutil.getActorIdString(o)
146
+ else if (type == 'SubStatement') {
147
+ return getSubStatementDisplay(o)
148
+ }
149
+ return 'unknown'
150
+ }
151
+
152
+ ADL.xapiutil.getObjectDisplay = function (o) {
153
+ if (!o) return 'unknown'
154
+ let disp = getObjDefName(o) || o.name || o.id
155
+ if (!disp) {
156
+ const type = ADL.xapiutil.getObjectType(o)
157
+ if (type === 'Agent' || type == 'Group')
158
+ disp = ADL.xapiutil.getActorDisplay(o)
159
+ else if (type == 'SubStatement') {
160
+ disp = getSubStatementDisplay(o)
161
+ }
162
+ }
163
+
164
+ return disp
165
+ }
166
+ return ADL.xapiutil
167
+ }