@windward/core 0.6.0 → 0.8.0

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 (176) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/components/Content/Blocks/Accordion.vue +22 -0
  3. package/components/Content/Blocks/BlockQuote.vue +6 -2
  4. package/components/Content/Blocks/ClickableIcons.vue +19 -4
  5. package/components/Content/Blocks/Email.vue +12 -3
  6. package/components/Content/Blocks/GenerateAIQuestionButton.vue +14 -6
  7. package/components/Content/Blocks/HorizontalRule.vue +3 -4
  8. package/components/Content/Blocks/OpenResponse.vue +25 -0
  9. package/components/Content/Blocks/OpenResponseCollate.vue +13 -12
  10. package/components/Content/Blocks/ScenarioChoice.vue +66 -33
  11. package/components/Content/Blocks/Tab.vue +19 -0
  12. package/components/Content/Blocks/UserUpload.vue +5 -10
  13. package/components/Content/Blocks/Video.vue +129 -15
  14. package/components/Settings/AccordionSettings.vue +52 -13
  15. package/components/Settings/BlockQuoteSettings.vue +17 -33
  16. package/components/Settings/ClickableIconsSettings.vue +37 -23
  17. package/components/Settings/EmailSettings.vue +12 -30
  18. package/components/Settings/FileDownloadSettings.vue +12 -31
  19. package/components/Settings/HorizontalRuleSettings.vue +0 -3
  20. package/components/Settings/ImageSettings.vue +3 -9
  21. package/components/Settings/OpenResponseCollateSettings.vue +47 -55
  22. package/components/Settings/OpenResponseSettings.vue +62 -36
  23. package/components/Settings/ScenarioChoiceSettings.vue +22 -29
  24. package/components/Settings/TabSettings.vue +99 -81
  25. package/components/Settings/UserUploadSettings.vue +16 -42
  26. package/components/Settings/VideoSettings/SourcePicker.vue +223 -0
  27. package/components/Settings/VideoSettings.vue +115 -195
  28. package/components/utils/TinyMCEWrapper.vue +9 -5
  29. package/components/utils/assets/tinymce/content/global.scss +14 -0
  30. package/components/utils/glossary/CourseGlossary.vue +52 -27
  31. package/helpers/GlossaryHelper.ts +12 -2
  32. package/helpers/tinymce/WindwardPlugins.ts +59 -10
  33. package/i18n/en-US/components/content/blocks/generate_questions.ts +2 -1
  34. package/i18n/en-US/components/content/blocks/video.ts +2 -51
  35. package/i18n/en-US/components/settings/accordion.ts +1 -0
  36. package/i18n/en-US/components/settings/open_response_collate.ts +1 -1
  37. package/i18n/en-US/components/settings/scenario_choice.ts +3 -2
  38. package/i18n/en-US/components/settings/tab.ts +1 -0
  39. package/i18n/en-US/components/settings/user_upload.ts +1 -0
  40. package/i18n/en-US/components/settings/video.ts +51 -0
  41. package/i18n/en-US/components/utils/tiny_mce_wrapper.ts +9 -1
  42. package/i18n/en-US/shared/settings.ts +1 -1
  43. package/i18n/es-ES/components/content/blocks/generate_questions.ts +2 -1
  44. package/i18n/es-ES/components/content/blocks/video.ts +3 -53
  45. package/i18n/es-ES/components/settings/accordion.ts +1 -0
  46. package/i18n/es-ES/components/settings/open_response_collate.ts +1 -1
  47. package/i18n/es-ES/components/settings/scenario_choice.ts +3 -2
  48. package/i18n/es-ES/components/settings/tab.ts +2 -0
  49. package/i18n/es-ES/components/settings/user_upload.ts +1 -0
  50. package/i18n/es-ES/components/settings/video.ts +53 -0
  51. package/i18n/es-ES/components/utils/tiny_mce_wrapper.ts +9 -0
  52. package/i18n/es-ES/shared/settings.ts +1 -1
  53. package/i18n/sv-SE/components/content/blocks/generate_questions.ts +2 -1
  54. package/i18n/sv-SE/components/content/blocks/video.ts +2 -51
  55. package/i18n/sv-SE/components/settings/accordion.ts +2 -0
  56. package/i18n/sv-SE/components/settings/open_response_collate.ts +1 -1
  57. package/i18n/sv-SE/components/settings/scenario_choice.ts +3 -2
  58. package/i18n/sv-SE/components/settings/tab.ts +1 -0
  59. package/i18n/sv-SE/components/settings/user_upload.ts +1 -0
  60. package/i18n/sv-SE/components/settings/video.ts +51 -0
  61. package/i18n/sv-SE/components/utils/tiny_mce_wrapper.ts +8 -0
  62. package/package.json +3 -2
  63. package/plugin.js +1 -1
  64. package/test/__mocks__/modelMock.js +1 -1
  65. package/test/helpers/GlossaryHelper.spec.js +22 -3
  66. package/test/mocks.js +8 -0
  67. package/.idea/codeStyles/Project.xml +0 -58
  68. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  69. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  70. package/.idea/modules.xml +0 -8
  71. package/.idea/php-docker-settings.xml +0 -24
  72. package/.idea/php.xml +0 -19
  73. package/.idea/vcs.xml +0 -6
  74. package/.idea/watcherTasks.xml +0 -4
  75. package/.idea/windward-ui-plugin-core.iml +0 -8
  76. package/config/menu.config.json +0 -475
  77. package/coverage/clover.xml +0 -223
  78. package/coverage/coverage-final.json +0 -16
  79. package/coverage/lcov-report/base.css +0 -224
  80. package/coverage/lcov-report/block-navigation.js +0 -87
  81. package/coverage/lcov-report/components/Content/Blocks/Accordion.vue.html +0 -430
  82. package/coverage/lcov-report/components/Content/Blocks/Image.vue.html +0 -394
  83. package/coverage/lcov-report/components/Content/Blocks/Math.vue.html +0 -262
  84. package/coverage/lcov-report/components/Content/Blocks/RichText.vue.html +0 -295
  85. package/coverage/lcov-report/components/Content/Blocks/Tab.vue.html +0 -415
  86. package/coverage/lcov-report/components/Content/Blocks/Table.vue.html +0 -667
  87. package/coverage/lcov-report/components/Content/Blocks/Video.vue.html +0 -2275
  88. package/coverage/lcov-report/components/Content/Blocks/index.html +0 -206
  89. package/coverage/lcov-report/components/utils/ContentViewer.vue.html +0 -199
  90. package/coverage/lcov-report/components/utils/MathExpressionEditor.vue.html +0 -919
  91. package/coverage/lcov-report/components/utils/MathLiveWrapper.vue.html +0 -343
  92. package/coverage/lcov-report/components/utils/TinyMCEWrapper.vue.html +0 -271
  93. package/coverage/lcov-report/components/utils/index.html +0 -161
  94. package/coverage/lcov-report/config/index.html +0 -116
  95. package/coverage/lcov-report/config/tinymce.config.js.html +0 -493
  96. package/coverage/lcov-report/favicon.png +0 -0
  97. package/coverage/lcov-report/helpers/MathHelper.ts.html +0 -793
  98. package/coverage/lcov-report/helpers/index.html +0 -116
  99. package/coverage/lcov-report/helpers/tinymce/index.html +0 -116
  100. package/coverage/lcov-report/helpers/tinymce/plugin.ts.html +0 -334
  101. package/coverage/lcov-report/index.html +0 -191
  102. package/coverage/lcov-report/prettify.css +0 -1
  103. package/coverage/lcov-report/prettify.js +0 -2
  104. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  105. package/coverage/lcov-report/sorter.js +0 -196
  106. package/coverage/lcov-report/test/index.html +0 -116
  107. package/coverage/lcov-report/test/mocks.js.html +0 -457
  108. package/coverage/lcov.info +0 -403
  109. package/lib/helpers/GlossaryHelper.d.ts +0 -9
  110. package/lib/helpers/GlossaryHelper.js +0 -118
  111. package/lib/helpers/GlossaryTerm.d.ts +0 -10
  112. package/lib/helpers/GlossaryTerm.js +0 -22
  113. package/lib/helpers/MathHelper.d.ts +0 -99
  114. package/lib/helpers/MathHelper.js +0 -194
  115. package/lib/helpers/tinymce/plugin.d.ts +0 -2
  116. package/lib/helpers/tinymce/plugin.js +0 -86
  117. package/lib/i18n/en-US/components/content/blocks/image.d.ts +0 -6
  118. package/lib/i18n/en-US/components/content/blocks/image.js +0 -7
  119. package/lib/i18n/en-US/components/content/blocks/index.d.ts +0 -75
  120. package/lib/i18n/en-US/components/content/blocks/index.js +0 -14
  121. package/lib/i18n/en-US/components/content/blocks/tab.d.ts +0 -5
  122. package/lib/i18n/en-US/components/content/blocks/tab.js +0 -6
  123. package/lib/i18n/en-US/components/content/blocks/table.d.ts +0 -5
  124. package/lib/i18n/en-US/components/content/blocks/table.js +0 -6
  125. package/lib/i18n/en-US/components/content/blocks/user_upload.d.ts +0 -13
  126. package/lib/i18n/en-US/components/content/blocks/user_upload.js +0 -14
  127. package/lib/i18n/en-US/components/content/blocks/video.d.ts +0 -48
  128. package/lib/i18n/en-US/components/content/blocks/video.js +0 -49
  129. package/lib/i18n/en-US/components/content/index.d.ts +0 -77
  130. package/lib/i18n/en-US/components/content/index.js +0 -6
  131. package/lib/i18n/en-US/components/index.d.ts +0 -140
  132. package/lib/i18n/en-US/components/index.js +0 -12
  133. package/lib/i18n/en-US/components/navigation/image.d.ts +0 -5
  134. package/lib/i18n/en-US/components/navigation/image.js +0 -6
  135. package/lib/i18n/en-US/components/navigation/index.d.ts +0 -10
  136. package/lib/i18n/en-US/components/navigation/index.js +0 -8
  137. package/lib/i18n/en-US/components/navigation/user_upload.d.ts +0 -4
  138. package/lib/i18n/en-US/components/navigation/user_upload.js +0 -5
  139. package/lib/i18n/en-US/components/settings/clickable_icon.d.ts +0 -6
  140. package/lib/i18n/en-US/components/settings/clickable_icon.js +0 -7
  141. package/lib/i18n/en-US/components/settings/image.d.ts +0 -2
  142. package/lib/i18n/en-US/components/settings/image.js +0 -3
  143. package/lib/i18n/en-US/components/settings/index.d.ts +0 -39
  144. package/lib/i18n/en-US/components/settings/index.js +0 -14
  145. package/lib/i18n/en-US/components/settings/text_editor.d.ts +0 -8
  146. package/lib/i18n/en-US/components/settings/text_editor.js +0 -9
  147. package/lib/i18n/en-US/components/settings/user_upload.d.ts +0 -12
  148. package/lib/i18n/en-US/components/settings/user_upload.js +0 -13
  149. package/lib/i18n/en-US/components/settings/video.d.ts +0 -13
  150. package/lib/i18n/en-US/components/settings/video.js +0 -14
  151. package/lib/i18n/en-US/components/utils/index.d.ts +0 -15
  152. package/lib/i18n/en-US/components/utils/index.js +0 -6
  153. package/lib/i18n/en-US/components/utils/tiny_mce_wrapper.d.ts +0 -13
  154. package/lib/i18n/en-US/components/utils/tiny_mce_wrapper.js +0 -14
  155. package/lib/i18n/en-US/index.d.ts +0 -197
  156. package/lib/i18n/en-US/index.js +0 -16
  157. package/lib/i18n/en-US/modules/index.d.ts +0 -2
  158. package/lib/i18n/en-US/modules/index.js +0 -6
  159. package/lib/i18n/en-US/pages/glossary.d.ts +0 -8
  160. package/lib/i18n/en-US/pages/glossary.js +0 -9
  161. package/lib/i18n/en-US/pages/index.d.ts +0 -13
  162. package/lib/i18n/en-US/pages/index.js +0 -8
  163. package/lib/i18n/en-US/pages/user_upload.d.ts +0 -4
  164. package/lib/i18n/en-US/pages/user_upload.js +0 -5
  165. package/lib/i18n/en-US/shared/content_blocks.d.ts +0 -20
  166. package/lib/i18n/en-US/shared/content_blocks.js +0 -21
  167. package/lib/i18n/en-US/shared/index.d.ts +0 -39
  168. package/lib/i18n/en-US/shared/index.js +0 -10
  169. package/lib/i18n/en-US/shared/menu.d.ts +0 -4
  170. package/lib/i18n/en-US/shared/menu.js +0 -5
  171. package/lib/i18n/en-US/shared/settings.d.ts +0 -15
  172. package/lib/i18n/en-US/shared/settings.js +0 -16
  173. package/lib/i18n/en-US.d.ts +0 -197
  174. package/lib/i18n/en-US.js +0 -15
  175. package/lib/models/UserFileAsset.d.ts +0 -5
  176. package/lib/models/UserFileAsset.js +0 -37
@@ -3,19 +3,21 @@
3
3
  <v-row>
4
4
  <v-col cols="12">
5
5
  <v-text-field
6
+ id="block-settings-title"
6
7
  v-model="block.metadata.config.title"
7
- :counter="50"
8
+ :rules="$Validation.getRule('block.title')"
9
+ :counter="$Validation.getLimit('block.title')"
8
10
  outlined
9
- :rules="validation.shortInputRules"
10
11
  :label="$t('windward.core.components.settings.video.title')"
11
12
  :disabled="render"
12
13
  ></v-text-field>
13
14
  <v-textarea
15
+ id="block-settings-instructions"
14
16
  v-model="block.metadata.config.description"
15
17
  outlined
16
18
  auto-grow
17
- :rules="validation.instructionRule"
18
- :counter="255"
19
+ :rules="$Validation.getRule('block.instructions')"
20
+ :counter="$Validation.getLimit('block.instructions')"
19
21
  :label="
20
22
  $t(
21
23
  'components.content.settings.base.description_optional'
@@ -31,83 +33,48 @@
31
33
  <v-tab>
32
34
  {{
33
35
  $t(
34
- 'windward.core.components.content.blocks.video.tabs.video'
36
+ 'windward.core.components.settings.video.tabs.source'
35
37
  )
36
38
  }}
37
39
  </v-tab>
38
40
  <v-tab>
39
41
  {{
40
42
  $t(
41
- 'windward.core.components.content.blocks.video.tabs.poster'
43
+ 'windward.core.components.settings.video.tabs.poster'
42
44
  )
43
45
  }}
44
46
  </v-tab>
45
- <v-tab>
47
+ <v-tab v-if="showPreRoll">
46
48
  {{
47
49
  $t(
48
- 'windward.core.components.content.blocks.video.tabs.preroll'
50
+ 'windward.core.components.settings.video.tabs.preroll'
49
51
  )
50
52
  }}
51
53
  </v-tab>
52
- <v-tab>
54
+ <v-tab v-if="showPostRoll">
53
55
  {{
54
56
  $t(
55
- 'windward.core.components.content.blocks.video.tabs.postroll'
57
+ 'windward.core.components.settings.video.tabs.postroll'
56
58
  )
57
59
  }}
58
60
  </v-tab>
59
61
  </v-tabs>
60
62
 
61
- <v-tabs-items v-model="fileTab">
63
+ <v-tabs-items v-model="fileTab" class="mt-2">
62
64
  <v-tab-item class="mb-1">
63
- <ContentBlockAsset
64
- v-model="media.source"
65
+ <SourcePicker
66
+ :source.sync="media.source"
67
+ :track.sync="media.track"
65
68
  :assets.sync="block.assets"
66
- mimes="video/mp4,audio/mpeg,video/webm,video/youtube"
67
- allow-url
68
- class="mb-4"
69
+ :source-label="
70
+ $t(
71
+ 'windward.core.components.settings.video.place_source'
72
+ )
73
+ "
69
74
  :disabled="render"
70
- @change="onSourceSelect"
71
- >
72
- <template #title>
73
- {{
74
- $t(
75
- 'windward.core.components.content.blocks.video.video.title'
76
- )
77
- }}
78
- </template>
79
- <template #description>
80
- {{
81
- $t(
82
- 'windward.core.components.content.blocks.video.video.configure_blurb'
83
- )
84
- }}
85
- </template>
86
- </ContentBlockAsset>
87
- <ContentBlockAsset
88
- v-model="media.track"
89
- :assets.sync="block.assets"
90
- mimes="text/vtt,text/xml"
91
- allow-url
92
- class="mb-4"
93
- :disabled="render"
94
- @change="onTrackSelect"
95
- >
96
- <template #title>
97
- {{
98
- $t(
99
- 'windward.core.components.content.blocks.video.caption.title'
100
- )
101
- }}
102
- </template>
103
- <template #description>
104
- {{
105
- $t(
106
- 'windward.core.components.content.blocks.video.caption.configure_blurb'
107
- )
108
- }}
109
- </template>
110
- </ContentBlockAsset>
75
+ @change:source="onSourceSelect"
76
+ @change:track="onTrackSelect"
77
+ ></SourcePicker>
111
78
  </v-tab-item>
112
79
 
113
80
  <v-tab-item class="mb-1">
@@ -122,120 +89,67 @@
122
89
  <template #title>
123
90
  {{
124
91
  $t(
125
- 'windward.core.components.content.blocks.video.poster.title'
92
+ 'windward.core.components.settings.video.poster.title'
126
93
  )
127
94
  }}
128
95
  </template>
129
96
  <template #description>
130
97
  {{
131
98
  $t(
132
- 'windward.core.components.content.blocks.video.poster.configure_blurb'
99
+ 'windward.core.components.settings.video.poster.configure_blurb'
133
100
  )
134
101
  }}
135
102
  </template>
136
103
  </ContentBlockAsset>
137
104
  </v-tab-item>
138
105
 
139
- <v-tab-item class="mb-1">
140
- <ContentBlockAsset
141
- v-model="media.ads.preroll.source"
106
+ <v-tab-item v-if="showPreRoll" class="mb-1">
107
+ <SourcePicker
108
+ :source.sync="media.ads[0].source"
109
+ :track.sync="media.ads[0].track"
142
110
  :assets.sync="block.assets"
143
- mimes="video/mp4,video/webm"
144
- allow-url
145
- class="mb-4"
146
- :disabled="render"
147
- @change="onAdSourceSelect($event, 0)"
148
- >
149
- <template #title>
150
- {{
151
- $t(
152
- 'windward.core.components.content.blocks.video.preroll.title'
153
- )
154
- }}
155
- </template>
156
- <template #description>
157
- {{
158
- $t(
159
- 'windward.core.components.content.blocks.video.preroll.configure_blurb'
160
- )
161
- }}
162
- </template>
163
- </ContentBlockAsset>
164
-
165
- <ContentBlockAsset
166
- v-model="media.ads.preroll.track"
167
- :assets.sync="block.assets"
168
- mimes="text/vtt,text/xml"
169
- allow-url
111
+ :source-label="
112
+ $t(
113
+ 'windward.core.components.settings.video.preroll.title'
114
+ )
115
+ "
116
+ :source-description="
117
+ $t(
118
+ 'windward.core.components.settings.video.preroll.configure_blurb'
119
+ )
120
+ "
170
121
  :disabled="render"
171
- @change="onAdTrackSelect($event, 0)"
172
- >
173
- <template #title>
174
- {{
175
- $t(
176
- 'windward.core.components.content.blocks.video.caption.title'
177
- )
178
- }}
179
- </template>
180
- <template #description>
181
- {{
182
- $t(
183
- 'windward.core.components.content.blocks.video.caption.configure_blurb'
184
- )
185
- }}
186
- </template>
187
- </ContentBlockAsset>
122
+ @change:source="
123
+ (file, rawFile) =>
124
+ onAdSourceSelect(file, rawFile, 0)
125
+ "
126
+ @change:track="onAdTrackSelect($event, 0)"
127
+ ></SourcePicker>
188
128
  </v-tab-item>
189
129
 
190
130
  <v-tab-item class="mb-1">
191
- <ContentBlockAsset
192
- v-model="media.ads.postroll.source"
131
+ <SourcePicker
132
+ v-if="showPostRoll"
133
+ :source.sync="media.ads[100].source"
134
+ :track.sync="media.ads[100].track"
193
135
  :assets.sync="block.assets"
194
- mimes="video/mp4,video/webm"
195
- allow-url
196
- class="mb-4"
136
+ :source-label="
137
+ $t(
138
+ 'windward.core.components.settings.video.postroll.title'
139
+ )
140
+ "
141
+ :source-description="
142
+ $t(
143
+ 'windward.core.components.settings.video.postroll.configure_blurb'
144
+ )
145
+ "
197
146
  :disabled="render"
198
- @change="onAdSourceSelect($event, 100)"
199
- >
200
- <template #title>
201
- {{
202
- $t(
203
- 'windward.core.components.content.blocks.video.postroll.title'
204
- )
205
- }}
206
- </template>
207
- <template #description>
208
- {{
209
- $t(
210
- 'windward.core.components.content.blocks.video.postroll.configure_blurb'
211
- )
212
- }}
213
- </template>
214
- </ContentBlockAsset>
215
-
216
- <ContentBlockAsset
217
- v-model="media.ads.postroll.track"
218
- :assets.sync="block.assets"
219
- mimes="text/vtt,text/xml"
220
- allow-url
221
- :disabled="render"
222
- @change="onAdTrackSelect($event, 100)"
223
- >
224
- <template #title>
225
- {{
226
- $t(
227
- 'windward.core.components.content.blocks.video.caption.title'
228
- )
229
- }}
230
- </template>
231
- <template #description>
232
- {{
233
- $t(
234
- 'windward.core.components.content.blocks.video.caption.configure_blurb'
235
- )
236
- }}
237
- </template>
238
- </ContentBlockAsset>
147
+ @change:source="
148
+ (file, rawFile) =>
149
+ onAdSourceSelect(file, rawFile, 0)
150
+ "
151
+ @change:track="onAdTrackSelect($event, 0)"
152
+ ></SourcePicker>
239
153
  </v-tab-item>
240
154
  </v-tabs-items>
241
155
  </v-col>
@@ -363,7 +277,7 @@
363
277
  :items="playbackRateOptions"
364
278
  :label="
365
279
  $t(
366
- 'windward.core.components.content.blocks.video.video.playback_rates'
280
+ 'windward.core.components.settings.video.video.playback_rates'
367
281
  )
368
282
  "
369
283
  multiple
@@ -385,7 +299,7 @@
385
299
  "
386
300
  :label="
387
301
  $t(
388
- 'windward.core.components.content.blocks.video.video.controls'
302
+ 'windward.core.components.settings.video.video.controls'
389
303
  )
390
304
  "
391
305
  :disabled="render"
@@ -396,7 +310,7 @@
396
310
  "
397
311
  :label="
398
312
  $t(
399
- 'windward.core.components.content.blocks.video.video.rewind'
313
+ 'windward.core.components.settings.video.video.rewind'
400
314
  )
401
315
  "
402
316
  :disabled="render"
@@ -408,7 +322,7 @@
408
322
  "
409
323
  :label="
410
324
  $t(
411
- 'windward.core.components.content.blocks.video.video.captionsmenu'
325
+ 'windward.core.components.settings.video.video.captionsmenu'
412
326
  )
413
327
  "
414
328
  :disabled="render"
@@ -420,7 +334,7 @@
420
334
  "
421
335
  :label="
422
336
  $t(
423
- 'windward.core.components.content.blocks.video.video.disablepictureinpicture'
337
+ 'windward.core.components.settings.video.video.disablepictureinpicture'
424
338
  )
425
339
  "
426
340
  :disabled="render"
@@ -428,11 +342,11 @@
428
342
  <!--
429
343
  <v-switch
430
344
  v-model="block.metadata.config.attributes.playlistmenu"
431
- :label="$t('windward.core.components.content.blocks.video.video.attributes.playlistmenu')"
345
+ :label="$t('windward.core.components.settings.video.video.attributes.playlistmenu')"
432
346
  ></v-switch>
433
347
  <v-switch
434
348
  v-model="block.metadata.config.attributes.playlistautoadvance"
435
- :label="$t('windward.core.components.content.blocks.video.video.attributes.playlistautoadvance')"
349
+ :label="$t('windward.core.components.settings.video.video.attributes.playlistautoadvance')"
436
350
  ></v-switch>
437
351
  -->
438
352
  </v-col>
@@ -443,7 +357,7 @@
443
357
  "
444
358
  :label="
445
359
  $t(
446
- 'windward.core.components.content.blocks.video.video.muted'
360
+ 'windward.core.components.settings.video.video.muted'
447
361
  )
448
362
  "
449
363
  :disabled="render"
@@ -454,7 +368,7 @@
454
368
  "
455
369
  :label="
456
370
  $t(
457
- 'windward.core.components.content.blocks.video.video.loop'
371
+ 'windward.core.components.settings.video.video.loop'
458
372
  )
459
373
  "
460
374
  :disabled="render"
@@ -466,7 +380,7 @@
466
380
  "
467
381
  :label="
468
382
  $t(
469
- 'windward.core.components.content.blocks.video.video.playsinline'
383
+ 'windward.core.components.settings.video.video.playsinline'
470
384
  )
471
385
  "
472
386
  :disabled="render"
@@ -482,11 +396,13 @@
482
396
  <script>
483
397
  import _ from 'lodash'
484
398
  import BaseContentSettings from '~/components/Content/Settings/BaseContentSettings.js'
399
+ import ContentBlockAsset from '~/components/Content/ContentBlockAsset.vue'
400
+ import SourcePicker from './VideoSettings/SourcePicker.vue'
485
401
 
486
402
  export default {
487
403
  name: 'VideoSettings',
488
404
  extends: BaseContentSettings,
489
- components: {},
405
+ components: { ContentBlockAsset, SourcePicker },
490
406
  data() {
491
407
  return {
492
408
  fileTab: null,
@@ -494,45 +410,26 @@ export default {
494
410
  playlistPaginator: 1,
495
411
  media: {
496
412
  source: null,
413
+ sourceInherit: true,
497
414
  track: null,
498
415
  poster: null,
499
416
  ads: {
500
- preroll: {
417
+ // preroll
418
+ 0: {
501
419
  source: null,
502
420
  track: null,
421
+ inherit: true,
503
422
  },
504
- postroll: {
423
+ // postroll
424
+ 100: {
505
425
  source: null,
506
426
  track: null,
427
+ inherit: true,
507
428
  },
508
429
  },
509
430
  },
510
- validation: {
511
- shortInputRules: [
512
- (v) =>
513
- v.length <= 50 ||
514
- this.$t(
515
- 'windward.core.shared.settings.errors.input_limitations',
516
- [50]
517
- ),
518
- ],
519
- instructionRule: [
520
- (v) =>
521
- v.length <= 255 ||
522
- this.$t(
523
- 'windward.core.shared.settings.errors.input_limitations',
524
- [255]
525
- ),
526
- ],
527
- clueRule: [
528
- (v) =>
529
- v.length <= 155 ||
530
- this.$t(
531
- 'windward.core.shared.settings.errors.input_limitations',
532
- [155]
533
- ),
534
- ],
535
- },
431
+ showPreRoll: false,
432
+ showPostRoll: false,
536
433
  }
537
434
  },
538
435
  computed: {
@@ -578,7 +475,7 @@ export default {
578
475
  )
579
476
 
580
477
  this.media.ads = {
581
- preroll: {
478
+ 0: {
582
479
  source: this.resolveAsset(
583
480
  _.get(
584
481
  this.block,
@@ -602,7 +499,7 @@ export default {
602
499
  )
603
500
  ),
604
501
  },
605
- postroll: {
502
+ 100: {
606
503
  source: this.resolveAsset(
607
504
  _.get(
608
505
  this.block,
@@ -640,6 +537,17 @@ export default {
640
537
  delete self.block.metadata.config.__isDirty
641
538
  }, 500)
642
539
  },
540
+ getLinkedCaptions(file) {
541
+ // Check to see if the video source has a linked asset and it's a vtt file
542
+ const linkedCaption = _.find(
543
+ _.get(file, 'asset.linked_assets', []),
544
+ function (f) {
545
+ return _.get(f, 'asset.metadata.extension', '') === 'vtt'
546
+ }
547
+ )
548
+
549
+ return linkedCaption || null
550
+ },
643
551
  /**
644
552
  * Returns the next array index for an ad slot
645
553
  * If a slot is already defined then return that index
@@ -713,7 +621,7 @@ export default {
713
621
 
714
622
  this.reloadVideo()
715
623
  },
716
- onSourceSelect(file) {
624
+ onSourceSelect(file, rawFile) {
717
625
  // No file, clear the selection
718
626
  if (_.isEmpty(file)) {
719
627
  delete this.block.metadata.config.playlist[this.playlistIndex]
@@ -722,6 +630,10 @@ export default {
722
630
  this.playlistIndex
723
631
  ].sources = []
724
632
 
633
+ // Clear out any associated captions
634
+ this.media.track = null
635
+ this.onTrackSelect(null)
636
+
725
637
  this.showVideo = false
726
638
  } else {
727
639
  // Apply an updated name
@@ -737,6 +649,10 @@ export default {
737
649
  ].sources = [file]
738
650
 
739
651
  this.showVideo = true
652
+
653
+ // Clear the tracks. it will either be inherited via linked captions or be hard-set by the user
654
+ this.media.track = null
655
+ this.onTrackSelect(null)
740
656
  }
741
657
  this.reloadVideo()
742
658
  },
@@ -751,7 +667,7 @@ export default {
751
667
  }
752
668
  this.reloadVideo()
753
669
  },
754
- onAdSourceSelect(file, playAtPercent) {
670
+ onAdSourceSelect(file, rawFile, playAtPercent) {
755
671
  const adIndex = this.getAdSlot(playAtPercent)
756
672
 
757
673
  // Prep in case the ad slot isn't setup yet
@@ -769,6 +685,10 @@ export default {
769
685
  this.block.metadata.config.playlist[this.playlistIndex].ads[
770
686
  adIndex
771
687
  ].sources = [file]
688
+
689
+ // Clear the tracks. it will either be inherited via linked captions or be hard-set by the user
690
+ this.media.ads[playAtPercent].track = null
691
+ this.onAdTrackSelect(null, playAtPercent)
772
692
  }
773
693
  this.reloadVideo()
774
694
  },
@@ -7,8 +7,9 @@
7
7
  "
8
8
  :data-cy="dataCy"
9
9
  >
10
- <label v-if="label" class="editor-label">{{ label }}</label>
11
-
10
+ <slot name="label" :render="render">
11
+ <label v-if="label" class="editor-label">{{ label }}</label>
12
+ </slot>
12
13
  <Editor
13
14
  :id="id"
14
15
  :key="seed + (isDarkTheme ? '-theme-dark' : '-theme-light')"
@@ -26,7 +27,9 @@
26
27
  >
27
28
  </Editor>
28
29
 
29
- <label v-if="hint" class="editor-hint">{{ hint }}</label>
30
+ <slot name="hint" :render="render">
31
+ <label v-if="hint" class="editor-hint">{{ hint }}</label>
32
+ </slot>
30
33
  </div>
31
34
 
32
35
  <v-btn-toggle dense multiple class="pt-1 d-flex justify-end">
@@ -145,7 +148,7 @@ export default {
145
148
  type: String,
146
149
  required: false,
147
150
  default:
148
- 'undo redo | styles | bold italic underline strikethrough removeformat | alignleft aligncenter alignright | table bullist numlist outdent indent | glossaryButton fibFormatButton mathButton ',
151
+ 'undo redo | styles | bold italic underline strikethrough removeformat | alignleft aligncenter alignright | table tablerowprops tablecellprops |bullist numlist outdent indent |glossaryButton fibFormatButton mathButton a11yButton',
149
152
  },
150
153
  root_block: { type: String, required: false, default: 'div' },
151
154
  label: { type: String, required: false, default: '' },
@@ -238,7 +241,7 @@ export default {
238
241
  },
239
242
  format: {
240
243
  title: 'Format',
241
- items: ' bold italic underline strikethrough superscript subscript codeformat | formats align | forecolor backcolor | language | removeformat',
244
+ items: ' bold italic underline strikethrough superscript subscript codeformat | formats align | language | removeformat',
242
245
  },
243
246
  },
244
247
  plugins: [
@@ -263,6 +266,7 @@ export default {
263
266
  table_advtab: false,
264
267
  table_cell_advtab: false,
265
268
  table_row_advtab: false,
269
+ table_header_type: 'auto',
266
270
  table_default_attributes: {
267
271
  class: 'default',
268
272
  },
@@ -206,3 +206,17 @@ html:has(body.editor--theme-light) {
206
206
  html:has(body.editor--theme-dark) {
207
207
  @import './dark/content.scss';
208
208
  }
209
+
210
+ .a11y-error{
211
+ background-color: #cf3f3f;
212
+ border-color: #cf3f3f;
213
+ color: #fff;
214
+ padding: 4px;
215
+ font-size: 0.8333rem;
216
+ border-radius: 4px;
217
+ &--highlight{
218
+ text-decoration-line: underline;
219
+ text-decoration-style: wavy;
220
+ text-decoration-color: #cf3f3f;
221
+ }
222
+ }