fcad-core-dragon 2.0.0-beta.1 → 2.0.0-beta.3

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 (118) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/{.eslintrc.js → .eslintrc.cjs} +81 -86
  4. package/CHANGELOG +364 -364
  5. package/README.md +71 -71
  6. package/bk.scss +117 -0
  7. package/package.json +61 -63
  8. package/src/$locales/en.json +143 -179
  9. package/src/$locales/fr.json +105 -181
  10. package/src/assets/data/onboardingMessages.json +47 -47
  11. package/src/components/AppBase.vue +1054 -614
  12. package/src/components/AppBaseButton.vue +87 -63
  13. package/src/components/AppBaseErrorDisplay.vue +438 -420
  14. package/src/components/AppBaseFlipCard.vue +84 -83
  15. package/src/components/AppBaseModule.vue +1673 -1842
  16. package/src/components/AppBasePage.vue +779 -312
  17. package/src/components/AppBasePopover.vue +41 -0
  18. package/src/components/AppCompAudio.vue +234 -0
  19. package/src/components/AppCompBranchButtons.vue +552 -582
  20. package/src/components/AppCompButtonProgress.vue +126 -147
  21. package/src/components/AppCompCarousel.vue +298 -192
  22. package/src/components/AppCompInputCheckBoxNext.vue +195 -0
  23. package/src/components/AppCompInputDropdownNext.vue +159 -0
  24. package/src/components/AppCompInputRadioNext.vue +152 -0
  25. package/src/components/{AppCompInputTextBox.vue → AppCompInputTextNext.vue} +106 -91
  26. package/src/components/AppCompInputTextTableNext.vue +141 -0
  27. package/src/components/AppCompInputTextToFillDropdownNext.vue +230 -0
  28. package/src/components/{AppCompInputTextToFillText.vue → AppCompInputTextToFillNext.vue} +171 -164
  29. package/src/components/AppCompJauge.vue +74 -55
  30. package/src/components/AppCompMenu.vue +413 -209
  31. package/src/components/AppCompMenuItem.vue +228 -174
  32. package/src/components/AppCompNavigation.vue +960 -949
  33. package/src/components/AppCompNoteCall.vue +133 -126
  34. package/src/components/AppCompNoteCredit.vue +292 -164
  35. package/src/components/AppCompPlayBar.vue +1218 -1319
  36. package/src/components/AppCompPlayBarNext.vue +2052 -0
  37. package/src/components/AppCompPlayBarProgress.vue +82 -0
  38. package/src/components/AppCompPopUpNext.vue +503 -0
  39. package/src/components/{AppCompQuiz.vue → AppCompQuizNext.vue} +2904 -2989
  40. package/src/components/AppCompQuizRecall.vue +276 -250
  41. package/src/components/AppCompSVGNext.vue +347 -0
  42. package/src/components/AppCompSettingsMenu.vue +172 -171
  43. package/src/components/AppCompTableOfContent.vue +387 -264
  44. package/src/components/AppCompTranscript.vue +24 -19
  45. package/src/components/AppCompVideoPlayer.vue +368 -336
  46. package/src/components/AppCompViewDisplay.vue +6 -6
  47. package/src/components/BaseModule.vue +72 -67
  48. package/src/composables/useQuiz.js +206 -0
  49. package/src/externalComps/ModuleView.vue +22 -0
  50. package/src/externalComps/SummaryView.vue +91 -0
  51. package/src/main.js +272 -227
  52. package/src/mixins/$mediaMixins.js +819 -0
  53. package/src/mixins/timerMixin.js +155 -156
  54. package/src/module/stores/appStore.js +893 -0
  55. package/src/module/xapi/ADL.js +376 -339
  56. package/src/module/xapi/Crypto/Hasher.js +241 -241
  57. package/src/module/xapi/Crypto/WordArray.js +278 -278
  58. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  59. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -319
  60. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  61. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  62. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  63. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  64. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  65. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  66. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  67. package/src/module/xapi/Crypto/index.js +53 -53
  68. package/src/module/xapi/Statement/activity.js +47 -47
  69. package/src/module/xapi/Statement/agent.js +55 -55
  70. package/src/module/xapi/Statement/group.js +26 -26
  71. package/src/module/xapi/Statement/index.js +259 -259
  72. package/src/module/xapi/Statement/statement.js +253 -253
  73. package/src/module/xapi/Statement/statementRef.js +23 -23
  74. package/src/module/xapi/Statement/substatement.js +22 -22
  75. package/src/module/xapi/Statement/verb.js +36 -36
  76. package/src/module/xapi/activitytypes.js +17 -17
  77. package/src/module/xapi/launch.js +157 -157
  78. package/src/module/xapi/utils.js +167 -167
  79. package/src/module/xapi/verbs.js +294 -294
  80. package/src/module/xapi/wrapper.js +1963 -1890
  81. package/src/module/xapi/xapiStatement.js +444 -444
  82. package/src/plugins/bus.js +8 -3
  83. package/src/plugins/gsap.js +14 -17
  84. package/src/plugins/helper.js +308 -295
  85. package/src/plugins/i18n.js +44 -31
  86. package/src/plugins/idb.js +219 -212
  87. package/src/plugins/save.js +37 -37
  88. package/src/plugins/scorm.js +287 -287
  89. package/src/plugins/xapi.js +11 -11
  90. package/src/public/index.html +33 -21
  91. package/src/router/index.js +43 -41
  92. package/src/router/routes.js +312 -337
  93. package/src/shared/generalfuncs.js +210 -188
  94. package/src/shared/validators.js +1069 -249
  95. package/vite.config.js +27 -0
  96. package/.prettierrc.js +0 -5
  97. package/babel.config.js +0 -3
  98. package/src/components/AppBaseDragChoice.vue +0 -91
  99. package/src/components/AppBaseDropZone.vue +0 -112
  100. package/src/components/AppCompBif.vue +0 -120
  101. package/src/components/AppCompDragAndDrop.vue +0 -339
  102. package/src/components/AppCompInputAssociation.vue +0 -332
  103. package/src/components/AppCompInputCheckBox.vue +0 -227
  104. package/src/components/AppCompInputDropdown.vue +0 -184
  105. package/src/components/AppCompInputRadio.vue +0 -169
  106. package/src/components/AppCompInputTextTable.vue +0 -155
  107. package/src/components/AppCompInputTextToFillDropdown.vue +0 -255
  108. package/src/components/AppCompMediaPlayer.vue +0 -397
  109. package/src/components/AppCompPopUp.vue +0 -522
  110. package/src/components/AppCompPopover.vue +0 -27
  111. package/src/components/AppCompSVG.vue +0 -309
  112. package/src/mixins/$pageMixins.js +0 -459
  113. package/src/mixins/$quizMixins.js +0 -456
  114. package/src/module/store.js +0 -895
  115. package/src/plugins/timeManager.js +0 -77
  116. package/src/routes_bckp.js +0 -313
  117. package/src/routes_static.js +0 -344
  118. package/vue.config.js +0 -83
@@ -1,278 +1,278 @@
1
- import { Base } from './encoders/Base'
2
- import { Hex } from './encoders/Hex'
3
- /**
4
- * An array of 32-bit words.
5
- * @property {Array} words The array of 32-bit words.
6
- * @property {number} sigBytes The number of significant bytes in this word array.
7
- */
8
-
9
- export const WordArray = Base.extend({
10
- /**
11
- * Initializes a newly created word array.
12
- *
13
- * @param {Array} words (Optional) An array of 32-bit words.
14
- * @param {number} sigBytes (Optional) The number of significant bytes in the words.
15
- *
16
- * @example
17
- *
18
- * let wordArray = CryptoJS.lib.WordArray.create();
19
- * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
20
- * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
21
- */
22
- init: function(words, sigBytes) {
23
- words = this.words = words || []
24
-
25
- if (sigBytes != undefined) {
26
- this.sigBytes = sigBytes
27
- } else {
28
- this.sigBytes = words.length * 4
29
- }
30
- },
31
-
32
- /**
33
- * Converts this word array to a string.
34
- *
35
- * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
36
- *
37
- * @return {string} The stringified word array.
38
- *
39
- * @example
40
- *
41
- * let string = wordArray + '';
42
- * let string = wordArray.toString();
43
- * let string = wordArray.toString(CryptoJS.enc.Utf8);
44
- */
45
- toString: function(encoder) {
46
- return (encoder || Hex).stringify(this)
47
- },
48
-
49
- /**
50
- * Concatenates a word array to this word array.
51
- *
52
- * @param {WordArray} wordArray The word array to append.
53
- *
54
- * @return {WordArray} This word array.
55
- *
56
- * @example
57
- *
58
- * wordArray1.concat(wordArray2);
59
- */
60
- concat: function(wordArray) {
61
- // Shortcuts
62
- let thisWords = this.words
63
- let thatWords = wordArray.words
64
- let thisSigBytes = this.sigBytes
65
- let thatSigBytes = wordArray.sigBytes
66
-
67
- // Clamp excess bits
68
- this.clamp()
69
-
70
- // Concat
71
- if (thisSigBytes % 4) {
72
- // Copy one byte at a time
73
- for (let i = 0; i < thatSigBytes; i++) {
74
- let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
75
- thisWords[(thisSigBytes + i) >>> 2] |=
76
- thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
77
- }
78
- } else if (thatWords.length > 0xffff) {
79
- // Copy one word at a time
80
- for (let i = 0; i < thatSigBytes; i += 4) {
81
- thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
82
- }
83
- } else {
84
- // Copy all words at once
85
- thisWords.push.apply(thisWords, thatWords)
86
- }
87
- this.sigBytes += thatSigBytes
88
-
89
- // Chainable
90
- return this
91
- },
92
-
93
- /**
94
- * Removes insignificant bits.
95
- *
96
- * @example
97
- *
98
- * wordArray.clamp();
99
- */
100
- clamp: function() {
101
- // Shortcuts
102
- let words = this.words
103
- let sigBytes = this.sigBytes
104
-
105
- // Clamp
106
- words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
107
- words.length = Math.ceil(sigBytes / 4)
108
- },
109
-
110
- /**
111
- * Creates a copy of this word array.
112
- *
113
- * @return {WordArray} The clone.
114
- *
115
- * @example
116
- *
117
- * let clone = wordArray.clone();
118
- */
119
- clone: function() {
120
- let clone = Base.clone.call(this)
121
- clone.words = this.words.slice(0)
122
-
123
- return clone
124
- },
125
-
126
- /**
127
- * Creates a word array filled with random bytes.
128
- *
129
- * @param {number} nBytes The number of random bytes to generate.
130
- *
131
- * @return {WordArray} The random word array.
132
- *
133
- * @static
134
- *
135
- * @example
136
- *
137
- * let wordArray = CryptoJS.lib.WordArray.random(16);
138
- */
139
- random: function(nBytes) {
140
- let words = []
141
- for (let i = 0; i < nBytes; i += 4) {
142
- words.push((Math.random() * 0x100000000) | 0)
143
- }
144
-
145
- return new WordArray.init(words, nBytes)
146
- }
147
- })
148
-
149
- // export const WordArray = function() {
150
- // export const WordArray = function() {
151
- // return {
152
- // /**
153
- // * Initializes a newly created word array.
154
- // *
155
- // * @param {Array} words (Optional) An array of 32-bit words.
156
- // * @param {number} sigBytes (Optional) The number of significant bytes in the words.
157
- // *
158
- // * @example
159
- // *
160
- // * let wordArray = CryptoJS.lib.WordArray.create();
161
- // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
162
- // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
163
- // */
164
- // init: function(words, sigBytes) {
165
- // words = this.words = words || []
166
-
167
- // if (sigBytes != undefined) {
168
- // this.sigBytes = sigBytes
169
- // } else {
170
- // this.sigBytes = words.length * 4
171
- // }
172
- // },
173
-
174
- // /**
175
- // * Converts this word array to a string.
176
- // *
177
- // * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
178
- // *
179
- // * @return {string} The stringified word array.
180
- // *
181
- // * @example
182
- // *
183
- // * let string = wordArray + '';
184
- // * let string = wordArray.toString();
185
- // * let string = wordArray.toString(CryptoJS.enc.Utf8);
186
- // */
187
- // toString: function(encoder) {
188
- // return encoder.stringify(this)
189
- // },
190
-
191
- // /**
192
- // * Concatenates a word array to this word array.
193
- // * @param {WordArray} wordArray The word array to append.
194
- // * @return {WordArray} This word array.
195
- // * @example
196
- // * wordArray1.concat(wordArray2);
197
- // */
198
- // concat: function(wordArray) {
199
- // // Shortcuts
200
- // let thisWords = this.words
201
- // let thatWords = wordArray.words
202
- // let thisSigBytes = this.sigBytes
203
- // let thatSigBytes = wordArray.sigBytes
204
-
205
- // // Clamp excess bits
206
- // this.clamp()
207
-
208
- // // Concat
209
- // if (thisSigBytes % 4) {
210
- // // Copy one byte at a time
211
- // for (let i = 0; i < thatSigBytes; i++) {
212
- // let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
213
- // thisWords[(thisSigBytes + i) >>> 2] |=
214
- // thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
215
- // }
216
- // } else if (thatWords.length > 0xffff) {
217
- // // Copy one word at a time
218
- // for (let i = 0; i < thatSigBytes; i += 4) {
219
- // thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
220
- // }
221
- // } else {
222
- // // Copy all words at once
223
- // thisWords.push.apply(thisWords, thatWords)
224
- // }
225
- // this.sigBytes += thatSigBytes
226
-
227
- // // Chainable
228
- // return this
229
- // },
230
-
231
- // /**
232
- // * Removes insignificant bits.
233
- // *
234
- // * @example
235
- // *
236
- // * wordArray.clamp();
237
- // */
238
- // clamp: function() {
239
- // // Shortcuts
240
- // let words = this.words
241
- // let sigBytes = this.sigBytes
242
-
243
- // // Clamp
244
- // words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
245
- // words.length = Math.ceil(sigBytes / 4)
246
- // },
247
-
248
- // /**
249
- // * Creates a copy of this word array.
250
- // * @return {WordArray} The clone.
251
- // * @example
252
- // * let clone = wordArray.clone();
253
- // */
254
- // clone: function() {
255
- // let clone = Base.clone.call(this)
256
- // clone.words = this.words.slice(0)
257
-
258
- // return clone
259
- // },
260
-
261
- // /**
262
- // * Creates a word array filled with random bytes.
263
- // * @param {number} nBytes The number of random bytes to generate.
264
- // * @return {WordArray} The random word array.
265
- // * @static
266
- // * @example
267
- // * let wordArray = CryptoJS.lib.WordArray.random(16);
268
- // */
269
- // random: function(nBytes) {
270
- // let words = []
271
- // for (let i = 0; i < nBytes; i += 4) {
272
- // words.push((Math.random() * 0x100000000) | 0)
273
- // }
274
-
275
- // return new WordArray.init(words, nBytes)
276
- // }
277
- // }
278
- // }
1
+ import { Base } from './encoders/Base'
2
+ import { Hex } from './encoders/Hex'
3
+ /**
4
+ * An array of 32-bit words.
5
+ * @property {Array} words The array of 32-bit words.
6
+ * @property {number} sigBytes The number of significant bytes in this word array.
7
+ */
8
+
9
+ export const WordArray = Base.extend({
10
+ /**
11
+ * Initializes a newly created word array.
12
+ *
13
+ * @param {Array} words (Optional) An array of 32-bit words.
14
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
15
+ *
16
+ * @example
17
+ *
18
+ * let wordArray = CryptoJS.lib.WordArray.create();
19
+ * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
20
+ * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
21
+ */
22
+ init: function (words, sigBytes) {
23
+ words = this.words = words || []
24
+
25
+ if (sigBytes != undefined) {
26
+ this.sigBytes = sigBytes
27
+ } else {
28
+ this.sigBytes = words.length * 4
29
+ }
30
+ },
31
+
32
+ /**
33
+ * Converts this word array to a string.
34
+ *
35
+ * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
36
+ *
37
+ * @return {string} The stringified word array.
38
+ *
39
+ * @example
40
+ *
41
+ * let string = wordArray + '';
42
+ * let string = wordArray.toString();
43
+ * let string = wordArray.toString(CryptoJS.enc.Utf8);
44
+ */
45
+ toString: function (encoder) {
46
+ return (encoder || Hex).stringify(this)
47
+ },
48
+
49
+ /**
50
+ * Concatenates a word array to this word array.
51
+ *
52
+ * @param {WordArray} wordArray The word array to append.
53
+ *
54
+ * @return {WordArray} This word array.
55
+ *
56
+ * @example
57
+ *
58
+ * wordArray1.concat(wordArray2);
59
+ */
60
+ concat: function (wordArray) {
61
+ // Shortcuts
62
+ let thisWords = this.words
63
+ let thatWords = wordArray.words
64
+ let thisSigBytes = this.sigBytes
65
+ let thatSigBytes = wordArray.sigBytes
66
+
67
+ // Clamp excess bits
68
+ this.clamp()
69
+
70
+ // Concat
71
+ if (thisSigBytes % 4) {
72
+ // Copy one byte at a time
73
+ for (let i = 0; i < thatSigBytes; i++) {
74
+ let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
75
+ thisWords[(thisSigBytes + i) >>> 2] |=
76
+ thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
77
+ }
78
+ } else if (thatWords.length > 0xffff) {
79
+ // Copy one word at a time
80
+ for (let i = 0; i < thatSigBytes; i += 4) {
81
+ thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
82
+ }
83
+ } else {
84
+ // Copy all words at once
85
+ thisWords.push.apply(thisWords, thatWords)
86
+ }
87
+ this.sigBytes += thatSigBytes
88
+
89
+ // Chainable
90
+ return this
91
+ },
92
+
93
+ /**
94
+ * Removes insignificant bits.
95
+ *
96
+ * @example
97
+ *
98
+ * wordArray.clamp();
99
+ */
100
+ clamp: function () {
101
+ // Shortcuts
102
+ let words = this.words
103
+ let sigBytes = this.sigBytes
104
+
105
+ // Clamp
106
+ words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
107
+ words.length = Math.ceil(sigBytes / 4)
108
+ },
109
+
110
+ /**
111
+ * Creates a copy of this word array.
112
+ *
113
+ * @return {WordArray} The clone.
114
+ *
115
+ * @example
116
+ *
117
+ * let clone = wordArray.clone();
118
+ */
119
+ clone: function () {
120
+ let clone = Base.clone.call(this)
121
+ clone.words = this.words.slice(0)
122
+
123
+ return clone
124
+ },
125
+
126
+ /**
127
+ * Creates a word array filled with random bytes.
128
+ *
129
+ * @param {number} nBytes The number of random bytes to generate.
130
+ *
131
+ * @return {WordArray} The random word array.
132
+ *
133
+ * @static
134
+ *
135
+ * @example
136
+ *
137
+ * let wordArray = CryptoJS.lib.WordArray.random(16);
138
+ */
139
+ random: function (nBytes) {
140
+ let words = []
141
+ for (let i = 0; i < nBytes; i += 4) {
142
+ words.push((Math.random() * 0x100000000) | 0)
143
+ }
144
+
145
+ return new WordArray.init(words, nBytes)
146
+ }
147
+ })
148
+
149
+ // export const WordArray = function() {
150
+ // export const WordArray = function() {
151
+ // return {
152
+ // /**
153
+ // * Initializes a newly created word array.
154
+ // *
155
+ // * @param {Array} words (Optional) An array of 32-bit words.
156
+ // * @param {number} sigBytes (Optional) The number of significant bytes in the words.
157
+ // *
158
+ // * @example
159
+ // *
160
+ // * let wordArray = CryptoJS.lib.WordArray.create();
161
+ // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
162
+ // * let wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
163
+ // */
164
+ // init: function(words, sigBytes) {
165
+ // words = this.words = words || []
166
+
167
+ // if (sigBytes != undefined) {
168
+ // this.sigBytes = sigBytes
169
+ // } else {
170
+ // this.sigBytes = words.length * 4
171
+ // }
172
+ // },
173
+
174
+ // /**
175
+ // * Converts this word array to a string.
176
+ // *
177
+ // * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
178
+ // *
179
+ // * @return {string} The stringified word array.
180
+ // *
181
+ // * @example
182
+ // *
183
+ // * let string = wordArray + '';
184
+ // * let string = wordArray.toString();
185
+ // * let string = wordArray.toString(CryptoJS.enc.Utf8);
186
+ // */
187
+ // toString: function(encoder) {
188
+ // return encoder.stringify(this)
189
+ // },
190
+
191
+ // /**
192
+ // * Concatenates a word array to this word array.
193
+ // * @param {WordArray} wordArray The word array to append.
194
+ // * @return {WordArray} This word array.
195
+ // * @example
196
+ // * wordArray1.concat(wordArray2);
197
+ // */
198
+ // concat: function(wordArray) {
199
+ // // Shortcuts
200
+ // let thisWords = this.words
201
+ // let thatWords = wordArray.words
202
+ // let thisSigBytes = this.sigBytes
203
+ // let thatSigBytes = wordArray.sigBytes
204
+
205
+ // // Clamp excess bits
206
+ // this.clamp()
207
+
208
+ // // Concat
209
+ // if (thisSigBytes % 4) {
210
+ // // Copy one byte at a time
211
+ // for (let i = 0; i < thatSigBytes; i++) {
212
+ // let thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff
213
+ // thisWords[(thisSigBytes + i) >>> 2] |=
214
+ // thatByte << (24 - ((thisSigBytes + i) % 4) * 8)
215
+ // }
216
+ // } else if (thatWords.length > 0xffff) {
217
+ // // Copy one word at a time
218
+ // for (let i = 0; i < thatSigBytes; i += 4) {
219
+ // thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]
220
+ // }
221
+ // } else {
222
+ // // Copy all words at once
223
+ // thisWords.push.apply(thisWords, thatWords)
224
+ // }
225
+ // this.sigBytes += thatSigBytes
226
+
227
+ // // Chainable
228
+ // return this
229
+ // },
230
+
231
+ // /**
232
+ // * Removes insignificant bits.
233
+ // *
234
+ // * @example
235
+ // *
236
+ // * wordArray.clamp();
237
+ // */
238
+ // clamp: function() {
239
+ // // Shortcuts
240
+ // let words = this.words
241
+ // let sigBytes = this.sigBytes
242
+
243
+ // // Clamp
244
+ // words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)
245
+ // words.length = Math.ceil(sigBytes / 4)
246
+ // },
247
+
248
+ // /**
249
+ // * Creates a copy of this word array.
250
+ // * @return {WordArray} The clone.
251
+ // * @example
252
+ // * let clone = wordArray.clone();
253
+ // */
254
+ // clone: function() {
255
+ // let clone = Base.clone.call(this)
256
+ // clone.words = this.words.slice(0)
257
+
258
+ // return clone
259
+ // },
260
+
261
+ // /**
262
+ // * Creates a word array filled with random bytes.
263
+ // * @param {number} nBytes The number of random bytes to generate.
264
+ // * @return {WordArray} The random word array.
265
+ // * @static
266
+ // * @example
267
+ // * let wordArray = CryptoJS.lib.WordArray.random(16);
268
+ // */
269
+ // random: function(nBytes) {
270
+ // let words = []
271
+ // for (let i = 0; i < nBytes; i += 4) {
272
+ // words.push((Math.random() * 0x100000000) | 0)
273
+ // }
274
+
275
+ // return new WordArray.init(words, nBytes)
276
+ // }
277
+ // }
278
+ // }