hr-design-system-handlebars 1.124.10 → 1.125.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.
@@ -1,83 +1,61 @@
1
- const DataWrapperNoResponsiveIframe = function (context, configAR, configFixedHeight, id, embedCode, lazyLoad) {
2
-
3
- const { element: rootElement } = context
4
- let aspectRatio = configAR
5
- let fixedHeight = configFixedHeight
6
- let uniqueId = id
7
-
1
+ const DataWrapperNoResponsiveIframe = function ({
2
+ rootElement,
3
+ aspectRatio,
4
+ fixedHeight,
5
+ id,
6
+ embedCode,
7
+ lazyLoad,
8
+ }) {
8
9
  const createNoResponsiveIframe = function () {
9
-
10
-
11
- var parentDiv = document.createElement('div')
12
- //Auflösen nach Tailwind-Klassen //copytext__scrollWrapper
13
- parentDiv.className = '!h-full'
14
- var div = document.createElement('div')
15
- //Keine Aspect-Ratio ausgewählt aber eine feste Höhe
16
-
17
- console.log(aspectRatio)
18
- console.log(configAR)
19
- if (aspectRatio === undefined) {
10
+ const parentDiv = document.createElement('div')
11
+ //Auflösen nach Tailwind-Klassen //copytext__scrollWrapper
12
+ parentDiv.className = '!h-full'
13
+ const div = document.createElement('div')
14
+ //Keine Aspect-Ratio ausgewählt aber eine feste Höhe
15
+ if (aspectRatio === undefined) {
20
16
  //Auflösen nach Tailwind-Klassen //noaspect_datawrapper_cdn
21
17
  div.className = 'relative overflow-hidden w-0 border-0 !min-w-full'
22
18
  div.style.height = fixedHeight + 'px'
23
19
  div.style.width = '100%'
24
- }
25
- // Aspect-Ratio ausgewählt
26
- else {
27
- //ar-- in Tailwind-Klassen
28
- let tailwindCSS
29
- switch(aspectRatio){
30
- case '100':
31
- tailwindCSS = "ar-1-1"
32
- break;
33
- case '16x9':
34
- tailwindCSS = "ar-16-9"
35
- break;
36
- case '9x16':
37
- tailwindCSS = "ar-9-16"
38
- break;
39
- case '16x7':
40
- tailwindCSS = "ar-16-7"
41
- break;
42
- case '7x16':
43
- tailwindCSS = "ar-7-16"
44
- break;
45
- case '4x3':
46
- tailwindCSS = "ar-4-3"
47
- break;
48
- case '100x27':
49
- tailwindCSS = "ar-100-27"
50
- break;
51
- default:
52
- tailwindCSS = "ar-16-9"
53
- }
54
-
55
- div.className = tailwindCSS + " w-full sm480:h-full h-[560px]"
56
- }
57
- var iframe = document.createElement('iframe')
20
+ }
21
+ // Aspect-Ratio ausgewählt
22
+ else {
23
+ //ar-- in Tailwind-Klassen
24
+ const aspectRatiosToCssClasses = {
25
+ '100': 'ar-1-1',
26
+ '16x9': 'ar-16-9',
27
+ '9x16': 'ar-9-16',
28
+ '16x7': 'ar-16-7',
29
+ '7x16': 'ar-7-16',
30
+ '4x3': 'ar-4-3',
31
+ '100x27': 'ar-100-27',
32
+ }
33
+ const tailwindCSS = aspectRatiosToCssClasses[aspectRatio] || 'ar-16-9'
34
+ div.className = `${tailwindCSS} w-full sm480:h-full h-[560px]`
35
+ }
36
+ var iframe = document.createElement('iframe')
58
37
 
59
- //Auflösen nach Tailwind-Klassen //ar_iframe datawrapper_cdn
60
- iframe.setAttribute('class', 'border-0 top-0 left-0 w-full h-full overflow-y-hidden')
61
- iframe.setAttribute('id', 'i_frame')
62
- iframe.setAttribute('data-isloaded', '0')
63
- iframe.setAttribute('webkitallowfullscreen', '')
64
- iframe.setAttribute('mozallowfullscreen', '')
65
- iframe.setAttribute('allowfullscreen', '')
66
- iframe.setAttribute('scrolling', 'no')
67
- iframe.setAttribute('frameborder', '0')
68
- iframe.src = embedCode
69
- iframe.id = 'datawrapper-chart-' + uniqueId
70
- if (lazyLoad) {
71
- iframe.loading = "lazy";
72
- }
73
-
74
- div.appendChild(iframe)
75
- parentDiv.appendChild(div)
76
- rootElement.appendChild(parentDiv)
38
+ //Auflösen nach Tailwind-Klassen //ar_iframe datawrapper_cdn
39
+ iframe.className = 'border-0 top-0 left-0 w-full h-full overflow-y-hidden'
40
+ iframe.id = 'datawrapper-chart-' + id
41
+ iframe.setAttribute('data-isloaded', '0')
42
+ iframe.setAttribute('webkitallowfullscreen', '')
43
+ iframe.setAttribute('mozallowfullscreen', '')
44
+ iframe.setAttribute('allowfullscreen', '')
45
+ iframe.setAttribute('scrolling', 'no')
46
+ iframe.setAttribute('frameborder', '0')
47
+ iframe.src = embedCode
48
+ if (lazyLoad) {
49
+ iframe.loading = 'lazy'
50
+ }
51
+
52
+ div.appendChild(iframe)
53
+ parentDiv.appendChild(div)
54
+ rootElement.appendChild(parentDiv)
77
55
  }
78
56
  return {
79
- createNoResponsiveIframe: createNoResponsiveIframe
57
+ createNoResponsiveIframe: createNoResponsiveIframe,
80
58
  }
81
59
  }
82
60
 
83
- export default DataWrapperNoResponsiveIframe
61
+ export default DataWrapperNoResponsiveIframe
@@ -29,10 +29,7 @@ const ExternalService = function (context) {
29
29
  let embedCode = options.embedCode,
30
30
  iframe,
31
31
  settingsCookie = new SettingsCookie(),
32
- noResponsiveIframe,
33
- contentRefresher,
34
32
  gemeindewahlergebnis,
35
- uniqueId,
36
33
  isExternalServiceLoaded = false,
37
34
  tiktokOnPage = []
38
35
 
@@ -74,61 +71,34 @@ const ExternalService = function (context) {
74
71
  }
75
72
 
76
73
  const insertExternalService = function () {
77
- switch (embedType) {
78
- case 'js':
79
- switch (id) {
80
- case '23degrees':
81
- createTwentyThreeDegreesEmbed()
82
- break
83
- case 'facebook-post':
84
- createFacebookEmbed()
85
- break
86
- case 'instagram':
87
- createInstagramEmbed()
88
- break
89
- case 'tiktok':
90
- createTikTokEmbed()
91
- break
92
- case 'twitter':
93
- createTwitterEmbed()
94
- break
95
- case 'twitter-post':
96
- createTwitterPostEmbed()
97
- break
98
- case 'datawrapper_cdn':
99
- createDataWrapperEmbed()
100
- break
101
- case 'wahlmonitor':
102
- createWahlEmbed()
103
- break
104
- case 'wahlmonitor_v2':
105
- createWahlEmbed()
106
- break
107
- case 'wahlkreiskarte':
108
- createWahlEmbed()
109
- break
110
- case 'wahlkreiskarte_v2':
111
- createWahlEmbed()
112
- break
113
- case 'wahlomat-euwa':
114
- createWahlOMatEuwaEmbed()
115
- break
116
- case 'wahlomat-butawa':
117
- createWahlOMatButawaEmbed()
118
- break
119
- case 'wahl-gemeinde-ergebnis':
120
- createWahlGemeindeErgebnisEmbed()
121
- break
122
- case 'wer-waehlte-wen':
123
- werWaehlteWenEmbed()
124
- break
125
- default:
126
- console.error('No JS Config for external service ' + id)
127
- break
128
- }
129
- break
130
- default:
131
- loadIframe() //für alle Dienste die nicht der DSGVO Datapolicy unterliegen
74
+ if (embedType !== 'js') {
75
+ loadIframe() // Für alle Dienste, die nicht der DSGVO Datapolicy unterliegen
76
+ return
77
+ }
78
+
79
+ const externalServiceMap = {
80
+ '23degrees': createTwentyThreeDegreesEmbed,
81
+ 'facebook-post': createFacebookEmbed,
82
+ 'instagram': createInstagramEmbed,
83
+ 'tiktok': createTikTokEmbed,
84
+ 'twitter': createTwitterEmbed,
85
+ 'twitter-post': createTwitterPostEmbed,
86
+ 'datawrapper_cdn': createDataWrapperEmbed,
87
+ 'wahlmonitor': createWahlEmbed,
88
+ 'wahlmonitor_v2': createWahlEmbed,
89
+ 'wahlkreiskarte': createWahlEmbed,
90
+ 'wahlkreiskarte_v2': createWahlEmbed,
91
+ 'wahlomat-euwa': createWahlOMatEuwaEmbed,
92
+ 'wahlomat-butawa': createWahlOMatButawaEmbed,
93
+ 'wahl-gemeinde-ergebnis': createWahlGemeindeErgebnisEmbed,
94
+ 'wer-waehlte-wen': werWaehlteWenEmbed,
95
+ }
96
+
97
+ const service = externalServiceMap[id]
98
+ if (service) {
99
+ service()
100
+ } else {
101
+ console.error(`No JS Config for external service ${id}`)
132
102
  }
133
103
  }
134
104
 
@@ -206,14 +176,6 @@ const ExternalService = function (context) {
206
176
  })
207
177
  }
208
178
 
209
- const createUniqueID = function () {
210
- console.log('Erzeuge einzigartige ID')
211
- uniqueId = Math.random()
212
- .toString(36)
213
- .replace(/[^a-z]+/g, '')
214
- .substring(2, 10)
215
- }
216
-
217
179
  const getAspectRatioClass = function () {
218
180
  switch (iFrameConfig.aspectRatio) {
219
181
  case '16x9':
@@ -237,96 +199,104 @@ const ExternalService = function (context) {
237
199
 
238
200
  const createDataWrapperEmbed = function () {
239
201
  removeDatapolicyBox()
240
- createUniqueID()
241
- console.log('UniqueID' + uniqueId)
242
- if (iFrameConfig.noResponsiveIframe == 'true') {
202
+ const uniqueId = createUniqueID()
203
+ const {
204
+ isNoResponsiveIframe,
205
+ isWebcomponent,
206
+ refreshContent,
207
+ aspectRatio,
208
+ fixedHeight,
209
+ refreshIntervall,
210
+ } = iFrameConfig
211
+
212
+ const addContentRefresher = (isWebcomponent) => {
213
+ new DataWrapperContentRefresher({
214
+ rootElement,
215
+ id: uniqueId,
216
+ refreshIntervall,
217
+ isWebcomponent,
218
+ }).createRefresher()
219
+ }
220
+
221
+ if (isNoResponsiveIframe == 'true') {
243
222
  //Klassisches Iframe mit AR-Wrapper oder fester Höhe
244
- noResponsiveIframe = new DataWrapperNoResponsiveIframe(
245
- context,
246
- iFrameConfig.aspectRatio,
247
- iFrameConfig.fixedHeight,
248
- uniqueId,
249
- embedCode,
250
- lazyLoad
251
- )
252
- noResponsiveIframe.createNoResponsiveIframe()
253
-
254
- if (iFrameConfig.refreshContent == 'true') {
255
- console.log('contentRefresher anfügen')
256
- contentRefresher = new DataWrapperContentRefresher(
257
- context,
258
- uniqueId,
259
- iFrameConfig.refreshIntervall,
260
- false
261
- )
262
- contentRefresher.createRefresher()
223
+ new DataWrapperNoResponsiveIframe({
224
+ rootElement: rootElement,
225
+ aspectRatio: aspectRatio,
226
+ fixedHeight: fixedHeight,
227
+ id: uniqueId,
228
+ embedCode: embedCode,
229
+ lazyLoad: lazyLoad,
230
+ }).createNoResponsiveIframe()
231
+
232
+ if (refreshContent == 'true') {
233
+ addContentRefresher(false)
263
234
  }
264
- } else {
265
- if (iFrameConfig.webcomponent == 'true') {
266
- // Webcomponent
267
- const divTag = document.createElement('div')
268
- divTag.id = 'datawrapper-chart-' + uniqueId
269
- rootElement.insertBefore(divTag, null)
270
- const scriptTag = document.createElement('script')
271
- scriptTag.setAttribute('id', 'datawrapper-component-js')
272
- scriptTag.setAttribute('type', 'text/javascript')
273
- scriptTag.setAttribute('defer', 'defer')
274
- scriptTag.setAttribute('src', embedCode + 'embed.js?v=1')
275
- scriptTag.setAttribute('charset', 'utf-8')
276
- const noScriptTag = document.createElement('noscript')
277
- const imageTag = document.createElement('img')
278
- imageTag.src = embedCode + 'full.png'
279
- imageTag.alt = ''
280
- noScriptTag.appendChild(imageTag)
281
- divTag.appendChild(scriptTag)
282
- divTag.appendChild(noScriptTag)
283
-
284
- if (iFrameConfig.refreshContent == 'true') {
285
- console.log('contentRefresher anfügen')
286
- contentRefresher = new DataWrapperContentRefresher(
287
- context,
288
- uniqueId,
289
- iFrameConfig.refreshIntervall,
290
- true
291
- )
292
- contentRefresher.createRefresher()
293
- }
294
- } else {
295
- //Responsives Iframe
296
- var iframe = document.createElement('iframe')
297
- //Auflösen nach Tailwind-Klassen //dataWrapper-embed
298
- iframe.className = 'w-0 !min-w-full border-0'
299
- iframe.setAttribute('webkitallowfullscreen', '')
300
- iframe.setAttribute('mozallowfullscreen', '')
301
- iframe.setAttribute('allowfullscreen', '')
302
- iframe.setAttribute('scrolling', 'no')
303
- iframe.setAttribute('frameborder', '0')
304
- iframe.src = embedCode
305
- iframe.id = 'datawrapper-chart-' + uniqueId
306
- if (lazyLoad) {
307
- iframe.loading = 'lazy'
308
- }
309
- rootElement.insertBefore(iframe, null)
235
+ return
236
+ }
310
237
 
311
- loadScript(
312
- 'datawrapper-js',
313
- 'https://static.hr.de/hessenschau/datawrapper/responsiveIframe.js',
314
- true
315
- )
316
- if (iFrameConfig.refreshContent == 'true') {
317
- console.log('contentRefresher anfügen')
318
- contentRefresher = new DataWrapperContentRefresher(
319
- context,
320
- uniqueId,
321
- iFrameConfig.refreshIntervall,
322
- false
323
- )
324
- contentRefresher.createRefresher()
325
- }
238
+ if (isWebcomponent == 'true') {
239
+ // Webcomponent
240
+ const divTag = document.createElement('div')
241
+ divTag.id = `datawrapper-chart-${uniqueId}`
242
+ rootElement.appendChild(divTag)
243
+
244
+ const scriptTag = document.createElement('script')
245
+ Object.assign(scriptTag, {
246
+ id: 'datawrapper-component-js',
247
+ type: 'text/javascript',
248
+ defer: true,
249
+ src: `${embedCode}embed.js?v=1`,
250
+ charset: 'utf-8',
251
+ })
252
+
253
+ const noScriptTag = document.createElement('noscript')
254
+ const imageTag = document.createElement('img')
255
+ imageTag.src = `${embedCode}full.png`
256
+ imageTag.alt = ''
257
+ noScriptTag.appendChild(imageTag)
258
+
259
+ divTag.append(scriptTag, noScriptTag)
260
+
261
+ if (refreshContent == 'true') {
262
+ addContentRefresher(true)
326
263
  }
264
+ return
265
+ }
266
+ //Responsives Iframe
267
+ const iframe = document.createElement('iframe')
268
+ //Auflösen nach Tailwind-Klassen //dataWrapper-embed
269
+ iframe.className = 'w-0 !min-w-full border-0'
270
+ iframe.setAttribute('webkitallowfullscreen', '')
271
+ iframe.setAttribute('mozallowfullscreen', '')
272
+ iframe.setAttribute('allowfullscreen', '')
273
+ iframe.setAttribute('scrolling', 'no')
274
+ iframe.setAttribute('frameborder', '0')
275
+ iframe.src = embedCode
276
+ iframe.id = `datawrapper-chart-${uniqueId}`
277
+ if (lazyLoad) {
278
+ iframe.loading = 'lazy'
279
+ }
280
+ rootElement.appendChild(iframe)
281
+
282
+ loadScript(
283
+ 'datawrapper-js',
284
+ 'https://static.hr.de/hessenschau/datawrapper/responsiveIframe.js',
285
+ true
286
+ )
287
+ if (refreshContent == 'true') {
288
+ addContentRefresher(false)
327
289
  }
328
290
  }
329
291
 
292
+ const createUniqueID = function () {
293
+ console.log('Erzeuge einzigartige ID')
294
+ return Math.random()
295
+ .toString(36)
296
+ .replace(/[^a-z]+/g, '')
297
+ .substring(2, 10)
298
+ }
299
+
330
300
  const createTwentyThreeDegreesEmbed = function () {
331
301
  removeDatapolicyBox()
332
302
 
@@ -3,7 +3,7 @@
3
3
  <div class="c-externalService c-externalService__{{this.externalServiceConfig.externalServiceId}}{{#unless
4
4
  this.fixedHeight }} -noFixedHeight{{/unless}} js-load"
5
5
  data-hr-external-service-ds='{"id":"{{this.externalServiceConfig.externalServiceId}}","embedCode":"{{this.serviceUrl}}","embedType":"{{this.externalServiceConfig.externalServiceEmbedType}}","lazyLoad":{{defaultIfEmpty _lazyLoad false}},"dataPolicyCheck": true, "whiteList":{{this.externalServiceConfig.isWhitelisted}},"iFrameConfig": { {{~#if this.fixedHeight~}}
6
- "fixedHeight":"{{this.fixedHeight}}"{{~else~}}{{~#if this.aspectRatio}}"aspectRatio":"{{this.aspectRatio}}"{{~else~}}"aspectRatio":"16x9"{{/if}}{{~/if}},"noResponsiveIframe":"{{{this.setResponsiveIframe}}}","webcomponent":"{{{this.setWebcomponent}}}"{{~#if this.setTimedReloadIframe}},"refreshContent":"{{{this.setTimedReloadIframe}}}","refreshIntervall":"{{this.setTimeForReload}}"{{~/if}} }}'>
6
+ "fixedHeight":"{{this.fixedHeight}}"{{~else~}}{{~#if this.aspectRatio}}"aspectRatio":"{{this.aspectRatio}}"{{~else~}}"aspectRatio":"16x9"{{/if}}{{~/if}},"isNoResponsiveIframe":"{{{this.setResponsiveIframe}}}","isWebcomponent":"{{{this.setWebcomponent}}}"{{~#if this.setTimedReloadIframe}},"refreshContent":"{{{this.setTimedReloadIframe}}}","refreshIntervall":"{{this.setTimeForReload}}"{{~/if}} }}'>
7
7
  {{~> components/external-service/components/external_service_data_policy ~}}
8
8
  </div>
9
9
  {{~> components/external-service/components/external_service_caption ~}}