@studiometa/ui 0.1.1 → 0.2.2

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 (135) hide show
  1. package/README.md +37 -1
  2. package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +52 -0
  3. package/atoms/AnchorScrollTo/AnchorScrollTo.d.ts +31 -0
  4. package/atoms/AnchorScrollTo/AnchorScrollTo.js +26 -0
  5. package/atoms/Cursor/Cursor.cjs +129 -0
  6. package/{Cursor.d.ts → atoms/Cursor/Cursor.d.ts} +0 -0
  7. package/atoms/Cursor/Cursor.js +103 -0
  8. package/atoms/Figure/Figure.cjs +53 -0
  9. package/atoms/Figure/Figure.d.ts +31 -0
  10. package/atoms/Figure/Figure.js +27 -0
  11. package/atoms/LargeText/LargeText.cjs +74 -0
  12. package/atoms/LargeText/LargeText.d.ts +71 -0
  13. package/atoms/LargeText/LargeText.js +48 -0
  14. package/atoms/LazyInclude/LazyInclude.cjs +72 -0
  15. package/atoms/LazyInclude/LazyInclude.d.ts +64 -0
  16. package/atoms/LazyInclude/LazyInclude.js +46 -0
  17. package/atoms/Prefetch/AbstractPrefetch.cjs +84 -0
  18. package/atoms/Prefetch/AbstractPrefetch.d.ts +52 -0
  19. package/atoms/Prefetch/AbstractPrefetch.js +58 -0
  20. package/atoms/Prefetch/PrefetchWhenOver.cjs +65 -0
  21. package/atoms/Prefetch/PrefetchWhenOver.d.ts +21 -0
  22. package/atoms/Prefetch/PrefetchWhenOver.js +35 -0
  23. package/atoms/Prefetch/PrefetchWhenVisible.cjs +66 -0
  24. package/atoms/Prefetch/PrefetchWhenVisible.d.ts +21 -0
  25. package/atoms/Prefetch/PrefetchWhenVisible.js +36 -0
  26. package/atoms/Prefetch/index.cjs +40 -0
  27. package/atoms/Prefetch/index.d.ts +3 -0
  28. package/atoms/Prefetch/index.js +8 -0
  29. package/atoms/index.cjs +45 -0
  30. package/atoms/index.d.ts +6 -0
  31. package/atoms/index.js +13 -0
  32. package/index.cjs +26 -0
  33. package/index.d.ts +3 -6
  34. package/index.js +3 -6
  35. package/molecules/Accordion/Accordion.cjs +65 -0
  36. package/{Accordion/index.d.ts → molecules/Accordion/Accordion.d.ts} +5 -6
  37. package/molecules/Accordion/Accordion.js +35 -0
  38. package/molecules/Accordion/AccordionCore.cjs +60 -0
  39. package/{Accordion/Accordion.d.ts → molecules/Accordion/AccordionCore.d.ts} +0 -0
  40. package/molecules/Accordion/AccordionCore.js +34 -0
  41. package/molecules/Accordion/AccordionItem.cjs +208 -0
  42. package/{Accordion → molecules/Accordion}/AccordionItem.d.ts +11 -13
  43. package/molecules/Accordion/AccordionItem.js +178 -0
  44. package/molecules/Modal/Modal.cjs +176 -0
  45. package/{Modal.d.ts → molecules/Modal/Modal.d.ts} +9 -9
  46. package/molecules/Modal/Modal.js +150 -0
  47. package/molecules/Modal/ModalWithTransition.cjs +100 -0
  48. package/molecules/Modal/ModalWithTransition.d.ts +29 -0
  49. package/molecules/Modal/ModalWithTransition.js +69 -0
  50. package/molecules/Panel/Panel.cjs +148 -0
  51. package/molecules/Panel/Panel.d.ts +42 -0
  52. package/molecules/Panel/Panel.js +117 -0
  53. package/molecules/Slider/AbstractSliderChild.cjs +74 -0
  54. package/molecules/Slider/AbstractSliderChild.d.ts +55 -0
  55. package/molecules/Slider/AbstractSliderChild.js +43 -0
  56. package/molecules/Slider/Slider.cjs +240 -0
  57. package/molecules/Slider/Slider.d.ts +245 -0
  58. package/molecules/Slider/Slider.js +209 -0
  59. package/molecules/Slider/SliderBtn.cjs +65 -0
  60. package/molecules/Slider/SliderBtn.d.ts +31 -0
  61. package/molecules/Slider/SliderBtn.js +34 -0
  62. package/molecules/Slider/SliderCount.cjs +50 -0
  63. package/molecules/Slider/SliderCount.d.ts +21 -0
  64. package/molecules/Slider/SliderCount.js +19 -0
  65. package/molecules/Slider/SliderDots.cjs +55 -0
  66. package/molecules/Slider/SliderDots.d.ts +33 -0
  67. package/molecules/Slider/SliderDots.js +24 -0
  68. package/molecules/Slider/SliderDrag.cjs +45 -0
  69. package/molecules/Slider/SliderDrag.d.ts +16 -0
  70. package/molecules/Slider/SliderDrag.js +19 -0
  71. package/molecules/Slider/SliderItem.cjs +130 -0
  72. package/molecules/Slider/SliderItem.d.ts +106 -0
  73. package/molecules/Slider/SliderItem.js +105 -0
  74. package/molecules/Slider/SliderProgress.cjs +54 -0
  75. package/molecules/Slider/SliderProgress.d.ts +27 -0
  76. package/molecules/Slider/SliderProgress.js +23 -0
  77. package/molecules/Slider/index.cjs +50 -0
  78. package/molecules/Slider/index.d.ts +8 -0
  79. package/molecules/Slider/index.js +18 -0
  80. package/molecules/Sticky/Sticky.cjs +133 -0
  81. package/molecules/Sticky/Sticky.d.ts +141 -0
  82. package/molecules/Sticky/Sticky.js +107 -0
  83. package/molecules/TableOfContent/TableOfContent.cjs +73 -0
  84. package/molecules/TableOfContent/TableOfContent.d.ts +59 -0
  85. package/molecules/TableOfContent/TableOfContent.js +42 -0
  86. package/molecules/TableOfContent/TableOfContentAnchor.cjs +65 -0
  87. package/molecules/TableOfContent/TableOfContentAnchor.d.ts +36 -0
  88. package/molecules/TableOfContent/TableOfContentAnchor.js +39 -0
  89. package/molecules/TableOfContent/index.cjs +38 -0
  90. package/molecules/TableOfContent/index.d.ts +2 -0
  91. package/molecules/TableOfContent/index.js +6 -0
  92. package/molecules/Tabs/Tabs.cjs +152 -0
  93. package/{Tabs.d.ts → molecules/Tabs/Tabs.d.ts} +2 -4
  94. package/molecules/Tabs/Tabs.js +126 -0
  95. package/molecules/index.cjs +50 -0
  96. package/molecules/index.d.ts +9 -0
  97. package/molecules/index.js +18 -0
  98. package/organisms/Frame/Frame.cjs +202 -0
  99. package/organisms/Frame/Frame.d.ts +119 -0
  100. package/organisms/Frame/Frame.js +171 -0
  101. package/organisms/Frame/FrameAnchor.cjs +48 -0
  102. package/organisms/Frame/FrameAnchor.d.ts +35 -0
  103. package/organisms/Frame/FrameAnchor.js +22 -0
  104. package/organisms/Frame/FrameForm.cjs +48 -0
  105. package/organisms/Frame/FrameForm.d.ts +32 -0
  106. package/organisms/Frame/FrameForm.js +22 -0
  107. package/organisms/Frame/FrameTarget.cjs +134 -0
  108. package/organisms/Frame/FrameTarget.d.ts +47 -0
  109. package/organisms/Frame/FrameTarget.js +109 -0
  110. package/organisms/Frame/index.cjs +42 -0
  111. package/organisms/Frame/index.d.ts +4 -0
  112. package/organisms/Frame/index.js +10 -0
  113. package/organisms/index.cjs +24 -0
  114. package/organisms/index.d.ts +1 -0
  115. package/organisms/index.js +1 -0
  116. package/package.json +2 -2
  117. package/primitives/Draggable/Draggable.cjs +64 -0
  118. package/{Draggable.d.ts → primitives/Draggable/Draggable.d.ts} +0 -0
  119. package/primitives/Draggable/Draggable.js +38 -0
  120. package/primitives/Sentinel/Sentinel.cjs +41 -0
  121. package/primitives/Sentinel/Sentinel.d.ts +12 -0
  122. package/primitives/Sentinel/Sentinel.js +15 -0
  123. package/primitives/Transition/Transition.cjs +71 -0
  124. package/primitives/Transition/Transition.d.ts +69 -0
  125. package/primitives/Transition/Transition.js +45 -0
  126. package/primitives/index.cjs +40 -0
  127. package/primitives/index.d.ts +3 -0
  128. package/primitives/index.js +8 -0
  129. package/Accordion/Accordion.js +0 -29
  130. package/Accordion/AccordionItem.js +0 -197
  131. package/Accordion/index.js +0 -12
  132. package/Cursor.js +0 -121
  133. package/Draggable.js +0 -31
  134. package/Modal.js +0 -167
  135. package/Tabs.js +0 -106
@@ -0,0 +1,105 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __publicField = (obj, key, value) => {
21
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
22
+ return value;
23
+ };
24
+ import { Base, withIntersectionObserver } from "@studiometa/js-toolkit";
25
+ import { matrix, damp } from "@studiometa/js-toolkit/utils";
26
+ class SliderItem extends withIntersectionObserver(Base, { threshold: [0, 1] }) {
27
+ constructor() {
28
+ super(...arguments);
29
+ __publicField(this, "isVisible", false);
30
+ __publicField(this, "x", 0);
31
+ __publicField(this, "dampedX", 0);
32
+ }
33
+ mounted() {
34
+ this.updateRectAdjustedWithX();
35
+ }
36
+ resized() {
37
+ this.updateRectAdjustedWithX();
38
+ }
39
+ destroyed() {
40
+ this.moveInstantly(0);
41
+ }
42
+ intersected([{ intersectionRatio, isIntersecting }]) {
43
+ if (intersectionRatio >= 1) {
44
+ this.$emit("is-fully-visible");
45
+ this.$el.setAttribute("aria-hidden", "false");
46
+ } else if (intersectionRatio > 0) {
47
+ this.$emit("is-partially-visible");
48
+ this.$el.setAttribute("aria-hidden", "true");
49
+ } else {
50
+ this.$emit("is-hidden");
51
+ this.$el.setAttribute("aria-hidden", "true");
52
+ }
53
+ this.isVisible = isIntersecting;
54
+ }
55
+ ticked() {
56
+ this.dampedX = damp(this.x, this.dampedX, 0.2, 1e-5);
57
+ this.$el.style.transform = `${matrix({
58
+ translateX: this.dampedX
59
+ })} translateZ(0px)`;
60
+ if (this.dampedX === this.x) {
61
+ this.$services.disable("ticked");
62
+ }
63
+ }
64
+ activate() {
65
+ this.$el.classList.add("is-active");
66
+ }
67
+ disactivate() {
68
+ this.$el.classList.remove("is-active");
69
+ }
70
+ move(targetPosition) {
71
+ this.x = targetPosition;
72
+ if (!this.$services.has("ticked")) {
73
+ this.$services.enable("ticked");
74
+ }
75
+ }
76
+ moveInstantly(targetPosition) {
77
+ this.x = targetPosition;
78
+ this.dampedX = targetPosition;
79
+ this.$el.style.transform = `${matrix({
80
+ translateX: targetPosition
81
+ })} translateZ(0px)`;
82
+ }
83
+ willBeVisible(targetPosition) {
84
+ return this.rect.x + targetPosition < window.innerWidth * 1.5 && this.rect.x + targetPosition + this.rect.width > window.innerWidth * -0.5;
85
+ }
86
+ willBeFullyVisible(targetPosition) {
87
+ return this.rect.x + targetPosition < window.innerWidth && this.rect.x + targetPosition > 0 && this.rect.x + targetPosition + this.rect.width < window.innerWidth && this.rect.x + targetPosition + this.rect.width > 0;
88
+ }
89
+ updateRectAdjustedWithX() {
90
+ const x = this.x * -1;
91
+ const rect = this.$el.getBoundingClientRect().toJSON();
92
+ this.rect = __spreadProps(__spreadValues({}, rect), {
93
+ left: rect.left + x,
94
+ right: rect.left + x + rect.width,
95
+ x: rect.left + x
96
+ });
97
+ }
98
+ }
99
+ __publicField(SliderItem, "config", {
100
+ name: "SliderItem",
101
+ emits: ["is-fully-visible", "is-partially-visible", "is-hidden"]
102
+ });
103
+ export {
104
+ SliderItem as default
105
+ };
@@ -0,0 +1,54 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __reExport = (target, module2, copyDefault, desc) => {
14
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
15
+ for (let key of __getOwnPropNames(module2))
16
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
17
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
18
+ }
19
+ return target;
20
+ };
21
+ var __toESM = (module2, isNodeMode) => {
22
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
23
+ };
24
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
25
+ return (module2, temp) => {
26
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
27
+ };
28
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
29
+ var __publicField = (obj, key, value) => {
30
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
31
+ return value;
32
+ };
33
+
34
+ // packages/ui/molecules/Slider/SliderProgress.js
35
+ var SliderProgress_exports = {};
36
+ __export(SliderProgress_exports, {
37
+ default: () => SliderProgress
38
+ });
39
+ var import_utils = require("@studiometa/js-toolkit/utils");
40
+ var import_AbstractSliderChild = __toESM(require("./AbstractSliderChild.cjs"), 1);
41
+ var SliderProgress = class extends import_AbstractSliderChild.default {
42
+ update(index) {
43
+ const unit = this.$refs.progress.clientWidth / this.$parent.indexMax;
44
+ this.$refs.progress.style.transform = (0, import_utils.matrix)({
45
+ translateX: (0, import_utils.map)(index, 0, this.$parent.indexMax, (this.$refs.progress.clientWidth - unit) * -1, 0)
46
+ });
47
+ }
48
+ };
49
+ __publicField(SliderProgress, "config", {
50
+ name: "SliderProgress",
51
+ refs: ["progress"]
52
+ });
53
+ module.exports = __toCommonJS(SliderProgress_exports);
54
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @typedef {SliderProgress & {
3
+ * $refs: {
4
+ * progress: HTMLElement
5
+ * },
6
+ * $parent: import('./Slider.js').default
7
+ * }} SliderProgressInterface
8
+ */
9
+ /**
10
+ * SliderProgress class.
11
+ */
12
+ export default class SliderProgress extends AbstractSliderChild {
13
+ /**
14
+ * Config.
15
+ */
16
+ static config: {
17
+ name: string;
18
+ refs: string[];
19
+ };
20
+ }
21
+ export type SliderProgressInterface = SliderProgress & {
22
+ $refs: {
23
+ progress: HTMLElement;
24
+ };
25
+ $parent: import('./Slider.js').default;
26
+ };
27
+ import AbstractSliderChild from "./AbstractSliderChild.js";
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import { matrix, map } from "@studiometa/js-toolkit/utils";
8
+ import AbstractSliderChild from "./AbstractSliderChild.js";
9
+ class SliderProgress extends AbstractSliderChild {
10
+ update(index) {
11
+ const unit = this.$refs.progress.clientWidth / this.$parent.indexMax;
12
+ this.$refs.progress.style.transform = matrix({
13
+ translateX: map(index, 0, this.$parent.indexMax, (this.$refs.progress.clientWidth - unit) * -1, 0)
14
+ });
15
+ }
16
+ }
17
+ __publicField(SliderProgress, "config", {
18
+ name: "SliderProgress",
19
+ refs: ["progress"]
20
+ });
21
+ export {
22
+ SliderProgress as default
23
+ };
@@ -0,0 +1,50 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+
29
+ // packages/ui/molecules/Slider/index.js
30
+ var Slider_exports = {};
31
+ __export(Slider_exports, {
32
+ AbstractSliderChild: () => import_AbstractSliderChild.default,
33
+ Slider: () => import_Slider.default,
34
+ SliderBtn: () => import_SliderBtn.default,
35
+ SliderCount: () => import_SliderCount.default,
36
+ SliderDots: () => import_SliderDots.default,
37
+ SliderDrag: () => import_SliderDrag.default,
38
+ SliderItem: () => import_SliderItem.default,
39
+ SliderProgress: () => import_SliderProgress.default
40
+ });
41
+ var import_AbstractSliderChild = __toESM(require("./AbstractSliderChild.cjs"), 1);
42
+ var import_Slider = __toESM(require("./Slider.cjs"), 1);
43
+ var import_SliderBtn = __toESM(require("./SliderBtn.cjs"), 1);
44
+ var import_SliderCount = __toESM(require("./SliderCount.cjs"), 1);
45
+ var import_SliderDrag = __toESM(require("./SliderDrag.cjs"), 1);
46
+ var import_SliderItem = __toESM(require("./SliderItem.cjs"), 1);
47
+ var import_SliderProgress = __toESM(require("./SliderProgress.cjs"), 1);
48
+ var import_SliderDots = __toESM(require("./SliderDots.cjs"), 1);
49
+ module.exports = __toCommonJS(Slider_exports);
50
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,8 @@
1
+ export { default as AbstractSliderChild } from "./AbstractSliderChild.js";
2
+ export { default as Slider } from "./Slider.js";
3
+ export { default as SliderBtn } from "./SliderBtn.js";
4
+ export { default as SliderCount } from "./SliderCount.js";
5
+ export { default as SliderDrag } from "./SliderDrag.js";
6
+ export { default as SliderItem } from "./SliderItem.js";
7
+ export { default as SliderProgress } from "./SliderProgress.js";
8
+ export { default as SliderDots } from "./SliderDots.js";
@@ -0,0 +1,18 @@
1
+ import { default as default2 } from "./AbstractSliderChild.js";
2
+ import { default as default3 } from "./Slider.js";
3
+ import { default as default4 } from "./SliderBtn.js";
4
+ import { default as default5 } from "./SliderCount.js";
5
+ import { default as default6 } from "./SliderDrag.js";
6
+ import { default as default7 } from "./SliderItem.js";
7
+ import { default as default8 } from "./SliderProgress.js";
8
+ import { default as default9 } from "./SliderDots.js";
9
+ export {
10
+ default2 as AbstractSliderChild,
11
+ default3 as Slider,
12
+ default4 as SliderBtn,
13
+ default5 as SliderCount,
14
+ default9 as SliderDots,
15
+ default6 as SliderDrag,
16
+ default7 as SliderItem,
17
+ default8 as SliderProgress
18
+ };
@@ -0,0 +1,133 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __reExport = (target, module2, copyDefault, desc) => {
12
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
13
+ for (let key of __getOwnPropNames(module2))
14
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
15
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
16
+ }
17
+ return target;
18
+ };
19
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
20
+ return (module2, temp) => {
21
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
22
+ };
23
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
24
+ var __publicField = (obj, key, value) => {
25
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
26
+ return value;
27
+ };
28
+
29
+ // packages/ui/molecules/Sticky/Sticky.js
30
+ var Sticky_exports = {};
31
+ __export(Sticky_exports, {
32
+ default: () => Sticky
33
+ });
34
+ var import_js_toolkit = require("@studiometa/js-toolkit");
35
+ var import_primitives = require("../../primitives/index.cjs");
36
+ var _Sticky = class extends import_js_toolkit.Base {
37
+ constructor() {
38
+ super(...arguments);
39
+ __publicField(this, "isSticky", false);
40
+ __publicField(this, "isVisible", true);
41
+ }
42
+ set y(value) {
43
+ this.$refs.inner.style.transform = `translateY(${value}px) translateZ(0px)`;
44
+ }
45
+ get instances() {
46
+ return Array.from(_Sticky.instances);
47
+ }
48
+ mounted() {
49
+ _Sticky.instances.add(this);
50
+ this.setSentinelSize();
51
+ }
52
+ resized() {
53
+ this.setSentinelSize();
54
+ }
55
+ destroyed() {
56
+ _Sticky.instances.delete(this);
57
+ }
58
+ scrolled(props) {
59
+ if (!this.isSticky || props.y === props.last.y) {
60
+ return;
61
+ }
62
+ if (props.direction.y === "DOWN" && this.$options.hideWhenDown || props.direction.y === "UP" && this.$options.hideWhenUp) {
63
+ this.hide();
64
+ } else {
65
+ this.show();
66
+ }
67
+ }
68
+ onSentinelIntersected([entry]) {
69
+ this.isSticky = entry.isIntersecting && entry.boundingClientRect.y < 0;
70
+ this.setPosition();
71
+ }
72
+ hide() {
73
+ if (!this.isVisible) {
74
+ return;
75
+ }
76
+ this.isVisible = false;
77
+ this.$el.classList.add("pointer-events-none");
78
+ this.instances.forEach((instance, index) => instance.setPosition(index));
79
+ }
80
+ show() {
81
+ if (this.isVisible) {
82
+ return;
83
+ }
84
+ this.isVisible = true;
85
+ this.$el.classList.remove("pointer-events-none");
86
+ this.instances.forEach((instance, index) => instance.setPosition(index));
87
+ }
88
+ setSentinelSize() {
89
+ const { instances } = this;
90
+ const index = instances.findIndex((instance) => instance === this);
91
+ const height = instances.slice(0, index).filter((instance) => this.closestRelativeElement(instance.$el).contains(this.$el)).reduce((acc, instance) => acc + instance.$el.offsetHeight, 0);
92
+ this.$refs.sentinelRef.style.height = `${height + 1}px`;
93
+ this.$el.style.top = `${height}px`;
94
+ this.$el.style.zIndex = String(this.$options.zIndex - index);
95
+ }
96
+ setPosition(index) {
97
+ if (!this.isSticky) {
98
+ this.y = 0;
99
+ return;
100
+ }
101
+ const { instances } = this;
102
+ index = index != null ? index : instances.findIndex((instance) => instance === this);
103
+ this.y = instances.slice(0, index).filter((instance) => instance.isSticky && !instance.isVisible).reduce((y, instance) => {
104
+ return y - instance.$refs.inner.offsetHeight;
105
+ }, this.isVisible ? 0 : this.$refs.inner.offsetHeight * -1);
106
+ }
107
+ closestRelativeElement(element) {
108
+ let parent = element.parentElement;
109
+ while (getComputedStyle(parent).position !== "relative" && parent.parentElement) {
110
+ parent = parent.parentElement;
111
+ }
112
+ return parent;
113
+ }
114
+ };
115
+ var Sticky = _Sticky;
116
+ __publicField(Sticky, "config", {
117
+ name: "Sticky",
118
+ refs: ["inner", "sentinelRef"],
119
+ components: {
120
+ Sentinel: import_primitives.Sentinel
121
+ },
122
+ options: {
123
+ zIndex: {
124
+ type: Number,
125
+ default: 100
126
+ },
127
+ hideWhenUp: Boolean,
128
+ hideWhenDown: Boolean
129
+ }
130
+ });
131
+ __publicField(Sticky, "instances", /* @__PURE__ */ new Set());
132
+ module.exports = __toCommonJS(Sticky_exports);
133
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * @typedef {Object} StickyRefs
3
+ * @property {HTMLElement} inner
4
+ * @property {HTMLElement} sentinelRef
5
+ */
6
+ /**
7
+ * @typedef {Object} StickyPrivateInterface
8
+ * @property {StickyRefs} $refs
9
+ * @property {{ zIndex: number, hideWhenUp: boolean, hideWhenDown: boolean }} $options
10
+ * @property {{ Sentinel: Sentinel[] }} $children
11
+ */
12
+ /**
13
+ * @typedef {Sticky & StickyPrivateInterface} StickyInterface
14
+ */
15
+ /**
16
+ * Sticky class.
17
+ */
18
+ export default class Sticky extends Base {
19
+ /**
20
+ * Config.
21
+ */
22
+ static config: {
23
+ name: string;
24
+ refs: string[];
25
+ components: {
26
+ Sentinel: typeof Sentinel;
27
+ };
28
+ options: {
29
+ zIndex: {
30
+ type: NumberConstructor;
31
+ default: number;
32
+ };
33
+ hideWhenUp: BooleanConstructor;
34
+ hideWhenDown: BooleanConstructor;
35
+ };
36
+ };
37
+ /**
38
+ * Holder for all instances.
39
+ * @type {Set<StickyInterface>}
40
+ */
41
+ static instances: Set<StickyInterface>;
42
+ /**
43
+ * Is the component sticky?
44
+ * @type {boolean}
45
+ */
46
+ isSticky: boolean;
47
+ /**
48
+ * Is the component visible?
49
+ * @type {Boolean}
50
+ */
51
+ isVisible: boolean;
52
+ /**
53
+ * Set the Y value.
54
+ *
55
+ * @this {StickyInterface}
56
+ * @param {number} value
57
+ * @returns {void}
58
+ */
59
+ set y(arg: number);
60
+ /**
61
+ * Get instances as array.
62
+ * @return {Array<StickyInterface>}
63
+ */
64
+ get instances(): StickyInterface[];
65
+ /**
66
+ * Mounted hook.
67
+ * @this {StickyInterface}
68
+ */
69
+ mounted(): void;
70
+ /**
71
+ * Resized hook.
72
+ * @this {StickyInterface}
73
+ * @returns {void}
74
+ */
75
+ resized(): void;
76
+ /**
77
+ * Destroyed hook.
78
+ * @this {StickyInterface}
79
+ */
80
+ destroyed(): void;
81
+ /**
82
+ * Scrolled hook.
83
+ * @this {StickyInterface}
84
+ */
85
+ scrolled(props: any): void;
86
+ /**
87
+ * Listen to the sentinel's `intersected` event to set the `isSticky` value.
88
+ *
89
+ * @param {IntersectionObserverEntry[]} entries
90
+ * @returns {void}
91
+ */
92
+ onSentinelIntersected([entry]: IntersectionObserverEntry[]): void;
93
+ /**
94
+ * Hide the sticky component when another one is sticky.
95
+ * @this {StickyInterface}
96
+ */
97
+ hide(): void;
98
+ /**
99
+ * Show the sticky component when the other one is not sticky anymore.
100
+ * @this {StickyInterface}
101
+ */
102
+ show(): void;
103
+ /**
104
+ * Set the sentinel height based on the previous instances.
105
+ * @this {StickyInterface}
106
+ */
107
+ setSentinelSize(): void;
108
+ /**
109
+ * Set the component's position.
110
+ *
111
+ * @this {StickyInterface}
112
+ * @param {number} [index] The instance index in all the pages' instances.
113
+ * @returns {void}
114
+ */
115
+ setPosition(index?: number): void;
116
+ /**
117
+ * Find the first parent which has a relative position.
118
+ *
119
+ * @param {HTMLElement} element
120
+ * @returns {HTMLElement}
121
+ */
122
+ closestRelativeElement(element: HTMLElement): HTMLElement;
123
+ }
124
+ export type StickyRefs = {
125
+ inner: HTMLElement;
126
+ sentinelRef: HTMLElement;
127
+ };
128
+ export type StickyPrivateInterface = {
129
+ $refs: StickyRefs;
130
+ $options: {
131
+ zIndex: number;
132
+ hideWhenUp: boolean;
133
+ hideWhenDown: boolean;
134
+ };
135
+ $children: {
136
+ Sentinel: Sentinel[];
137
+ };
138
+ };
139
+ export type StickyInterface = Sticky & StickyPrivateInterface;
140
+ import { Base } from "@studiometa/js-toolkit";
141
+ import { Sentinel } from "../../primitives/index.js";
@@ -0,0 +1,107 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import { Base } from "@studiometa/js-toolkit";
8
+ import { Sentinel } from "../../primitives/index.js";
9
+ const _Sticky = class extends Base {
10
+ constructor() {
11
+ super(...arguments);
12
+ __publicField(this, "isSticky", false);
13
+ __publicField(this, "isVisible", true);
14
+ }
15
+ set y(value) {
16
+ this.$refs.inner.style.transform = `translateY(${value}px) translateZ(0px)`;
17
+ }
18
+ get instances() {
19
+ return Array.from(_Sticky.instances);
20
+ }
21
+ mounted() {
22
+ _Sticky.instances.add(this);
23
+ this.setSentinelSize();
24
+ }
25
+ resized() {
26
+ this.setSentinelSize();
27
+ }
28
+ destroyed() {
29
+ _Sticky.instances.delete(this);
30
+ }
31
+ scrolled(props) {
32
+ if (!this.isSticky || props.y === props.last.y) {
33
+ return;
34
+ }
35
+ if (props.direction.y === "DOWN" && this.$options.hideWhenDown || props.direction.y === "UP" && this.$options.hideWhenUp) {
36
+ this.hide();
37
+ } else {
38
+ this.show();
39
+ }
40
+ }
41
+ onSentinelIntersected([entry]) {
42
+ this.isSticky = entry.isIntersecting && entry.boundingClientRect.y < 0;
43
+ this.setPosition();
44
+ }
45
+ hide() {
46
+ if (!this.isVisible) {
47
+ return;
48
+ }
49
+ this.isVisible = false;
50
+ this.$el.classList.add("pointer-events-none");
51
+ this.instances.forEach((instance, index) => instance.setPosition(index));
52
+ }
53
+ show() {
54
+ if (this.isVisible) {
55
+ return;
56
+ }
57
+ this.isVisible = true;
58
+ this.$el.classList.remove("pointer-events-none");
59
+ this.instances.forEach((instance, index) => instance.setPosition(index));
60
+ }
61
+ setSentinelSize() {
62
+ const { instances } = this;
63
+ const index = instances.findIndex((instance) => instance === this);
64
+ const height = instances.slice(0, index).filter((instance) => this.closestRelativeElement(instance.$el).contains(this.$el)).reduce((acc, instance) => acc + instance.$el.offsetHeight, 0);
65
+ this.$refs.sentinelRef.style.height = `${height + 1}px`;
66
+ this.$el.style.top = `${height}px`;
67
+ this.$el.style.zIndex = String(this.$options.zIndex - index);
68
+ }
69
+ setPosition(index) {
70
+ if (!this.isSticky) {
71
+ this.y = 0;
72
+ return;
73
+ }
74
+ const { instances } = this;
75
+ index = index != null ? index : instances.findIndex((instance) => instance === this);
76
+ this.y = instances.slice(0, index).filter((instance) => instance.isSticky && !instance.isVisible).reduce((y, instance) => {
77
+ return y - instance.$refs.inner.offsetHeight;
78
+ }, this.isVisible ? 0 : this.$refs.inner.offsetHeight * -1);
79
+ }
80
+ closestRelativeElement(element) {
81
+ let parent = element.parentElement;
82
+ while (getComputedStyle(parent).position !== "relative" && parent.parentElement) {
83
+ parent = parent.parentElement;
84
+ }
85
+ return parent;
86
+ }
87
+ };
88
+ let Sticky = _Sticky;
89
+ __publicField(Sticky, "config", {
90
+ name: "Sticky",
91
+ refs: ["inner", "sentinelRef"],
92
+ components: {
93
+ Sentinel
94
+ },
95
+ options: {
96
+ zIndex: {
97
+ type: Number,
98
+ default: 100
99
+ },
100
+ hideWhenUp: Boolean,
101
+ hideWhenDown: Boolean
102
+ }
103
+ });
104
+ __publicField(Sticky, "instances", /* @__PURE__ */ new Set());
105
+ export {
106
+ Sticky as default
107
+ };