fcad-core-dragon 2.0.0-beta.5 → 2.0.0-beta.6

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 (71) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +392 -377
  5. package/README.md +71 -71
  6. package/bk.scss +117 -117
  7. package/package.json +61 -61
  8. package/src/$locales/en.json +23 -25
  9. package/src/$locales/fr.json +22 -23
  10. package/src/assets/data/onboardingMessages.json +47 -47
  11. package/src/components/AppBase.vue +166 -99
  12. package/src/components/AppBaseButton.vue +2 -0
  13. package/src/components/AppBaseErrorDisplay.vue +438 -438
  14. package/src/components/AppBaseFlipCard.vue +84 -84
  15. package/src/components/AppBaseModule.vue +164 -106
  16. package/src/components/AppBasePage.vue +14 -4
  17. package/src/components/AppBasePopover.vue +41 -41
  18. package/src/components/AppCompAudio.vue +20 -48
  19. package/src/components/AppCompBranchButtons.vue +7 -53
  20. package/src/components/{AppCompTranscript.vue → AppCompContainer.vue} +8 -1
  21. package/src/components/AppCompInputRadioNext.vue +152 -152
  22. package/src/components/AppCompInputTextToFillNext.vue +171 -171
  23. package/src/components/AppCompJauge.vue +74 -74
  24. package/src/components/AppCompMenu.vue +429 -428
  25. package/src/components/AppCompMenuItem.vue +228 -228
  26. package/src/components/AppCompNavigation.vue +2 -2
  27. package/src/components/AppCompPlayBarNext.vue +5 -0
  28. package/src/components/AppCompPlayBarProgress.vue +82 -82
  29. package/src/components/AppCompSVGNext.vue +2 -3
  30. package/src/components/AppCompSettingsMenu.vue +172 -172
  31. package/src/components/AppCompVideoPlayer.vue +17 -15
  32. package/src/composables/useQuiz.js +206 -206
  33. package/src/externalComps/ModuleView.vue +22 -22
  34. package/src/externalComps/SummaryView.vue +91 -91
  35. package/src/main.js +34 -29
  36. package/src/mixins/$mediaMixins.js +819 -819
  37. package/src/mixins/timerMixin.js +155 -155
  38. package/src/module/stores/appStore.js +1 -1
  39. package/src/module/xapi/ADL.js +144 -4
  40. package/src/module/xapi/Crypto/Hasher.js +241 -241
  41. package/src/module/xapi/Crypto/WordArray.js +278 -278
  42. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  43. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  44. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  45. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  46. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  47. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  48. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  49. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  50. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  51. package/src/module/xapi/Statement/agent.js +55 -55
  52. package/src/module/xapi/Statement/index.js +259 -259
  53. package/src/module/xapi/Statement/statement.js +253 -253
  54. package/src/module/xapi/utils.js +167 -167
  55. package/src/module/xapi/verbs.js +294 -294
  56. package/src/module/xapi/wrapper copy.js +1963 -0
  57. package/src/module/xapi/wrapper.js +121 -188
  58. package/src/module/xapi/xapiStatement.js +444 -444
  59. package/src/plugins/bus.js +8 -8
  60. package/src/plugins/gsap.js +14 -14
  61. package/src/plugins/helper.js +0 -1
  62. package/src/plugins/i18n.js +44 -44
  63. package/src/plugins/save.js +37 -37
  64. package/src/plugins/scorm.js +287 -287
  65. package/src/plugins/xapi.js +11 -11
  66. package/src/public/index.html +33 -33
  67. package/src/router/index.js +2 -1
  68. package/src/router/routes.js +312 -312
  69. package/src/shared/generalfuncs.js +210 -210
  70. package/src/shared/validators.js +2 -0
  71. package/src/components/AppCompPlayBar.vue +0 -1217
@@ -1,8 +1,8 @@
1
- import emitter from 'tiny-emitter/instance'
2
-
3
- export default {
4
- $on: (...args) => emitter.on(...args),
5
- $once: (...args) => emitter.once(...args),
6
- $off: (...args) => emitter.off(...args),
7
- $emit: (...args) => emitter.emit(...args)
8
- }
1
+ import emitter from 'tiny-emitter/instance'
2
+
3
+ export default {
4
+ $on: (...args) => emitter.on(...args),
5
+ $once: (...args) => emitter.once(...args),
6
+ $off: (...args) => emitter.off(...args),
7
+ $emit: (...args) => emitter.emit(...args)
8
+ }
@@ -1,14 +1,14 @@
1
- /**
2
- * Integrating gsap library as Vue plug in
3
- * usage: import GsapPlugin from './utilies.js';
4
- * ref: https: //vuejsdevelopers.com/2017/04/22/vue-js-libraries-plugins/
5
- */
6
- import gsap from 'gsap'
7
- import { MotionPathPlugin } from 'gsap/MotionPathPlugin'
8
- import { ScrollTrigger } from 'gsap/ScrollTrigger'
9
- import { Flip } from 'gsap/Flip'
10
-
11
- gsap.registerPlugin(MotionPathPlugin, ScrollTrigger, Flip)
12
- export default function GsapPlugin(app, name) {
13
- app.config.globalProperties.$gsap = gsap
14
- }
1
+ /**
2
+ * Integrating gsap library as Vue plug in
3
+ * usage: import GsapPlugin from './utilies.js';
4
+ * ref: https: //vuejsdevelopers.com/2017/04/22/vue-js-libraries-plugins/
5
+ */
6
+ import gsap from 'gsap'
7
+ import { MotionPathPlugin } from 'gsap/MotionPathPlugin'
8
+ import { ScrollTrigger } from 'gsap/ScrollTrigger'
9
+ import { Flip } from 'gsap/Flip'
10
+
11
+ gsap.registerPlugin(MotionPathPlugin, ScrollTrigger, Flip)
12
+ export default function GsapPlugin(app, name) {
13
+ app.config.globalProperties.$gsap = gsap
14
+ }
@@ -179,7 +179,6 @@ export default function helper(app, name) {
179
179
  try {
180
180
  if (filepath && filepath.constructor === String) {
181
181
  const res = await axios.get(filepath, { responseType: 'blob' }) // use http request
182
- console.log(' Download res: ', res)
183
182
  const blob = new Blob([res.data], {
184
183
  // type: res.data.type
185
184
  type: this.mimeTypeFor(filepath)
@@ -1,44 +1,44 @@
1
- import _ from 'lodash'
2
- /**
3
- * Merge locales message in project.
4
- * @summary To merge the locales dictionnary of this library with the locales that user will create
5
- * @param {Object} i18n - vue-i18n internalization object.
6
- */
7
- export default function mergeLocales(i18n) {
8
- //const deep = import('lodash') // provide deep merge of Object cf: https://attacomsian.com/blog/javascript-merge-objects
9
-
10
- /* I18n internal methods for mutating messages property
11
- * mergeLocaleMessage: ƒ mergeLocaleMessage(locale, message)// will merge message with new message object. But does not do a deep merge of object
12
- * setLocaleMessage: ƒ setLocaleMessage(locale, message)// set the message with new message object
13
- */
14
-
15
- // This library locales files
16
- // const thisLocales = require.context(
17
- // '../$locales',
18
- // true,
19
- // /[A-Za-z0-9-_,\s]+\.json$/i
20
- // )
21
-
22
- const thisLocales = import.meta.glob('../$locales/*.json', { eager: true })
23
- for (const path in thisLocales) {
24
- const matched = path.match(/([A-Za-z0-9-_]+)\./i)
25
- if (matched && matched.length > 1) {
26
- const locale = matched[1]
27
- // Using lodash to deeply merge objects
28
- const messagesDeepCopy = JSON.parse(JSON.stringify(i18n.messages[locale]))
29
- const mergedMessages = _.merge(messagesDeepCopy, thisLocales[path])
30
- // Since merLocalMessage will do a shallow merge of the object. We will use setLocalMessage to replace the message with new message object
31
- i18n.setLocaleMessage(locale, mergedMessages)
32
- }
33
- }
34
- // thisLocales.keys().forEach((key) => {
35
- // const matched = key.match(/([A-Za-z0-9-_]+)\./i)
36
- // if (matched && matched.length > 1) {
37
- // const locale = matched[1]
38
- // // Using lodash to deeply merge objects
39
- // const mergedMessages = deep.merge(i18n.messages[locale], thisLocales(key))
40
- // // Since merLocalMessage will do a shallow merge of the object. We will use setLocalMessage to replace the message with new message object
41
- // i18n.setLocaleMessage(locale, mergedMessages)
42
- // }
43
- // })
44
- }
1
+ import _ from 'lodash'
2
+ /**
3
+ * Merge locales message in project.
4
+ * @summary To merge the locales dictionnary of this library with the locales that user will create
5
+ * @param {Object} i18n - vue-i18n internalization object.
6
+ */
7
+ export default function mergeLocales(i18n) {
8
+ //const deep = import('lodash') // provide deep merge of Object cf: https://attacomsian.com/blog/javascript-merge-objects
9
+
10
+ /* I18n internal methods for mutating messages property
11
+ * mergeLocaleMessage: ƒ mergeLocaleMessage(locale, message)// will merge message with new message object. But does not do a deep merge of object
12
+ * setLocaleMessage: ƒ setLocaleMessage(locale, message)// set the message with new message object
13
+ */
14
+
15
+ // This library locales files
16
+ // const thisLocales = require.context(
17
+ // '../$locales',
18
+ // true,
19
+ // /[A-Za-z0-9-_,\s]+\.json$/i
20
+ // )
21
+
22
+ const thisLocales = import.meta.glob('../$locales/*.json', { eager: true })
23
+ for (const path in thisLocales) {
24
+ const matched = path.match(/([A-Za-z0-9-_]+)\./i)
25
+ if (matched && matched.length > 1) {
26
+ const locale = matched[1]
27
+ // Using lodash to deeply merge objects
28
+ const messagesDeepCopy = JSON.parse(JSON.stringify(i18n.messages[locale]))
29
+ const mergedMessages = _.merge(messagesDeepCopy, thisLocales[path])
30
+ // Since merLocalMessage will do a shallow merge of the object. We will use setLocalMessage to replace the message with new message object
31
+ i18n.setLocaleMessage(locale, mergedMessages)
32
+ }
33
+ }
34
+ // thisLocales.keys().forEach((key) => {
35
+ // const matched = key.match(/([A-Za-z0-9-_]+)\./i)
36
+ // if (matched && matched.length > 1) {
37
+ // const locale = matched[1]
38
+ // // Using lodash to deeply merge objects
39
+ // const mergedMessages = deep.merge(i18n.messages[locale], thisLocales(key))
40
+ // // Since merLocalMessage will do a shallow merge of the object. We will use setLocalMessage to replace the message with new message object
41
+ // i18n.setLocaleMessage(locale, mergedMessages)
42
+ // }
43
+ // })
44
+ }
@@ -1,37 +1,37 @@
1
- /* creating a small save plug-in to save store state in the localStorage
2
- * the plugin listen for mutations made to the Pinia store and store them in the local browser storage.
3
- * This prevent reseting the store to initial state when the browser refreshes
4
- * Note: the plugin is used in the store.js
5
- */
6
- export function saveStatePlugin(store) {
7
- store.subscribe((mutation, state) => {
8
- // save the user data
9
- if (Object.entries(state.$appStore.userMetaData).length) {
10
- localStorage.setItem(
11
- 'userData',
12
- JSON.stringify(state.$appStore.userMetaData)
13
- )
14
- } else if (
15
- !localStorage.getItem('userData') &&
16
- !Object.entries(state.$appStore.userMetaData).length
17
- ) {
18
- localStorage.setItem('userData', JSON.stringify({}))
19
- }
20
- })
21
- }
22
-
23
- /**
24
- * creating a small save plug-in to get stored state from the localStorage
25
- */
26
- export function getSavedStatePlugin(type, id) {
27
- if (localStorage.getItem('thisModule')) {
28
- const savedData = JSON.parse(localStorage.getItem('thisModule'))
29
-
30
- if (type === 'module' && savedData.id === id) return savedData
31
- if (type === 'page' && savedData.children.length) {
32
- return savedData.children.find((p) => id === p.id)
33
- }
34
- return JSON.parse(localStorage.getItem('thisModule'))
35
- }
36
- return null
37
- }
1
+ /* creating a small save plug-in to save store state in the localStorage
2
+ * the plugin listen for mutations made to the Pinia store and store them in the local browser storage.
3
+ * This prevent reseting the store to initial state when the browser refreshes
4
+ * Note: the plugin is used in the store.js
5
+ */
6
+ export function saveStatePlugin(store) {
7
+ store.subscribe((mutation, state) => {
8
+ // save the user data
9
+ if (Object.entries(state.$appStore.userMetaData).length) {
10
+ localStorage.setItem(
11
+ 'userData',
12
+ JSON.stringify(state.$appStore.userMetaData)
13
+ )
14
+ } else if (
15
+ !localStorage.getItem('userData') &&
16
+ !Object.entries(state.$appStore.userMetaData).length
17
+ ) {
18
+ localStorage.setItem('userData', JSON.stringify({}))
19
+ }
20
+ })
21
+ }
22
+
23
+ /**
24
+ * creating a small save plug-in to get stored state from the localStorage
25
+ */
26
+ export function getSavedStatePlugin(type, id) {
27
+ if (localStorage.getItem('thisModule')) {
28
+ const savedData = JSON.parse(localStorage.getItem('thisModule'))
29
+
30
+ if (type === 'module' && savedData.id === id) return savedData
31
+ if (type === 'page' && savedData.children.length) {
32
+ return savedData.children.find((p) => id === p.id)
33
+ }
34
+ return JSON.parse(localStorage.getItem('thisModule'))
35
+ }
36
+ return null
37
+ }