website-utilities 1.0.256 → 1.0.257

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.
package/index.css CHANGED
@@ -15,7 +15,7 @@ endregion */
15
15
  @font-face {
16
16
  font-family: open-sans;
17
17
  /* stylelint-disable property-no-unknown */
18
- font-path: 'font/open-sans/light/open-sans-light';
18
+ font-path: "font/open-sans/light/open-sans-light";
19
19
  /* stylelint-enable property-no-unknown */
20
20
  font-weight: 300;
21
21
  font-style: normal;
@@ -25,7 +25,7 @@ endregion */
25
25
  @font-face {
26
26
  font-family: open-sans;
27
27
  /* stylelint-disable property-no-unknown */
28
- font-path: 'font/open-sans/light-italic/open-sans-light-italic';
28
+ font-path: "font/open-sans/light-italic/open-sans-light-italic";
29
29
  /* stylelint-enable property-no-unknown */
30
30
  font-weight: 300;
31
31
  font-style: italic;
@@ -35,7 +35,7 @@ endregion */
35
35
  @font-face {
36
36
  font-family: open-sans;
37
37
  /* stylelint-disable property-no-unknown */
38
- font-path: 'font/open-sans/regular/open-sans-regular';
38
+ font-path: "font/open-sans/regular/open-sans-regular";
39
39
  /* stylelint-enable property-no-unknown */
40
40
  font-weight: normal;
41
41
  font-style: normal;
@@ -45,7 +45,7 @@ endregion */
45
45
  @font-face {
46
46
  font-family: open-sans;
47
47
  /* stylelint-disable property-no-unknown */
48
- font-path: 'font/open-sans/italic/open-sans-italic';
48
+ font-path: "font/open-sans/italic/open-sans-italic";
49
49
  /* stylelint-enable property-no-unknown */
50
50
  font-weight: normal;
51
51
  font-style: italic;
@@ -55,7 +55,7 @@ endregion */
55
55
  @font-face {
56
56
  font-family: open-sans;
57
57
  /* stylelint-disable property-no-unknown */
58
- font-path: 'font/open-sans/semi-bold/open-sans-semi-bold';
58
+ font-path: "font/open-sans/semi-bold/open-sans-semi-bold";
59
59
  /* stylelint-enable property-no-unknown */
60
60
  font-weight: 600;
61
61
  font-style: normal;
@@ -65,7 +65,7 @@ endregion */
65
65
  @font-face {
66
66
  font-family: open-sans;
67
67
  /* stylelint-disable property-no-unknown */
68
- font-path: 'font/open-sans/semi-bold-italic/open-sans-semi-bold-italic';
68
+ font-path: "font/open-sans/semi-bold-italic/open-sans-semi-bold-italic";
69
69
  /* stylelint-enable property-no-unknown */
70
70
  font-weight: 600;
71
71
  font-style: italic;
@@ -75,7 +75,7 @@ endregion */
75
75
  @font-face {
76
76
  font-family: open-sans;
77
77
  /* stylelint-disable property-no-unknown */
78
- font-path: 'font/open-sans/bold/open-sans-bold';
78
+ font-path: "font/open-sans/bold/open-sans-bold";
79
79
  /* stylelint-enable property-no-unknown */
80
80
  font-weight: bold;
81
81
  font-style: normal;
@@ -85,7 +85,7 @@ endregion */
85
85
  @font-face {
86
86
  font-family: open-sans;
87
87
  /* stylelint-disable property-no-unknown */
88
- font-path: 'font/open-sans/bold-italic/open-sans-bold-italic';
88
+ font-path: "font/open-sans/bold-italic/open-sans-bold-italic";
89
89
  /* stylelint-enable property-no-unknown */
90
90
  font-weight: bold;
91
91
  font-style: italic;
@@ -95,7 +95,7 @@ endregion */
95
95
  @font-face {
96
96
  font-family: open-sans;
97
97
  /* stylelint-disable property-no-unknown */
98
- font-path: 'font/open-sans/extra-bold/open-sans-extra-bold';
98
+ font-path: "font/open-sans/extra-bold/open-sans-extra-bold";
99
99
  /* stylelint-enable property-no-unknown */
100
100
  font-weight: 800;
101
101
  font-style: normal;
@@ -105,7 +105,7 @@ endregion */
105
105
  @font-face {
106
106
  font-family: open-sans;
107
107
  /* stylelint-disable property-no-unknown */
108
- font-path: 'font/open-sans/extra-bold-italic/open-sans-extra-bold-italic';
108
+ font-path: "font/open-sans/extra-bold-italic/open-sans-extra-bold-italic";
109
109
  /* stylelint-enable property-no-unknown */
110
110
  font-weight: 800;
111
111
  font-style: italic;
@@ -117,7 +117,7 @@ endregion */
117
117
  @font-face {
118
118
  font-family: open-sans-condensed;
119
119
  /* stylelint-disable property-no-unknown */
120
- font-path: 'font/open-sans-condensed/condensed-bold/open-sans-condensed-bold';
120
+ font-path: "font/open-sans-condensed/condensed-bold/open-sans-condensed-bold";
121
121
  /* stylelint-enable property-no-unknown */
122
122
  font-weight: bold;
123
123
  font-style: normal;
@@ -127,7 +127,7 @@ endregion */
127
127
  @font-face {
128
128
  font-family: open-sans-condensed;
129
129
  /* stylelint-disable property-no-unknown */
130
- font-path: 'font/open-sans-condensed/condensed-light/open-sans-condensed-light';
130
+ font-path: "font/open-sans-condensed/condensed-light/open-sans-condensed-light";
131
131
  /* stylelint-enable property-no-unknown */
132
132
  font-weight: 300;
133
133
  font-style: normal;
@@ -137,7 +137,7 @@ endregion */
137
137
  @font-face {
138
138
  font-family: open-sans-condensed;
139
139
  /* stylelint-disable property-no-unknown */
140
- font-path: 'font/open-sans-condensed/condensed-light-italic/open-sans-condensed-light-italic';
140
+ font-path: "font/open-sans-condensed/condensed-light-italic/open-sans-condensed-light-italic";
141
141
  /* stylelint-enable property-no-unknown */
142
142
  font-weight: 300;
143
143
  font-style: italic;
@@ -146,17 +146,17 @@ endregion */
146
146
  /** endregion */
147
147
  /** region glyphicons halflings */
148
148
  @font-face {
149
- font-family: 'Glyphicons Halflings';
149
+ font-family: "Glyphicons Halflings";
150
150
  /* stylelint-disable property-no-unknown */
151
- font-path: 'font/glyphicons-halflings/glyphicons-halflings-regular';
151
+ font-path: "font/glyphicons-halflings/glyphicons-halflings-regular";
152
152
  /* stylelint-enable property-no-unknown */
153
153
  }
154
154
  /** endregion */
155
155
  /** region glyphicons social regular */
156
156
  @font-face {
157
- font-family: 'Glyphicons Social Regular';
157
+ font-family: "Glyphicons Social Regular";
158
158
  /* stylelint-disable property-no-unknown */
159
- font-path: 'font/glyphicons-halflings/glyphicons-halflings-social-regular';
159
+ font-path: "font/glyphicons-halflings/glyphicons-halflings-social-regular";
160
160
  /* stylelint-enable property-no-unknown */
161
161
  }
162
162
  /** endregion */
@@ -196,8 +196,8 @@ endregion */
196
196
  --border-color: #ccc;
197
197
  /** endregion */
198
198
  /** region font */
199
- --font-family: 'Open Sans', open-sans, sans-serif;
200
- --font-family-condensed: 'Open Sans Condensed', open-sans-condensed, sans-serif;
199
+ --font-family: "Open Sans", open-sans, sans-serif;
200
+ --font-family-condensed: "Open Sans Condensed", open-sans-condensed, sans-serif;
201
201
  /** endregion */
202
202
  /* endregion */
203
203
  /* stylelint-disable at-rule-no-unknown */
@@ -280,7 +280,7 @@ endregion */
280
280
  color: #1d1d1b;
281
281
  */
282
282
  display: inline-block;
283
- font: 24px/1em 'Glyphicons Social Regular', sans-serif;
283
+ font: 24px/1em "Glyphicons Social Regular", sans-serif;
284
284
  font-style: normal;
285
285
  font-weight: normal;
286
286
  left: 0;
@@ -364,10 +364,6 @@ endregion */
364
364
  position: initial !important;
365
365
  padding-left: 7px !important;
366
366
  padding-right: 25px !important;
367
- /* hide default down arrow in webkit */
368
- -webkit-appearance: none;
369
- /* hide arrow in firefox */
370
- @-moz-document url-prefix() { -moz-appearance: none; }
371
367
  /* hide default down arrow in IE10 */
372
368
  &::-ms-expand { display: none; }
373
369
  }
@@ -459,7 +455,6 @@ endregion */
459
455
  opacity: 1;
460
456
  }
461
457
  }
462
-
463
458
  @keyframes spinner-line-fade-quick {
464
459
  0%,
465
460
  39%,
@@ -471,7 +466,6 @@ endregion */
471
466
  opacity: 1;
472
467
  }
473
468
  }
474
-
475
469
  @keyframes spinner-line-fade-default {
476
470
  0%,
477
471
  100% {
package/index.d.ts ADDED
@@ -0,0 +1,269 @@
1
+ import Tools from 'clientnode';
2
+ import { RecursivePartial, $DomNodes } from 'clientnode/type';
3
+ import Internationalisation from 'internationalisation';
4
+ import { Spinner } from 'spin.js';
5
+ import { DefaultOptions, Options, TrackingItem } from './type';
6
+ /**
7
+ * This plugin holds all needed methods to extend a whole website.
8
+ * @property static:_defaultOptions - Options extended by the options given to
9
+ * the initializer method.
10
+ * @property static:_defaultOptions.activateLanguageSupport - Indicates whether
11
+ * language support should be used or not.
12
+ * @property static:_defaultOptions.additionalPageLoadingTimeInMilliseconds -
13
+ * Additional time to wait until page will be indicated as loaded.
14
+ * @property static:_defaultOptions.domNodes - Mapping of dom node descriptions
15
+ * to their corresponding selectors.
16
+ * @property static:_defaultOptions.domNodes.mediaQueryIndicator - Selector for
17
+ * indicator dom node to use to trigger current media query mode.
18
+ * @property static:_defaultOptions.domNodes.top - Selector to indicate that
19
+ * viewport is currently on top.
20
+ * @property static:_defaultOptions.domNodes.scrollToTopButton - Selector for
21
+ * starting an animated scroll to top.
22
+ * @property static:_defaultOptions.domNodes.startUpAnimationClassPrefix -
23
+ * Class name selector prefix for all dom nodes to appear during start up
24
+ * animations.
25
+ * @property static:_defaultOptions.domNodes.windowLoadingCover - Selector to
26
+ * the full window loading cover dom node.
27
+ * @property static:_defaultOptions.domNodes.windowLoadingSpinner - Selector to
28
+ * the window loading spinner (on top of the window loading cover).
29
+ * @property static:_defaultOptions.domNodeSelectorPrefix - Selector prefix for
30
+ * all nodes to take into account.
31
+ * @property static:_defaultOptions.initialSectionName - Pre-selected section
32
+ * name.
33
+ * @property static:_defaultOptions.knownScrollEventNames - Saves all known
34
+ * scroll events in a space separated string.
35
+ * @property static:_defaultOptions.language - Options for client side
36
+ * internationalisation handler.
37
+ * @property static:_defaultOptions.mediaQueryClassNameIndicator - Mapping of
38
+ * media query class indicator names to internal event names.
39
+ * @property static:_defaultOptions.onChangeMediaQueryMode - Callback to
40
+ * trigger if media query mode changes.
41
+ * @property static:_defaultOptions.onChangeToExtraSmallMode - Callback to
42
+ * trigger if media query mode changes to extra small mode.
43
+ * @property static:_defaultOptions.onChangeToLargeMode - Callback to trigger
44
+ * if media query mode changes to large mode.
45
+ * @property static:_defaultOptions.onChangeToMediumMode - Callback to trigger
46
+ * if media query mode changes to medium mode.
47
+ * @property static:_defaultOptions.onChangeToSmallMode - Callback to trigger
48
+ * if media query mode changes to small mode.
49
+ * @property static:_defaultOptions.onStartUpAnimationComplete - Callback to
50
+ * trigger if all start up animations has finished.
51
+ * @property static:_defaultOptions.onSwitchSection - Callback to trigger if
52
+ * current section switches.
53
+ * @property static:_defaultOptions.onViewportMovesAwayFromTop - Callback to
54
+ * trigger when viewport moves away from top.
55
+ * @property static:_defaultOptions.onViewportMovesToTop - Callback to trigger
56
+ * when viewport arrives at top.
57
+ * @property static:_defaultOptions.scrollToTop - Options for automated scroll
58
+ * top animation.
59
+ * @property static:_defaultOptions.scrollToTop.button - To top scroll button
60
+ * behavior configuration.
61
+ * @property static:_defaultOptions.scrollToTop.button.hideAnimationOptions -
62
+ * Configures hide animation.
63
+ * @property static:_defaultOptions.scrollToTop.button.showAnimationOptions -
64
+ * Configures show animation.
65
+ * @property static:_defaultOptions.scrollToTop.options - Scrolling animation
66
+ * options.
67
+ * @property static:_defaultOptions.startUpAnimationElementDelayInMiliseconds -
68
+ * Delay between two startup animated dom nodes in order.
69
+ * @property static:_defaultOptions.startUpHide - Options for initially hiding
70
+ * dom nodes showing on startup later.
71
+ * @property static:_defaultOptions.startUpShowAnimation - Options for startup
72
+ * show in animation.
73
+ * @property static:_defaultOptions.switchToManualScrollingIndicator -
74
+ * Indicator function to stop currently running scroll animations to let the
75
+ * user get control of current scrolling behavior. Given callback gets an event
76
+ * object. If the function returns "true" current animated scrolls will be
77
+ * stopped.
78
+ * @property static:_defaultOptions.tracking - Tracking configuration to
79
+ * collect user's behavior data.
80
+ * @property static:_defaultOptions.tracking.buttonClick - Function to call on
81
+ * button click events.
82
+ * @property static:_defaultOptions.tracking.linkClick - Function to call on
83
+ * link click events.
84
+ * @property static:_defaultOptions.tracking.sectionSwitch - Function to call
85
+ * on section switches.
86
+ * @property static:_defaultOptions.tracking.track - Tracker call itself.
87
+ * @property static:_defaultOptions.windowLoadingCoverHideAnimation - Options
88
+ * for startup loading cover hide animation.
89
+ * @property static:_defaultOptions.windowLoadingSpinner - Options for the
90
+ * window loading cover spinner.
91
+ * @property static:_defaultOptions.windowLoadedTimeoutAfterDocLoadedInMSec -
92
+ * Duration after loading cover should be removed.
93
+ *
94
+ * @property options - Finally configured given options.
95
+ *
96
+ * @property $domNodes - Saves a set of references to all needed dom nodes.
97
+ *
98
+ * @property currentMediaQueryMode - Saves current media query status depending
99
+ * on available space in current browser window.
100
+ * @property currentSectionName - Saves current section hash name.
101
+ *
102
+ * @property languageHandler - Reference to the language switcher instance.
103
+ *
104
+ * @property startUpAnimationIsComplete - Indicates whether start up animations
105
+ * has finished.
106
+ * @property viewportIsOnTop - Indicates whether current viewport is on top.
107
+ * @property windowLoaded - Indicates whether window is already loaded.
108
+ *
109
+ * @property windowLoadingSpinner - The window loading spinner instance.
110
+ */
111
+ export declare class WebsiteUtilities extends Tools {
112
+ static _defaultOptions: DefaultOptions;
113
+ options: Options;
114
+ $domNodes: $DomNodes;
115
+ currentMediaQueryMode: string;
116
+ currentSectionName: string;
117
+ languageHandler: Internationalisation | null;
118
+ startUpAnimationIsComplete: boolean;
119
+ viewportIsOnTop: boolean;
120
+ windowLoaded: boolean;
121
+ windowLoadingSpinner: null | Spinner;
122
+ /**
123
+ * Initializes the interactive web application.
124
+ * @param options - An options object.
125
+ *
126
+ * @returns Returns a promise containing the current instance.
127
+ */
128
+ initialize<R = Promise<WebsiteUtilities>>(options?: RecursivePartial<Options>): R;
129
+ /**
130
+ * Scrolls to top of page. Runs the given function after viewport arrives.
131
+ * @returns Returns the current instance.
132
+ */
133
+ scrollToTop(): WebsiteUtilities;
134
+ /**
135
+ * This method disables scrolling on the given web view.
136
+ * @returns Returns the current instance.
137
+ */
138
+ disableScrolling(): WebsiteUtilities;
139
+ /**
140
+ * This method disables scrolling on the given web view.
141
+ * @returns Returns the current instance.
142
+ */
143
+ enableScrolling(): WebsiteUtilities;
144
+ /**
145
+ * Triggers an analytics event. All given arguments are forwarded to
146
+ * configured analytics event code to defined their environment variables.
147
+ * @param properties - Event tracking informations.
148
+ *
149
+ * @returns Returns the current instance.
150
+ */
151
+ track(properties: Omit<TrackingItem, 'context' | 'value'> & {
152
+ context?: string;
153
+ value?: number;
154
+ }): WebsiteUtilities;
155
+ /**
156
+ * This method triggers if the viewport moves to top.
157
+ * @returns Nothing.
158
+ */
159
+ _onViewportMovesToTop: (..._parameters: unknown[]) => Promise<unknown>;
160
+ /**
161
+ * This method triggers if the viewport moves away from top.
162
+ * @returns Nothing.
163
+ */
164
+ _onViewportMovesAwayFromTop: (..._parameters: unknown[]) => Promise<unknown>;
165
+ /**
166
+ * This method triggers if the responsive design switches to another mode.
167
+ * @param _oldMode - Saves the previous mode.
168
+ * @param _newMode - Saves the new mode.
169
+ *
170
+ * @returns Nothing.
171
+ */
172
+ _onChangeMediaQueryMode(_oldMode: string, _newMode: string): void;
173
+ /**
174
+ * This method triggers if the responsive design switches to large mode.
175
+ * @param _oldMode - Saves the previous mode.
176
+ * @param _newMode - Saves the new mode.
177
+ *
178
+ * @returns Nothing.
179
+ */
180
+ _onChangeToLargeMode(_oldMode: string, _newMode: string): void;
181
+ /**
182
+ * This method triggers if the responsive design switches to medium mode.
183
+ * @param _oldMode - Saves the previous mode.
184
+ * @param _newMode - Saves the new mode.
185
+ *
186
+ * @returns Nothing.
187
+ */
188
+ _onChangeToMediumMode(_oldMode: string, _newMode: string): void;
189
+ /**
190
+ * This method triggers if the responsive design switches to small mode.
191
+ * @param _oldMode - Saves the previous mode.
192
+ * @param _newMode - Saves the new mode.
193
+ *
194
+ * @returns Nothing.
195
+ */
196
+ _onChangeToSmallMode(_oldMode: string, _newMode: string): void;
197
+ /**
198
+ * This method triggers if the responsive design switches to extra small
199
+ * mode.
200
+ * @param _oldMode - Saves the previous mode.
201
+ * @param _newMode - Saves the new mode.
202
+ *
203
+ * @returns Nothing.
204
+ */
205
+ _onChangeToExtraSmallMode(_oldMode: string, _newMode: string): void;
206
+ /**
207
+ * This method triggers if we change the current section.
208
+ * @param sectionName - Contains the new section name.
209
+ *
210
+ * @returns Nothing.
211
+ */
212
+ _onSwitchSection(sectionName: string): void;
213
+ /**
214
+ * This method is complete if last startup animation was initialized.
215
+ * @returns Nothing.
216
+ */
217
+ _onStartUpAnimationComplete(): void;
218
+ /**
219
+ * This method adds triggers for responsive design switches.
220
+ * @returns Nothing.
221
+ */
222
+ _bindMediaQueryChangeEvents(): void;
223
+ /**
224
+ * This method triggers if the responsive design switches its mode.
225
+ * @param parameters - All arguments will be appended to the event handler
226
+ * callbacks.
227
+ *
228
+ * @returns Nothing.
229
+ */
230
+ _triggerWindowResizeEvents(...parameters: Array<unknown>): void;
231
+ /**
232
+ * This method triggers if view port arrives at special areas.
233
+ * @param parameters - All arguments will be appended to the event handler
234
+ * callbacks.
235
+ *
236
+ * @returns Nothing.
237
+ */
238
+ _bindScrollEvents(...parameters: Array<unknown>): void;
239
+ /**
240
+ * This method triggers after window is loaded.
241
+ * @returns Promise resolving to nothing when loading cover has been
242
+ * removed.
243
+ */
244
+ _removeLoadingCover(): Promise<void>;
245
+ /**
246
+ * This method handles the given start up effect step.
247
+ * @param elementNumber - The current start up step.
248
+ *
249
+ * @returns Promise resolving to nothing when start up effects have been
250
+ * finished.
251
+ */
252
+ _performStartUpEffects(elementNumber?: number): Promise<void>;
253
+ /**
254
+ * This method adds triggers to switch section.
255
+ * @returns Nothing.
256
+ */
257
+ _bindNavigationEvents(): void;
258
+ /**
259
+ * Adds trigger to scroll top buttons.
260
+ * @returns Nothing.
261
+ */
262
+ _bindScrollToTopButton(): void;
263
+ /**
264
+ * Executes the page tracking code.
265
+ * @returns Nothing.
266
+ */
267
+ _bindClickTracking(): void;
268
+ }
269
+ export default WebsiteUtilities;
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';if(typeof module!=='undefined'&&module!==null&&eval('typeof require')!=='undefined'&&eval('require')!==null&&'main'in eval('require')&&eval('typeof require.main')!=='undefined'&&eval('require.main')!==null){var ORIGINAL_MAIN_MODULE=module;if(module!==eval('require.main')&&'paths'in module&&'paths'in eval('require.main')&&typeof __dirname!=='undefined'&&__dirname!==null)module.paths=eval('require.main.paths').concat(module.paths.filter(function(path){return eval('require.main.paths').includes(path)}))};if(typeof window==='undefined'||window===null)var window=(typeof global==='undefined'||global===null)?{}:global;!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/extends"),require("@babel/runtime/helpers/inheritsLoose"),require("@babel/runtime/regenerator"),require("clientnode"));else if("function"==typeof define&&define.amd)define(["@babel/runtime/helpers/asyncToGenerator","@babel/runtime/helpers/extends","@babel/runtime/helpers/inheritsLoose","@babel/runtime/regenerator","clientnode"],e);else{var o="object"==typeof exports?e(require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/extends"),require("@babel/runtime/helpers/inheritsLoose"),require("@babel/runtime/regenerator"),require("clientnode")):e(t["@babel/runtime/helpers/asyncToGenerator"],t["@babel/runtime/helpers/extends"],t["@babel/runtime/helpers/inheritsLoose"],t["@babel/runtime/regenerator"],t.clientnode);for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(this,(function(t,e,o,n,i){return function(){"use strict";var r=[,function(t){t.exports=e},function(e){e.exports=t},function(t){t.exports=o},function(t){t.exports=n},function(t){t.exports=i}],s={};function a(t){var e=s[t];if(void 0!==e)return e.exports;var o=s[t]={exports:{}};return r[t](o,o.exports,a),o.exports}a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,{a:e}),e},a.d=function(t,e){for(var o in e)a.o(e,o)&&!a.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var l={};return function(){a.r(l),a.d(l,{WebsiteUtilities:function(){return T},default:function(){return x}});var t=a(1),e=a.n(t),o=a(2),n=a.n(o),i=a(3),r=a.n(i),s=a(4),c=a.n(s),d=a(5),p=a.n(d),u=function(){return u=Object.assign||function(t){for(var e,o=1,n=arguments.length;o<n;o++)for(var i in e=arguments[o])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},u.apply(this,arguments)},h={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",fadeColor:"transparent",animation:"spinner-line-fade-default",rotate:0,direction:1,speed:1,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:"0 0 1px transparent",position:"absolute"},m=function(){function t(t){void 0===t&&(t={}),this.opts=u(u({},h),t)}return t.prototype.spin=function(t){return this.stop(),this.el=document.createElement("div"),this.el.className=this.opts.className,this.el.setAttribute("role","progressbar"),f(this.el,{position:this.opts.position,width:0,zIndex:this.opts.zIndex,left:this.opts.left,top:this.opts.top,transform:"scale("+this.opts.scale+")"}),t&&t.insertBefore(this.el,t.firstChild||null),function(t,e){var o=Math.round(e.corners*e.width*500)/1e3+"px",n="none";!0===e.shadow?n="0 2px 4px #000":"string"==typeof e.shadow&&(n=e.shadow);for(var i=function(t){for(var e=[],o=0,n=t.split(",");o<n.length;o++){var i=n[o].match(/^\s*([a-zA-Z]+\s+)?(-?\d+(\.\d+)?)([a-zA-Z]*)\s+(-?\d+(\.\d+)?)([a-zA-Z]*)(.*)$/);if(null!==i){var r=+i[2],s=+i[5],a=i[4],l=i[7];0!=r||a||(a=l),0!==s||l||(l=a),a===l&&e.push({prefix:i[1]||"",x:r,y:s,xUnits:a,yUnits:l,end:i[8]})}}return e}(n),r=0;r<e.lines;r++){var s=~~(360/e.lines*r+e.rotate),a=f(document.createElement("div"),{position:"absolute",top:-e.width/2+"px",width:e.length+e.width+"px",height:e.width+"px",background:w(e.fadeColor,r),borderRadius:o,transformOrigin:"left",transform:"rotate("+s+"deg) translateX("+e.radius+"px)"}),l=r*e.direction/e.lines/e.speed;l-=1/e.speed;var c=f(document.createElement("div"),{width:"100%",height:"100%",background:w(e.color,r),borderRadius:o,boxShadow:g(i,s),animation:1/e.speed+"s linear "+l+"s infinite "+e.animation});a.appendChild(c),t.appendChild(a)}}(this.el,this.opts),this},t.prototype.stop=function(){return this.el&&("undefined"==typeof requestAnimationFrame?clearTimeout(this.animateId):cancelAnimationFrame(this.animateId),this.el.parentNode&&this.el.parentNode.removeChild(this.el),this.el=void 0),this},t}();function f(t,e){for(var o in e)t.style[o]=e[o];return t}function w(t,e){return"string"==typeof t?t:t[e%t.length]}function g(t,e){for(var o=[],n=0,i=t;n<i.length;n++){var r=i[n],s=v(r.x,r.y,e);o.push(r.prefix+s[0]+r.xUnits+" "+s[1]+r.yUnits+r.end)}return o.join(", ")}function v(t,e,o){var n=Math.round,i=o*Math.PI/180,r=Math.sin(i),s=Math.cos(i);return[n(1e3*(t*s+e*r))/1e3,n(1e3*(-t*r+e*s))/1e3]}function b(t,e){var o="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(o)return(o=o.call(t)).next.bind(o);if(Array.isArray(t)||(o=function(t,e){if(t){if("string"==typeof t)return y(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?y(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){o&&(t=o);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,n=Array(e);o<e;o++)n[o]=t[o];return n}var T=function(t){function o(){for(var e,o=arguments.length,n=Array(o),i=0;i<o;i++)n[i]=arguments[i];return(e=t.call.apply(t,[this].concat(n))||this).options=null,e.$domNodes=null,e.currentMediaQueryMode="",e.currentSectionName="home",e.languageHandler=null,e.startUpAnimationIsComplete=!1,e.viewportIsOnTop=!1,e.windowLoaded=!1,e.windowLoadingSpinner=null,e._onViewportMovesToTop=function(){"hidden"===e.$domNodes.scrollToTopButton.css("visibility")?e.$domNodes.scrollToTopButton.css("opacity",0):(e.options.scrollToTop.button.hideAnimationOptions.always=function(){return e.$domNodes.scrollToTopButton.css({bottom:"-="+e.options.scrollToTop.button.slideDistanceInPixel,display:"none"})},e.$domNodes.scrollToTopButton.finish().animate({bottom:"+="+e.options.scrollToTop.button.slideDistanceInPixel,opacity:0},e.options.scrollToTop.button.hideAnimationOptions))},e._onViewportMovesAwayFromTop=function(){"hidden"===e.$domNodes.scrollToTopButton.css("visibility")?e.$domNodes.scrollToTopButton.css("opacity",1):e.$domNodes.scrollToTopButton.finish().css({bottom:"+="+e.options.scrollToTop.button.slideDistanceInPixel,display:"block",opacity:0}).animate({bottom:"-="+e.options.scrollToTop.button.slideDistanceInPixel,queue:!1,opacity:1},e.options.scrollToTop.button.showAnimationOptions)},e}r()(o,t);var i=o.prototype;return i.initialize=function(e){var i,r=this;return void 0===e&&(e={}),t.prototype.initialize.call(this,p().extend(!0,{},o._defaultOptions,e)),this.options.initialSectionName?this.currentSectionName=this.options.initialSectionName:null!=(i=d.globalContext.window.location)&&i.hash&&(this.currentSectionName=d.globalContext.location.hash.substring(1)),this._onViewportMovesAwayFromTop=p().debounce(this._onViewportMovesAwayFromTop),this._onViewportMovesToTop=p().debounce(this._onViewportMovesToTop),this.$domNodes=this.grabDomNodes(this.options.domNodes),this.disableScrolling(),new Promise(n()(c().mark((function t(e){var o;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r.$domNodes.windowLoadingSpinner.length&&(r.windowLoadingSpinner=new m(r.options.windowLoadingSpinner),r.windowLoadingSpinner.spin(r.$domNodes.windowLoadingSpinner[0])),r._bindScrollEvents(),r.$domNodes.parent.show(),o=function(){var t=n()(c().mark((function t(){return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r.windowLoaded){t.next=6;break}return r.windowLoaded=!0,t.next=4,r._removeLoadingCover();case 4:r._performStartUpEffects(),e(r);case 6:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),(0,d.$)((function(){return p().timeout(o,r.options.windowLoadedTimeoutAfterDocumentLoadedInMilliseconds)})),r.on(r.$domNodes.window,"load",o),r._bindClickTracking(),r.options.language.logging||(r.options.language.logging=r.options.logging),!r.options.activateLanguageSupport||r.languageHandler){t.next=12;break}return t.next=11,(0,d.$)(r.$domNodes.parent).Internationalisation(r.options.language);case 11:r.languageHandler=t.sent.data(r.options.name);case 12:r._bindNavigationEvents(),r._bindMediaQueryChangeEvents(),r._triggerWindowResizeEvents();case 15:case"end":return t.stop()}}),t)}))))},i.scrollToTop=function(){return d.globalContext.document&&this.$domNodes.window.stop().animate({scrollTop:0},this.options.scrollToTop.options),this},i.disableScrolling=function(){return this.$domNodes.parent.addClass("disable-scrolling").on("touchmove",(function(t){return t.preventDefault()})),this},i.enableScrolling=function(){return this.$domNodes.parent.removeClass(["disable-scrolling","touchmove"]),this.off(this.$domNodes.parent),this},i.track=function(t){if(d.globalContext.window.location&&this.options.tracking){var o=e()({context:d.globalContext.window.location.pathname+"#"+this.currentSectionName},t);(isNaN(o.value)||"number"!=typeof o.value)&&(o.value=1),this.debug('Run tracking code: "event" with arguments:'),this.debug(o);try{this.options.tracking.track(o)}catch(t){this.warn('Problem in tracking "'+p().represent(o)+'": '+p().represent(t))}}return this},i._onChangeMediaQueryMode=function(){},i._onChangeToLargeMode=function(){},i._onChangeToMediumMode=function(){},i._onChangeToSmallMode=function(){},i._onChangeToExtraSmallMode=function(){},i._onSwitchSection=function(t){var e;if(d.globalContext.window.location&&null!=(e=this.options.tracking)&&e.sectionSwitch&&this.currentSectionName!==t){this.currentSectionName=t,this.debug('Run section switch tracking on section "'+this.currentSectionName+'".');try{this.options.tracking.sectionSwitch.call(this,this.currentSectionName)}catch(t){this.warn('Problem due to track section switch to "'+this.currentSectionName+'": '+p().represent(t))}}},i._onStartUpAnimationComplete=function(){this.startUpAnimationIsComplete=!0},i._bindMediaQueryChangeEvents=function(){this.on(this.$domNodes.window,"resize",this._triggerWindowResizeEvents.bind(this))},i._triggerWindowResizeEvents=function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];for(var n,i,r=b(this.options.mediaQueryClassNameIndicator);!(n=r()).done;)i=n.value,this.$domNodes.mediaQueryIndicator.prependTo(this.$domNodes.parent).addClass("hidden-"+i[1]),this.$domNodes.mediaQueryIndicator.is(":hidden")&&i[0]!==this.currentMediaQueryMode&&(this.fireEvent.apply(this,["changeMediaQueryMode",!1,this,this.currentMediaQueryMode,i[0]].concat(e)),this.fireEvent.apply(this,["changeTo"+p().stringCapitalize(i[0])+"Mode",!1,this,this.currentMediaQueryMode,i[0]].concat(e)),this.currentMediaQueryMode=i[0]),this.$domNodes.mediaQueryIndicator.removeClass("hidden-"+i[1])},i._bindScrollEvents=function(){for(var t=this,e=arguments.length,o=Array(e),n=0;n<e;n++)o[n]=arguments[n];var i=(0,d.$)("body, html").add(this.$domNodes.window);i.on(this.options.knownScrollEventNames.join(" "),(function(e){t.options.switchToManualScrollingIndicator(e)&&i.stop(!0)})),this.on(this.$domNodes.window,"scroll",(function(){t.$domNodes.window.scrollTop()?t.viewportIsOnTop&&(t.viewportIsOnTop=!1,t.fireEvent.apply(t,["viewportMovesAwayFromTop",!1,t].concat(o))):!t.viewportIsOnTop&&(t.viewportIsOnTop=!0,t.fireEvent.apply(t,["viewportMovesToTop",!1,t].concat(o)))})),this.$domNodes.window.scrollTop()?(this.viewportIsOnTop=!1,this.fireEvent.apply(this,["viewportMovesAwayFromTop",!1,this].concat(o))):(this.viewportIsOnTop=!0,this.fireEvent.apply(this,["viewportMovesToTop",!1,this].concat(o)))},i._removeLoadingCover=function(){var t=n()(c().mark((function t(){var e=this;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p().timeout(this.options.additionalPageLoadingTimeInMilliseconds);case 2:return(0,d.$)(p().stringFormat('[class^="{1}"], [class*=" {1}"]',this.sliceDomNodeSelectorPrefix(this.options.domNodes.startUpAnimationClassPrefix).substr(1))).css(this.options.startUpHide),t.next=5,new Promise((function(t){e.$domNodes.windowLoadingCover.length?(e.enableScrolling(),e.$domNodes.windowLoadingCover.animate(e.options.windowLoadingCoverHideAnimation,{always:t})):t()}));case 5:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),i._performStartUpEffects=function(){var t=n()(c().mark((function t(e){var o,n=this;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=1),this.$domNodes.windowLoadingCover.hide(),this.windowLoadingSpinner&&this.windowLoadingSpinner.stop(),!(0,d.$)(p().stringFormat('[class^="{1}"], [class*=" {1}"]',this.sliceDomNodeSelectorPrefix(this.options.domNodes.startUpAnimationClassPrefix).substr(1))).length){t.next=17;break}return t.next=6,p().timeout(this.options.startUpAnimationElementDelayInMiliseconds);case 6:if(o=!1,(0,d.$)(this.options.domNodes.startUpAnimationClassPrefix+e).animate(this.options.startUpShowAnimation,{always:function(){o&&n.fireEvent("startUpAnimationComplete")}}),!(0,d.$)(this.options.domNodes.startUpAnimationClassPrefix+e+1).length){t.next=14;break}return t.next=12,this._performStartUpEffects(e+1);case 12:t.next=15;break;case 14:o=!0;case 15:t.next=18;break;case 17:this.fireEvent("startUpAnimationComplete");case 18:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),i._bindNavigationEvents=function(){var t=this;d.globalContext.window.addEventListener("hashchange",(function(){t.startUpAnimationIsComplete&&t.fireEvent("switchSection",!1,t,location.hash.substring(1))}),!1),this._bindScrollToTopButton()},i._bindScrollToTopButton=function(){var t=this;this.on(this.$domNodes.scrollToTopButton,"click",(function(e){e.preventDefault(),t.scrollToTop()}))},i._bindClickTracking=function(){var t=this;this.options.tracking&&(this.options.tracking.linkClick&&this.on(this.$domNodes.parent.find("a"),"click",(function(e){return t.options.tracking.linkClick.call(t,(0,d.$)(e.target),e)})),this.options.tracking.buttonClick&&this.on(this.$domNodes.parent.find("button"),"click",(function(e){return t.options.tracking.buttonClick.call(t,(0,d.$)(e.target),e)})))},o}(p());T._defaultOptions={activateLanguageSupport:!0,additionalPageLoadingTimeInMilliseconds:0,domain:"auto",domNodes:{mediaQueryIndicator:'<div class="media-query-indicator">',scrollToTopButton:'a[href="#top"]',startUpAnimationClassPrefix:".website-start-up-animation-number-",top:"header",windowLoadingCover:".website-utilities-window-loading-cover",windowLoadingSpinner:".website-utilities-window-loading-cover > div"},domNodeSelectorPrefix:"body.{1}",initialSectionName:"home",knownScrollEventNames:["DOMMouseScroll","keyup","mousedown","mousewheel","scroll","touchmove","wheel"],language:{},mediaQueryClassNameIndicator:[["extraSmall","xs"],["small","sm"],["medium","md"],["large","lg"]],name:"WebsiteUtilities",onChangeMediaQueryMode:p().noop,onChangeToExtraSmallMode:p().noop,onChangeToLargeMode:p().noop,onChangeToMediumMode:p().noop,onChangeToSmallMode:p().noop,onViewportMovesAwayFromTop:p().noop,onViewportMovesToTop:p().noop,onSwitchSection:p().noop,onStartUpAnimationComplete:p().noop,scrollToTop:{button:{hideAnimationOptions:{},showAnimationOptions:{},slideDistanceInPixel:30},options:{duration:"fast"}},startUpAnimationElementDelayInMiliseconds:100,startUpHide:{opacity:0},startUpShowAnimation:{opacity:1},switchToManualScrollingIndicator:function(t){return"number"==typeof t.which&&0<t.which||"mousedown"===t.type||"mousewheel"===t.type||"touchmove"===t.type},tracking:{buttonClick:function(t){this.track({event:"buttonClick",eventType:"click",label:t.text(),reference:t.attr("action")||t.attr("target")||t.attr("type")||t.text(),subject:"button",value:parseInt(t.attr("website-analytics-value")),userInteraction:!0})},linkClick:function(t){this.track({event:"linkClick",eventType:"click",label:t.text(),reference:t.attr("href")||t.attr("action")||t.attr("target")||t.attr("type")||t.text(),subject:"link",value:parseInt(t.attr("website-analytics-value")),userInteraction:!0})},sectionSwitch:function(t){this.track({event:"sectionSwitch",eventType:"sectionSwitch",label:t,reference:d.globalContext.window.location.pathname+"#"+t,subject:"url",userInteraction:!1})},track:function(t){var e;null==(e=d.globalContext.dataLayer)||e.push(t)}},windowLoadingCoverHideAnimation:{opacity:0},windowLoadingSpinner:{animation:"spinner-line-fade-quick",className:"spinner",color:"#000",corners:1,direction:1,fadeColor:"transparent",left:"auto",length:23,lines:9,position:"absolute",radius:40,rotate:0,scale:1,shadow:!1,speed:1.1,top:"auto",width:11,zIndex:2e9},windowLoadedTimeoutAfterDocumentLoadedInMilliseconds:2e3};var x=T;d.$.WebsiteUtilities=function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return p().controller(T,e)},d.$.WebsiteUtilities.class=T}(),l}()}));
1
+ 'use strict';if(typeof module!=='undefined'&&module!==null&&eval('typeof require')!=='undefined'&&eval('require')!==null&&'main'in eval('require')&&eval('typeof require.main')!=='undefined'&&eval('require.main')!==null){var ORIGINAL_MAIN_MODULE=module;if(module!==eval('require.main')&&'paths'in module&&'paths'in eval('require.main')&&typeof __dirname!=='undefined'&&__dirname!==null)module.paths=eval('require.main.paths').concat(module.paths.filter(function(path){return eval('require.main.paths').includes(path)}))};if(typeof window==='undefined'||window===null)var window=(typeof global==='undefined'||global===null)?{}:global;!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/extends"),require("@babel/runtime/helpers/inheritsLoose"),require("@babel/runtime/regenerator"),require("clientnode"));else if("function"==typeof define&&define.amd)define(["@babel/runtime/helpers/asyncToGenerator","@babel/runtime/helpers/extends","@babel/runtime/helpers/inheritsLoose","@babel/runtime/regenerator","clientnode"],e);else{var o="object"==typeof exports?e(require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/extends"),require("@babel/runtime/helpers/inheritsLoose"),require("@babel/runtime/regenerator"),require("clientnode")):e(t["@babel/runtime/helpers/asyncToGenerator"],t["@babel/runtime/helpers/extends"],t["@babel/runtime/helpers/inheritsLoose"],t["@babel/runtime/regenerator"],t.clientnode);for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(this,(function(t,e,o,n,i){return function(){"use strict";var r=[,function(e){e.exports=t},function(t){t.exports=e},function(t){t.exports=o},function(t){t.exports=n},function(t){t.exports=i}],s={};function a(t){var e=s[t];if(void 0!==e)return e.exports;var o=s[t]={exports:{}};return r[t](o,o.exports,a),o.exports}a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,{a:e}),e},a.d=function(t,e){for(var o in e)a.o(e,o)&&!a.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var l={};return function(){a.r(l),a.d(l,{WebsiteUtilities:function(){return T},default:function(){return x}});var t=a(1),e=a.n(t),o=a(2),n=a.n(o),i=a(3),r=a.n(i),s=a(4),c=a.n(s),d=a(5),p=a.n(d),u=function(){return u=Object.assign||function(t){for(var e,o=1,n=arguments.length;o<n;o++)for(var i in e=arguments[o])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},u.apply(this,arguments)},h={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",fadeColor:"transparent",animation:"spinner-line-fade-default",rotate:0,direction:1,speed:1,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:"0 0 1px transparent",position:"absolute"},m=function(){function t(t){void 0===t&&(t={}),this.opts=u(u({},h),t)}return t.prototype.spin=function(t){return this.stop(),this.el=document.createElement("div"),this.el.className=this.opts.className,this.el.setAttribute("role","progressbar"),f(this.el,{position:this.opts.position,width:0,zIndex:this.opts.zIndex,left:this.opts.left,top:this.opts.top,transform:"scale("+this.opts.scale+")"}),t&&t.insertBefore(this.el,t.firstChild||null),function(t,e){var o=Math.round(e.corners*e.width*500)/1e3+"px",n="none";!0===e.shadow?n="0 2px 4px #000":"string"==typeof e.shadow&&(n=e.shadow);for(var i=function(t){for(var e=[],o=0,n=t.split(",");o<n.length;o++){var i=n[o].match(/^\s*([a-zA-Z]+\s+)?(-?\d+(\.\d+)?)([a-zA-Z]*)\s+(-?\d+(\.\d+)?)([a-zA-Z]*)(.*)$/);if(null!==i){var r=+i[2],s=+i[5],a=i[4],l=i[7];0!=r||a||(a=l),0!==s||l||(l=a),a===l&&e.push({prefix:i[1]||"",x:r,y:s,xUnits:a,yUnits:l,end:i[8]})}}return e}(n),r=0;r<e.lines;r++){var s=~~(360/e.lines*r+e.rotate),a=f(document.createElement("div"),{position:"absolute",top:-e.width/2+"px",width:e.length+e.width+"px",height:e.width+"px",background:g(e.fadeColor,r),borderRadius:o,transformOrigin:"left",transform:"rotate("+s+"deg) translateX("+e.radius+"px)"}),l=r*e.direction/e.lines/e.speed;l-=1/e.speed;var c=f(document.createElement("div"),{width:"100%",height:"100%",background:g(e.color,r),borderRadius:o,boxShadow:w(i,s),animation:1/e.speed+"s linear "+l+"s infinite "+e.animation});a.appendChild(c),t.appendChild(a)}}(this.el,this.opts),this},t.prototype.stop=function(){return this.el&&("undefined"==typeof requestAnimationFrame?clearTimeout(this.animateId):cancelAnimationFrame(this.animateId),this.el.parentNode&&this.el.parentNode.removeChild(this.el),this.el=void 0),this},t}();function f(t,e){for(var o in e)t.style[o]=e[o];return t}function g(t,e){return"string"==typeof t?t:t[e%t.length]}function w(t,e){for(var o=[],n=0,i=t;n<i.length;n++){var r=i[n],s=b(r.x,r.y,e);o.push(r.prefix+s[0]+r.xUnits+" "+s[1]+r.yUnits+r.end)}return o.join(", ")}function b(t,e,o){var n=Math.round,i=o*Math.PI/180,r=Math.sin(i),s=Math.cos(i);return[n(1e3*(t*s+e*r))/1e3,n(1e3*(-t*r+e*s))/1e3]}function v(t,e){var o="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(o)return(o=o.call(t)).next.bind(o);if(Array.isArray(t)||(o=function(t,e){if(t){if("string"==typeof t)return y(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?y(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){o&&(t=o);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,n=Array(e);o<e;o++)n[o]=t[o];return n}var T=function(t){function o(){for(var e,o=arguments.length,n=Array(o),i=0;i<o;i++)n[i]=arguments[i];return(e=t.call.apply(t,[this].concat(n))||this).options=null,e.$domNodes=null,e.currentMediaQueryMode="",e.currentSectionName="home",e.languageHandler=null,e.startUpAnimationIsComplete=!1,e.viewportIsOnTop=!1,e.windowLoaded=!1,e.windowLoadingSpinner=null,e._onViewportMovesToTop=p().debounce((function(){"hidden"===e.$domNodes.scrollToTopButton.css("visibility")?e.$domNodes.scrollToTopButton.css("opacity",0):(e.options.scrollToTop.button.hideAnimationOptions.always=function(){return e.$domNodes.scrollToTopButton.css({bottom:"-="+e.options.scrollToTop.button.slideDistanceInPixel,display:"none"})},e.$domNodes.scrollToTopButton.finish().animate({bottom:"+="+e.options.scrollToTop.button.slideDistanceInPixel,opacity:0},e.options.scrollToTop.button.hideAnimationOptions))})),e._onViewportMovesAwayFromTop=p().debounce((function(){"hidden"===e.$domNodes.scrollToTopButton.css("visibility")?e.$domNodes.scrollToTopButton.css("opacity",1):e.$domNodes.scrollToTopButton.finish().css({bottom:"+="+e.options.scrollToTop.button.slideDistanceInPixel,display:"block",opacity:0}).animate({bottom:"-="+e.options.scrollToTop.button.slideDistanceInPixel,queue:!1,opacity:1},e.options.scrollToTop.button.showAnimationOptions)})),e}r()(o,t);var i=o.prototype;return i.initialize=function(e){var n,i=this;return void 0===e&&(e={}),t.prototype.initialize.call(this,p().extend(!0,{},o._defaultOptions,e)),this.options.initialSectionName?this.currentSectionName=this.options.initialSectionName:null!=(n=d.globalContext.window.location)&&n.hash&&(this.currentSectionName=d.globalContext.location.hash.substring(1)),this.$domNodes=this.grabDomNodes(this.options.domNodes),this.disableScrolling(),new Promise((function(t){i.$domNodes.windowLoadingSpinner.length&&(i.windowLoadingSpinner=new m(i.options.windowLoadingSpinner),i.windowLoadingSpinner.spin(i.$domNodes.windowLoadingSpinner[0])),i._bindScrollEvents(),i.$domNodes.parent.show();var e=function(){i.windowLoaded||(i.windowLoaded=!0,i._removeLoadingCover().then((function(){i._performStartUpEffects(),t(i)})))};(0,d.$)((function(){p().timeout(e,i.options.windowLoadedTimeoutAfterDocLoadedInMSec)})),i.on(i.$domNodes.window,"load",e),i._bindClickTracking(),i.options.language.logging||(i.options.language.logging=i.options.logging),i.options.activateLanguageSupport&&!i.languageHandler&&(0,d.$)(i.$domNodes.parent).Internationalisation(i.options.language).then((function(t){i.languageHandler=t.data(i.options.name)})),i._bindNavigationEvents(),i._bindMediaQueryChangeEvents(),i._triggerWindowResizeEvents()}))},i.scrollToTop=function(){return d.globalContext.document&&this.$domNodes.window.stop().animate({scrollTop:0},this.options.scrollToTop.options),this},i.disableScrolling=function(){return this.$domNodes.parent.addClass("disable-scrolling").on("touchmove",(function(t){return t.preventDefault()})),this},i.enableScrolling=function(){return this.$domNodes.parent.removeClass(["disable-scrolling","touchmove"]),this.off(this.$domNodes.parent),this},i.track=function(t){if(d.globalContext.window.location&&this.options.tracking){var e=n()({context:d.globalContext.window.location.pathname+"#"+this.currentSectionName},t);(isNaN(e.value)||"number"!=typeof e.value)&&(e.value=1),this.debug('Run tracking code: "event" with arguments:'),this.debug(e);try{this.options.tracking.track(e)}catch(t){this.warn('Problem in tracking "'+p().represent(e)+'": '+p().represent(t))}}return this},i._onChangeMediaQueryMode=function(){},i._onChangeToLargeMode=function(){},i._onChangeToMediumMode=function(){},i._onChangeToSmallMode=function(){},i._onChangeToExtraSmallMode=function(){},i._onSwitchSection=function(t){var e;if(d.globalContext.window.location&&null!=(e=this.options.tracking)&&e.sectionSwitch&&this.currentSectionName!==t){this.currentSectionName=t,this.debug('Run section switch tracking on section "'+this.currentSectionName+'".');try{this.options.tracking.sectionSwitch.call(this,this.currentSectionName)}catch(t){this.warn('Problem due to track section switch to "'+this.currentSectionName+'": '+p().represent(t))}}},i._onStartUpAnimationComplete=function(){this.startUpAnimationIsComplete=!0},i._bindMediaQueryChangeEvents=function(){this.on(this.$domNodes.window,"resize",this._triggerWindowResizeEvents.bind(this))},i._triggerWindowResizeEvents=function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];for(var n,i,r=v(this.options.mediaQueryClassNameIndicator);!(n=r()).done;)i=n.value,this.$domNodes.mediaQueryIndicator.prependTo(this.$domNodes.parent).addClass("hidden-"+i[1]),this.$domNodes.mediaQueryIndicator.is(":hidden")&&i[0]!==this.currentMediaQueryMode&&(this.fireEvent.apply(this,["changeMediaQueryMode",!1,this,this.currentMediaQueryMode,i[0]].concat(e)),this.fireEvent.apply(this,["changeTo"+p().stringCapitalize(i[0])+"Mode",!1,this,this.currentMediaQueryMode,i[0]].concat(e)),this.currentMediaQueryMode=i[0]),this.$domNodes.mediaQueryIndicator.removeClass("hidden-"+i[1])},i._bindScrollEvents=function(){for(var t=this,e=arguments.length,o=Array(e),n=0;n<e;n++)o[n]=arguments[n];var i=(0,d.$)("body, html").add(this.$domNodes.window);i.on(this.options.knownScrollEventNames.join(" "),(function(e){t.options.switchToManualScrollingIndicator(e)&&i.stop(!0)})),this.on(this.$domNodes.window,"scroll",(function(){t.$domNodes.window.scrollTop()?t.viewportIsOnTop&&(t.viewportIsOnTop=!1,t.fireEvent.apply(t,["viewportMovesAwayFromTop",!1,t].concat(o))):!t.viewportIsOnTop&&(t.viewportIsOnTop=!0,t.fireEvent.apply(t,["viewportMovesToTop",!1,t].concat(o)))})),this.$domNodes.window.scrollTop()?(this.viewportIsOnTop=!1,this.fireEvent.apply(this,["viewportMovesAwayFromTop",!1,this].concat(o))):(this.viewportIsOnTop=!0,this.fireEvent.apply(this,["viewportMovesToTop",!1,this].concat(o)))},i._removeLoadingCover=function(){var t=e()(c().mark((function t(){var e=this;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p().timeout(this.options.additionalPageLoadingTimeInMilliseconds);case 2:return(0,d.$)(p().stringFormat('[class^="{1}"], [class*=" {1}"]',this.sliceDomNodeSelectorPrefix(this.options.domNodes.startUpAnimationClassPrefix).substr(1))).css(this.options.startUpHide),t.next=5,new Promise((function(t){e.$domNodes.windowLoadingCover.length?(e.enableScrolling(),e.$domNodes.windowLoadingCover.animate(e.options.windowLoadingCoverHideAnimation,{always:t})):t()}));case 5:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),i._performStartUpEffects=function(){var t=e()(c().mark((function t(e){var o,n=this;return c().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=1),this.$domNodes.windowLoadingCover.hide(),this.windowLoadingSpinner&&this.windowLoadingSpinner.stop(),!(0,d.$)(p().stringFormat('[class^="{1}"], [class*=" {1}"]',this.sliceDomNodeSelectorPrefix(this.options.domNodes.startUpAnimationClassPrefix).substr(1))).length){t.next=17;break}return t.next=6,p().timeout(this.options.startUpAnimationElementDelayInMiliseconds);case 6:if(o=!1,(0,d.$)(this.options.domNodes.startUpAnimationClassPrefix+""+e).animate(this.options.startUpShowAnimation,{always:function(){o&&n.fireEvent("startUpAnimationComplete")}}),!(0,d.$)(this.options.domNodes.startUpAnimationClassPrefix+""+(e+1)).length){t.next=14;break}return t.next=12,this._performStartUpEffects(e+1);case 12:t.next=15;break;case 14:o=!0;case 15:t.next=18;break;case 17:this.fireEvent("startUpAnimationComplete");case 18:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),i._bindNavigationEvents=function(){var t=this;d.globalContext.window.addEventListener("hashchange",(function(){t.startUpAnimationIsComplete&&t.fireEvent("switchSection",!1,t,location.hash.substring(1))}),!1),this._bindScrollToTopButton()},i._bindScrollToTopButton=function(){var t=this;this.on(this.$domNodes.scrollToTopButton,"click",(function(e){e.preventDefault(),t.scrollToTop()}))},i._bindClickTracking=function(){var t=this;this.options.tracking&&(this.options.tracking.linkClick&&this.on(this.$domNodes.parent.find("a"),"click",(function(e){return t.options.tracking.linkClick.call(t,(0,d.$)(e.target),e)})),this.options.tracking.buttonClick&&this.on(this.$domNodes.parent.find("button"),"click",(function(e){return t.options.tracking.buttonClick.call(t,(0,d.$)(e.target),e)})))},o}(p());T._defaultOptions={activateLanguageSupport:!0,additionalPageLoadingTimeInMilliseconds:0,domain:"auto",domNodes:{mediaQueryIndicator:'<div class="media-query-indicator">',scrollToTopButton:'a[href="#top"]',startUpAnimationClassPrefix:".website-start-up-animation-number-",top:"header",windowLoadingCover:".website-utilities-window-loading-cover",windowLoadingSpinner:".website-utilities-window-loading-cover > div"},domNodeSelectorPrefix:"body.{1}",initialSectionName:"home",knownScrollEventNames:["DOMMouseScroll","keyup","mousedown","mousewheel","scroll","touchmove","wheel"],language:{},mediaQueryClassNameIndicator:[["extraSmall","xs"],["small","sm"],["medium","md"],["large","lg"]],name:"WebsiteUtilities",onChangeMediaQueryMode:p().noop,onChangeToExtraSmallMode:p().noop,onChangeToLargeMode:p().noop,onChangeToMediumMode:p().noop,onChangeToSmallMode:p().noop,onViewportMovesAwayFromTop:p().noop,onViewportMovesToTop:p().noop,onSwitchSection:p().noop,onStartUpAnimationComplete:p().noop,scrollToTop:{button:{hideAnimationOptions:{},showAnimationOptions:{},slideDistanceInPixel:30},options:{duration:"fast"}},startUpAnimationElementDelayInMiliseconds:100,startUpHide:{opacity:0},startUpShowAnimation:{opacity:1},switchToManualScrollingIndicator:function(t){return"number"==typeof t.which&&0<t.which||"mousedown"===t.type||"mousewheel"===t.type||"touchmove"===t.type},tracking:{buttonClick:function(t){this.track({event:"buttonClick",eventType:"click",label:t.text(),reference:t.attr("action")||t.attr("target")||t.attr("type")||t.text(),subject:"button",value:parseInt(t.attr("website-analytics-value")),userInteraction:!0})},linkClick:function(t){this.track({event:"linkClick",eventType:"click",label:t.text(),reference:t.attr("href")||t.attr("action")||t.attr("target")||t.attr("type")||t.text(),subject:"link",value:parseInt(t.attr("website-analytics-value")),userInteraction:!0})},sectionSwitch:function(t){this.track({event:"sectionSwitch",eventType:"sectionSwitch",label:t,reference:d.globalContext.window.location.pathname+"#"+t,subject:"url",userInteraction:!1})},track:function(t){var e;null==(e=d.globalContext.dataLayer)||e.push(t)}},windowLoadingCoverHideAnimation:{opacity:0},windowLoadingSpinner:{animation:"spinner-line-fade-quick",className:"spinner",color:"#000",corners:1,direction:1,fadeColor:"transparent",left:"auto",length:23,lines:9,position:"absolute",radius:40,rotate:0,scale:1,shadow:!1,speed:1.1,top:"auto",width:11,zIndex:2e9},windowLoadedTimeoutAfterDocLoadedInMSec:2e3};var x=T;d.$.WebsiteUtilities=function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return p().controller(T,e)},d.$.WebsiteUtilities.class=T}(),l}()}));
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "website-utilities",
3
- "version": "1.0.256",
4
- "license": "CC-BY-3.0",
3
+ "version": "1.0.257",
5
4
  "description": "extend your web app",
6
- "homepage": "https://torben.website/website-utilities",
7
- "documentationWebsite": {
8
- "languages": [
9
- "deDE",
10
- "enUS"
11
- ],
12
- "name": "website-utilities",
13
- "tagline": "extend your web app<!--deDE:erweitere deine Webanwendung-->",
14
- "trackingCode": "UA-40192634-5"
15
- },
16
5
  "keywords": [
17
6
  "jquery",
18
7
  "website",
19
8
  "utilities"
20
9
  ],
10
+ "homepage": "https://torben.website/website-utilities",
11
+ "bugs": {
12
+ "email": "info@torben.website",
13
+ "url": "https://github.com/thaibault/website-utilities/issues"
14
+ },
15
+ "license": "CC-BY-3.0",
16
+ "author": {
17
+ "name": "Torben Sickert",
18
+ "email": "info@torben.website",
19
+ "url": "https://torben.website"
20
+ },
21
21
  "files": [
22
22
  "index.d.ts",
23
23
  "index.js",
@@ -36,23 +36,29 @@
36
36
  "url": "https://github.com/thaibault/website-utilities"
37
37
  },
38
38
  "scripts": {
39
- "build": "weboptimizer build",
39
+ "build": "yarn build:types; yarn build:plain",
40
40
  "build:export": "weboptimizer build '{__reference__: \"target:export\"}'",
41
+ "build:plain": "weboptimizer build",
42
+ "build:types": "weboptimizer build:types",
41
43
  "check": "yarn check:types; yarn lint",
42
44
  "check:types": "weboptimizer check:types",
43
45
  "clear": "weboptimizer clear",
44
46
  "document": "weboptimizer document",
45
47
  "lint": "weboptimizer lint",
46
48
  "prepare": "yarn build",
47
- "report:coverage": "nyc report --reporter=text-lcov | coveralls",
48
49
  "serve": "weboptimizer serve",
49
50
  "start": "yarn serve",
50
51
  "test": "weboptimizer test",
51
52
  "test:browser": "weboptimizer test:browser",
53
+ "test:coverage": "weboptimizer test:coverage",
54
+ "test:coverage:report": "weboptimizer test:coverage:report",
52
55
  "update": "yarn version --patch && yarn publish",
53
56
  "update:documentation": "documentationWebsite --log-level info",
54
57
  "watch": "weboptimizer build --watch"
55
58
  },
59
+ "dependencies": {
60
+ "@types/webpack": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz"
61
+ },
56
62
  "devDependencies": {
57
63
  "@babel/eslint-parser": "*",
58
64
  "@babel/plugin-transform-proto-to-assign": "*",
@@ -109,11 +115,24 @@
109
115
  "optional": true
110
116
  }
111
117
  },
118
+ "engines": {
119
+ "node": ">=17",
120
+ "npm": ">=7"
121
+ },
112
122
  "resolutions": {
113
123
  "@types/webpack": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz",
114
124
  "colors": "1.4.0"
115
125
  },
116
126
  "sideEffects": false,
127
+ "documentationWebsite": {
128
+ "languages": [
129
+ "deDE",
130
+ "enUS"
131
+ ],
132
+ "name": "website-utilities",
133
+ "tagline": "extend your web app<!--deDE:erweitere deine Webanwendung-->",
134
+ "trackingCode": "UA-40192634-5"
135
+ },
117
136
  "webOptimizer": {
118
137
  "commandLine": {
119
138
  "test": {
@@ -180,8 +199,5 @@
180
199
  }
181
200
  }
182
201
  }
183
- },
184
- "dependencies": {
185
- "@types/webpack": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz"
186
202
  }
187
203
  }
package/readme.md CHANGED
@@ -13,14 +13,23 @@ endregion -->
13
13
  Project status
14
14
  --------------
15
15
 
16
- [![npm version](https://badge.fury.io/js/website-utilities.svg)](https://www.npmjs.com/package/website-utilities)
17
- [![downloads](https://img.shields.io/npm/dy/website-utilities.svg)](https://www.npmjs.com/package/website-utilities)
18
- [![build status](https://travis-ci.org/thaibault/websiteUtilities.svg?branch=master)](https://travis-ci.org/thaibault/websiteUtilities)
19
- [![code coverage](https://coveralls.io/repos/github/thaibault/websiteUtilitie/badge.svg)](https://coveralls.io/github/thaibault/websiteUtilities)
16
+ [![npm](https://img.shields.io/npm/v/website-utilities?color=%23d55e5d&label=npm%20package%20version&logoColor=%23d55e5d)](https://www.npmjs.com/package/website-utilities)
17
+ [![npm downloads](https://img.shields.io/npm/dy/website-utilities.svg)](https://www.npmjs.com/package/website-utilities)
18
+
19
+ [![<LABEL>](https://github.com/thaibault/website-utilities/actions/workflows/build.yaml/badge.svg)](https://github.com/thaibault/website-utilities/actions/workflows/build.yaml)
20
+ [![<LABEL>](https://github.com/thaibault/website-utilities/actions/workflows/test.yaml/badge.svg)](https://github.com/thaibault/website-utilities/actions/workflows/test.yaml)
21
+ [![<LABEL>](https://github.com/thaibault/website-utilities/actions/workflows/test:coverage:report.yaml/badge.svg)](https://github.com/thaibault/website-utilities/actions/workflows/test:coverage:report.yaml)
22
+ [![<LABEL>](https://github.com/thaibault/website-utilities/actions/workflows/check:types.yaml/badge.svg)](https://github.com/thaibault/website-utilities/actions/workflows/check:types.yaml)
23
+ [![<LABEL>](https://github.com/thaibault/website-utilities/actions/workflows/lint.yaml/badge.svg)](https://github.com/thaibault/website-utilities/actions/workflows/lint.yaml)
24
+
25
+ [![code coverage](https://coveralls.io/repos/github/thaibault/website-utilities/badge.svg)](https://coveralls.io/github/thaibault/website-utilities)
26
+
27
+ <!-- Too unstable yet
20
28
  [![dependencies](https://img.shields.io/david/thaibault/website-utilities.svg)](https://david-dm.org/thaibault/website-utilities)
21
29
  [![development dependencies](https://img.shields.io/david/dev/thaibault/website-utilities.svg)](https://david-dm.org/thaibault/website-utilities?type=dev)
22
30
  [![peer dependencies](https://img.shields.io/david/peer/thaibault/website-utilities.svg)](https://david-dm.org/thaibault/website-utilities?type=peer)
23
- [![documentation-website](https://img.shields.io/website-up-down-green-red/https/torben.website/websiteUtilities.svg?label=documentation-website)](https://torben.website/websiteUtilities)
31
+ -->
32
+ [![documentation website](https://img.shields.io/website-up-down-green-red/https/torben.website/website-utilities.svg?label=documentation-website)](https://torben.website/website-utilities)
24
33
 
25
34
  <!--|deDE:Einsatzmöglichkeiten-->
26
35
  Use cases
package/type.d.ts ADDED
@@ -0,0 +1,75 @@
1
+ import { DomNodes as BaseDomNodes, FirstParameter, Mapping, Options as BaseOptions, ProcedureFunction, $T } from 'clientnode/type';
2
+ import { Options as InternationalisationOptions } from 'internationalisation/type';
3
+ import { SpinnerOptions } from 'spin.js';
4
+ import WebsiteUtilities from './index';
5
+ export declare type WebsiteUtilitiesFunction = ((..._parameters: Array<unknown>) => unknown) & {
6
+ class: typeof WebsiteUtilities;
7
+ };
8
+ declare global {
9
+ interface JQueryStatic {
10
+ WebsiteUtilities: WebsiteUtilitiesFunction;
11
+ }
12
+ const dataLayer: Array<unknown>;
13
+ }
14
+ export declare type DomNodes<Type = string> = BaseDomNodes<Type> & {
15
+ mediaQueryIndicator: Type;
16
+ scrollToTopButton: Type;
17
+ startUpAnimationClassPrefix: Type;
18
+ top: Type;
19
+ windowLoadingCover: Type;
20
+ windowLoadingSpinner: Type;
21
+ };
22
+ export interface DefaultOptions {
23
+ activateLanguageSupport: boolean;
24
+ additionalPageLoadingTimeInMilliseconds: number;
25
+ domain: string;
26
+ domNodes: DomNodes;
27
+ domNodeSelectorPrefix: string;
28
+ initialSectionName: string;
29
+ knownScrollEventNames: Array<string>;
30
+ language: Partial<InternationalisationOptions>;
31
+ mediaQueryClassNameIndicator: Array<Array<string>>;
32
+ name: string;
33
+ onChangeMediaQueryMode: ProcedureFunction;
34
+ onChangeToExtraSmallMode: ProcedureFunction;
35
+ onChangeToLargeMode: ProcedureFunction;
36
+ onChangeToMediumMode: ProcedureFunction;
37
+ onChangeToSmallMode: ProcedureFunction;
38
+ onStartUpAnimationComplete: ProcedureFunction;
39
+ onSwitchSection: ProcedureFunction;
40
+ onViewportMovesAwayFromTop: ProcedureFunction;
41
+ onViewportMovesToTop: ProcedureFunction;
42
+ scrollToTop: {
43
+ button: {
44
+ hideAnimationOptions: JQuery.EffectsOptions<HTMLElement>;
45
+ showAnimationOptions: JQuery.EffectsOptions<HTMLElement>;
46
+ slideDistanceInPixel: number;
47
+ };
48
+ options: JQuery.EffectsOptions<HTMLElement>;
49
+ };
50
+ startUpAnimationElementDelayInMiliseconds: number;
51
+ startUpHide: Mapping<number | string>;
52
+ startUpShowAnimation: FirstParameter<$T['animate']>;
53
+ switchToManualScrollingIndicator: (event: JQuery.Event) => boolean;
54
+ tracking?: {
55
+ buttonClick?: (this: WebsiteUtilities, $link: $T<HTMLButtonElement>, event: JQuery.Event) => void;
56
+ linkClick?: (this: WebsiteUtilities, $link: $T<HTMLLinkElement>, event: JQuery.Event) => void;
57
+ sectionSwitch?: (this: WebsiteUtilities, sectionName: string) => void;
58
+ track: (item: TrackingItem) => void;
59
+ };
60
+ windowLoadingCoverHideAnimation: FirstParameter<$T['animate']>;
61
+ windowLoadingSpinner: SpinnerOptions;
62
+ windowLoadedTimeoutAfterDocLoadedInMSec: number;
63
+ }
64
+ export declare type Options = BaseOptions & DefaultOptions;
65
+ export declare type TrackingItem = {
66
+ context: string;
67
+ event: string;
68
+ eventType: string;
69
+ icon?: string;
70
+ label: string;
71
+ reference: string;
72
+ subject: string;
73
+ value: number;
74
+ userInteraction: boolean;
75
+ };