@schukai/monster 4.46.8 → 4.47.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
 
4
4
 
5
+ ## [4.47.0] - 2025-11-25
6
+
7
+ ### Add Features
8
+
9
+ - add loglevel to save-button
10
+
11
+
12
+
5
13
  ## [4.46.8] - 2025-11-23
6
14
 
7
15
  ### Bug Fixes
package/package.json CHANGED
@@ -1 +1 @@
1
- {"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.7.4","@popperjs/core":"^2.11.8"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.46.8"}
1
+ {"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.7.4","@popperjs/core":"^2.11.8"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.47.0"}
@@ -17,9 +17,9 @@ import { diff } from "../../data/diff.mjs";
17
17
  import { addAttributeToken } from "../../dom/attributes.mjs";
18
18
  import { ATTRIBUTE_ERRORMESSAGE } from "../../dom/constants.mjs";
19
19
  import {
20
- assembleMethodSymbol,
21
- CustomElement,
22
- registerCustomElement,
20
+ assembleMethodSymbol,
21
+ CustomElement,
22
+ registerCustomElement,
23
23
  } from "../../dom/customelement.mjs";
24
24
  import { findElementWithSelectorUpwards } from "../../dom/util.mjs";
25
25
  import { isString, isArray } from "../../types/is.mjs";
@@ -35,8 +35,8 @@ import { SaveButtonStyleSheet } from "./stylesheet/save-button.mjs";
35
35
  import "../form/state-button.mjs";
36
36
 
37
37
  import {
38
- handleDataSourceChanges,
39
- datasourceLinkedElementSymbol,
38
+ handleDataSourceChanges,
39
+ datasourceLinkedElementSymbol,
40
40
  } from "./util.mjs";
41
41
  import { getLocaleOfDocument } from "../../dom/locale.mjs";
42
42
 
@@ -73,270 +73,273 @@ const badgeElementSymbol = Symbol("badgeElement");
73
73
  * @summary This is a save button component that can be used to save changes to a datasource.
74
74
  */
75
75
  class SaveButton extends CustomElement {
76
- /**
77
- * This method is called by the `instanceof` operator.
78
- * @return {symbol}
79
- */
80
- static get [instanceSymbol]() {
81
- return Symbol.for(
82
- "@schukai/monster/components/datatable/save-button@@instance",
83
- );
84
- }
85
-
86
- /**
87
- * To set the options via the HTML tag, the attribute `data-monster-options` must be used.
88
- * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
89
- *
90
- * The individual configuration values can be found in the table.
91
- *
92
- * @property {Object} templates Template definitions
93
- * @property {string} templates.main Main template
94
- * @property {object} datasource The datasource
95
- * @property {string} datasource.selector The selector of the datasource
96
- * @property {string} labels.button The button label
97
- * @property {Object} classes The classes
98
- * @property {string} classes.bar The bar class
99
- * @property {string} classes.badge The badge class
100
- * @property {Array} ignoreChanges The ignore changes (regex)
101
- * @property {Array} data The data
102
- * @property {boolean} disabled The disabled state
103
- * @property {string} logLevel The log level (off, debug)
104
- * @return {Object}
105
- */
106
- get defaults() {
107
- const obj = Object.assign({}, super.defaults, {
108
- templates: {
109
- main: getTemplate(),
110
- },
111
-
112
- labels: getTranslations(),
113
-
114
- classes: {
115
- bar: "monster-button-primary",
116
- badge: "monster-badge-secondary hidden",
117
- },
118
-
119
- datasource: {
120
- selector: null,
121
- },
122
-
123
- changes: "0",
124
-
125
- ignoreChanges: [],
126
-
127
- data: {},
128
-
129
- disabled: false,
130
-
131
- logLevel: "off",
132
- });
133
-
134
- updateOptionsFromArguments.call(this, obj);
135
- return obj;
136
- }
137
-
138
- /**
139
- *
140
- * @return {string}
141
- */
142
- static getTag() {
143
- return "monster-datasource-save-button";
144
- }
145
-
146
- /**
147
- * This method is responsible for assembling the component.
148
- *
149
- * It calls the parent's assemble method first, then initializes control references and event handlers.
150
- * If the `datasource.selector` option is provided and is a string, it searches for the corresponding
151
- * element in the DOM using that selector.
152
- *
153
- * If the selector matches exactly one element, it checks if the element is an instance of the `Datasource` class.
154
- *
155
- * If it is, the component's `datasourceLinkedElementSymbol` property is set to the element, and the component
156
- * attaches an observer to the datasource's changes.
157
- *
158
- * The observer is a function that calls the `handleDataSourceChanges` method in the context of the component.
159
- * Additionally, the component attaches an observer to itself, which also calls the `handleDataSourceChanges`
160
- * method in the component's context.
161
- */
162
- [assembleMethodSymbol]() {
163
- super[assembleMethodSymbol]();
164
- const self = this;
165
-
166
- initControlReferences.call(this);
167
- initEventHandler.call(this);
168
-
169
- const selector = this.getOption("datasource.selector");
170
-
171
- if (isString(selector)) {
172
- const element = findElementWithSelectorUpwards(this, selector);
173
- if (element === null) {
174
- throw new Error("the selector must match exactly one element");
175
- }
176
-
177
- if (!(element instanceof Datasource)) {
178
- throw new TypeError("the element must be a datasource");
179
- }
180
-
181
- if (element instanceof RestDatasource) {
182
- element.addEventListener("monster-datasource-fetch", (event) => {
183
- self[originValuesSymbol] = null;
184
- });
185
- }
186
-
187
- this[datasourceLinkedElementSymbol] = element;
188
- element.datasource.attachObserver(
189
- new Observer(handleDataSourceChanges.bind(this)),
190
- );
191
-
192
- self[originValuesSymbol] = null;
193
-
194
- element.datasource.attachObserver(
195
- new Observer(function () {
196
- if (!self[originValuesSymbol]) {
197
- self[originValuesSymbol] = clone(
198
- self[datasourceLinkedElementSymbol].data,
199
- );
200
- }
201
-
202
- const currentValues = this.getRealSubject();
203
- const ignoreChanges = self.getOption("ignoreChanges");
204
-
205
- const result = diff(self[originValuesSymbol], currentValues);
206
- if (self.getOption("logLevel") === "debug") {
207
- console.groupCollapsed("SaveButton");
208
- console.log(
209
- "originValues",
210
- JSON.parse(JSON.stringify(currentValues)),
211
- );
212
- console.log("result of diff", result);
213
- console.log("ignoreChanges", ignoreChanges);
214
-
215
- if (isArray(result) && result.length > 0) {
216
- const formattedDiff = result.map((change) => ({
217
- Operator: change?.operator,
218
- Path: change?.path?.join("."),
219
- "First Value": change?.first?.value,
220
- "First Type": change?.first?.type,
221
- "Second Value": change?.second?.value,
222
- "Second Type": change?.second?.type,
223
- }));
224
-
225
- console.table(formattedDiff);
226
- } else {
227
- console.log("There are no changes to save");
228
- }
229
- console.groupEnd();
230
- }
231
-
232
- if (isArray(ignoreChanges) && ignoreChanges.length > 0) {
233
- const itemsToRemove = [];
234
- for (const item of result) {
235
- for (const ignorePattern of ignoreChanges) {
236
- const p = new RegExp(ignorePattern);
237
-
238
- let matchPath = item.path;
239
- if (isArray(item.path)) {
240
- matchPath = item.path.join(".");
241
- }
242
-
243
- if (p.test(matchPath)) {
244
- itemsToRemove.push(item);
245
- break;
246
- }
247
- }
248
- }
249
-
250
- for (const itemToRemove of itemsToRemove) {
251
- const index = result.indexOf(itemToRemove);
252
- if (index > -1) {
253
- result.splice(index, 1);
254
- }
255
- }
256
- }
257
-
258
- if (isArray(result) && result.length > 0) {
259
- self[stateButtonElementSymbol].setState("changed");
260
- self[stateButtonElementSymbol].setOption("disabled", false);
261
- self.setOption("changes", result.length);
262
- self.setOption(
263
- "classes.badge",
264
- new TokenList(self.getOption("classes.badge"))
265
- .remove("hidden")
266
- .toString(),
267
- );
268
- } else {
269
- self[stateButtonElementSymbol].removeState();
270
- self[stateButtonElementSymbol].setOption("disabled", true);
271
- self.setOption("changes", 0);
272
- self.setOption(
273
- "classes.badge",
274
- new TokenList(self.getOption("classes.badge"))
275
- .add("hidden")
276
- .toString(),
277
- );
278
- }
279
- }),
280
- );
281
- }
282
-
283
- this.attachObserver(
284
- new Observer(() => {
285
- handleDataSourceChanges.call(this);
286
- }),
287
- );
288
- }
289
-
290
- /**
291
- *
292
- * @return [CSSStyleSheet]
293
- */
294
- static getCSSStyleSheet() {
295
- return [SaveButtonStyleSheet, BadgeStyleSheet];
296
- }
76
+ /**
77
+ * This method is called by the `instanceof` operator.
78
+ * @return {symbol}
79
+ */
80
+ static get [instanceSymbol]() {
81
+ return Symbol.for(
82
+ "@schukai/monster/components/datatable/save-button@@instance",
83
+ );
84
+ }
85
+
86
+ /**
87
+ * To set the options via the HTML tag, the attribute `data-monster-options` must be used.
88
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
89
+ *
90
+ * The individual configuration values can be found in the table.
91
+ *
92
+ * @property {Object} templates Template definitions
93
+ * @property {string} templates.main Main template
94
+ * @property {object} datasource The datasource
95
+ * @property {string} datasource.selector The selector of the datasource
96
+ * @property {string} labels.button The button label
97
+ * @property {Object} classes The classes
98
+ * @property {string} classes.bar The bar class
99
+ * @property {string} classes.badge The badge class
100
+ * @property {Array} ignoreChanges The ignore changes (regex)
101
+ * @property {Array} data The data
102
+ * @property {boolean} disabled The disabled state
103
+ * @property {string} logLevel The log level (off, debug)
104
+ * @return {Object}
105
+ */
106
+ get defaults() {
107
+ const obj = Object.assign({}, super.defaults, {
108
+ templates: {
109
+ main: getTemplate(),
110
+ },
111
+
112
+ labels: getTranslations(),
113
+
114
+ classes: {
115
+ bar: "monster-button-primary",
116
+ badge: "monster-badge-secondary hidden",
117
+ },
118
+
119
+ datasource: {
120
+ selector: null,
121
+ },
122
+
123
+ changes: "0",
124
+
125
+ ignoreChanges: [],
126
+
127
+ data: {},
128
+
129
+ disabled: false,
130
+
131
+ logLevel: "off",
132
+ });
133
+
134
+ updateOptionsFromArguments.call(this, obj);
135
+ return obj;
136
+ }
137
+
138
+ /**
139
+ *
140
+ * @return {string}
141
+ */
142
+ static getTag() {
143
+ return "monster-datasource-save-button";
144
+ }
145
+
146
+ /**
147
+ * This method is responsible for assembling the component.
148
+ *
149
+ * It calls the parent's assemble method first, then initializes control references and event handlers.
150
+ * If the `datasource.selector` option is provided and is a string, it searches for the corresponding
151
+ * element in the DOM using that selector.
152
+ *
153
+ * If the selector matches exactly one element, it checks if the element is an instance of the `Datasource` class.
154
+ *
155
+ * If it is, the component's `datasourceLinkedElementSymbol` property is set to the element, and the component
156
+ * attaches an observer to the datasource's changes.
157
+ *
158
+ * The observer is a function that calls the `handleDataSourceChanges` method in the context of the component.
159
+ * Additionally, the component attaches an observer to itself, which also calls the `handleDataSourceChanges`
160
+ * method in the component's context.
161
+ */
162
+ [assembleMethodSymbol]() {
163
+ super[assembleMethodSymbol]();
164
+ const self = this;
165
+
166
+ initControlReferences.call(this);
167
+ initEventHandler.call(this);
168
+
169
+ const selector = this.getOption("datasource.selector");
170
+
171
+ if (isString(selector)) {
172
+ const element = findElementWithSelectorUpwards(this, selector);
173
+ if (element === null) {
174
+ throw new Error("the selector must match exactly one element");
175
+ }
176
+
177
+ if (!(element instanceof Datasource)) {
178
+ throw new TypeError("the element must be a datasource");
179
+ }
180
+
181
+ if (element instanceof RestDatasource) {
182
+ element.addEventListener("monster-datasource-fetch", (event) => {
183
+ self[originValuesSymbol] = null;
184
+ });
185
+ }
186
+
187
+ this[datasourceLinkedElementSymbol] = element;
188
+ element.datasource.attachObserver(
189
+ new Observer(handleDataSourceChanges.bind(this)),
190
+ );
191
+
192
+ self[originValuesSymbol] = null;
193
+
194
+ element.datasource.attachObserver(
195
+ new Observer(function () {
196
+ if (!self[originValuesSymbol]) {
197
+ self[originValuesSymbol] = clone(
198
+ self[datasourceLinkedElementSymbol].data,
199
+ );
200
+ }
201
+
202
+ const currentValues = this.getRealSubject();
203
+ const ignoreChanges = self.getOption("ignoreChanges");
204
+
205
+ const result = diff(self[originValuesSymbol], currentValues);
206
+ if (
207
+ self.getOption("logLevel") === "debug" ||
208
+ location.search.includes("logLevel=debug")
209
+ ) {
210
+ console.groupCollapsed("SaveButton");
211
+ console.log(
212
+ "originValues",
213
+ JSON.parse(JSON.stringify(currentValues)),
214
+ );
215
+ console.log("result of diff", result);
216
+ console.log("ignoreChanges", ignoreChanges);
217
+
218
+ if (isArray(result) && result.length > 0) {
219
+ const formattedDiff = result.map((change) => ({
220
+ Operator: change?.operator,
221
+ Path: change?.path?.join("."),
222
+ "First Value": change?.first?.value,
223
+ "First Type": change?.first?.type,
224
+ "Second Value": change?.second?.value,
225
+ "Second Type": change?.second?.type,
226
+ }));
227
+
228
+ console.table(formattedDiff);
229
+ } else {
230
+ console.log("There are no changes to save");
231
+ }
232
+ console.groupEnd();
233
+ }
234
+
235
+ if (isArray(ignoreChanges) && ignoreChanges.length > 0) {
236
+ const itemsToRemove = [];
237
+ for (const item of result) {
238
+ for (const ignorePattern of ignoreChanges) {
239
+ const p = new RegExp(ignorePattern);
240
+
241
+ let matchPath = item.path;
242
+ if (isArray(item.path)) {
243
+ matchPath = item.path.join(".");
244
+ }
245
+
246
+ if (p.test(matchPath)) {
247
+ itemsToRemove.push(item);
248
+ break;
249
+ }
250
+ }
251
+ }
252
+
253
+ for (const itemToRemove of itemsToRemove) {
254
+ const index = result.indexOf(itemToRemove);
255
+ if (index > -1) {
256
+ result.splice(index, 1);
257
+ }
258
+ }
259
+ }
260
+
261
+ if (isArray(result) && result.length > 0) {
262
+ self[stateButtonElementSymbol].setState("changed");
263
+ self[stateButtonElementSymbol].setOption("disabled", false);
264
+ self.setOption("changes", result.length);
265
+ self.setOption(
266
+ "classes.badge",
267
+ new TokenList(self.getOption("classes.badge"))
268
+ .remove("hidden")
269
+ .toString(),
270
+ );
271
+ } else {
272
+ self[stateButtonElementSymbol].removeState();
273
+ self[stateButtonElementSymbol].setOption("disabled", true);
274
+ self.setOption("changes", 0);
275
+ self.setOption(
276
+ "classes.badge",
277
+ new TokenList(self.getOption("classes.badge"))
278
+ .add("hidden")
279
+ .toString(),
280
+ );
281
+ }
282
+ }),
283
+ );
284
+ }
285
+
286
+ this.attachObserver(
287
+ new Observer(() => {
288
+ handleDataSourceChanges.call(this);
289
+ }),
290
+ );
291
+ }
292
+
293
+ /**
294
+ *
295
+ * @return [CSSStyleSheet]
296
+ */
297
+ static getCSSStyleSheet() {
298
+ return [SaveButtonStyleSheet, BadgeStyleSheet];
299
+ }
297
300
  }
298
301
 
299
302
  function getTranslations() {
300
- const locale = getLocaleOfDocument();
301
- switch (locale.language) {
302
- case "de":
303
- return {
304
- button: "Speichern",
305
- };
306
- case "fr":
307
- return {
308
- button: "Enregistrer",
309
- };
310
- case "sp":
311
- return {
312
- button: "Guardar",
313
- };
314
- case "it":
315
- return {
316
- button: "Salva",
317
- };
318
- case "pl":
319
- return {
320
- button: "Zapisz",
321
- };
322
- case "no":
323
- return {
324
- button: "Lagre",
325
- };
326
- case "dk":
327
- return {
328
- button: "Gem",
329
- };
330
- case "sw":
331
- return {
332
- button: "Spara",
333
- };
334
- default:
335
- case "en":
336
- return {
337
- button: "Save",
338
- };
339
- }
303
+ const locale = getLocaleOfDocument();
304
+ switch (locale.language) {
305
+ case "de":
306
+ return {
307
+ button: "Speichern",
308
+ };
309
+ case "fr":
310
+ return {
311
+ button: "Enregistrer",
312
+ };
313
+ case "sp":
314
+ return {
315
+ button: "Guardar",
316
+ };
317
+ case "it":
318
+ return {
319
+ button: "Salva",
320
+ };
321
+ case "pl":
322
+ return {
323
+ button: "Zapisz",
324
+ };
325
+ case "no":
326
+ return {
327
+ button: "Lagre",
328
+ };
329
+ case "dk":
330
+ return {
331
+ button: "Gem",
332
+ };
333
+ case "sw":
334
+ return {
335
+ button: "Spara",
336
+ };
337
+ default:
338
+ case "en":
339
+ return {
340
+ button: "Save",
341
+ };
342
+ }
340
343
  }
341
344
 
342
345
  /**
@@ -350,71 +353,71 @@ function getTranslations() {
350
353
  * @throws {Error} the selector must match exactly one element
351
354
  */
352
355
  function initControlReferences() {
353
- if (!this.shadowRoot) {
354
- throw new Error("no shadow-root is defined");
355
- }
356
-
357
- this[stateButtonElementSymbol] = this.shadowRoot.querySelector(
358
- "[data-monster-role=state-button]",
359
- );
360
-
361
- this[badgeElementSymbol] = this.shadowRoot.querySelector(
362
- "[data-monster-role=badge]",
363
- );
364
-
365
- if (this[stateButtonElementSymbol]) {
366
- queueMicrotask(() => {
367
- const states = {
368
- changed: new State(
369
- "changed",
370
- '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-up" viewBox="0 0 16 16">' +
371
- '<path fill-rule="evenodd" d="M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708z"/>' +
372
- '<path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>' +
373
- "</svg>",
374
- ),
375
- };
376
-
377
- this[stateButtonElementSymbol].removeState();
378
- this[stateButtonElementSymbol].setOption("disabled", "disabled");
379
- this[stateButtonElementSymbol].setOption("states", states);
380
- this[stateButtonElementSymbol].setOption(
381
- "labels.button",
382
- this.getOption("labels.button"),
383
- );
384
- });
385
- }
386
-
387
- return this;
356
+ if (!this.shadowRoot) {
357
+ throw new Error("no shadow-root is defined");
358
+ }
359
+
360
+ this[stateButtonElementSymbol] = this.shadowRoot.querySelector(
361
+ "[data-monster-role=state-button]",
362
+ );
363
+
364
+ this[badgeElementSymbol] = this.shadowRoot.querySelector(
365
+ "[data-monster-role=badge]",
366
+ );
367
+
368
+ if (this[stateButtonElementSymbol]) {
369
+ queueMicrotask(() => {
370
+ const states = {
371
+ changed: new State(
372
+ "changed",
373
+ '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-up" viewBox="0 0 16 16">' +
374
+ '<path fill-rule="evenodd" d="M7.646 5.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 6.707V10.5a.5.5 0 0 1-1 0V6.707L6.354 7.854a.5.5 0 1 1-.708-.708z"/>' +
375
+ '<path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383m.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>' +
376
+ "</svg>",
377
+ ),
378
+ };
379
+
380
+ this[stateButtonElementSymbol].removeState();
381
+ this[stateButtonElementSymbol].setOption("disabled", "disabled");
382
+ this[stateButtonElementSymbol].setOption("states", states);
383
+ this[stateButtonElementSymbol].setOption(
384
+ "labels.button",
385
+ this.getOption("labels.button"),
386
+ );
387
+ });
388
+ }
389
+
390
+ return this;
388
391
  }
389
392
 
390
393
  /**
391
394
  * @private
392
395
  */
393
396
  function initEventHandler() {
394
- queueMicrotask(() => {
395
- this[stateButtonElementSymbol].setOption("actions.click", () => {
396
- this[datasourceLinkedElementSymbol]
397
- .write()
398
- .then(() => {
399
- this[originValuesSymbol] = null;
400
- this[originValuesSymbol] = clone(
401
- this[datasourceLinkedElementSymbol].data,
402
- );
403
- this[stateButtonElementSymbol].removeState();
404
- this[stateButtonElementSymbol].setOption("disabled", true);
405
- this.setOption("changes", 0);
406
- this.setOption(
407
- "classes.badge",
408
- new TokenList(this.getOption("classes.badge"))
409
- .add("hidden")
410
- .toString(),
411
- );
412
- })
413
- .catch((error) => {
414
- addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, error.toString());
415
- });
416
- });
417
- });
397
+ queueMicrotask(() => {
398
+ this[stateButtonElementSymbol].setOption("actions.click", () => {
399
+ this[datasourceLinkedElementSymbol]
400
+ .write()
401
+ .then(() => {
402
+ this[originValuesSymbol] = null;
403
+ this[originValuesSymbol] = clone(
404
+ this[datasourceLinkedElementSymbol].data,
405
+ );
406
+ this[stateButtonElementSymbol].removeState();
407
+ this[stateButtonElementSymbol].setOption("disabled", true);
408
+ this.setOption("changes", 0);
409
+ this.setOption(
410
+ "classes.badge",
411
+ new TokenList(this.getOption("classes.badge"))
412
+ .add("hidden")
413
+ .toString(),
414
+ );
415
+ })
416
+ .catch((error) => {
417
+ addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, error.toString());
418
+ });
419
+ });
420
+ });
418
421
  }
419
422
 
420
423
  /**
@@ -422,10 +425,10 @@ function initEventHandler() {
422
425
  * @deprecated 2024-12-31
423
426
  */
424
427
  function updateOptionsFromArguments(options) {
425
- const selector = this.getAttribute(ATTRIBUTE_DATASOURCE_SELECTOR);
426
- if (selector) {
427
- options.datasource.selector = selector;
428
- }
428
+ const selector = this.getAttribute(ATTRIBUTE_DATASOURCE_SELECTOR);
429
+ if (selector) {
430
+ options.datasource.selector = selector;
431
+ }
429
432
  }
430
433
 
431
434
  /**
@@ -433,8 +436,8 @@ function updateOptionsFromArguments(options) {
433
436
  * @return {string}
434
437
  */
435
438
  function getTemplate() {
436
- // language=HTML
437
- return `
439
+ // language=HTML
440
+ return `
438
441
  <div data-monster-role="control" part="control"
439
442
  data-monster-attributes="disabled path:disabled | if:true">
440
443
  <monster-state-button data-monster-role="state-button"></monster-state-button>
@@ -10,10 +10,10 @@
10
10
  * For more information about purchasing a commercial license, please contact schukai GmbH.
11
11
  */
12
12
 
13
- import { addAttributeToken } from "../../../dom/attributes.mjs";
14
- import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
13
+ import {addAttributeToken} from "../../../dom/attributes.mjs";
14
+ import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
15
15
 
16
- export { SelectStyleSheet };
16
+ export {SelectStyleSheet}
17
17
 
18
18
  /**
19
19
  * @private
@@ -22,17 +22,10 @@ export { SelectStyleSheet };
22
22
  const SelectStyleSheet = new CSSStyleSheet();
23
23
 
24
24
  try {
25
- SelectStyleSheet.insertRule(
26
- `
25
+ SelectStyleSheet.insertRule(`
27
26
  @layer select {
28
27
  .block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}[data-monster-role=control]{width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{background-color:var(--monster-bg-color-primary-4);border-radius:.25rem;color:var(--monster-color-primary-4);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-primary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{background-color:var(--monster-bg-color-secondary-3);border-radius:.25rem;color:var(--monster-color-secondary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-secondary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{background-color:var(--monster-bg-color-tertiary-3);border-radius:.25rem;color:var(--monster-color-tertiary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-tertiary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{background-color:var(--monster-bg-color-destructive-1);border-radius:.25rem;color:var(--monster-color-destructive-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-destructive-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{background-color:var(--monster-bg-color-success-1);border-radius:.25rem;color:var(--monster-color-success-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-success-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{background-color:var(--monster-bg-color-warning-1);border-radius:.25rem;color:var(--monster-color-warning-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-warning-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{background-color:var(--monster-bg-color-error-1);border-radius:.25rem;color:var(--monster-color-error-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-error-pill{border-radius:10rem;padding:.25em .6em}.monster-margin-0{margin:var(--monster-space-0)}.monster-margin-top-0{margin-top:var(--monster-space-0)}.monster-margin-end-0{margin-right:var(--monster-space-0)}.monster-margin-bottom-0{margin-bottom:var(--monster-space-0)}.monster-margin-start-0{margin-left:var(--monster-space-0)}.monster-padding-0{padding:var(--monster-space-0)}.monster-padding-top-0{padding-top:var(--monster-space-0)}.monster-padding-end-0{padding-right:var(--monster-space-0)}.monster-padding-bottom-0{padding-bottom:var(--monster-space-0)}.monster-padding-start-0{padding-left:var(--monster-space-0)}.monster-margin-1{margin:var(--monster-space-1)}.monster-margin-top-1{margin-top:var(--monster-space-1)}.monster-margin-end-1{margin-right:var(--monster-space-1)}.monster-margin-bottom-1{margin-bottom:var(--monster-space-1)}.monster-margin-start-1{margin-left:var(--monster-space-1)}.monster-padding-1{padding:var(--monster-space-1)}.monster-padding-top-1{padding-top:var(--monster-space-1)}.monster-padding-end-1{padding-right:var(--monster-space-1)}.monster-padding-bottom-1{padding-bottom:var(--monster-space-1)}.monster-padding-start-1{padding-left:var(--monster-space-1)}.monster-margin-2{margin:var(--monster-space-2)}.monster-margin-top-2{margin-top:var(--monster-space-2)}.monster-margin-end-2{margin-right:var(--monster-space-2)}.monster-margin-bottom-2{margin-bottom:var(--monster-space-2)}.monster-margin-start-2{margin-left:var(--monster-space-2)}.monster-padding-2{padding:var(--monster-space-2)}.monster-padding-top-2{padding-top:var(--monster-space-2)}.monster-padding-end-2{padding-right:var(--monster-space-2)}.monster-padding-bottom-2{padding-bottom:var(--monster-space-2)}.monster-padding-start-2{padding-left:var(--monster-space-2)}.monster-margin-3{margin:var(--monster-space-3)}.monster-margin-top-3{margin-top:var(--monster-space-3)}.monster-margin-end-3{margin-right:var(--monster-space-3)}.monster-margin-bottom-3{margin-bottom:var(--monster-space-3)}.monster-margin-start-3{margin-left:var(--monster-space-3)}.monster-padding-3{padding:var(--monster-space-3)}.monster-padding-top-3{padding-top:var(--monster-space-3)}.monster-padding-end-3{padding-right:var(--monster-space-3)}.monster-padding-bottom-3{padding-bottom:var(--monster-space-3)}.monster-padding-start-3{padding-left:var(--monster-space-3)}.monster-margin-4{margin:var(--monster-space-4)}.monster-margin-top-4{margin-top:var(--monster-space-4)}.monster-margin-end-4{margin-right:var(--monster-space-4)}.monster-margin-bottom-4{margin-bottom:var(--monster-space-4)}.monster-margin-start-4{margin-left:var(--monster-space-4)}.monster-padding-4{padding:var(--monster-space-4)}.monster-padding-top-4{padding-top:var(--monster-space-4)}.monster-padding-end-4{padding-right:var(--monster-space-4)}.monster-padding-bottom-4{padding-bottom:var(--monster-space-4)}.monster-padding-start-4{padding-left:var(--monster-space-4)}.monster-margin-5{margin:var(--monster-space-5)}.monster-margin-top-5{margin-top:var(--monster-space-5)}.monster-margin-end-5{margin-right:var(--monster-space-5)}.monster-margin-bottom-5{margin-bottom:var(--monster-space-5)}.monster-margin-start-5{margin-left:var(--monster-space-5)}.monster-padding-5{padding:var(--monster-space-5)}.monster-padding-top-5{padding-top:var(--monster-space-5)}.monster-padding-end-5{padding-right:var(--monster-space-5)}.monster-padding-bottom-5{padding-bottom:var(--monster-space-5)}.monster-padding-start-5{padding-left:var(--monster-space-5)}.monster-margin-6{margin:var(--monster-space-6)}.monster-margin-top-6{margin-top:var(--monster-space-6)}.monster-margin-end-6{margin-right:var(--monster-space-6)}.monster-margin-bottom-6{margin-bottom:var(--monster-space-6)}.monster-margin-start-6{margin-left:var(--monster-space-6)}.monster-padding-6{padding:var(--monster-space-6)}.monster-padding-top-6{padding-top:var(--monster-space-6)}.monster-padding-end-6{padding-right:var(--monster-space-6)}.monster-padding-bottom-6{padding-bottom:var(--monster-space-6)}.monster-padding-start-6{padding-left:var(--monster-space-6)}.monster-margin-7{margin:var(--monster-space-7)}.monster-margin-top-7{margin-top:var(--monster-space-7)}.monster-margin-end-7{margin-right:var(--monster-space-7)}.monster-margin-bottom-7{margin-bottom:var(--monster-space-7)}.monster-margin-start-7{margin-left:var(--monster-space-7)}.monster-padding-7{padding:var(--monster-space-7)}.monster-padding-top-7{padding-top:var(--monster-space-7)}.monster-padding-end-7{padding-right:var(--monster-space-7)}.monster-padding-bottom-7{padding-bottom:var(--monster-space-7)}.monster-padding-start-7{padding-left:var(--monster-space-7)}div[data-monster-role=popper]{align-content:center;background:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);box-sizing:border-box;color:var(--monster-color-primary-1);display:none;justify-content:space-between;left:0;padding:1.1em;position:absolute;top:0;width:-moz-max-content;width:max-content;z-index:var(--monster-z-index-modal)}div[data-monster-role=popper] div[data-monster-role=arrow]{background:var(--monster-bg-color-primary-1);height:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);pointer-events:none;position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);z-index:-1}[data-monster-role=container]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:4 0 90%;min-height:1.4em;overflow:auto;scrollbar-color:var(--monster-color-primary-1) var(--monster-bg-color-primary-1);scrollbar-width:thin;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100%}.d-none{display:none!important}div[data-monster-role=no-options] span,div[data-monster-role=remote-info] span{text-wrap:balance}div[data-monster-role=control]{display:flex;height:100%;position:relative}[data-monster-role=container].open{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\")}[data-monster-role=container].clear,[data-monster-role=container].open{background-color:var(--monster-bg-color-primary-2);-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:.8em;mask-size:.8em}[data-monster-role=container].clear{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}[data-monster-role=control]{accent-color:var(--monster-color-secondary-2);background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-theme-control-border-color);-o-border-image:initial;border-image:initial;border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);box-sizing:border-box;color:var(--monster-color-primary-1);display:flex;font-family:inherit;font-size:100%;margin:0;outline:none;padding:.4rem .6rem;width:-webkit-fill-available;width:-moz-available;width:fill-available}@media (prefers-color-scheme:light){[data-monster-role=control]{background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-1)}[data-monster-role=control]:focus{outline:1px dashed var(--monster-color-selection-4);outline-offset:2px}}[data-monster-role=control]:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}div[data-monster-role=selection]{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;gap:5px;justify-content:flex-start;margin:5px}[data-monster-role=option-control]{margin-right:8px}[data-monster-role=badge]{display:inline-flex}[data-monster-role=badge-label]{align-content:center;align-items:center;display:flex;flex-direction:row;gap:7px;justify-content:space-between}[data-monster-role=filter],[data-monster-role=popper-filter]{display:flex;flex-grow:200;order:99999999;visibility:hidden}[data-monster-role=filter].active{background-color:var(--monster-bg-color-primary-2);border:0;border-color:var(--monster-bg-color-primary-3);border-bottom:1px solid var(--monster-bg-color-primary-3);color:var(--monster-color-primary-2);min-width:40%;outline:none;visibility:visible}.active[data-monster-role=filter][name=popper-filter]{height:1.5em;margin:2.5em;padding:2px;width:calc(100% - var(--monster-border-width)*2)}.option-filter-control{align-items:center;background-color:var(--monster-bg-color-primary-2);display:flex;height:2.5em;margin:-1.1em -1.1em .3em}[data-monster-role=remove-badge]{background-color:var(--monster-bg-color-primary-2);height:16px;margin-left:5px;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");order:2}[data-monster-role=remove-badge],[data-monster-role=status-or-remove-badges]{-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:.8em;mask-size:.8em;min-height:16px;width:16px}[data-monster-role=status-or-remove-badges]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}.open[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\")}.empty[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-dash-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-dash-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8'/%3E%3C/svg%3E\")}.clear[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}.error[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-error-1);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\")}@media (prefers-color-scheme:dark){.error[data-monster-role=status-or-remove-badges]{background-color:var(--monster-color-error-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\")}}.loading[data-monster-role=status-or-remove-badges]{animation-duration:1s;animation-iteration-count:infinite;animation-name:activity;animation-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='activity' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='activity' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E\")}@keyframes activity{0%{transform:scale(1)}50%{transform:scale(.1)}to{transform:scale(1)}}[data-monster-role=options]{box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;scrollbar-color:var(--monster-color-primary-1) var(--monster-bg-color-primary-1);scrollbar-width:thin;transition:height .3s ease}[data-monster-role=option]{align-items:center;box-sizing:border-box;display:flex;padding:6px 5px}[data-monster-role=option] label{align-items:center;display:flex;flex-direction:row;justify-content:flex-start;width:100%}[data-monster-role=option] label>div{align-items:center;display:flex;flex-direction:row;justify-content:space-between;outline:none;width:100%}.selected{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=option][data-monster-filtered=true],[data-monster-role=option][data-monster-visibility=hidden]{display:none}[data-monster-role=option][data-monster-focused=true]{outline:1px dashed var(--monster-color-selection-2);outline-offset:-2px}@media (prefers-color-scheme:dark){[data-monster-role=option][data-monster-focused=true]{outline:1px dashed var(--monster-color-selection-4)}}[data-monster-role=filter]::-moz-placeholder{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=filter]::placeholder{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=option]>input:focus,[data-monster-role=option]>label:focus{outline:none}[data-monster-role=selection-messages]:empty:before,[data-monster-role=summary-messages]:empty:before{content:\"\u00A0\"}.in-button-bar{border-color:var(--monster-bg-color-primary-4)!important;border-style:var(--monster-border-style)!important;border-width:var(--monster-border-width)!important}[data-monster-role=pagination]::part(nav){justify-content:flex-start}[data-monster-role=pagination]::part(list){margin-bottom:0;margin-top:0}
29
- }`,
30
- 0,
31
- );
28
+ }`, 0);
32
29
  } catch (e) {
33
- addAttributeToken(
34
- document.getRootNode().querySelector("html"),
35
- ATTRIBUTE_ERRORMESSAGE,
36
- e + "",
37
- );
30
+ addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
38
31
  }