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
package/README.md CHANGED
@@ -1,72 +1,72 @@
1
- # fcad-core-ninja
2
-
3
- ## Project setup
4
-
5
- ```
6
- npm install
7
- ```
8
-
9
- ## How to use
10
-
11
- ### Install in project
12
-
13
- In your project install this library by doing :
14
-
15
- ```
16
- npm install fcad-core-dragon
17
- ```
18
-
19
- ### Use in project
20
-
21
- Now in your main.js do
22
-
23
- ```
24
- import FcadCoreDragon from 'fcad-core-dragon'
25
-
26
- Vue.use(FcadCoreDragon, {$options})
27
- ```
28
-
29
- #### $options Parameters
30
-
31
- $options to pass to library are:
32
-
33
- + **i18n**: pass project **internationalization / Localisation** reference to library
34
- + **router**: pass project **router** reference library
35
- + **appSettings**: pass project **app setting** from './app.settings.js'
36
- + **menuSettings**: pass project **menu settings** './src/menu.settings.js'
37
-
38
-
39
- In the components of your project you can now use the components of the library
40
-
41
- ```
42
- //Exemple in App.js of your project use component AppBase of Library
43
- <app-base/>
44
- ```
45
-
46
- For more information check [documentation](https://fcaddocumentation.netlify.app/)
47
-
48
- ### Compiles and minifies for production
49
-
50
- ```
51
- npm run build
52
- ```
53
-
54
- ### Lints and fixes files
55
-
56
- ```
57
- npm run lint
58
- ```
59
-
60
- ## Configurations
61
-
62
- Get the configurations files from [FCAD ressources](https://redmine.cegepadistance.ca/projects/fcad/wiki/Wiki) and
63
- add them in the root of your projects.
64
- .Zip containts:
65
-
66
- 1. Vue.config.js
67
- 2. .editorconfig
68
- 3. .gitignore
69
- 4. .eslintrc
70
- 5. .eslintignore
71
- 6. .prettierrc.js
1
+ # fcad-core-ninja
2
+
3
+ ## Project setup
4
+
5
+ ```
6
+ npm install
7
+ ```
8
+
9
+ ## How to use
10
+
11
+ ### Install in project
12
+
13
+ In your project install this library by doing :
14
+
15
+ ```
16
+ npm install fcad-core-dragon
17
+ ```
18
+
19
+ ### Use in project
20
+
21
+ Now in your main.js do
22
+
23
+ ```
24
+ import FcadCoreDragon from 'fcad-core-dragon'
25
+
26
+ Vue.use(FcadCoreDragon, {$options})
27
+ ```
28
+
29
+ #### $options Parameters
30
+
31
+ $options to pass to library are:
32
+
33
+ + **i18n**: pass project **internationalization / Localisation** reference to library
34
+ + **router**: pass project **router** reference library
35
+ + **appSettings**: pass project **app setting** from './app.settings.js'
36
+ + **menuSettings**: pass project **menu settings** './src/menu.settings.js'
37
+
38
+
39
+ In the components of your project you can now use the components of the library
40
+
41
+ ```
42
+ //Exemple in App.js of your project use component AppBase of Library
43
+ <app-base/>
44
+ ```
45
+
46
+ For more information check [documentation](https://fcaddocumentation.netlify.app/)
47
+
48
+ ### Compiles and minifies for production
49
+
50
+ ```
51
+ npm run build
52
+ ```
53
+
54
+ ### Lints and fixes files
55
+
56
+ ```
57
+ npm run lint
58
+ ```
59
+
60
+ ## Configurations
61
+
62
+ Get the configurations files from [FCAD ressources](https://redmine.cegepadistance.ca/projects/fcad/wiki/Wiki) and
63
+ add them in the root of your projects.
64
+ .Zip containts:
65
+
66
+ 1. Vue.config.js
67
+ 2. .editorconfig
68
+ 3. .gitignore
69
+ 4. .eslintrc
70
+ 5. .eslintignore
71
+ 6. .prettierrc.js
72
72
 
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
+ }
package/package.json CHANGED
@@ -1,61 +1,61 @@
1
- {
2
- "name": "fcad-core-dragon",
3
- "version": "2.0.0-beta.5",
4
- "private": false,
5
- "type": "module",
6
- "main": "./src/main.js",
7
- "config": {
8
- "projname": ""
9
- },
10
- "scripts": {
11
- "watch": "nodemon -e js,vue,html,json -x yalc publish --push",
12
- "lintfix": "eslint --ext .js,.vue --ignore-path .gitignore --fix src",
13
- "lintreport": "eslint src --ext .js,.vue --ignore-path .gitignore",
14
- "vue": "vue",
15
- "dev": "vite",
16
- "format": "prettier --write src/",
17
- "reset": "rm -rf ./node_modules package-lock.json .cache dist && npm i && npm run watch",
18
- "build": "vite build",
19
- "preview": "vite preview",
20
- "test:unit": "vitest"
21
- },
22
- "dependencies": {
23
- "axios": "^1.6.8",
24
- "gsap": "^3.12.5",
25
- "idb": "^8.0.0",
26
- "mobile-detect": "^1.4.5",
27
- "pinia": "^2.1.7",
28
- "tiny-emitter": "^2.1.0",
29
- "vue-safe-teleport": "^0.1.2"
30
- },
31
- "devDependencies": {
32
- "@vitejs/plugin-vue": "^5.0.5",
33
- "@vue/eslint-config-prettier": "^9.0.0",
34
- "@vue/test-utils": "^2.4.0-alpha.2",
35
- "eslint": "^8.57.0",
36
- "eslint-config-prettier": "^9.1.0",
37
- "eslint-plugin-cypress": "^3.3.0",
38
- "eslint-plugin-prettier": "^5.1.3",
39
- "eslint-plugin-vue": "^9.26.0",
40
- "jsdom": "^25.0.1",
41
- "nodemon": "^3.1.0",
42
- "prettier": "^3.2.5",
43
- "prettier-eslint": "^16.3.0",
44
- "sass": "^1.77.6",
45
- "start-server-and-test": "^2.0.4",
46
- "vite": "^5.4.10",
47
- "vite-plugin-dynamic-import": "^1.5.0",
48
- "vitest": "^2.1.5",
49
- "vue": "^3.5.12",
50
- "vue-i18n": "^9.13.1",
51
- "vue-router": "^4.4.5"
52
- },
53
- "browserslist": [
54
- "> 1%",
55
- "last 2 versions",
56
- "not dead"
57
- ],
58
- "engines": {
59
- "node": ">0.11.9"
60
- }
61
- }
1
+ {
2
+ "name": "fcad-core-dragon",
3
+ "version": "2.0.0-beta.6",
4
+ "private": false,
5
+ "type": "module",
6
+ "main": "./src/main.js",
7
+ "config": {
8
+ "projname": ""
9
+ },
10
+ "scripts": {
11
+ "watch": "nodemon -e js,vue,html,json -x yalc publish --push",
12
+ "lintfix": "eslint --ext .js,.vue --ignore-path .gitignore --fix src",
13
+ "lintreport": "eslint src --ext .js,.vue --ignore-path .gitignore",
14
+ "vue": "vue",
15
+ "dev": "vite",
16
+ "format": "prettier --write src/",
17
+ "reset": "rm -rf ./node_modules package-lock.json .cache dist && npm i && npm run watch",
18
+ "build": "vite build",
19
+ "preview": "vite preview",
20
+ "test:unit": "vitest"
21
+ },
22
+ "dependencies": {
23
+ "axios": "^1.6.8",
24
+ "gsap": "^3.12.5",
25
+ "idb": "^8.0.0",
26
+ "mobile-detect": "^1.4.5",
27
+ "pinia": "^2.1.7",
28
+ "tiny-emitter": "^2.1.0",
29
+ "vue-safe-teleport": "^0.1.2"
30
+ },
31
+ "devDependencies": {
32
+ "@vitejs/plugin-vue": "^5.0.5",
33
+ "@vue/eslint-config-prettier": "^9.0.0",
34
+ "@vue/test-utils": "^2.4.0-alpha.2",
35
+ "eslint": "^8.57.0",
36
+ "eslint-config-prettier": "^9.1.0",
37
+ "eslint-plugin-cypress": "^3.3.0",
38
+ "eslint-plugin-prettier": "^5.1.3",
39
+ "eslint-plugin-vue": "^9.26.0",
40
+ "jsdom": "^25.0.1",
41
+ "nodemon": "^3.1.0",
42
+ "prettier": "^3.2.5",
43
+ "prettier-eslint": "^16.3.0",
44
+ "sass": "^1.77.6",
45
+ "start-server-and-test": "^2.0.4",
46
+ "vite": "^5.4.10",
47
+ "vite-plugin-dynamic-import": "^1.5.0",
48
+ "vitest": "^2.1.5",
49
+ "vue": "^3.5.12",
50
+ "vue-i18n": "^9.13.1",
51
+ "vue-router": "^4.4.5"
52
+ },
53
+ "browserslist": [
54
+ "> 1%",
55
+ "last 2 versions",
56
+ "not dead"
57
+ ],
58
+ "engines": {
59
+ "node": ">0.11.9"
60
+ }
61
+ }
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "button": {
3
- "alert_close":"Close this window",
4
- "cancel_pop": "Cancel",
5
3
  "carousel_next": "Next",
6
4
  "carousel_prev": "Previous",
7
- "confirm_pop": "Confirm",
8
5
  "full_screen_on": "Full-screen",
9
6
  "full_screen_off": "Exit full-screen",
10
7
  "go_to_next_page": "Go to the next page",
11
8
  "go_to_previous_page": "Go to the previous page",
12
9
  "go_to_first_page": "Go to the first page",
13
- "go_to_lesson" : "Go to the next lesson",
10
+ "go_to_lesson": "Go to the next lesson",
14
11
  "go_to_menu": "Go to the lesson contents page",
15
12
  "info": "Info",
16
13
  "menu": "Start",
@@ -30,7 +27,8 @@
30
27
  "subtitle_off": "Hide subtitles",
31
28
  "subtitle_on": "Display subtitles",
32
29
  "submit": "Check",
33
- "toc":"Progression",
30
+ "toc": "Progression",
31
+ "toc_title": "Show activity contents",
34
32
  "transcript_off": "Hide transcript",
35
33
  "transcript_on": "Show transcript",
36
34
  "unmute": "Unmute",
@@ -76,12 +74,12 @@
76
74
  }
77
75
  },
78
76
  "label": {
79
- "side_panel":"side panel",
80
- "timer":"estimated time"
77
+ "side_panel": "side panel",
78
+ "timer": "estimated time"
81
79
  },
82
80
  "message": {
83
81
  "err_download_file": "The file download has failed.",
84
- "dropdown_list":"Dropdown list",
82
+ "dropdown_list": "Dropdown list",
85
83
  "first_option_dropdown": "Choose an option",
86
84
  "no_attempts": "You have no more attempts.",
87
85
  "loading_state_msg": "Loading. Please wait...",
@@ -95,29 +93,29 @@
95
93
  },
96
94
  "text": {
97
95
  "activity": "Activity",
98
- "activity_title":"My activitys",
99
- "activity_progress":"Progress status:",
100
- "carousel":"Carousel",
96
+ "activity_title": "My activities",
97
+ "activity_progress": "Progress status:",
98
+ "carousel": "Carousel",
101
99
  "conclusion": "Conclusion",
102
100
  "complete": "Completed",
103
- "error":"error",
101
+ "error": "error",
104
102
  "introduction": "Introduction",
105
103
  "lesson": "Lesson",
106
- "quiz":"Words to complete the sentence",
107
- "place_holder":{
108
- "for_lesson_title":"Title of this lesson",
104
+ "quiz": "Words to complete the sentence",
105
+ "place_holder": {
106
+ "for_lesson_title": "Title of this lesson",
109
107
  "for_textarea": "Write here.",
110
- "for_title_btn_progress":"Click to discover the content"
108
+ "for_title_btn_progress": "Click to discover the content"
111
109
  },
112
- "of":"of",
113
- "slide":"Slide",
110
+ "of": "of",
111
+ "slide": "Slide",
114
112
  "title_note": "Note(s)",
115
113
  "title_credit": "Credit(s)",
116
114
  "err_credit": "Le texte de la page ne comporte pas d’appel de note correspondant à cette note-ci. Un appel de note doit être ajouté.",
117
115
  "title_link_bas": "Go back to the text",
118
116
  "title_link_call": "Go to the footnote",
119
- "toc":"Table of contents",
120
- "title_content_view":"Lesson contents",
117
+ "toc": "Show activity contents",
118
+ "title_content_view": "Contents",
121
119
  "transcript": "Transcript"
122
120
  },
123
121
  "user_settings": {
@@ -127,11 +125,11 @@
127
125
  "subtitles": "Always show subtitles when playing multimedia content",
128
126
  "title": "Settings"
129
127
  },
130
- "quizState":{
131
- "goodAnswer":"Good answer",
132
- "badAnswer":"Wrong answer",
133
- "neutralAnswer":"Neutral answer",
134
- "answers" : "Answer choices"
128
+ "quizState": {
129
+ "goodAnswer": "Good answer",
130
+ "badAnswer": "Wrong answer",
131
+ "neutralAnswer": "Neutral answer",
132
+ "answers": "Answer choices"
135
133
  },
136
134
  "a11y_sr": {
137
135
  "time": {