@studiometa/ui 0.2.0 → 0.2.3

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 (101) hide show
  1. package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +52 -0
  2. package/atoms/AnchorScrollTo/AnchorScrollTo.d.ts +31 -0
  3. package/atoms/AnchorScrollTo/AnchorScrollTo.js +26 -0
  4. package/atoms/LargeText/LargeText.cjs +90 -0
  5. package/atoms/LargeText/LargeText.d.ts +94 -0
  6. package/atoms/LargeText/LargeText.js +64 -0
  7. package/atoms/LazyInclude/LazyInclude.cjs +72 -0
  8. package/atoms/LazyInclude/LazyInclude.d.ts +64 -0
  9. package/atoms/LazyInclude/LazyInclude.js +46 -0
  10. package/atoms/Prefetch/AbstractPrefetch.cjs +84 -0
  11. package/atoms/Prefetch/AbstractPrefetch.d.ts +52 -0
  12. package/atoms/Prefetch/AbstractPrefetch.js +58 -0
  13. package/atoms/Prefetch/PrefetchWhenOver.cjs +65 -0
  14. package/atoms/Prefetch/PrefetchWhenOver.d.ts +21 -0
  15. package/atoms/Prefetch/PrefetchWhenOver.js +35 -0
  16. package/atoms/Prefetch/PrefetchWhenVisible.cjs +66 -0
  17. package/atoms/Prefetch/PrefetchWhenVisible.d.ts +21 -0
  18. package/atoms/Prefetch/PrefetchWhenVisible.js +36 -0
  19. package/atoms/Prefetch/index.cjs +40 -0
  20. package/atoms/Prefetch/index.d.ts +3 -0
  21. package/atoms/Prefetch/index.js +8 -0
  22. package/atoms/index.cjs +9 -2
  23. package/atoms/index.d.ts +5 -1
  24. package/atoms/index.js +9 -2
  25. package/molecules/Accordion/AccordionItem.cjs +1 -1
  26. package/molecules/Accordion/AccordionItem.d.ts +8 -10
  27. package/molecules/Accordion/AccordionItem.js +1 -1
  28. package/molecules/Modal/Modal.cjs +4 -5
  29. package/molecules/Modal/Modal.d.ts +9 -9
  30. package/molecules/Modal/Modal.js +4 -5
  31. package/molecules/Modal/ModalWithTransition.cjs +100 -0
  32. package/molecules/Modal/ModalWithTransition.d.ts +29 -0
  33. package/molecules/Modal/ModalWithTransition.js +69 -0
  34. package/molecules/Panel/Panel.cjs +148 -0
  35. package/molecules/Panel/Panel.d.ts +42 -0
  36. package/molecules/Panel/Panel.js +117 -0
  37. package/molecules/Slider/AbstractSliderChild.cjs +74 -0
  38. package/molecules/Slider/AbstractSliderChild.d.ts +55 -0
  39. package/molecules/Slider/AbstractSliderChild.js +43 -0
  40. package/molecules/Slider/Slider.cjs +240 -0
  41. package/molecules/Slider/Slider.d.ts +245 -0
  42. package/molecules/Slider/Slider.js +209 -0
  43. package/molecules/Slider/SliderBtn.cjs +65 -0
  44. package/molecules/Slider/SliderBtn.d.ts +31 -0
  45. package/molecules/Slider/SliderBtn.js +34 -0
  46. package/molecules/Slider/SliderCount.cjs +50 -0
  47. package/molecules/Slider/SliderCount.d.ts +21 -0
  48. package/molecules/Slider/SliderCount.js +19 -0
  49. package/molecules/Slider/SliderDots.cjs +55 -0
  50. package/molecules/Slider/SliderDots.d.ts +33 -0
  51. package/molecules/Slider/SliderDots.js +24 -0
  52. package/molecules/Slider/SliderDrag.cjs +45 -0
  53. package/molecules/Slider/SliderDrag.d.ts +16 -0
  54. package/molecules/Slider/SliderDrag.js +19 -0
  55. package/molecules/Slider/SliderItem.cjs +130 -0
  56. package/molecules/Slider/SliderItem.d.ts +106 -0
  57. package/molecules/Slider/SliderItem.js +105 -0
  58. package/molecules/Slider/SliderProgress.cjs +54 -0
  59. package/molecules/Slider/SliderProgress.d.ts +27 -0
  60. package/molecules/Slider/SliderProgress.js +23 -0
  61. package/molecules/Slider/index.cjs +50 -0
  62. package/molecules/Slider/index.d.ts +8 -0
  63. package/molecules/Slider/index.js +18 -0
  64. package/molecules/TableOfContent/TableOfContent.cjs +73 -0
  65. package/molecules/TableOfContent/TableOfContent.d.ts +59 -0
  66. package/molecules/TableOfContent/TableOfContent.js +42 -0
  67. package/molecules/TableOfContent/TableOfContentAnchor.cjs +65 -0
  68. package/molecules/TableOfContent/TableOfContentAnchor.d.ts +36 -0
  69. package/molecules/TableOfContent/TableOfContentAnchor.js +39 -0
  70. package/molecules/TableOfContent/index.cjs +38 -0
  71. package/molecules/TableOfContent/index.d.ts +2 -0
  72. package/molecules/TableOfContent/index.js +6 -0
  73. package/molecules/Tabs/Tabs.d.ts +2 -4
  74. package/molecules/index.cjs +7 -1
  75. package/molecules/index.d.ts +5 -1
  76. package/molecules/index.js +10 -4
  77. package/organisms/Frame/Frame.cjs +202 -0
  78. package/organisms/Frame/Frame.d.ts +119 -0
  79. package/organisms/Frame/Frame.js +171 -0
  80. package/organisms/Frame/FrameAnchor.cjs +48 -0
  81. package/organisms/Frame/FrameAnchor.d.ts +35 -0
  82. package/organisms/Frame/FrameAnchor.js +22 -0
  83. package/organisms/Frame/FrameForm.cjs +48 -0
  84. package/organisms/Frame/FrameForm.d.ts +32 -0
  85. package/organisms/Frame/FrameForm.js +22 -0
  86. package/organisms/Frame/FrameTarget.cjs +134 -0
  87. package/organisms/Frame/FrameTarget.d.ts +47 -0
  88. package/organisms/Frame/FrameTarget.js +109 -0
  89. package/organisms/Frame/index.cjs +42 -0
  90. package/organisms/Frame/index.d.ts +4 -0
  91. package/organisms/Frame/index.js +10 -0
  92. package/organisms/index.cjs +1 -0
  93. package/organisms/index.d.ts +1 -1
  94. package/organisms/index.js +1 -0
  95. package/package.json +2 -2
  96. package/primitives/Transition/Transition.cjs +71 -0
  97. package/primitives/Transition/Transition.d.ts +69 -0
  98. package/primitives/Transition/Transition.js +45 -0
  99. package/primitives/index.cjs +3 -1
  100. package/primitives/index.d.ts +1 -0
  101. package/primitives/index.js +3 -1
@@ -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,73 @@
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/TableOfContent/TableOfContent.js
35
+ var TableOfContent_exports = {};
36
+ __export(TableOfContent_exports, {
37
+ default: () => TableOfContent
38
+ });
39
+ var import_js_toolkit = require("@studiometa/js-toolkit");
40
+ var import_TableOfContentAnchor = __toESM(require("./TableOfContentAnchor.cjs"), 1);
41
+ var TableOfContent = class extends import_js_toolkit.Base {
42
+ mounted() {
43
+ if (this.$options.withTemplate) {
44
+ this.generateAnchors();
45
+ this.$update();
46
+ }
47
+ }
48
+ generateAnchors() {
49
+ document.querySelectorAll(this.$options.contentSelector).forEach((section) => {
50
+ const tpl = document.createElement("div");
51
+ tpl.innerHTML = this.$refs.itemTemplate.innerHTML;
52
+ const li = tpl.querySelector("li");
53
+ const anchor = li.querySelector("a");
54
+ anchor.href = `#${section.id}`;
55
+ anchor.innerHTML = section.textContent;
56
+ anchor.dataset.component = "TableOfContentAnchor";
57
+ this.$refs.list.appendChild(li);
58
+ });
59
+ }
60
+ };
61
+ __publicField(TableOfContent, "config", {
62
+ name: "TableOfContent",
63
+ refs: ["itemTemplate", "list"],
64
+ components: {
65
+ TableOfContentAnchor: import_TableOfContentAnchor.default
66
+ },
67
+ options: {
68
+ contentSelector: String,
69
+ withTemplate: Boolean
70
+ }
71
+ });
72
+ module.exports = __toCommonJS(TableOfContent_exports);
73
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @typedef {TableOfContent & {
3
+ * $refs: {
4
+ * itemTemplate: HTMLTemplateElement,
5
+ * list: HTMLUListElement
6
+ * },
7
+ * $options: {
8
+ * contentSelector: string,
9
+ * withTemplate: boolean,
10
+ * }
11
+ * }} TableOfContentInterface
12
+ */
13
+ /**
14
+ * TableOfContent class.
15
+ */
16
+ export default class TableOfContent extends Base {
17
+ /**
18
+ * Config.
19
+ */
20
+ static config: {
21
+ name: string;
22
+ refs: string[];
23
+ components: {
24
+ TableOfContentAnchor: typeof TableOfContentAnchor;
25
+ };
26
+ options: {
27
+ contentSelector: StringConstructor;
28
+ withTemplate: BooleanConstructor;
29
+ };
30
+ };
31
+ /**
32
+ * Generate anchors on mount and update the component to instantiate the
33
+ * `TableOfContentAnchor` components.
34
+ * @returns {void}
35
+ */
36
+ mounted(): void;
37
+ /**
38
+ * Generate all anchors.
39
+ *
40
+ * @todo Read anchor template from a ref?
41
+ * @todo Better API to easily override the template function, maybe a `render` function?
42
+ *
43
+ * @this {TableOfContentInterface}
44
+ * @returns {void}
45
+ */
46
+ generateAnchors(): void;
47
+ }
48
+ export type TableOfContentInterface = TableOfContent & {
49
+ $refs: {
50
+ itemTemplate: HTMLTemplateElement;
51
+ list: HTMLUListElement;
52
+ };
53
+ $options: {
54
+ contentSelector: string;
55
+ withTemplate: boolean;
56
+ };
57
+ };
58
+ import { Base } from "@studiometa/js-toolkit";
59
+ import TableOfContentAnchor from "./TableOfContentAnchor.js";
@@ -0,0 +1,42 @@
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 TableOfContentAnchor from "./TableOfContentAnchor.js";
9
+ class TableOfContent extends Base {
10
+ mounted() {
11
+ if (this.$options.withTemplate) {
12
+ this.generateAnchors();
13
+ this.$update();
14
+ }
15
+ }
16
+ generateAnchors() {
17
+ document.querySelectorAll(this.$options.contentSelector).forEach((section) => {
18
+ const tpl = document.createElement("div");
19
+ tpl.innerHTML = this.$refs.itemTemplate.innerHTML;
20
+ const li = tpl.querySelector("li");
21
+ const anchor = li.querySelector("a");
22
+ anchor.href = `#${section.id}`;
23
+ anchor.innerHTML = section.textContent;
24
+ anchor.dataset.component = "TableOfContentAnchor";
25
+ this.$refs.list.appendChild(li);
26
+ });
27
+ }
28
+ }
29
+ __publicField(TableOfContent, "config", {
30
+ name: "TableOfContent",
31
+ refs: ["itemTemplate", "list"],
32
+ components: {
33
+ TableOfContentAnchor
34
+ },
35
+ options: {
36
+ contentSelector: String,
37
+ withTemplate: Boolean
38
+ }
39
+ });
40
+ export {
41
+ TableOfContent as default
42
+ };
@@ -0,0 +1,65 @@
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/TableOfContent/TableOfContentAnchor.js
30
+ var TableOfContentAnchor_exports = {};
31
+ __export(TableOfContentAnchor_exports, {
32
+ default: () => TableOfContentAnchor
33
+ });
34
+ var import_atoms = require("../../atoms/index.cjs");
35
+ var TableOfContentAnchor = class extends import_atoms.AnchorScrollTo {
36
+ get sentinel() {
37
+ return document.querySelector(this.targetSelector);
38
+ }
39
+ mounted() {
40
+ if (!this.sentinel) {
41
+ return;
42
+ }
43
+ this.observer = new IntersectionObserver(([entry]) => {
44
+ const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > 100;
45
+ this.$el.classList.toggle(this.$options.activeClass, shouldActivate);
46
+ this.$emit("should-activate", shouldActivate);
47
+ });
48
+ this.observer.observe(this.sentinel);
49
+ }
50
+ destroyed() {
51
+ this.observer.disconnect();
52
+ }
53
+ };
54
+ __publicField(TableOfContentAnchor, "config", {
55
+ name: "TableOfContentAnchor",
56
+ emits: ["should-activate"],
57
+ options: {
58
+ activeClass: {
59
+ type: String,
60
+ default: "is-active"
61
+ }
62
+ }
63
+ });
64
+ module.exports = __toCommonJS(TableOfContentAnchor_exports);
65
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * TableOfContentAnchor class.
3
+ */
4
+ export default class TableOfContentAnchor extends AnchorScrollTo {
5
+ /**
6
+ * Config.
7
+ */
8
+ static config: {
9
+ name: string;
10
+ emits: string[];
11
+ options: {
12
+ activeClass: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ };
17
+ };
18
+ /**
19
+ * Get the sentinel.
20
+ * @returns {HTMLElement}
21
+ */
22
+ get sentinel(): HTMLElement;
23
+ /**
24
+ * Init observer on mount.
25
+ * @returns {void}
26
+ */
27
+ mounted(): void;
28
+ observer: IntersectionObserver;
29
+ /**
30
+ * Destroy observer on destroy.
31
+ *
32
+ * @returns {void}
33
+ */
34
+ destroyed(): void;
35
+ }
36
+ import { AnchorScrollTo } from "../../atoms/index.js";
@@ -0,0 +1,39 @@
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 { AnchorScrollTo } from "../../atoms/index.js";
8
+ class TableOfContentAnchor extends AnchorScrollTo {
9
+ get sentinel() {
10
+ return document.querySelector(this.targetSelector);
11
+ }
12
+ mounted() {
13
+ if (!this.sentinel) {
14
+ return;
15
+ }
16
+ this.observer = new IntersectionObserver(([entry]) => {
17
+ const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > 100;
18
+ this.$el.classList.toggle(this.$options.activeClass, shouldActivate);
19
+ this.$emit("should-activate", shouldActivate);
20
+ });
21
+ this.observer.observe(this.sentinel);
22
+ }
23
+ destroyed() {
24
+ this.observer.disconnect();
25
+ }
26
+ }
27
+ __publicField(TableOfContentAnchor, "config", {
28
+ name: "TableOfContentAnchor",
29
+ emits: ["should-activate"],
30
+ options: {
31
+ activeClass: {
32
+ type: String,
33
+ default: "is-active"
34
+ }
35
+ }
36
+ });
37
+ export {
38
+ TableOfContentAnchor as default
39
+ };
@@ -0,0 +1,38 @@
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/TableOfContent/index.js
30
+ var TableOfContent_exports = {};
31
+ __export(TableOfContent_exports, {
32
+ TableOfContent: () => import_TableOfContent.default,
33
+ TableOfContentAnchor: () => import_TableOfContentAnchor.default
34
+ });
35
+ var import_TableOfContent = __toESM(require("./TableOfContent.cjs"), 1);
36
+ var import_TableOfContentAnchor = __toESM(require("./TableOfContentAnchor.cjs"), 1);
37
+ module.exports = __toCommonJS(TableOfContent_exports);
38
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,2 @@
1
+ export { default as TableOfContent } from "./TableOfContent.js";
2
+ export { default as TableOfContentAnchor } from "./TableOfContentAnchor.js";
@@ -0,0 +1,6 @@
1
+ import { default as default2 } from "./TableOfContent.js";
2
+ import { default as default3 } from "./TableOfContentAnchor.js";
3
+ export {
4
+ default2 as TableOfContent,
5
+ default3 as TableOfContentAnchor
6
+ };