@studiometa/js-toolkit 2.4.7 → 2.6.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.
Files changed (57) hide show
  1. package/Base/index.cjs +15 -21
  2. package/Base/index.d.ts +5 -5
  3. package/Base/index.js +5 -5
  4. package/Base/managers/AbstractManager.cjs +2 -2
  5. package/Base/managers/AbstractManager.d.ts +11 -21
  6. package/Base/managers/AbstractManager.js +1 -1
  7. package/Base/managers/ChildrenManager.cjs +3 -9
  8. package/Base/managers/ChildrenManager.d.ts +2 -2
  9. package/Base/managers/ChildrenManager.js +2 -2
  10. package/Base/managers/EventsManager.cjs +49 -9
  11. package/Base/managers/EventsManager.d.ts +26 -2
  12. package/Base/managers/EventsManager.js +48 -8
  13. package/Base/managers/OptionsManager.cjs +6 -8
  14. package/Base/managers/OptionsManager.d.ts +42 -55
  15. package/Base/managers/OptionsManager.js +4 -6
  16. package/Base/managers/RefsManager.cjs +9 -14
  17. package/Base/managers/RefsManager.d.ts +3 -11
  18. package/Base/managers/RefsManager.js +7 -6
  19. package/Base/managers/ResponsiveOptionsManager.cjs +3 -9
  20. package/Base/managers/ResponsiveOptionsManager.d.ts +8 -4
  21. package/Base/managers/ResponsiveOptionsManager.js +2 -2
  22. package/Base/managers/ServicesManager.cjs +19 -36
  23. package/Base/managers/ServicesManager.d.ts +33 -58
  24. package/Base/managers/ServicesManager.js +11 -22
  25. package/decorators/withResponsiveOptions.cjs +2 -8
  26. package/decorators/withResponsiveOptions.js +1 -1
  27. package/helpers/getClosestParent.cjs +48 -0
  28. package/helpers/getClosestParent.d.ts +5 -0
  29. package/helpers/getClosestParent.js +20 -0
  30. package/helpers/index.cjs +3 -1
  31. package/helpers/index.d.ts +2 -1
  32. package/helpers/index.js +11 -9
  33. package/package.json +1 -1
  34. package/services/drag.cjs +62 -37
  35. package/services/drag.js +62 -37
  36. package/utils/css/animate.cjs +29 -2
  37. package/utils/css/animate.d.ts +4 -24
  38. package/utils/css/animate.js +29 -2
  39. package/utils/css/classes.cjs +5 -2
  40. package/utils/css/classes.d.ts +6 -6
  41. package/utils/css/classes.js +5 -2
  42. package/utils/css/index.cjs +1 -1
  43. package/utils/css/index.d.ts +7 -7
  44. package/utils/css/styles.cjs +11 -8
  45. package/utils/css/styles.d.ts +4 -4
  46. package/utils/css/styles.js +11 -8
  47. package/utils/css/transform.cjs +5 -2
  48. package/utils/css/transform.d.ts +2 -2
  49. package/utils/css/transform.js +5 -2
  50. package/utils/css/transition.cjs +7 -1
  51. package/utils/css/transition.d.ts +5 -8
  52. package/utils/css/transition.js +7 -1
  53. package/utils/css/utils.cjs +31 -0
  54. package/utils/css/utils.d.ts +1 -0
  55. package/utils/css/utils.js +9 -0
  56. package/utils/index.cjs +1 -1
  57. package/utils/index.d.ts +19 -19
@@ -25,15 +25,18 @@ __export(classes_exports, {
25
25
  });
26
26
  module.exports = __toCommonJS(classes_exports);
27
27
  var import_is = require("../is.cjs");
28
+ var import_utils = require("./utils.cjs");
28
29
  function setClasses(element, classNames, method, forceToggle) {
29
30
  if (!element || !classNames) {
30
31
  return;
31
32
  }
32
33
  const normalizedClassNames = (0, import_is.isArray)(classNames) ? classNames : classNames.split(" ");
33
34
  if (method !== "toggle") {
34
- element.classList[method](...normalizedClassNames);
35
+ (0, import_utils.eachElements)(element, (el) => el.classList[method](...normalizedClassNames));
35
36
  } else {
36
- normalizedClassNames.forEach((className) => element.classList[method](className, forceToggle));
37
+ normalizedClassNames.forEach(
38
+ (className) => (0, import_utils.eachElements)(element, (el) => el.classList[method](className, forceToggle))
39
+ );
37
40
  }
38
41
  }
39
42
  function add(element, classNames) {
@@ -1,25 +1,25 @@
1
1
  /**
2
2
  * Add class names to an element.
3
3
  *
4
- * @param {HTMLElement} element The element to update.
4
+ * @param {Element|Element[]|NodeListOf<Element>} element The element to update.
5
5
  * @param {string|string[]} classNames A string of class names.
6
6
  * @returns {void}
7
7
  */
8
- export function add(element: HTMLElement, classNames: string | string[]): void;
8
+ export function add(element: Element | Element[] | NodeListOf<Element>, classNames: string | string[]): void;
9
9
  /**
10
10
  * Remove class names from an element.
11
11
  *
12
- * @param {HTMLElement} element The element to update.
12
+ * @param {Element|Element[]|NodeListOf<Element>} element The element to update.
13
13
  * @param {string|string[]} classNames A string of class names.
14
14
  * @returns {void}
15
15
  */
16
- export function remove(element: HTMLElement, classNames: string | string[]): void;
16
+ export function remove(element: Element | Element[] | NodeListOf<Element>, classNames: string | string[]): void;
17
17
  /**
18
18
  * Toggle class names from an element.
19
19
  *
20
- * @param {HTMLElement} element The element to update.
20
+ * @param {Element|Element[]|NodeListOf<Element>} element The element to update.
21
21
  * @param {string|string[]} classNames A string of class names.
22
22
  * @param {boolean} [force] Force toggle?
23
23
  * @returns {void}
24
24
  */
25
- export function toggle(element: HTMLElement, classNames: string | string[], force?: boolean): void;
25
+ export function toggle(element: Element | Element[] | NodeListOf<Element>, classNames: string | string[], force?: boolean): void;
@@ -1,13 +1,16 @@
1
1
  import { isArray } from "../is.js";
2
+ import { eachElements } from "./utils.js";
2
3
  function setClasses(element, classNames, method, forceToggle) {
3
4
  if (!element || !classNames) {
4
5
  return;
5
6
  }
6
7
  const normalizedClassNames = isArray(classNames) ? classNames : classNames.split(" ");
7
8
  if (method !== "toggle") {
8
- element.classList[method](...normalizedClassNames);
9
+ eachElements(element, (el) => el.classList[method](...normalizedClassNames));
9
10
  } else {
10
- normalizedClassNames.forEach((className) => element.classList[method](className, forceToggle));
11
+ normalizedClassNames.forEach(
12
+ (className) => eachElements(element, (el) => el.classList[method](className, forceToggle))
13
+ );
11
14
  }
12
15
  }
13
16
  function add(element, classNames) {
@@ -23,7 +23,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  ));
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
 
26
- // packages/js-toolkit/utils/css/index.js
26
+ // packages/js-toolkit/utils/css/index.ts
27
27
  var css_exports = {};
28
28
  __export(css_exports, {
29
29
  addClass: () => import_classes.add,
@@ -1,7 +1,7 @@
1
- export * from "./animate.js";
2
- export { default as getOffsetSizes } from "./getOffsetSizes.js";
3
- export { default as matrix } from "./matrix.js";
4
- export { default as transform } from "./transform.js";
5
- export { default as transition } from "./transition.js";
6
- export { add as addClass, remove as removeClass, toggle as toggleClass } from "./classes.js";
7
- export { add as addStyle, remove as removeStyle } from "./styles.js";
1
+ export * from './animate.js';
2
+ export { add as addClass, remove as removeClass, toggle as toggleClass } from './classes.js';
3
+ export { add as addStyle, remove as removeStyle } from './styles.js';
4
+ export { default as getOffsetSizes } from './getOffsetSizes.js';
5
+ export { default as matrix } from './matrix.js';
6
+ export { default as transform } from './transform.js';
7
+ export { default as transition } from './transition.js';
@@ -24,18 +24,21 @@ __export(styles_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(styles_exports);
26
26
  var import_is = require("../is.cjs");
27
- function setStyles(element, styles, method = "add") {
28
- if (!element || !styles || !(0, import_is.isObject)(styles)) {
27
+ var import_utils = require("./utils.cjs");
28
+ function setStyles(elementOrElements, styles, method = "add") {
29
+ if (!elementOrElements || !styles || !(0, import_is.isObject)(styles)) {
29
30
  return;
30
31
  }
31
- Object.entries(styles).forEach(([prop, value]) => {
32
- element.style[prop] = method === "add" ? value : "";
32
+ (0, import_utils.eachElements)(elementOrElements, (el) => {
33
+ Object.entries(styles).forEach(([prop, value]) => {
34
+ el.style[prop] = method === "add" ? value : "";
35
+ });
33
36
  });
34
37
  }
35
- function add(element, styles) {
36
- setStyles(element, styles);
38
+ function add(elementOrElements, styles) {
39
+ setStyles(elementOrElements, styles);
37
40
  }
38
- function remove(element, styles) {
39
- setStyles(element, styles, "remove");
41
+ function remove(elementOrElements, styles) {
42
+ setStyles(elementOrElements, styles, "remove");
40
43
  }
41
44
  if (module.exports.default) module.exports = module.exports.default;
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Add styles to an element.
3
3
  *
4
- * @param {HTMLElement} element The element to update.
4
+ * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.
5
5
  * @param {Partial<CSSStyleDeclaration>} styles A string of class names.
6
6
  * @returns {void}
7
7
  */
8
- export function add(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
8
+ export function add(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, styles: Partial<CSSStyleDeclaration>): void;
9
9
  /**
10
10
  * Remove class names from an element.
11
11
  *
12
- * @param {HTMLElement} element The element to update.
12
+ * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.
13
13
  * @param {Partial<CSSStyleDeclaration>} styles A string of class names.
14
14
  * @returns {void}
15
15
  */
16
- export function remove(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
16
+ export function remove(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, styles: Partial<CSSStyleDeclaration>): void;
@@ -1,17 +1,20 @@
1
1
  import { isObject } from "../is.js";
2
- function setStyles(element, styles, method = "add") {
3
- if (!element || !styles || !isObject(styles)) {
2
+ import { eachElements } from "./utils.js";
3
+ function setStyles(elementOrElements, styles, method = "add") {
4
+ if (!elementOrElements || !styles || !isObject(styles)) {
4
5
  return;
5
6
  }
6
- Object.entries(styles).forEach(([prop, value]) => {
7
- element.style[prop] = method === "add" ? value : "";
7
+ eachElements(elementOrElements, (el) => {
8
+ Object.entries(styles).forEach(([prop, value]) => {
9
+ el.style[prop] = method === "add" ? value : "";
10
+ });
8
11
  });
9
12
  }
10
- function add(element, styles) {
11
- setStyles(element, styles);
13
+ function add(elementOrElements, styles) {
14
+ setStyles(elementOrElements, styles);
12
15
  }
13
- function remove(element, styles) {
14
- setStyles(element, styles, "remove");
16
+ function remove(elementOrElements, styles) {
17
+ setStyles(elementOrElements, styles, "remove");
15
18
  }
16
19
  export {
17
20
  add,
@@ -24,6 +24,7 @@ __export(transform_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(transform_exports);
26
26
  var import_is = require("../is.cjs");
27
+ var import_utils = require("./utils.cjs");
27
28
  var TRANSFORM_PROPS = [
28
29
  "x",
29
30
  "y",
@@ -40,7 +41,7 @@ var TRANSFORM_PROPS = [
40
41
  "skewX",
41
42
  "skewY"
42
43
  ];
43
- function transform(element, props) {
44
+ function transform(elementOrElements, props) {
44
45
  var _a, _b, _c;
45
46
  let value = "";
46
47
  if ((0, import_is.isDefined)(props.x) || (0, import_is.isDefined)(props.y) || (0, import_is.isDefined)(props.z)) {
@@ -82,7 +83,9 @@ function transform(element, props) {
82
83
  value += `skewY(${props.skewY}deg) `;
83
84
  }
84
85
  }
85
- element.style.transform = value;
86
+ (0, import_utils.eachElements)(elementOrElements, (element) => {
87
+ element.style.transform = value;
88
+ });
86
89
  return value;
87
90
  }
88
91
  if (module.exports.default) module.exports = module.exports.default;
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Generate a CSS transform.
3
3
  *
4
- * @param {HTMLElement} element
4
+ * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements
5
5
  * @param {TransformProps} props
6
6
  * @returns {string}
7
7
  */
8
- export default function transform(element: HTMLElement, props: TransformProps): string;
8
+ export default function transform(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, props: TransformProps): string;
9
9
  /**
10
10
  * @typedef {Partial<{
11
11
  * x: number;
@@ -1,4 +1,5 @@
1
1
  import { isDefined } from "../is.js";
2
+ import { eachElements } from "./utils.js";
2
3
  const TRANSFORM_PROPS = [
3
4
  "x",
4
5
  "y",
@@ -15,7 +16,7 @@ const TRANSFORM_PROPS = [
15
16
  "skewX",
16
17
  "skewY"
17
18
  ];
18
- function transform(element, props) {
19
+ function transform(elementOrElements, props) {
19
20
  var _a, _b, _c;
20
21
  let value = "";
21
22
  if (isDefined(props.x) || isDefined(props.y) || isDefined(props.z)) {
@@ -57,7 +58,9 @@ function transform(element, props) {
57
58
  value += `skewY(${props.skewY}deg) `;
58
59
  }
59
60
  }
60
- element.style.transform = value;
61
+ eachElements(elementOrElements, (element) => {
62
+ element.style.transform = value;
63
+ });
61
64
  return value;
62
65
  }
63
66
  export {
@@ -39,6 +39,7 @@ var classes = __toESM(require("./classes.cjs"), 1);
39
39
  var styles = __toESM(require("./styles.cjs"), 1);
40
40
  var import_is = require("../is.cjs");
41
41
  var import_has = require("../has.cjs");
42
+ var import_utils = require("./utils.cjs");
42
43
  var cache = /* @__PURE__ */ new WeakMap();
43
44
  var Transition = class {
44
45
  constructor(element) {
@@ -101,7 +102,7 @@ function end(element, classesOrStyles, mode = "remove") {
101
102
  trs.isTransitioning = false;
102
103
  trs.transitionEndHandler = null;
103
104
  }
104
- async function transition(element, name, endMode = "remove") {
105
+ async function singleTransition(element, name, endMode = "remove") {
105
106
  const classesOrStyles = (0, import_is.isString)(name) ? {
106
107
  from: `${name}-from`,
107
108
  active: `${name}-active`,
@@ -121,4 +122,9 @@ async function transition(element, name, endMode = "remove") {
121
122
  end(element, classesOrStyles, endMode);
122
123
  return Promise.resolve();
123
124
  }
125
+ async function transition(elementOrElements, name, endMode = "remove") {
126
+ await Promise.all(
127
+ (0, import_utils.eachElements)(elementOrElements, (element) => singleTransition(element, name, endMode))
128
+ );
129
+ }
124
130
  if (module.exports.default) module.exports = module.exports.default;
@@ -9,15 +9,12 @@ export function setClassesOrStyles(element: HTMLElement, classesOrStyles: Classe
9
9
  /**
10
10
  * Manage CSS transition with class.
11
11
  *
12
- * This is heavily inspired by the Vue `<transition>` component
13
- * and the `@barba/css` package, many thanks to them!
14
- *
15
- * @param {HTMLElement} element The target element.
16
- * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.
17
- * @param {string} endMode Whether to remove or keep the `to` classes/styles
18
- * @returns {Promise<void>} A promise resolving at the end of the transition.
12
+ * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The target element or elements.
13
+ * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.
14
+ * @param {string} endMode Whether to remove or keep the `to` classes/styles
15
+ * @returns {Promise<void>} A promise resolving at the end of the transition.
19
16
  */
20
- export default function transition(element: HTMLElement, name: string | TransitionStyles, endMode?: string): Promise<void>;
17
+ export default function transition(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, name: string | TransitionStyles, endMode?: string): Promise<void>;
21
18
  export type ClassesOrStyles = string | string[] | Partial<CSSStyleDeclaration>;
22
19
  export type TransitionStyles = {
23
20
  from?: ClassesOrStyles;
@@ -9,6 +9,7 @@ import * as classes from "./classes.js";
9
9
  import * as styles from "./styles.js";
10
10
  import { isArray, isString } from "../is.js";
11
11
  import { hasWindow } from "../has.js";
12
+ import { eachElements } from "./utils.js";
12
13
  const cache = /* @__PURE__ */ new WeakMap();
13
14
  class Transition {
14
15
  constructor(element) {
@@ -71,7 +72,7 @@ function end(element, classesOrStyles, mode = "remove") {
71
72
  trs.isTransitioning = false;
72
73
  trs.transitionEndHandler = null;
73
74
  }
74
- async function transition(element, name, endMode = "remove") {
75
+ async function singleTransition(element, name, endMode = "remove") {
75
76
  const classesOrStyles = isString(name) ? {
76
77
  from: `${name}-from`,
77
78
  active: `${name}-active`,
@@ -91,6 +92,11 @@ async function transition(element, name, endMode = "remove") {
91
92
  end(element, classesOrStyles, endMode);
92
93
  return Promise.resolve();
93
94
  }
95
+ async function transition(elementOrElements, name, endMode = "remove") {
96
+ await Promise.all(
97
+ eachElements(elementOrElements, (element) => singleTransition(element, name, endMode))
98
+ );
99
+ }
94
100
  export {
95
101
  transition as default,
96
102
  setClassesOrStyles
@@ -0,0 +1,31 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/js-toolkit/utils/css/utils.ts
20
+ var utils_exports = {};
21
+ __export(utils_exports, {
22
+ eachElements: () => eachElements
23
+ });
24
+ module.exports = __toCommonJS(utils_exports);
25
+ function eachElements(elementOrElements, callback) {
26
+ if (elementOrElements instanceof Node) {
27
+ return [callback(elementOrElements)];
28
+ }
29
+ return Array.from(elementOrElements).map(callback);
30
+ }
31
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1 @@
1
+ export declare function eachElements<S extends Node = Node, T = void>(elementOrElements: S | S[] | NodeListOf<S>, callback: (element: S, index?: number, elements?: S[]) => T): T[];
@@ -0,0 +1,9 @@
1
+ function eachElements(elementOrElements, callback) {
2
+ if (elementOrElements instanceof Node) {
3
+ return [callback(elementOrElements)];
4
+ }
5
+ return Array.from(elementOrElements).map(callback);
6
+ }
7
+ export {
8
+ eachElements
9
+ };
package/utils/index.cjs CHANGED
@@ -23,7 +23,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  ));
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
 
26
- // packages/js-toolkit/utils/index.js
26
+ // packages/js-toolkit/utils/index.ts
27
27
  var utils_exports = {};
28
28
  __export(utils_exports, {
29
29
  debounce: () => import_debounce.default,
package/utils/index.d.ts CHANGED
@@ -1,19 +1,19 @@
1
- export { default as debounce } from "./debounce.js";
2
- export { default as focusTrap } from "./focusTrap.js";
3
- export { default as keyCodes } from "./keyCodes.js";
4
- export { default as memoize } from "./memoize.js";
5
- export { nextFrame } from "./nextFrame.js";
6
- export { default as nextTick } from "./nextTick.js";
7
- export { default as nextMicrotask } from "./nextMicrotask.js";
8
- export { default as throttle } from "./throttle.js";
9
- export { default as scrollTo } from "./scrollTo.js";
10
- export * from "./is.js";
11
- export * from "./has.js";
12
- export * from "./css/index.js";
13
- export * from "./collide/index.js";
14
- export * from "./math/index.js";
15
- export * from "./string/index.js";
16
- export * from "./scheduler.js";
17
- export * from "./noop.js";
18
- export { tween } from "./tween.js";
19
- export { objectToURLSearchParams, push as historyPush, replace as historyReplace } from "./history.js";
1
+ export { default as debounce } from './debounce.js';
2
+ export { default as focusTrap } from './focusTrap.js';
3
+ export { default as keyCodes } from './keyCodes.js';
4
+ export { default as memoize } from './memoize.js';
5
+ export { nextFrame } from './nextFrame.js';
6
+ export { default as nextTick } from './nextTick.js';
7
+ export { default as nextMicrotask } from './nextMicrotask.js';
8
+ export { default as throttle } from './throttle.js';
9
+ export { default as scrollTo } from './scrollTo.js';
10
+ export * from './is.js';
11
+ export * from './has.js';
12
+ export * from './css/index.js';
13
+ export { objectToURLSearchParams, push as historyPush, replace as historyReplace, } from './history.js';
14
+ export * from './collide/index.js';
15
+ export * from './math/index.js';
16
+ export * from './string/index.js';
17
+ export * from './scheduler.js';
18
+ export * from './noop.js';
19
+ export { tween } from './tween.js';