@studiometa/ui 0.2.46 → 0.2.48

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 (183) hide show
  1. package/atoms/Action/Action.cjs +12 -17
  2. package/atoms/Action/Action.cjs.map +1 -1
  3. package/atoms/Action/Action.js.map +1 -1
  4. package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +3 -8
  5. package/atoms/AnchorScrollTo/AnchorScrollTo.cjs.map +1 -1
  6. package/atoms/AnchorScrollTo/AnchorScrollTo.js.map +1 -1
  7. package/atoms/CircularMarquee/CircularMarquee.cjs +12 -17
  8. package/atoms/CircularMarquee/CircularMarquee.cjs.map +1 -1
  9. package/atoms/Cursor/Cursor.cjs +37 -42
  10. package/atoms/Cursor/Cursor.cjs.map +1 -1
  11. package/atoms/Cursor/Cursor.js.map +1 -1
  12. package/atoms/Figure/Figure.cjs +13 -18
  13. package/atoms/Figure/Figure.cjs.map +1 -1
  14. package/atoms/Figure/FigureTwicpics.cjs +26 -31
  15. package/atoms/Figure/FigureTwicpics.cjs.map +1 -1
  16. package/atoms/Figure/FigureTwicpics.js.map +1 -1
  17. package/atoms/FigureVideo/FigureVideo.cjs +132 -0
  18. package/atoms/FigureVideo/FigureVideo.cjs.map +7 -0
  19. package/atoms/FigureVideo/FigureVideo.d.ts +51 -0
  20. package/atoms/FigureVideo/FigureVideo.js +110 -0
  21. package/atoms/FigureVideo/FigureVideo.js.map +7 -0
  22. package/atoms/FigureVideo/FigureVideo.twig +152 -0
  23. package/atoms/FigureVideo/FigureVideoTwicpics.cjs +153 -0
  24. package/atoms/FigureVideo/FigureVideoTwicpics.cjs.map +7 -0
  25. package/atoms/FigureVideo/FigureVideoTwicpics.d.ts +57 -0
  26. package/atoms/FigureVideo/FigureVideoTwicpics.js +135 -0
  27. package/atoms/FigureVideo/FigureVideoTwicpics.js.map +7 -0
  28. package/atoms/FigureVideo/FigureVideoTwicpics.twig +98 -0
  29. package/atoms/FigureVideo/index.cjs +22 -0
  30. package/atoms/FigureVideo/index.cjs.map +7 -0
  31. package/atoms/FigureVideo/index.d.ts +2 -0
  32. package/atoms/FigureVideo/index.js +3 -0
  33. package/atoms/FigureVideo/index.js.map +7 -0
  34. package/atoms/LargeText/LargeText.cjs +18 -23
  35. package/atoms/LargeText/LargeText.cjs.map +1 -1
  36. package/atoms/LazyInclude/LazyInclude.cjs +12 -17
  37. package/atoms/LazyInclude/LazyInclude.cjs.map +1 -1
  38. package/atoms/Prefetch/AbstractPrefetch.cjs +17 -23
  39. package/atoms/Prefetch/AbstractPrefetch.cjs.map +1 -1
  40. package/atoms/Prefetch/PrefetchWhenOver.cjs +7 -12
  41. package/atoms/Prefetch/PrefetchWhenOver.cjs.map +1 -1
  42. package/atoms/Prefetch/PrefetchWhenVisible.cjs +7 -12
  43. package/atoms/Prefetch/PrefetchWhenVisible.cjs.map +1 -1
  44. package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs +27 -32
  45. package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs.map +1 -1
  46. package/atoms/ScrollAnimation/AbstractScrollAnimation.d.ts +1 -1
  47. package/atoms/ScrollAnimation/ScrollAnimation.cjs +8 -13
  48. package/atoms/ScrollAnimation/ScrollAnimation.cjs.map +1 -1
  49. package/atoms/ScrollAnimation/ScrollAnimationChild.cjs +18 -23
  50. package/atoms/ScrollAnimation/ScrollAnimationChild.cjs.map +1 -1
  51. package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs +7 -12
  52. package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs.map +1 -1
  53. package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.d.ts +1 -1
  54. package/atoms/ScrollAnimation/ScrollAnimationParent.cjs +9 -14
  55. package/atoms/ScrollAnimation/ScrollAnimationParent.cjs.map +1 -1
  56. package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs +7 -12
  57. package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs.map +1 -1
  58. package/atoms/ScrollAnimation/ScrollAnimationWithEase.d.ts +1 -1
  59. package/atoms/ScrollAnimation/animationScrollWithEase.cjs.map +1 -1
  60. package/atoms/ScrollAnimation/animationScrollWithEase.js.map +1 -1
  61. package/atoms/ScrollReveal/ScrollReveal.cjs +25 -31
  62. package/atoms/ScrollReveal/ScrollReveal.cjs.map +1 -1
  63. package/atoms/index.cjs +1 -0
  64. package/atoms/index.cjs.map +2 -2
  65. package/atoms/index.d.ts +1 -0
  66. package/atoms/index.js +1 -0
  67. package/atoms/index.js.map +2 -2
  68. package/decorators/index.cjs +1 -0
  69. package/decorators/index.cjs.map +2 -2
  70. package/decorators/index.d.ts +1 -0
  71. package/decorators/index.js +1 -0
  72. package/decorators/index.js.map +2 -2
  73. package/decorators/withDeprecation.cjs +47 -0
  74. package/decorators/withDeprecation.cjs.map +7 -0
  75. package/decorators/withDeprecation.d.ts +9 -0
  76. package/decorators/withDeprecation.js +25 -0
  77. package/decorators/withDeprecation.js.map +7 -0
  78. package/decorators/withTransition.cjs.map +1 -1
  79. package/decorators/withTransition.js.map +1 -1
  80. package/molecules/Accordion/Accordion.cjs +6 -11
  81. package/molecules/Accordion/Accordion.cjs.map +1 -1
  82. package/molecules/Accordion/AccordionCore.cjs +14 -19
  83. package/molecules/Accordion/AccordionCore.cjs.map +1 -1
  84. package/molecules/Accordion/AccordionItem.cjs +23 -29
  85. package/molecules/Accordion/AccordionItem.cjs.map +1 -1
  86. package/molecules/Accordion/AccordionItem.js.map +1 -1
  87. package/molecules/AnchorNav/AnchorNav.cjs +63 -0
  88. package/molecules/AnchorNav/AnchorNav.cjs.map +7 -0
  89. package/molecules/AnchorNav/AnchorNav.d.ts +24 -0
  90. package/molecules/AnchorNav/AnchorNav.js +41 -0
  91. package/molecules/AnchorNav/AnchorNav.js.map +7 -0
  92. package/molecules/AnchorNav/AnchorNavLink.cjs +40 -0
  93. package/molecules/AnchorNav/AnchorNavLink.cjs.map +7 -0
  94. package/molecules/AnchorNav/AnchorNavLink.d.ts +19 -0
  95. package/molecules/AnchorNav/AnchorNavLink.js +18 -0
  96. package/molecules/AnchorNav/AnchorNavLink.js.map +7 -0
  97. package/molecules/AnchorNav/AnchorNavTarget.cjs +35 -0
  98. package/molecules/AnchorNav/AnchorNavTarget.cjs.map +7 -0
  99. package/molecules/AnchorNav/AnchorNavTarget.d.ts +13 -0
  100. package/molecules/AnchorNav/AnchorNavTarget.js +13 -0
  101. package/molecules/AnchorNav/AnchorNavTarget.js.map +7 -0
  102. package/molecules/AnchorNav/index.cjs +23 -0
  103. package/molecules/AnchorNav/index.cjs.map +7 -0
  104. package/molecules/AnchorNav/index.d.ts +3 -0
  105. package/molecules/AnchorNav/index.js +4 -0
  106. package/molecules/AnchorNav/index.js.map +7 -0
  107. package/molecules/Menu/Menu.cjs +19 -25
  108. package/molecules/Menu/Menu.cjs.map +1 -1
  109. package/molecules/Menu/MenuBtn.cjs +6 -11
  110. package/molecules/Menu/MenuBtn.cjs.map +1 -1
  111. package/molecules/Menu/MenuList.cjs +12 -18
  112. package/molecules/Menu/MenuList.cjs.map +1 -1
  113. package/molecules/Menu/MenuList.d.ts +1 -1
  114. package/molecules/Modal/Modal.cjs +28 -33
  115. package/molecules/Modal/Modal.cjs.map +1 -1
  116. package/molecules/Modal/ModalWithTransition.cjs +31 -36
  117. package/molecules/Modal/ModalWithTransition.cjs.map +1 -1
  118. package/molecules/Panel/Panel.cjs +19 -25
  119. package/molecules/Panel/Panel.cjs.map +1 -1
  120. package/molecules/Slider/AbstractSliderChild.cjs +6 -11
  121. package/molecules/Slider/AbstractSliderChild.cjs.map +1 -1
  122. package/molecules/Slider/AbstractSliderChild.js.map +1 -1
  123. package/molecules/Slider/Slider.cjs +19 -24
  124. package/molecules/Slider/Slider.cjs.map +1 -1
  125. package/molecules/Slider/Slider.js.map +1 -1
  126. package/molecules/Slider/SliderBtn.cjs +11 -16
  127. package/molecules/Slider/SliderBtn.cjs.map +1 -1
  128. package/molecules/Slider/SliderBtn.js.map +1 -1
  129. package/molecules/Slider/SliderCount.cjs +7 -12
  130. package/molecules/Slider/SliderCount.cjs.map +1 -1
  131. package/molecules/Slider/SliderCount.js.map +1 -1
  132. package/molecules/Slider/SliderDots.cjs +7 -12
  133. package/molecules/Slider/SliderDots.cjs.map +1 -1
  134. package/molecules/Slider/SliderDots.d.ts +1 -1
  135. package/molecules/Slider/SliderDrag.cjs +13 -18
  136. package/molecules/Slider/SliderDrag.cjs.map +1 -1
  137. package/molecules/Slider/SliderDrag.d.ts +1 -1
  138. package/molecules/Slider/SliderItem.cjs +7 -12
  139. package/molecules/Slider/SliderItem.cjs.map +1 -1
  140. package/molecules/Slider/SliderProgress.cjs +7 -12
  141. package/molecules/Slider/SliderProgress.cjs.map +1 -1
  142. package/molecules/Sticky/Sticky.cjs +24 -30
  143. package/molecules/Sticky/Sticky.cjs.map +1 -1
  144. package/molecules/Sticky/Sticky.js.map +1 -1
  145. package/molecules/TableOfContent/TableOfContent.cjs +16 -20
  146. package/molecules/TableOfContent/TableOfContent.cjs.map +2 -2
  147. package/molecules/TableOfContent/TableOfContent.d.ts +4 -1
  148. package/molecules/TableOfContent/TableOfContent.js +2 -1
  149. package/molecules/TableOfContent/TableOfContent.js.map +2 -2
  150. package/molecules/TableOfContent/TableOfContentAnchor.cjs +18 -20
  151. package/molecules/TableOfContent/TableOfContentAnchor.cjs.map +2 -2
  152. package/molecules/TableOfContent/TableOfContentAnchor.d.ts +4 -1
  153. package/molecules/TableOfContent/TableOfContentAnchor.js +5 -2
  154. package/molecules/TableOfContent/TableOfContentAnchor.js.map +2 -2
  155. package/molecules/Tabs/Tabs.cjs +24 -29
  156. package/molecules/Tabs/Tabs.cjs.map +1 -1
  157. package/molecules/Tabs/Tabs.js.map +1 -1
  158. package/molecules/index.cjs +1 -0
  159. package/molecules/index.cjs.map +2 -2
  160. package/molecules/index.d.ts +1 -0
  161. package/molecules/index.js +1 -0
  162. package/molecules/index.js.map +2 -2
  163. package/organisms/Frame/Frame.cjs +46 -39
  164. package/organisms/Frame/Frame.cjs.map +3 -3
  165. package/organisms/Frame/Frame.d.ts +2 -2
  166. package/organisms/Frame/Frame.js +20 -7
  167. package/organisms/Frame/Frame.js.map +3 -3
  168. package/organisms/Frame/FrameAnchor.cjs +6 -11
  169. package/organisms/Frame/FrameAnchor.cjs.map +1 -1
  170. package/organisms/Frame/FrameForm.cjs +6 -11
  171. package/organisms/Frame/FrameForm.cjs.map +1 -1
  172. package/organisms/Frame/FrameTarget.cjs +25 -31
  173. package/organisms/Frame/FrameTarget.cjs.map +1 -1
  174. package/organisms/Frame/FrameTarget.d.ts +1 -1
  175. package/package.json +3 -3
  176. package/primitives/Draggable/Draggable.cjs +6 -11
  177. package/primitives/Draggable/Draggable.cjs.map +1 -1
  178. package/primitives/Draggable/Draggable.d.ts +1 -1
  179. package/primitives/Sentinel/Sentinel.cjs +6 -11
  180. package/primitives/Sentinel/Sentinel.cjs.map +1 -1
  181. package/primitives/Transition/Transition.cjs +6 -11
  182. package/primitives/Transition/Transition.cjs.map +1 -1
  183. package/primitives/Transition/Transition.d.ts +1 -1
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
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
5
  var __export = (target, all) => {
7
6
  for (var name in all)
8
7
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
16
15
  return to;
17
16
  };
18
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __publicField = (obj, key, value) => {
20
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
- return value;
22
- };
23
18
 
24
19
  // packages/ui/molecules/TableOfContent/TableOfContentAnchor.ts
25
20
  var TableOfContentAnchor_exports = {};
@@ -28,7 +23,23 @@ __export(TableOfContentAnchor_exports, {
28
23
  });
29
24
  module.exports = __toCommonJS(TableOfContentAnchor_exports);
30
25
  var import_atoms = require("../../atoms/index.cjs");
31
- var TableOfContentAnchor = class extends import_atoms.AnchorScrollTo {
26
+ var import_withDeprecation = require("../../decorators/withDeprecation.cjs");
27
+ var TableOfContentAnchor = class extends (0, import_withDeprecation.withDeprecation)(
28
+ import_atoms.AnchorScrollTo
29
+ ) {
30
+ /**
31
+ * Config.
32
+ */
33
+ static config = {
34
+ name: "TableOfContentAnchor",
35
+ emits: ["should-activate"],
36
+ options: {
37
+ activeClass: {
38
+ type: String,
39
+ default: "is-active"
40
+ }
41
+ }
42
+ };
32
43
  /**
33
44
  * Observer.
34
45
  * @private
@@ -48,7 +59,7 @@ var TableOfContentAnchor = class extends import_atoms.AnchorScrollTo {
48
59
  return;
49
60
  }
50
61
  this.__observer = new IntersectionObserver(([entry]) => {
51
- const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > 100;
62
+ const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > -100;
52
63
  this.$el.classList.toggle(this.$options.activeClass, shouldActivate);
53
64
  this.$emit("should-activate", shouldActivate);
54
65
  });
@@ -61,18 +72,5 @@ var TableOfContentAnchor = class extends import_atoms.AnchorScrollTo {
61
72
  this.__observer.disconnect();
62
73
  }
63
74
  };
64
- /**
65
- * Config.
66
- */
67
- __publicField(TableOfContentAnchor, "config", {
68
- name: "TableOfContentAnchor",
69
- emits: ["should-activate"],
70
- options: {
71
- activeClass: {
72
- type: String,
73
- default: "is-active"
74
- }
75
- }
76
- });
77
75
  if (module.exports.default) module.exports = module.exports.default;
78
76
  //# sourceMappingURL=TableOfContentAnchor.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/molecules/TableOfContent/TableOfContentAnchor.ts"],
4
- "sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends AnchorScrollTo<\n T & TableOfContentAnchorProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'TableOfContentAnchor',\n emits: ['should-activate'],\n options: {\n activeClass: {\n type: String,\n default: 'is-active',\n },\n },\n };\n\n /**\n * Observer.\n * @private\n */\n __observer: IntersectionObserver;\n\n /**\n * Get the sentinel.\n */\n get sentinel(): HTMLElement {\n return document.querySelector(this.targetSelector) as HTMLElement;\n }\n\n /**\n * Init observer on mount.\n */\n mounted() {\n if (!this.sentinel) {\n return;\n }\n\n this.__observer = new IntersectionObserver(([entry]) => {\n const shouldActivate =\n entry.isIntersecting &&\n entry.boundingClientRect.y < 100 &&\n entry.boundingClientRect.y > 100;\n this.$el.classList.toggle(this.$options.activeClass, shouldActivate);\n this.$emit('should-activate', shouldActivate);\n });\n\n this.__observer.observe(this.sentinel);\n }\n\n /**\n * Destroy observer on destroy.\n */\n destroyed() {\n this.__observer.disconnect();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA+B;AAWxB,IAAM,uBAAN,cAAoE,4BAEzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAwB;AAC1B,WAAO,SAAS,cAAc,KAAK,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AAEA,SAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,KAAK,MAAM;AACtD,YAAM,iBACJ,MAAM,kBACN,MAAM,mBAAmB,IAAI,OAC7B,MAAM,mBAAmB,IAAI;AAC/B,WAAK,IAAI,UAAU,OAAO,KAAK,SAAS,aAAa,cAAc;AACnE,WAAK,MAAM,mBAAmB,cAAc;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,WAAW,WAAW;AAAA,EAC7B;AACF;AAAA;AAAA;AAAA;AAlDE,cANW,sBAMJ,UAAqB;AAAA,EAC1B,MAAM;AAAA,EACN,OAAO,CAAC,iBAAiB;AAAA,EACzB,SAAS;AAAA,IACP,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\nimport { withDeprecation } from '../../decorators/withDeprecation.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n * @deprecated\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends withDeprecation<AnchorScrollTo>(\n AnchorScrollTo,\n)<T & TableOfContentAnchorProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'TableOfContentAnchor',\n emits: ['should-activate'],\n options: {\n activeClass: {\n type: String,\n default: 'is-active',\n },\n },\n };\n\n /**\n * Observer.\n * @private\n */\n __observer: IntersectionObserver;\n\n /**\n * Get the sentinel.\n */\n get sentinel(): HTMLElement {\n return document.querySelector(this.targetSelector) as HTMLElement;\n }\n\n /**\n * Init observer on mount.\n */\n mounted() {\n if (!this.sentinel) {\n return;\n }\n\n this.__observer = new IntersectionObserver(([entry]) => {\n const shouldActivate =\n entry.isIntersecting &&\n entry.boundingClientRect.y < 100 &&\n entry.boundingClientRect.y > -100;\n this.$el.classList.toggle(this.$options.activeClass, shouldActivate);\n this.$emit('should-activate', shouldActivate);\n });\n\n this.__observer.observe(this.sentinel);\n }\n\n /**\n * Destroy observer on destroy.\n */\n destroyed() {\n this.__observer.disconnect();\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA+B;AAC/B,6BAAgC;AAYzB,IAAM,uBAAN,kBAAoE;AAAA,EACzE;AACF,EAAiC;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,CAAC,iBAAiB;AAAA,IACzB,SAAS;AAAA,MACP,aAAa;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAwB;AAC1B,WAAO,SAAS,cAAc,KAAK,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AAEA,SAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,KAAK,MAAM;AACtD,YAAM,iBACJ,MAAM,kBACN,MAAM,mBAAmB,IAAI,OAC7B,MAAM,mBAAmB,IAAI;AAC/B,WAAK,IAAI,UAAU,OAAO,KAAK,SAAS,aAAa,cAAc;AACnE,WAAK,MAAM,mBAAmB,cAAc;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,WAAW,WAAW;AAAA,EAC7B;AACF;",
6
6
  "names": []
7
7
  }
@@ -5,10 +5,12 @@ export interface TableOfContentAnchorProps extends BaseProps {
5
5
  activeClass: string;
6
6
  };
7
7
  }
8
+ declare const TableOfContentAnchor_base: import("@studiometa/js-toolkit").BaseDecorator<import("../../decorators/withDeprecation.js").DeprecationInterface, AnchorScrollTo<BaseProps>, import("../../decorators/withDeprecation.js").DeprecationProps>;
8
9
  /**
9
10
  * TableOfContentAnchor class.
11
+ * @deprecated
10
12
  */
11
- export declare class TableOfContentAnchor<T extends BaseProps = BaseProps> extends AnchorScrollTo<T & TableOfContentAnchorProps> {
13
+ export declare class TableOfContentAnchor<T extends BaseProps = BaseProps> extends TableOfContentAnchor_base<T & TableOfContentAnchorProps> {
12
14
  /**
13
15
  * Config.
14
16
  */
@@ -31,3 +33,4 @@ export declare class TableOfContentAnchor<T extends BaseProps = BaseProps> exten
31
33
  */
32
34
  destroyed(): void;
33
35
  }
36
+ export {};
@@ -1,5 +1,8 @@
1
1
  import { AnchorScrollTo } from "../../atoms/index.js";
2
- class TableOfContentAnchor extends AnchorScrollTo {
2
+ import { withDeprecation } from "../../decorators/withDeprecation.js";
3
+ class TableOfContentAnchor extends withDeprecation(
4
+ AnchorScrollTo
5
+ ) {
3
6
  /**
4
7
  * Config.
5
8
  */
@@ -32,7 +35,7 @@ class TableOfContentAnchor extends AnchorScrollTo {
32
35
  return;
33
36
  }
34
37
  this.__observer = new IntersectionObserver(([entry]) => {
35
- const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > 100;
38
+ const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > -100;
36
39
  this.$el.classList.toggle(this.$options.activeClass, shouldActivate);
37
40
  this.$emit("should-activate", shouldActivate);
38
41
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/molecules/TableOfContent/TableOfContentAnchor.ts"],
4
- "sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends AnchorScrollTo<\n T & TableOfContentAnchorProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'TableOfContentAnchor',\n emits: ['should-activate'],\n options: {\n activeClass: {\n type: String,\n default: 'is-active',\n },\n },\n };\n\n /**\n * Observer.\n * @private\n */\n __observer: IntersectionObserver;\n\n /**\n * Get the sentinel.\n */\n get sentinel(): HTMLElement {\n return document.querySelector(this.targetSelector) as HTMLElement;\n }\n\n /**\n * Init observer on mount.\n */\n mounted() {\n if (!this.sentinel) {\n return;\n }\n\n this.__observer = new IntersectionObserver(([entry]) => {\n const shouldActivate =\n entry.isIntersecting &&\n entry.boundingClientRect.y < 100 &&\n entry.boundingClientRect.y > 100;\n this.$el.classList.toggle(this.$options.activeClass, shouldActivate);\n this.$emit('should-activate', shouldActivate);\n });\n\n this.__observer.observe(this.sentinel);\n }\n\n /**\n * Destroy observer on destroy.\n */\n destroyed() {\n this.__observer.disconnect();\n }\n}\n"],
5
- "mappings": "AACA,SAAS,sBAAsB;AAWxB,MAAM,6BAA8D,eAEzE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,CAAC,iBAAiB;AAAA,IACzB,SAAS;AAAA,MACP,aAAa;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAwB;AAC1B,WAAO,SAAS,cAAc,KAAK,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AAEA,SAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,KAAK,MAAM;AACtD,YAAM,iBACJ,MAAM,kBACN,MAAM,mBAAmB,IAAI,OAC7B,MAAM,mBAAmB,IAAI;AAC/B,WAAK,IAAI,UAAU,OAAO,KAAK,SAAS,aAAa,cAAc;AACnE,WAAK,MAAM,mBAAmB,cAAc;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,WAAW,WAAW;AAAA,EAC7B;AACF;",
4
+ "sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\nimport { withDeprecation } from '../../decorators/withDeprecation.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n * @deprecated\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends withDeprecation<AnchorScrollTo>(\n AnchorScrollTo,\n)<T & TableOfContentAnchorProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'TableOfContentAnchor',\n emits: ['should-activate'],\n options: {\n activeClass: {\n type: String,\n default: 'is-active',\n },\n },\n };\n\n /**\n * Observer.\n * @private\n */\n __observer: IntersectionObserver;\n\n /**\n * Get the sentinel.\n */\n get sentinel(): HTMLElement {\n return document.querySelector(this.targetSelector) as HTMLElement;\n }\n\n /**\n * Init observer on mount.\n */\n mounted() {\n if (!this.sentinel) {\n return;\n }\n\n this.__observer = new IntersectionObserver(([entry]) => {\n const shouldActivate =\n entry.isIntersecting &&\n entry.boundingClientRect.y < 100 &&\n entry.boundingClientRect.y > -100;\n this.$el.classList.toggle(this.$options.activeClass, shouldActivate);\n this.$emit('should-activate', shouldActivate);\n });\n\n this.__observer.observe(this.sentinel);\n }\n\n /**\n * Destroy observer on destroy.\n */\n destroyed() {\n this.__observer.disconnect();\n }\n}\n"],
5
+ "mappings": "AACA,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAYzB,MAAM,6BAA8D;AAAA,EACzE;AACF,EAAiC;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,CAAC,iBAAiB;AAAA,IACzB,SAAS;AAAA,MACP,aAAa;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAwB;AAC1B,WAAO,SAAS,cAAc,KAAK,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AAEA,SAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,KAAK,MAAM;AACtD,YAAM,iBACJ,MAAM,kBACN,MAAM,mBAAmB,IAAI,OAC7B,MAAM,mBAAmB,IAAI;AAC/B,WAAK,IAAI,UAAU,OAAO,KAAK,SAAS,aAAa,cAAc;AACnE,WAAK,MAAM,mBAAmB,cAAc;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,WAAW,WAAW;AAAA,EAC7B;AACF;",
6
6
  "names": []
7
7
  }
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
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
5
  var __export = (target, all) => {
7
6
  for (var name in all)
8
7
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
16
15
  return to;
17
16
  };
18
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __publicField = (obj, key, value) => {
20
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
- return value;
22
- };
23
18
 
24
19
  // packages/ui/molecules/Tabs/Tabs.ts
25
20
  var Tabs_exports = {};
@@ -30,6 +25,30 @@ module.exports = __toCommonJS(Tabs_exports);
30
25
  var import_js_toolkit = require("@studiometa/js-toolkit");
31
26
  var import_utils = require("@studiometa/js-toolkit/utils");
32
27
  var Tabs = class extends import_js_toolkit.Base {
28
+ /**
29
+ * Config.
30
+ */
31
+ static config = {
32
+ name: "Tabs",
33
+ refs: ["btn[]", "content[]"],
34
+ emits: ["enable", "disable"],
35
+ options: {
36
+ styles: {
37
+ type: Object,
38
+ default: () => ({
39
+ content: {
40
+ closed: {
41
+ position: "absolute",
42
+ opacity: "0",
43
+ pointerEvents: "none",
44
+ visibility: "hidden"
45
+ }
46
+ }
47
+ }),
48
+ merge: true
49
+ }
50
+ }
51
+ };
33
52
  items;
34
53
  /**
35
54
  * Initialize the component's behaviours.
@@ -130,29 +149,5 @@ var Tabs = class extends import_js_toolkit.Base {
130
149
  ]).then(() => Promise.resolve(this));
131
150
  }
132
151
  };
133
- /**
134
- * Config.
135
- */
136
- __publicField(Tabs, "config", {
137
- name: "Tabs",
138
- refs: ["btn[]", "content[]"],
139
- emits: ["enable", "disable"],
140
- options: {
141
- styles: {
142
- type: Object,
143
- default: () => ({
144
- content: {
145
- closed: {
146
- position: "absolute",
147
- opacity: "0",
148
- pointerEvents: "none",
149
- visibility: "hidden"
150
- }
151
- }
152
- }),
153
- merge: true
154
- }
155
- }
156
- });
157
152
  if (module.exports.default) module.exports = module.exports.default;
158
153
  //# sourceMappingURL=Tabs.cjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/molecules/Tabs/Tabs.ts"],
4
4
  "sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\n\ntype TabItem = {\n btn: HTMLElement;\n content: HTMLElement;\n isEnabled: boolean;\n};\n\ntype TabsStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n// eslint-disable-next-line no-use-before-define\ntype TabsStylesOption = Partial<Record<keyof TabsProps['$refs'], TabsStates>>;\n\nexport interface TabsProps extends BaseProps {\n $options: {\n styles: TabsStylesOption;\n };\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n}\n\n/**\n * Tabs class.\n */\nexport class Tabs<T extends BaseProps = BaseProps> extends Base<T & TabsProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Tabs',\n refs: ['btn[]', 'content[]'],\n emits: ['enable', 'disable'],\n options: {\n styles: {\n type: Object,\n default: (): TabsStylesOption => ({\n content: {\n closed: {\n position: 'absolute',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n merge: true,\n },\n },\n };\n\n items: TabItem[];\n\n /**\n * Initialize the component's behaviours.\n * @returns {void}\n */\n mounted() {\n this.items = this.$refs.btn.map((btn, index) => {\n const id = `${this.$id}-${index}`;\n const content = this.$refs.content[index];\n btn.setAttribute('id', id);\n content.setAttribute('aria-labelledby', id);\n\n const item = { btn, content, isEnabled: index > 0 };\n if (index > 0) {\n this.disableItem(item);\n } else {\n this.enableItem(item);\n }\n return item;\n });\n }\n\n /**\n * Switch tab on button click.\n */\n onBtnClick(event: MouseEvent, index: number) {\n this.items.forEach((item, i) => {\n if (i !== index) {\n this.disableItem(item);\n }\n });\n\n this.enableItem(this.items[index]);\n }\n\n /**\n * Enable the given tab and its associated content.\n */\n async enableItem(item: TabItem): Promise<this> {\n if (!item || item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = true;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'false');\n this.$emit('enable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.closed,\n active: btnStyles.active,\n to: btnStyles.open,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.closed,\n active: contentStyles.active,\n to: contentStyles.open,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n\n /**\n * Disable the given tab and its associated content.\n */\n async disableItem(item: TabItem): Promise<this> {\n if (!item || !item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = false;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'true');\n this.$emit('disable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.open,\n active: btnStyles.active,\n to: btnStyles.closed,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.open,\n active: contentStyles.active,\n to: contentStyles.closed,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/molecules/Tabs/Tabs.ts"],
4
4
  "sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\n\ntype TabItem = {\n btn: HTMLElement;\n content: HTMLElement;\n isEnabled: boolean;\n};\n\ntype TabsStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n// eslint-disable-next-line no-use-before-define\ntype TabsStylesOption = Partial<Record<keyof TabsProps['$refs'], TabsStates>>;\n\nexport interface TabsProps extends BaseProps {\n $options: {\n styles: TabsStylesOption;\n };\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n}\n\n/**\n * Tabs class.\n */\nexport class Tabs<T extends BaseProps = BaseProps> extends Base<T & TabsProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Tabs',\n refs: ['btn[]', 'content[]'],\n emits: ['enable', 'disable'],\n options: {\n styles: {\n type: Object,\n default: (): TabsStylesOption => ({\n content: {\n closed: {\n position: 'absolute',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n merge: true,\n },\n },\n };\n\n items: TabItem[];\n\n /**\n * Initialize the component's behaviours.\n * @returns {void}\n */\n mounted() {\n this.items = this.$refs.btn.map((btn, index) => {\n const id = `${this.$id}-${index}`;\n const content = this.$refs.content[index];\n btn.setAttribute('id', id);\n content.setAttribute('aria-labelledby', id);\n\n const item = { btn, content, isEnabled: index > 0 };\n if (index > 0) {\n this.disableItem(item);\n } else {\n this.enableItem(item);\n }\n return item;\n });\n }\n\n /**\n * Switch tab on button click.\n */\n onBtnClick(event: MouseEvent, index: number) {\n this.items.forEach((item, i) => {\n if (i !== index) {\n this.disableItem(item);\n }\n });\n\n this.enableItem(this.items[index]);\n }\n\n /**\n * Enable the given tab and its associated content.\n */\n async enableItem(item: TabItem): Promise<this> {\n if (!item || item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = true;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'false');\n this.$emit('enable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.closed,\n active: btnStyles.active,\n to: btnStyles.open,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.closed,\n active: contentStyles.active,\n to: contentStyles.open,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n\n /**\n * Disable the given tab and its associated content.\n */\n async disableItem(item: TabItem): Promise<this> {\n if (!item || !item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = false;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'true');\n this.$emit('disable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.open,\n active: btnStyles.active,\n to: btnStyles.closed,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.open,\n active: contentStyles.active,\n to: contentStyles.closed,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -21,6 +21,7 @@ __reExport(molecules_exports, require("./Accordion/AccordionItem.cjs"), module.e
21
21
  __reExport(molecules_exports, require("./Menu/index.cjs"), module.exports);
22
22
  __reExport(molecules_exports, require("./Slider/index.cjs"), module.exports);
23
23
  __reExport(molecules_exports, require("./Sticky/Sticky.cjs"), module.exports);
24
+ __reExport(molecules_exports, require("./AnchorNav/index.cjs"), module.exports);
24
25
  __reExport(molecules_exports, require("./TableOfContent/index.cjs"), module.exports);
25
26
  __reExport(molecules_exports, require("./Tabs/index.cjs"), module.exports);
26
27
  __reExport(molecules_exports, require("./Modal/index.cjs"), module.exports);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/ui/molecules/index.ts"],
4
- "sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,sCAAd;AACA,8BAAc,0CADd;AAEA,8BAAc,6BAFd;AAGA,8BAAc,+BAHd;AAIA,8BAAc,gCAJd;AAKA,8BAAc,uCALd;AAMA,8BAAc,6BANd;AAOA,8BAAc,8BAPd;AAQA,8BAAc,8BARd;",
4
+ "sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './AnchorNav/index.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,sCAAd;AACA,8BAAc,0CADd;AAEA,8BAAc,6BAFd;AAGA,8BAAc,+BAHd;AAIA,8BAAc,gCAJd;AAKA,8BAAc,kCALd;AAMA,8BAAc,uCANd;AAOA,8BAAc,6BAPd;AAQA,8BAAc,8BARd;AASA,8BAAc,8BATd;",
6
6
  "names": []
7
7
  }
@@ -3,6 +3,7 @@ export * from './Accordion/AccordionItem.js';
3
3
  export * from './Menu/index.js';
4
4
  export * from './Slider/index.js';
5
5
  export * from './Sticky/Sticky.js';
6
+ export * from './AnchorNav/index.js';
6
7
  export * from './TableOfContent/index.js';
7
8
  export * from './Tabs/index.js';
8
9
  export * from './Modal/index.js';
@@ -3,6 +3,7 @@ export * from "./Accordion/AccordionItem.js";
3
3
  export * from "./Menu/index.js";
4
4
  export * from "./Slider/index.js";
5
5
  export * from "./Sticky/Sticky.js";
6
+ export * from "./AnchorNav/index.js";
6
7
  export * from "./TableOfContent/index.js";
7
8
  export * from "./Tabs/index.js";
8
9
  export * from "./Modal/index.js";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/ui/molecules/index.ts"],
4
- "sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
5
- "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './AnchorNav/index.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
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
5
  var __export = (target, all) => {
7
6
  for (var name in all)
8
7
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
16
15
  return to;
17
16
  };
18
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __publicField = (obj, key, value) => {
20
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
- return value;
22
- };
23
18
 
24
19
  // packages/ui/organisms/Frame/Frame.ts
25
20
  var Frame_exports = {};
@@ -39,7 +34,32 @@ function getScrollPosition() {
39
34
  };
40
35
  }
41
36
  var cache = /* @__PURE__ */ new Map();
42
- var _Frame = class extends import_js_toolkit.Base {
37
+ var Frame = class _Frame extends import_js_toolkit.Base {
38
+ /**
39
+ * Config.
40
+ */
41
+ static config = {
42
+ name: "Frame",
43
+ emits: [
44
+ "before-fetch",
45
+ "after-fetch",
46
+ "before-leave",
47
+ "after-leave",
48
+ "before-content",
49
+ "after-content",
50
+ "before-enter",
51
+ "after-enter"
52
+ ],
53
+ components: {
54
+ FrameAnchor: import_FrameAnchor.FrameAnchor,
55
+ FrameForm: import_FrameForm.FrameForm,
56
+ FrameTarget: import_FrameTarget.FrameTarget,
57
+ Frame: _Frame
58
+ },
59
+ options: {
60
+ history: Boolean
61
+ }
62
+ };
43
63
  /**
44
64
  * Get uniq id.
45
65
  */
@@ -72,7 +92,7 @@ var _Frame = class extends import_js_toolkit.Base {
72
92
  * Go to the previous URL on `popstate` event.
73
93
  */
74
94
  onWindowPopstate(event) {
75
- this.goTo(window.location.href, event.state);
95
+ this.goTo(window.location.href, null, event.state);
76
96
  }
77
97
  /**
78
98
  * Prevent click on `FrameAnchor`.
@@ -100,8 +120,13 @@ var _Frame = class extends import_js_toolkit.Base {
100
120
  event.preventDefault();
101
121
  const form = this.$children.FrameForm[index];
102
122
  const url = new URL(form.action);
103
- url.search = new URLSearchParams(new FormData(form.$el)).toString();
104
- this.goTo(url.toString());
123
+ if (form.$el.method === "get") {
124
+ url.search = new URLSearchParams(new FormData(form.$el)).toString();
125
+ this.goTo(url.toString());
126
+ }
127
+ if (form.$el.method === "post") {
128
+ this.goTo(url.toString(), new FormData(form.$el));
129
+ }
105
130
  }
106
131
  /**
107
132
  * Parge an HTML string into a DOM object.
@@ -112,14 +137,14 @@ var _Frame = class extends import_js_toolkit.Base {
112
137
  /**
113
138
  * Go to the given url.
114
139
  */
115
- async goTo(url, scroll = null) {
140
+ async goTo(url, formData = null, scroll = null) {
116
141
  this.$log("goTo", url);
117
142
  const parsedUrl = new URL(url);
118
143
  if (parsedUrl.origin !== window.location.origin) {
119
144
  throw new Error("Cross origin request are not allowed.");
120
145
  }
121
146
  this.$emit("before-fetch", url);
122
- const content = await this.fetch(url);
147
+ const content = await this.fetch(url, formData);
123
148
  const doc = this.parseHTML(content);
124
149
  const el = doc.querySelector(`#${this.id}`);
125
150
  const newFrame = new _Frame(el);
@@ -132,7 +157,7 @@ var _Frame = class extends import_js_toolkit.Base {
132
157
  this.directChildrenFrameTarget.map(
133
158
  (target, index) => target.updateContent(newFrame.directChildrenFrameTarget[index])
134
159
  );
135
- if (this.$options.history) {
160
+ if (this.$options.history && formData === null) {
136
161
  document.title = doc.title;
137
162
  (0, import_utils.historyPush)({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
138
163
  }
@@ -151,7 +176,15 @@ var _Frame = class extends import_js_toolkit.Base {
151
176
  /**
152
177
  * Fetch the given url.
153
178
  */
154
- async fetch(url) {
179
+ async fetch(url, formData = null) {
180
+ if (formData) {
181
+ const promise2 = fetch(url, {
182
+ method: "post",
183
+ body: formData
184
+ }).then((response) => response.text());
185
+ const content = await promise2;
186
+ return content;
187
+ }
155
188
  const cached = cache.get(url);
156
189
  if (cached) {
157
190
  if (cached.status === "pending") {
@@ -183,31 +216,5 @@ var _Frame = class extends import_js_toolkit.Base {
183
216
  }
184
217
  }
185
218
  };
186
- var Frame = _Frame;
187
- /**
188
- * Config.
189
- */
190
- __publicField(Frame, "config", {
191
- name: "Frame",
192
- emits: [
193
- "before-fetch",
194
- "after-fetch",
195
- "before-leave",
196
- "after-leave",
197
- "before-content",
198
- "after-content",
199
- "before-enter",
200
- "after-enter"
201
- ],
202
- components: {
203
- FrameAnchor: import_FrameAnchor.FrameAnchor,
204
- FrameForm: import_FrameForm.FrameForm,
205
- FrameTarget: import_FrameTarget.FrameTarget,
206
- Frame: _Frame
207
- },
208
- options: {
209
- history: Boolean
210
- }
211
- });
212
219
  if (module.exports.default) module.exports = module.exports.default;
213
220
  //# sourceMappingURL=Frame.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/organisms/Frame/Frame.ts"],
4
- "sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { nextFrame, historyPush } from '@studiometa/js-toolkit/utils';\nimport { FrameAnchor } from './FrameAnchor.js';\nimport { FrameForm } from './FrameForm.js';\nimport { FrameTarget } from './FrameTarget.js';\n\n/**\n * Get the scroll position.\n */\nfunction getScrollPosition() {\n return {\n left: window.pageXOffset,\n top: window.pageYOffset,\n };\n}\n\n/**\n * The fetch cache.\n */\nconst cache: Map<\n string,\n { promise: Promise<string>; status: 'pending' | 'resolved' | 'error'; content: string }\n> = new Map();\n\nexport interface FrameProps extends BaseProps {\n $children: {\n FrameAnchor: FrameAnchor[];\n FrameForm: FrameForm[];\n FrameTarget: FrameTarget[];\n // eslint-disable-next-line no-use-before-define\n Frame: Frame[];\n };\n $options: {\n history: boolean;\n };\n}\n\n/**\n * Class.\n */\nexport class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Frame',\n emits: [\n 'before-fetch',\n 'after-fetch',\n 'before-leave',\n 'after-leave',\n 'before-content',\n 'after-content',\n 'before-enter',\n 'after-enter',\n ],\n components: {\n FrameAnchor,\n FrameForm,\n FrameTarget,\n Frame,\n },\n options: {\n history: Boolean,\n },\n };\n\n /**\n * Get uniq id.\n */\n get id() {\n return this.$el.id;\n }\n\n /**\n * Get direct `FrameTarget` children.\n */\n get directChildrenFrameTarget(): FrameTarget[] {\n return getDirectChildren(this, 'Frame', 'FrameTarget');\n }\n\n /**\n * Prevent scroll top on unload.\n */\n onWindowUnload() {\n const { history } = window;\n\n if (!history.state) {\n return;\n }\n\n history.replaceState(\n {\n ...history.state,\n scroll: getScrollPosition(),\n },\n '',\n );\n }\n\n /**\n * Go to the previous URL on `popstate` event.\n */\n onWindowPopstate(event: PopStateEvent) {\n this.goTo(window.location.href, event.state);\n }\n\n /**\n * Prevent click on `FrameAnchor`.\n */\n onFrameAnchorClick(index: number, event: MouseEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameAnchor', this.$children.FrameAnchor[index])) {\n return;\n }\n\n this.$log('onAFrameClick', index, event);\n event.preventDefault();\n const anchor = this.$children.FrameAnchor[index];\n\n // Do nothing when clicking links on the same page\n // @todo handle hash change\n if (anchor.href === window.location.href) {\n return;\n }\n\n this.goTo(anchor.href);\n }\n\n /**\n * Prevent submit on forms.\n */\n onFrameFormSubmit(index: number, event: SubmitEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameForm', this.$children.FrameForm[index])) {\n return;\n }\n\n this.$log('onFrameFormFrameSubmit', index, event);\n event.preventDefault();\n const form = this.$children.FrameForm[index];\n const url = new URL(form.action);\n // @ts-ignore\n url.search = new URLSearchParams(new FormData(form.$el)).toString();\n // @todo handle post request\n this.goTo(url.toString());\n }\n\n /**\n * Parge an HTML string into a DOM object.\n */\n parseHTML(string = '') {\n return new DOMParser().parseFromString(string, 'text/html');\n }\n\n /**\n * Go to the given url.\n */\n async goTo(url: string, scroll: { top: number; left: number } = null) {\n this.$log('goTo', url);\n const parsedUrl = new URL(url);\n\n if (parsedUrl.origin !== window.location.origin) {\n throw new Error('Cross origin request are not allowed.');\n }\n\n this.$emit('before-fetch', url);\n\n // @todo add option to use content as is or to parse it and extract the new frame\n const content = await this.fetch(url);\n const doc = this.parseHTML(content);\n const el = doc.querySelector(`#${this.id}`);\n // @todo manage el === null\n const newFrame = new Frame(el as HTMLElement);\n newFrame.$children.registerAll();\n\n this.$emit('after-fetch', url, content);\n\n this.$emit('before-leave');\n // Leave all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.leave()));\n\n this.$emit('after-leave');\n this.$emit('before-content');\n\n // Update content\n // @todo insert non existing FrameTarget as well\n this.directChildrenFrameTarget.map((target, index) =>\n target.updateContent(newFrame.directChildrenFrameTarget[index]),\n );\n\n // Push history\n if (this.$options.history) {\n document.title = doc.title;\n historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });\n }\n\n if (scroll) {\n document.scrollingElement.scrollTop = scroll.top;\n document.scrollingElement.scrollLeft = scroll.left;\n }\n\n // Update components\n await nextFrame();\n this.$root.$update();\n await nextFrame();\n\n this.$emit('after-content');\n this.$emit('before-enter');\n\n // Enter all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.enter()));\n\n this.$emit('after-enter');\n }\n\n /**\n * Fetch the given url.\n */\n async fetch(url: string): Promise<string> {\n const cached = cache.get(url);\n\n if (cached) {\n if (cached.status === 'pending') {\n return cached.promise;\n }\n\n return cached.content;\n }\n\n const promise = fetch(url).then((response) => response.text());\n\n try {\n cache.set(url, {\n promise,\n status: 'pending',\n content: undefined,\n });\n\n const content = await promise;\n\n cache.set(url, {\n promise,\n status: 'resolved',\n content,\n });\n\n return content;\n } catch (err) {\n cache.set(url, {\n promise,\n status: 'error',\n content: err,\n });\n\n return err;\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { nextFrame, historyPush } from '@studiometa/js-toolkit/utils';\nimport { FrameAnchor } from './FrameAnchor.js';\nimport { FrameForm } from './FrameForm.js';\nimport { FrameTarget } from './FrameTarget.js';\n\n/**\n * Get the scroll position.\n */\nfunction getScrollPosition() {\n return {\n left: window.pageXOffset,\n top: window.pageYOffset,\n };\n}\n\n/**\n * The fetch cache.\n */\nconst cache: Map<\n string,\n { promise: Promise<string>; status: 'pending' | 'resolved' | 'error'; content: string }\n> = new Map();\n\nexport interface FrameProps extends BaseProps {\n $children: {\n FrameAnchor: FrameAnchor[];\n FrameForm: FrameForm[];\n FrameTarget: FrameTarget[];\n // eslint-disable-next-line no-use-before-define\n Frame: Frame[];\n };\n $options: {\n history: boolean;\n };\n}\n\n/**\n * Class.\n */\nexport class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Frame',\n emits: [\n 'before-fetch',\n 'after-fetch',\n 'before-leave',\n 'after-leave',\n 'before-content',\n 'after-content',\n 'before-enter',\n 'after-enter',\n ],\n components: {\n FrameAnchor,\n FrameForm,\n FrameTarget,\n Frame,\n },\n options: {\n history: Boolean,\n },\n };\n\n /**\n * Get uniq id.\n */\n get id() {\n return this.$el.id;\n }\n\n /**\n * Get direct `FrameTarget` children.\n */\n get directChildrenFrameTarget(): FrameTarget[] {\n return getDirectChildren(this, 'Frame', 'FrameTarget');\n }\n\n /**\n * Prevent scroll top on unload.\n */\n onWindowUnload() {\n const { history } = window;\n\n if (!history.state) {\n return;\n }\n\n history.replaceState(\n {\n ...history.state,\n scroll: getScrollPosition(),\n },\n '',\n );\n }\n\n /**\n * Go to the previous URL on `popstate` event.\n */\n onWindowPopstate(event: PopStateEvent) {\n this.goTo(window.location.href, null, event.state);\n }\n\n /**\n * Prevent click on `FrameAnchor`.\n */\n onFrameAnchorClick(index: number, event: MouseEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameAnchor', this.$children.FrameAnchor[index])) {\n return;\n }\n\n this.$log('onAFrameClick', index, event);\n event.preventDefault();\n const anchor = this.$children.FrameAnchor[index];\n\n // Do nothing when clicking links on the same page\n // @todo handle hash change\n if (anchor.href === window.location.href) {\n return;\n }\n\n this.goTo(anchor.href);\n }\n\n /**\n * Prevent submit on forms.\n */\n onFrameFormSubmit(index: number, event: SubmitEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameForm', this.$children.FrameForm[index])) {\n return;\n }\n\n this.$log('onFrameFormFrameSubmit', index, event);\n event.preventDefault();\n const form = this.$children.FrameForm[index];\n const url = new URL(form.action);\n\n if (form.$el.method === 'get') {\n // @ts-ignore\n url.search = new URLSearchParams(new FormData(form.$el)).toString();\n this.goTo(url.toString());\n }\n\n if (form.$el.method === 'post') {\n this.goTo(url.toString(), new FormData(form.$el));\n }\n }\n\n /**\n * Parge an HTML string into a DOM object.\n */\n parseHTML(string = '') {\n return new DOMParser().parseFromString(string, 'text/html');\n }\n\n /**\n * Go to the given url.\n */\n async goTo(url: string, formData: FormData = null, scroll: { top: number; left: number } = null) {\n this.$log('goTo', url);\n const parsedUrl = new URL(url);\n\n if (parsedUrl.origin !== window.location.origin) {\n throw new Error('Cross origin request are not allowed.');\n }\n\n this.$emit('before-fetch', url);\n\n // @todo add option to use content as is or to parse it and extract the new frame\n const content = await this.fetch(url, formData);\n const doc = this.parseHTML(content);\n const el = doc.querySelector(`#${this.id}`);\n // @todo manage el === null\n const newFrame = new Frame(el as HTMLElement);\n newFrame.$children.registerAll();\n\n this.$emit('after-fetch', url, content);\n\n this.$emit('before-leave');\n // Leave all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.leave()));\n\n this.$emit('after-leave');\n this.$emit('before-content');\n\n // Update content\n // @todo insert non existing FrameTarget as well\n this.directChildrenFrameTarget.map((target, index) =>\n target.updateContent(newFrame.directChildrenFrameTarget[index]),\n );\n\n // Push history\n if (this.$options.history && formData === null) {\n document.title = doc.title;\n historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });\n }\n\n if (scroll) {\n document.scrollingElement.scrollTop = scroll.top;\n document.scrollingElement.scrollLeft = scroll.left;\n }\n\n // Update components\n await nextFrame();\n this.$root.$update();\n await nextFrame();\n\n this.$emit('after-content');\n this.$emit('before-enter');\n\n // Enter all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.enter()));\n\n this.$emit('after-enter');\n }\n\n /**\n * Fetch the given url.\n */\n async fetch(url: string, formData: FormData = null): Promise<string> {\n // @note skip cache for POST requests.\n if (formData) {\n const promise = fetch(url, {\n method: 'post',\n body: formData,\n }).then((response) => response.text());\n\n const content = await promise;\n return content;\n }\n\n const cached = cache.get(url);\n\n if (cached) {\n if (cached.status === 'pending') {\n return cached.promise;\n }\n\n return cached.content;\n }\n\n const promise = fetch(url).then((response) => response.text());\n\n try {\n cache.set(url, {\n promise,\n status: 'pending',\n content: undefined,\n });\n\n const content = await promise;\n\n cache.set(url, {\n promise,\n status: 'resolved',\n content,\n });\n\n return content;\n } catch (err) {\n cache.set(url, {\n promise,\n status: 'error',\n content: err,\n });\n\n return err;\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["promise"]
7
7
  }
@@ -53,12 +53,12 @@ export declare class Frame<T extends BaseProps = BaseProps> extends Base<T & Fra
53
53
  /**
54
54
  * Go to the given url.
55
55
  */
56
- goTo(url: string, scroll?: {
56
+ goTo(url: string, formData?: FormData, scroll?: {
57
57
  top: number;
58
58
  left: number;
59
59
  }): Promise<void>;
60
60
  /**
61
61
  * Fetch the given url.
62
62
  */
63
- fetch(url: string): Promise<string>;
63
+ fetch(url: string, formData?: FormData): Promise<string>;
64
64
  }
@@ -68,7 +68,7 @@ class Frame extends Base {
68
68
  * Go to the previous URL on `popstate` event.
69
69
  */
70
70
  onWindowPopstate(event) {
71
- this.goTo(window.location.href, event.state);
71
+ this.goTo(window.location.href, null, event.state);
72
72
  }
73
73
  /**
74
74
  * Prevent click on `FrameAnchor`.
@@ -96,8 +96,13 @@ class Frame extends Base {
96
96
  event.preventDefault();
97
97
  const form = this.$children.FrameForm[index];
98
98
  const url = new URL(form.action);
99
- url.search = new URLSearchParams(new FormData(form.$el)).toString();
100
- this.goTo(url.toString());
99
+ if (form.$el.method === "get") {
100
+ url.search = new URLSearchParams(new FormData(form.$el)).toString();
101
+ this.goTo(url.toString());
102
+ }
103
+ if (form.$el.method === "post") {
104
+ this.goTo(url.toString(), new FormData(form.$el));
105
+ }
101
106
  }
102
107
  /**
103
108
  * Parge an HTML string into a DOM object.
@@ -108,14 +113,14 @@ class Frame extends Base {
108
113
  /**
109
114
  * Go to the given url.
110
115
  */
111
- async goTo(url, scroll = null) {
116
+ async goTo(url, formData = null, scroll = null) {
112
117
  this.$log("goTo", url);
113
118
  const parsedUrl = new URL(url);
114
119
  if (parsedUrl.origin !== window.location.origin) {
115
120
  throw new Error("Cross origin request are not allowed.");
116
121
  }
117
122
  this.$emit("before-fetch", url);
118
- const content = await this.fetch(url);
123
+ const content = await this.fetch(url, formData);
119
124
  const doc = this.parseHTML(content);
120
125
  const el = doc.querySelector(`#${this.id}`);
121
126
  const newFrame = new Frame(el);
@@ -128,7 +133,7 @@ class Frame extends Base {
128
133
  this.directChildrenFrameTarget.map(
129
134
  (target, index) => target.updateContent(newFrame.directChildrenFrameTarget[index])
130
135
  );
131
- if (this.$options.history) {
136
+ if (this.$options.history && formData === null) {
132
137
  document.title = doc.title;
133
138
  historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
134
139
  }
@@ -147,7 +152,15 @@ class Frame extends Base {
147
152
  /**
148
153
  * Fetch the given url.
149
154
  */
150
- async fetch(url) {
155
+ async fetch(url, formData = null) {
156
+ if (formData) {
157
+ const promise2 = fetch(url, {
158
+ method: "post",
159
+ body: formData
160
+ }).then((response) => response.text());
161
+ const content = await promise2;
162
+ return content;
163
+ }
151
164
  const cached = cache.get(url);
152
165
  if (cached) {
153
166
  if (cached.status === "pending") {