@y14e/tabs 1.3.6 → 1.3.7

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) => {
@@ -618,7 +630,7 @@ function isFocusable(element) {
618
630
  * Tabs
619
631
  * WAI-ARIA compliant tabs pattern implementation in TypeScript.
620
632
  *
621
- * @version 1.3.6
633
+ * @version 1.3.7
622
634
  * @author Yusuke Kamiyamane
623
635
  * @license MIT
624
636
  * @copyright Copyright (c) Yusuke Kamiyamane
@@ -630,7 +642,7 @@ function isFocusable(element) {
630
642
  (**
631
643
  * Attributes Utils
632
644
  *
633
- * @version 1.0.0
645
+ * @version 1.0.5
634
646
  * @author Yusuke Kamiyamane
635
647
  * @license MIT
636
648
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Tabs
3
3
  * WAI-ARIA compliant tabs pattern implementation in TypeScript.
4
4
  *
5
- * @version 1.3.6
5
+ * @version 1.3.7
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
  * Tabs
3
3
  * WAI-ARIA compliant tabs pattern implementation in TypeScript.
4
4
  *
5
- * @version 1.3.6
5
+ * @version 1.3.7
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) => {
@@ -616,7 +628,7 @@ function isFocusable(element) {
616
628
  * Tabs
617
629
  * WAI-ARIA compliant tabs pattern implementation in TypeScript.
618
630
  *
619
- * @version 1.3.6
631
+ * @version 1.3.7
620
632
  * @author Yusuke Kamiyamane
621
633
  * @license MIT
622
634
  * @copyright Copyright (c) Yusuke Kamiyamane
@@ -628,7 +640,7 @@ function isFocusable(element) {
628
640
  (**
629
641
  * Attributes Utils
630
642
  *
631
- * @version 1.0.0
643
+ * @version 1.0.5
632
644
  * @author Yusuke Kamiyamane
633
645
  * @license MIT
634
646
  * @copyright Copyright (c) Yusuke Kamiyamane
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@y14e/tabs",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "WAI-ARIA compliant tabs pattern implementation in TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "homepage": "https://github.com/y14e/tabs#readme",
44
44
  "devDependencies": {
45
- "@y14e/attributes-utils": "^1.0.0",
45
+ "@y14e/attributes-utils": "^1.0.5",
46
46
  "bun-types": "latest",
47
47
  "tsup": "^8.0.0",
48
48
  "typescript": "^5.6.0",