@windward/core 0.2.1 → 0.2.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 (33) hide show
  1. package/components/Content/Blocks/Accordion.vue +13 -4
  2. package/components/Content/Blocks/Email.vue +61 -23
  3. package/components/Content/Blocks/Feedback.vue +2 -1
  4. package/components/Content/Blocks/Image.vue +7 -0
  5. package/components/Content/Blocks/OpenResponseCollate.vue +1 -1
  6. package/components/Content/Blocks/UserUpload.vue +2 -2
  7. package/components/Settings/AccordionSettings.vue +36 -11
  8. package/components/Settings/EmailSettings.vue +61 -19
  9. package/components/Settings/MathSettings.vue +6 -4
  10. package/components/Settings/ScenarioChoiceSettings.vue +54 -47
  11. package/components/Settings/TabSettings.vue +3 -1
  12. package/components/Settings/TextEditorSettings.vue +72 -30
  13. package/components/Settings/UserUploadSettings.vue +3 -3
  14. package/components/Settings/VideoSettings.vue +2 -2
  15. package/components/utils/MathExpressionEditor.vue +4 -5
  16. package/components/utils/TinyMCEWrapper.vue +33 -8
  17. package/components/utils/glossary/CourseGlossary.vue +45 -32
  18. package/config/tinymce.config.ts +2 -1
  19. package/helpers/tinymce/plugin.ts +18 -4
  20. package/i18n/en-US/components/content/blocks/email.ts +2 -0
  21. package/i18n/en-US/components/settings/accordion.ts +2 -1
  22. package/i18n/en-US/components/settings/email.ts +1 -0
  23. package/i18n/en-US/components/settings/text_editor.ts +4 -1
  24. package/i18n/es-ES/components/content/blocks/email.ts +2 -0
  25. package/i18n/es-ES/components/settings/accordion.ts +2 -1
  26. package/i18n/es-ES/components/settings/email.ts +1 -0
  27. package/i18n/es-ES/components/settings/text_editor.ts +4 -1
  28. package/i18n/sv-SE/components/content/blocks/email.ts +2 -0
  29. package/i18n/sv-SE/components/settings/accordion.ts +1 -0
  30. package/i18n/sv-SE/components/settings/email.ts +1 -0
  31. package/i18n/sv-SE/components/settings/text_editor.ts +4 -1
  32. package/package.json +1 -1
  33. package/test/Components/Settings/EmailSettings.spec.js +18 -2
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div>
3
3
  <v-expansion-panels
4
- v-model="block.metadata.config.currentAccordion"
4
+ v-model="selectedPanels"
5
5
  flat
6
6
  accordion
7
7
  focusable
@@ -77,8 +77,8 @@ export default {
77
77
  this.block.metadata.config.items = []
78
78
  this.block.metadata.config.items.push(defaultObject)
79
79
  }
80
- if (_.isEmpty(this.block.metadata.config.currentAccordion)) {
81
- this.block.metadata.config.currentAccordion = 0
80
+ if (_.isEmpty(this.block.metadata.config.selectedPanels)) {
81
+ this.block.metadata.config.selectedPanels = 0
82
82
  }
83
83
  this.block.body = this.$t(
84
84
  'windward.core.shared.content_blocks.title.accordion'
@@ -88,10 +88,19 @@ export default {
88
88
  return {
89
89
  expansionPanelKey: '0',
90
90
  editingInContentItem: false,
91
+ selectedPanels: 0,
91
92
  }
92
93
  },
93
94
  watch: {
94
95
  value(newValue) {
96
+ if (
97
+ !this.render &&
98
+ this.selectedPanels !== newValue.metadata.config.selectedPanels
99
+ ) {
100
+ // update editing content block
101
+ this.selectedPanels = newValue.metadata.config.selectedPanels
102
+ this.expansionPanelKey = Crypto.id()
103
+ }
95
104
  const length = newValue.metadata.config.items.length
96
105
  let counter = 0
97
106
  newValue.metadata.config.items.forEach((element) => {
@@ -115,6 +124,7 @@ export default {
115
124
  this.block.metadata.config.items.forEach((element) => {
116
125
  element.expand = false
117
126
  })
127
+ this.selectedPanels = 0
118
128
  }
119
129
  },
120
130
  },
@@ -123,7 +133,6 @@ export default {
123
133
  this.block.metadata.config.items.forEach((element) => {
124
134
  element.expand = false
125
135
  })
126
- this.block.metadata.config.currentAccordion = null
127
136
  },
128
137
  },
129
138
  }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <v-container class="container-left-border">
2
+ <v-container>
3
3
  <v-row
4
4
  v-if="
5
5
  block.metadata.config.title ||
@@ -16,16 +16,20 @@
16
16
  </v-col>
17
17
  </v-row>
18
18
  <v-row>
19
- <v-expansion-panels v-model="selectedPanels" accordion>
19
+ <v-expansion-panels
20
+ v-model="selectedPanels"
21
+ :key="expansionPanelKey"
22
+ accordion
23
+ >
20
24
  <v-container
21
25
  class="pa-0 primary container-subject d-flex justify-center align-center"
22
26
  >
23
- <v-row class="d-flex pa-5">
27
+ <v-row class="d-flex ma-5">
24
28
  <v-col cols="6">
25
29
  {{
26
- block.metadata.config.subject
27
- ? block.metadata.config.subject
28
- : 'Subject'
30
+ $t(
31
+ 'windward.core.components.content.blocks.email.email'
32
+ )
29
33
  }}
30
34
  </v-col>
31
35
  <v-col
@@ -75,10 +79,10 @@
75
79
  >
76
80
  </v-col>
77
81
  <v-col
78
- xl="1"
79
- lg="3"
80
- md="11"
81
- sm="10"
82
+ xl="4"
83
+ lg="4"
84
+ md="5"
85
+ sm="5"
82
86
  xs="10"
83
87
  class="d-flex align-center"
84
88
  >
@@ -88,12 +92,16 @@
88
92
  </v-col>
89
93
  <v-col
90
94
  v-if="selectedPanels !== index"
91
- xl="10"
92
- lg="8"
95
+ xl="7"
96
+ lg="7"
97
+ md="6"
98
+ sm="5"
93
99
  class="d-flex align-center container-body-preview"
94
100
  >
95
101
  <div class="div-preview">
96
- {{ onRemoveTags(item.body) }}
102
+ {{
103
+ item.body ? onRemoveTags(item.body) : ''
104
+ }}
97
105
  </div>
98
106
  </v-col>
99
107
  </v-row>
@@ -127,18 +135,25 @@
127
135
  )
128
136
  }}: {{ item.cc }}
129
137
  </div>
138
+ <div class="div-details-cc">
139
+ {{
140
+ $t(
141
+ 'windward.core.components.content.blocks.email.subject'
142
+ )
143
+ }}: {{ item.subject }}
144
+ </div>
130
145
  </v-col>
131
146
  </v-row>
132
147
  <v-row>
133
148
  <v-col cols="1"></v-col>
134
149
  <v-col class="pl-4">
135
150
  <TextViewer
136
- v-if="!item.expand"
151
+ v-if="!item.tinymce_expand"
137
152
  v-model="item.body"
138
153
  text-viewer
139
154
  ></TextViewer>
140
155
  <TextEditor
141
- v-if="!render && item.expand"
156
+ v-if="!render && item.tinymce_expand"
142
157
  v-model="
143
158
  block.metadata.config.emails[index]
144
159
  .body
@@ -155,7 +170,7 @@
155
170
  >
156
171
  <v-row class="pt-4">
157
172
  <v-col cols="10" class="pa-0">
158
- <v-btn color="primary" outlined>
173
+ <v-btn color="primary" text>
159
174
  <v-icon>mdi-reply</v-icon>
160
175
  {{
161
176
  $t(
@@ -163,7 +178,7 @@
163
178
  )
164
179
  }}</v-btn
165
180
  >
166
- <v-btn color="primary" outlined>
181
+ <v-btn color="primary" text>
167
182
  <v-icon>mdi-reply-all</v-icon>
168
183
  {{
169
184
  $t(
@@ -171,7 +186,7 @@
171
186
  )
172
187
  }}</v-btn
173
188
  >
174
- <v-btn color="primary" outlined>
189
+ <v-btn color="primary" text>
175
190
  <v-icon>mdi-share</v-icon>
176
191
  {{
177
192
  $t(
@@ -199,6 +214,7 @@
199
214
  </template>
200
215
  <script>
201
216
  import _ from 'lodash'
217
+ import Crypto from '~/helpers/Crypto'
202
218
  import TextEditor from '~/components/Text/TextEditor'
203
219
  import TextViewer from '~/components/Text/TextViewer'
204
220
  import BaseContentBlock from '~/components/Content/Blocks/BaseContentBlock'
@@ -231,6 +247,9 @@ export default {
231
247
  if (_.isEmpty(this.block.metadata.config.activeEmail)) {
232
248
  this.block.metadata.config.activeEmail = 0
233
249
  }
250
+ if (_.isEmpty(this.block.metadata.config.selectedPanels)) {
251
+ this.block.metadata.config.selectedPanels = 0
252
+ }
234
253
  this.block.body = this.$t(
235
254
  'windward.core.components.content.blocks.email.title'
236
255
  )
@@ -242,18 +261,34 @@ export default {
242
261
  }
243
262
  },
244
263
  watch: {
245
- render() {
246
- if (this.render) {
264
+ render(newValue) {
265
+ if (newValue) {
247
266
  this.block.metadata.config.emails.forEach((element) => {
248
- element.expand = false
267
+ element.tinymce_expand = false
249
268
  })
250
269
  this.selectedPanels =
251
270
  this.block.metadata.config.emails.length - 1
271
+ } else {
272
+ // when in editing mode first panel opens initially
273
+ this.selectedPanels = 0
274
+ }
275
+ },
276
+ value(newValue) {
277
+ if (
278
+ !this.render &&
279
+ this.selectedPanels !== newValue.metadata.config.selectedPanels
280
+ ) {
281
+ // update editing content block
282
+ this.selectedPanels = newValue.metadata.config.selectedPanels
283
+ this.expansionPanelKey = Crypto.id()
252
284
  }
253
285
  },
254
286
  },
255
287
  mounted() {
256
- this.selectedPanels = this.block.metadata.config.emails.length - 1
288
+ this.selectedPanels =
289
+ this.block.metadata.config.emails.length === 0
290
+ ? this.block.metadata.config.emails.length
291
+ : this.block.metadata.config.emails.length - 1
257
292
  },
258
293
  methods: {
259
294
  onRemoveTags(body) {
@@ -284,7 +319,7 @@ export default {
284
319
  .v-expansion-panel {
285
320
  border: 1px solid var(--v-primary-base);
286
321
  }
287
- @media only screen and (max-width: 1264px) {
322
+ @media only screen and (max-width: 800px) {
288
323
  .container-body-preview {
289
324
  display: none !important;
290
325
  }
@@ -299,4 +334,7 @@ export default {
299
334
  .container-header {
300
335
  width: 100%;
301
336
  }
337
+ .v-expansion-panels {
338
+ z-index: 0 !important;
339
+ }
302
340
  </style>
@@ -90,7 +90,8 @@
90
90
  v-if="render && !doesFeedbackExist"
91
91
  >
92
92
  <v-btn
93
- color="error"
93
+ color="primary"
94
+ outlined
94
95
  class="text-center mt-4 mr-2"
95
96
  @click="onReset()"
96
97
  >{{
@@ -128,6 +128,10 @@ export default {
128
128
  },
129
129
  imageClass() {
130
130
  let imageClass = ''
131
+ // change cursor to pointer for images that open in larger modal
132
+ if (this.block.metadata.config.modal) {
133
+ imageClass += ' container-pointer'
134
+ }
131
135
  // If NOT hide background, inclide the extra class
132
136
  if (!_.get(this.block.metadata, 'config.hide_background', false)) {
133
137
  imageClass += ' img-white'
@@ -174,6 +178,9 @@ export default {
174
178
  text-align: center;
175
179
  margin-top: -175px;
176
180
  }
181
+ .container-pointer {
182
+ cursor: pointer;
183
+ }
177
184
  ::v-deep .v-skeleton-loader.v-skeleton-loader--is-loading {
178
185
  .v-skeleton-loader__image {
179
186
  height: 100%;
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div>
3
3
  <div v-if="block.metadata.config.linked.length">
4
- <v-btn color="primary" block @click="onCollate">
4
+ <v-btn color="primary" outlined block @click="onCollate">
5
5
  <v-icon class="mr-3">mdi-file-word</v-icon>
6
6
  {{
7
7
  $t(
@@ -57,10 +57,10 @@
57
57
  "
58
58
  ></FileDropZone>
59
59
 
60
- <v-container class="primary lighten-1 text-center">
60
+ <v-container class="text-center">
61
61
  <v-btn
62
62
  :disabled="!canUpload || loading"
63
- color="success"
63
+ color="primary"
64
64
  class="text-center"
65
65
  @click="handleUpload"
66
66
  >
@@ -10,11 +10,9 @@
10
10
  </p>
11
11
  <SortableExpansionPanel
12
12
  v-model="block.metadata.config.items"
13
- v-bind:currentPanel.sync="
14
- block.metadata.config.currentAccordion
15
- "
16
13
  @click:close="onRemoveElement($event)"
17
14
  @change="onDragged"
15
+ @update:currentPanel="onUpdatePanel"
18
16
  >
19
17
  <template #header="{ item }">{{
20
18
  item.header
@@ -26,16 +24,17 @@
26
24
  <template #body="{ index }">
27
25
  <v-container :key="expansionPanelKey">
28
26
  <v-text-field
29
- outlined
30
- :autofocus="true"
31
27
  v-model="
32
28
  block.metadata.config.items[index].header
33
29
  "
30
+ :autofocus="true"
31
+ outlined
34
32
  :label="
35
33
  $t(
36
34
  'windward.core.shared.settings.title.title'
37
35
  )
38
36
  "
37
+ @focus="onTextAreaFocus"
39
38
  ></v-text-field>
40
39
  <v-btn
41
40
  @click="
@@ -43,12 +42,14 @@
43
42
  block.metadata.config.items[index]
44
43
  )
45
44
  "
45
+ text
46
46
  >
47
47
  <v-icon
48
48
  v-if="
49
49
  !block.metadata.config.items[index]
50
50
  .expand
51
51
  "
52
+ color="primary"
52
53
  >mdi-arrow-expand-all</v-icon
53
54
  >
54
55
  <v-icon
@@ -56,6 +57,7 @@
56
57
  block.metadata.config.items[index]
57
58
  .expand
58
59
  "
60
+ color="primary"
59
61
  >
60
62
  mdi-arrow-collapse-all
61
63
  </v-icon>
@@ -67,6 +69,11 @@
67
69
  v-model="
68
70
  block.metadata.config.items[index].content
69
71
  "
72
+ :label="
73
+ $t(
74
+ 'windward.core.components.settings.accordion.label'
75
+ )
76
+ "
70
77
  ></TextEditor>
71
78
  </v-container>
72
79
  </template>
@@ -131,10 +138,9 @@ export default {
131
138
  this.block.metadata.config.items = []
132
139
  this.block.metadata.config.items.push(defaultObject)
133
140
  }
134
- if (_.isEmpty(this.block.metadata.config.currentAccordion)) {
135
- this.block.metadata.config.currentAccordion = 0
136
- }
137
- this.block.body = this.$t('windward.core.shared.content_blocks.title.accordion')
141
+ this.block.body = this.$t(
142
+ 'windward.core.shared.content_blocks.title.accordion'
143
+ )
138
144
  },
139
145
  data() {
140
146
  return {
@@ -148,8 +154,20 @@ export default {
148
154
  clearTimeout(this.debouncer)
149
155
  }
150
156
  },
151
-
157
+ mounted() {
158
+ this.block.metadata.config.selectedPanels = 0
159
+ },
152
160
  methods: {
161
+ onUpdatePanel($event) {
162
+ if ($event !== this.block.metadata.config.selectedPanels) {
163
+ //catch click event to open selected panel to edit
164
+ this.block.metadata.config.selectedPanels = $event
165
+ } else {
166
+ // if user clicks same panel again expansion panel closes
167
+ // setting selected to null will close content blocks expansion panels
168
+ this.block.metadata.config.selectedPanels = null
169
+ }
170
+ },
153
171
  onAddElement() {
154
172
  const default_item = {
155
173
  header: '',
@@ -157,7 +175,7 @@ export default {
157
175
  content: '',
158
176
  }
159
177
  this.block.metadata.config.items.push(default_item)
160
- this.block.metadata.config.currentAccordion =
178
+ this.block.metadata.config.selectedPanels =
161
179
  this.block.metadata.config.items.length - 1
162
180
  },
163
181
  onRemoveElement(index) {
@@ -171,6 +189,13 @@ export default {
171
189
  onDragged() {
172
190
  // need to remount body after dragged to update the content body on the element
173
191
  this.expansionPanelKey = Crypto.id()
192
+ //close all panels on drag, leaving them open confuses the tracking as indexes changes around
193
+ this.block.metadata.config.selectedPanels = null
194
+ },
195
+ onTextAreaFocus($event) {
196
+ // prevent focus error that is happening on text field because of last pass
197
+ $event.preventDefault()
198
+ $event.stopPropagation()
174
199
  },
175
200
  },
176
201
  }
@@ -18,20 +18,14 @@
18
18
  :label="$t('windward.core.shared.settings.title.instructions')"
19
19
  ></v-textarea>
20
20
  </v-container>
21
- <v-container class="pa-0">
22
- <v-text-field
23
- v-model="block.metadata.config.subject"
24
- outlined
25
- :label="$t('windward.core.components.settings.email.subject')"
26
- ></v-text-field>
27
- </v-container>
28
21
  <v-divider class="my-4 primary"></v-divider>
29
22
  <v-container class="pa-0">
30
- <p>Email Items</p>
23
+ <p>{{ $t('windward.core.components.settings.email.items') }}</p>
31
24
  <SortableExpansionPanel
32
25
  v-model="block.metadata.config.emails"
33
26
  @click:close="onRemoveElement($event)"
34
27
  @change="onDragged"
28
+ @update:currentPanel="onUpdatePanel"
35
29
  >
36
30
  <template #header="{ item }">{{
37
31
  item.from
@@ -66,6 +60,17 @@
66
60
  $t('windward.core.components.settings.email.cc')
67
61
  "
68
62
  ></v-text-field>
63
+ <v-text-field
64
+ v-model="
65
+ block.metadata.config.emails[index].subject
66
+ "
67
+ outlined
68
+ :label="
69
+ $t(
70
+ 'windward.core.components.settings.email.subject'
71
+ )
72
+ "
73
+ ></v-text-field>
69
74
  <v-btn
70
75
  @click="
71
76
  onToggleExpand(
@@ -73,24 +78,37 @@
73
78
  index
74
79
  )
75
80
  "
81
+ text
76
82
  >
77
83
  <v-icon
78
84
  v-if="
79
- !block.metadata.config.emails[index].expand
85
+ !block.metadata.config.emails[index]
86
+ .tinymce_expand
80
87
  "
88
+ color="primary"
81
89
  >mdi-arrow-expand-all</v-icon
82
90
  >
83
91
  <v-icon
84
92
  v-if="
85
- block.metadata.config.emails[index].expand
93
+ block.metadata.config.emails[index]
94
+ .tinymce_expand
86
95
  "
96
+ color="primary"
87
97
  >
88
98
  mdi-arrow-collapse-all
89
99
  </v-icon>
90
100
  </v-btn>
91
101
  <TextEditor
92
- v-show="!block.metadata.config.emails[index].expand"
102
+ v-show="
103
+ !block.metadata.config.emails[index]
104
+ .tinymce_expand
105
+ "
93
106
  v-model="block.metadata.config.emails[index].body"
107
+ :label="
108
+ $t(
109
+ 'windward.core.components.settings.email.placeholder'
110
+ )
111
+ "
94
112
  ></TextEditor>
95
113
  </v-container>
96
114
  </template>
@@ -101,7 +119,7 @@
101
119
  <v-btn color="primary" @click="onAddElement"
102
120
  ><v-icon>mdi-plus</v-icon
103
121
  >{{
104
- $t('windward.core.components.settings.accordion.add')
122
+ $t('windward.core.components.settings.email.add')
105
123
  }}</v-btn
106
124
  >
107
125
  </v-row>
@@ -155,19 +173,23 @@ export default {
155
173
  from: '',
156
174
  to: '',
157
175
  cc: '',
176
+ subject: '',
158
177
  body: '',
159
- expand: false,
178
+ tinymce_expand: false,
160
179
  initials: '',
161
180
  }
162
181
  this.block.metadata.config.emails.push(defaultObject)
163
182
  }
164
- this.block.body = this.$t('windward.core.components.content.blocks.email.title')
183
+ this.block.body = this.$t(
184
+ 'windward.core.components.content.blocks.email.title'
185
+ )
165
186
  },
166
187
  data() {
167
188
  return {
168
189
  valid: true,
169
190
  loading: false,
170
191
  expansionPanelKey: 0,
192
+ editingPanel: 0,
171
193
  }
172
194
  },
173
195
  beforeDestroy() {
@@ -175,14 +197,29 @@ export default {
175
197
  clearTimeout(this.debouncer)
176
198
  }
177
199
  },
200
+ mounted() {
201
+ this.block.metadata.config.selectedPanels = 0
202
+ },
178
203
  methods: {
179
204
  onBeforeSave() {
180
205
  this.block.metadata.config.emails.forEach((element) => {
181
- let matches = element.from.match(/\b(\w)/g)
182
- element.initials = matches.join('')
183
- element.expand = false
206
+ if (element.from) {
207
+ let matches = element.from.match(/\b(\w)/g)
208
+ element.initials = matches.join('')
209
+ }
210
+ element.tinymce_expand = false
184
211
  })
185
212
  },
213
+ onUpdatePanel($event) {
214
+ if ($event !== this.block.metadata.config.selectedPanels) {
215
+ //catch click event to open selected panel to edit
216
+ this.block.metadata.config.selectedPanels = $event
217
+ } else {
218
+ // if user clicks same panel again expansion panel closes
219
+ // setting selected to null will close content blocks expansion panels
220
+ this.block.metadata.config.selectedPanels = null
221
+ }
222
+ },
186
223
  onRemoveElement(event) {
187
224
  this.block.metadata.config.emails.splice(event, 1)
188
225
  this.expansionPanelKey = Crypto.id()
@@ -192,19 +229,24 @@ export default {
192
229
  from: '',
193
230
  to: '',
194
231
  cc: '',
232
+ subject: '',
195
233
  body: '',
196
- expand: false,
234
+ tinymce_expand: false,
197
235
  initials: '',
198
236
  }
199
237
  this.block.metadata.config.emails.push(defaultObject)
238
+ this.block.metadata.config.selectedPanels =
239
+ this.block.metadata.config.emails.length - 1
200
240
  },
201
241
  onToggleExpand(item, index) {
202
242
  this.expansionPanelKey = Crypto.id()
203
- return (item.expand = !item.expand)
243
+ return (item.tinymce_expand = !item.tinymce_expand)
204
244
  },
205
245
  onDragged() {
206
246
  // need to remount body after dragged to update the content body on the element
207
247
  this.expansionPanelKey = Crypto.id()
248
+ //close all panels on drag, leaving them open confuses the tracking as indexes changes around
249
+ this.block.metadata.config.selectedPanels = null
208
250
  },
209
251
  },
210
252
  }
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <div>
3
3
  <br />
4
- <v-btn @click="onToggleExpand" class="mb-2">
5
- <v-icon v-if="!block.metadata.config.expand"
4
+ <v-btn @click="onToggleExpand" text class="mb-2">
5
+ <v-icon v-if="!block.metadata.config.expand" color="primary"
6
6
  >mdi-arrow-expand-all</v-icon
7
7
  >
8
- <v-icon v-if="block.metadata.config.expand">
8
+ <v-icon v-if="block.metadata.config.expand" color="primary">
9
9
  mdi-arrow-collapse-all
10
10
  </v-icon>
11
11
  </v-btn>
@@ -36,7 +36,9 @@ export default {
36
36
  this.block = {}
37
37
  }
38
38
  if (_.isEmpty(this.block.body)) {
39
- this.block.body = this.$t('windward.core.shared.content_blocks.title.math')
39
+ this.block.body = this.$t(
40
+ 'windward.core.shared.content_blocks.title.math'
41
+ )
40
42
  }
41
43
  if (_.isEmpty(this.block.metadata)) {
42
44
  this.block.metadata = {}