@y14e/accordion 1.2.8 → 1.2.9

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/dist/index.cjs CHANGED
@@ -1,29 +1,41 @@
1
1
  'use strict';
2
2
 
3
3
  // node_modules/@y14e/attributes-utils/dist/index.js
4
- function addTokenToAttribute(element, attribute, token) {
5
- const tokens = new Set(
6
- element.getAttribute(attribute)?.trim().split(/\s+/) ?? []
7
- );
8
- tokens.add(token);
9
- element.setAttribute(attribute, [...tokens].join(" "));
4
+ var defaultParser = (value) => value.split(/\s+/);
5
+ var defaultSerializer = (tokens) => tokens.join(" ");
6
+ function addTokenToAttribute(element, attribute, token, options = {}) {
7
+ const {
8
+ caseInsensitive = false,
9
+ parse = defaultParser,
10
+ serialize = defaultSerializer
11
+ } = options;
12
+ const value = element.getAttribute(attribute)?.trim();
13
+ const tokens = value ? parse(value).filter(Boolean) : [];
14
+ if (caseInsensitive) {
15
+ const lower = token.toLowerCase();
16
+ if (tokens.some((token2) => token2.toLowerCase() === lower)) {
17
+ return;
18
+ }
19
+ tokens.push(token);
20
+ element.setAttribute(attribute, serialize(tokens));
21
+ return;
22
+ }
23
+ const set = new Set(tokens);
24
+ set.add(token);
25
+ element.setAttribute(attribute, serialize([...set]));
10
26
  }
11
27
  var snapshots = /* @__PURE__ */ new WeakMap();
12
28
  function restoreAttributes(elements) {
13
- elements.forEach((element) => {
29
+ for (const element of elements) {
14
30
  const snapshot = snapshots.get(element);
15
31
  if (!snapshot) {
16
- return;
32
+ continue;
17
33
  }
18
34
  for (const [attribute, value] of snapshot.entries()) {
19
- if (value === null) {
20
- element.removeAttribute(attribute);
21
- } else {
22
- element.setAttribute(attribute, value);
23
- }
35
+ value === null ? element.removeAttribute(attribute) : element.setAttribute(attribute, value);
24
36
  }
25
37
  snapshots.delete(element);
26
- });
38
+ }
27
39
  }
28
40
  function saveAttributes(elements, attributes) {
29
41
  elements.forEach((element) => {
@@ -229,7 +241,7 @@ var Accordion = class _Accordion {
229
241
  if (!binding) {
230
242
  return;
231
243
  }
232
- binding.trigger.ariaExpanded !== "true" && this.#toggle(binding.trigger, true, true);
244
+ binding.trigger.ariaExpanded === "false" && this.#toggle(binding.trigger, true, true);
233
245
  };
234
246
  #toggle(trigger, isOpen, isMatch = false) {
235
247
  if (trigger.ariaExpanded === String(isOpen)) {
@@ -339,7 +351,7 @@ function waitAnimationFinish(animation) {
339
351
  * Accordion
340
352
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
341
353
  *
342
- * @version 1.2.8
354
+ * @version 1.2.9
343
355
  * @author Yusuke Kamiyamane
344
356
  * @license MIT
345
357
  * @copyright Copyright (c) Yusuke Kamiyamane
@@ -351,7 +363,7 @@ function waitAnimationFinish(animation) {
351
363
  (**
352
364
  * Attributes Utils
353
365
  *
354
- * @version 1.0.0
366
+ * @version 1.0.5
355
367
  * @author Yusuke Kamiyamane
356
368
  * @license MIT
357
369
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Accordion
3
3
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
4
4
  *
5
- * @version 1.2.8
5
+ * @version 1.2.9
6
6
  * @author Yusuke Kamiyamane
7
7
  * @license MIT
8
8
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Accordion
3
3
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
4
4
  *
5
- * @version 1.2.8
5
+ * @version 1.2.9
6
6
  * @author Yusuke Kamiyamane
7
7
  * @license MIT
8
8
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.js CHANGED
@@ -1,27 +1,39 @@
1
1
  // node_modules/@y14e/attributes-utils/dist/index.js
2
- function addTokenToAttribute(element, attribute, token) {
3
- const tokens = new Set(
4
- element.getAttribute(attribute)?.trim().split(/\s+/) ?? []
5
- );
6
- tokens.add(token);
7
- element.setAttribute(attribute, [...tokens].join(" "));
2
+ var defaultParser = (value) => value.split(/\s+/);
3
+ var defaultSerializer = (tokens) => tokens.join(" ");
4
+ function addTokenToAttribute(element, attribute, token, options = {}) {
5
+ const {
6
+ caseInsensitive = false,
7
+ parse = defaultParser,
8
+ serialize = defaultSerializer
9
+ } = options;
10
+ const value = element.getAttribute(attribute)?.trim();
11
+ const tokens = value ? parse(value).filter(Boolean) : [];
12
+ if (caseInsensitive) {
13
+ const lower = token.toLowerCase();
14
+ if (tokens.some((token2) => token2.toLowerCase() === lower)) {
15
+ return;
16
+ }
17
+ tokens.push(token);
18
+ element.setAttribute(attribute, serialize(tokens));
19
+ return;
20
+ }
21
+ const set = new Set(tokens);
22
+ set.add(token);
23
+ element.setAttribute(attribute, serialize([...set]));
8
24
  }
9
25
  var snapshots = /* @__PURE__ */ new WeakMap();
10
26
  function restoreAttributes(elements) {
11
- elements.forEach((element) => {
27
+ for (const element of elements) {
12
28
  const snapshot = snapshots.get(element);
13
29
  if (!snapshot) {
14
- return;
30
+ continue;
15
31
  }
16
32
  for (const [attribute, value] of snapshot.entries()) {
17
- if (value === null) {
18
- element.removeAttribute(attribute);
19
- } else {
20
- element.setAttribute(attribute, value);
21
- }
33
+ value === null ? element.removeAttribute(attribute) : element.setAttribute(attribute, value);
22
34
  }
23
35
  snapshots.delete(element);
24
- });
36
+ }
25
37
  }
26
38
  function saveAttributes(elements, attributes) {
27
39
  elements.forEach((element) => {
@@ -227,7 +239,7 @@ var Accordion = class _Accordion {
227
239
  if (!binding) {
228
240
  return;
229
241
  }
230
- binding.trigger.ariaExpanded !== "true" && this.#toggle(binding.trigger, true, true);
242
+ binding.trigger.ariaExpanded === "false" && this.#toggle(binding.trigger, true, true);
231
243
  };
232
244
  #toggle(trigger, isOpen, isMatch = false) {
233
245
  if (trigger.ariaExpanded === String(isOpen)) {
@@ -337,7 +349,7 @@ function waitAnimationFinish(animation) {
337
349
  * Accordion
338
350
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
339
351
  *
340
- * @version 1.2.8
352
+ * @version 1.2.9
341
353
  * @author Yusuke Kamiyamane
342
354
  * @license MIT
343
355
  * @copyright Copyright (c) Yusuke Kamiyamane
@@ -349,7 +361,7 @@ function waitAnimationFinish(animation) {
349
361
  (**
350
362
  * Attributes Utils
351
363
  *
352
- * @version 1.0.0
364
+ * @version 1.0.5
353
365
  * @author Yusuke Kamiyamane
354
366
  * @license MIT
355
367
  * @copyright Copyright (c) Yusuke Kamiyamane
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@y14e/accordion",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "description": "WAI-ARIA compliant accordion pattern implementation in TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "homepage": "https://github.com/y14e/accordion#readme",
45
45
  "devDependencies": {
46
- "@y14e/attributes-utils": "^1.0.0",
46
+ "@y14e/attributes-utils": "^1.0.5",
47
47
  "bun-types": "latest",
48
48
  "tsup": "^8.0.0",
49
49
  "typescript": "^5.6.0",