@studiometa/ui 0.2.3 → 0.2.6

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 (163) hide show
  1. package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +8 -13
  2. package/atoms/AnchorScrollTo/AnchorScrollTo.js +1 -26
  3. package/atoms/Button/Button.twig +68 -0
  4. package/atoms/Button/StyledButton.twig +47 -0
  5. package/atoms/Cursor/Cursor.cjs +14 -22
  6. package/atoms/Cursor/Cursor.d.ts +2 -2
  7. package/atoms/Cursor/Cursor.js +1 -103
  8. package/atoms/Cursor/Cursor.twig +28 -0
  9. package/atoms/Figure/Figure.cjs +20 -16
  10. package/atoms/Figure/Figure.d.ts +19 -1
  11. package/atoms/Figure/Figure.js +1 -27
  12. package/atoms/Figure/Figure.twig +120 -0
  13. package/atoms/Figure/FigureTwicPics.cjs +72 -0
  14. package/atoms/Figure/FigureTwicPics.d.ts +48 -0
  15. package/atoms/Figure/FigureTwicPics.js +1 -0
  16. package/atoms/Figure/index.cjs +31 -0
  17. package/atoms/Figure/index.d.ts +2 -0
  18. package/atoms/Figure/index.js +1 -0
  19. package/atoms/Icon/Icon.twig +13 -0
  20. package/atoms/LargeText/LargeText.cjs +15 -23
  21. package/atoms/LargeText/LargeText.d.ts +3 -3
  22. package/atoms/LargeText/LargeText.js +1 -64
  23. package/atoms/LargeText/LargeText.twig +49 -0
  24. package/atoms/LazyInclude/LazyInclude.cjs +8 -13
  25. package/atoms/LazyInclude/LazyInclude.d.ts +4 -4
  26. package/atoms/LazyInclude/LazyInclude.js +1 -46
  27. package/atoms/Prefetch/AbstractPrefetch.cjs +8 -13
  28. package/atoms/Prefetch/AbstractPrefetch.d.ts +1 -1
  29. package/atoms/Prefetch/AbstractPrefetch.js +1 -58
  30. package/atoms/Prefetch/PrefetchWhenOver.cjs +12 -34
  31. package/atoms/Prefetch/PrefetchWhenOver.d.ts +1 -1
  32. package/atoms/Prefetch/PrefetchWhenOver.js +1 -35
  33. package/atoms/Prefetch/PrefetchWhenVisible.cjs +12 -34
  34. package/atoms/Prefetch/PrefetchWhenVisible.d.ts +1 -1
  35. package/atoms/Prefetch/PrefetchWhenVisible.js +1 -36
  36. package/atoms/Prefetch/index.cjs +9 -16
  37. package/atoms/Prefetch/index.js +1 -8
  38. package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs +126 -0
  39. package/atoms/ScrollAnimation/AbstractScrollAnimation.d.ts +133 -0
  40. package/atoms/ScrollAnimation/AbstractScrollAnimation.js +1 -0
  41. package/atoms/ScrollAnimation/ScrollAnimation.cjs +51 -0
  42. package/atoms/ScrollAnimation/ScrollAnimation.d.ts +55 -0
  43. package/atoms/ScrollAnimation/ScrollAnimation.js +1 -0
  44. package/atoms/ScrollAnimation/ScrollAnimationChild.cjs +51 -0
  45. package/atoms/ScrollAnimation/ScrollAnimationChild.d.ts +13 -0
  46. package/atoms/ScrollAnimation/ScrollAnimationChild.js +1 -0
  47. package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs +41 -0
  48. package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.d.ts +6 -0
  49. package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.js +1 -0
  50. package/atoms/ScrollAnimation/ScrollAnimationParent.cjs +48 -0
  51. package/atoms/ScrollAnimation/ScrollAnimationParent.d.ts +35 -0
  52. package/atoms/ScrollAnimation/ScrollAnimationParent.js +1 -0
  53. package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs +41 -0
  54. package/atoms/ScrollAnimation/ScrollAnimationWithEase.d.ts +6 -0
  55. package/atoms/ScrollAnimation/ScrollAnimationWithEase.js +1 -0
  56. package/atoms/ScrollAnimation/animationScrollWithEase.cjs +70 -0
  57. package/atoms/ScrollAnimation/animationScrollWithEase.d.ts +11 -0
  58. package/atoms/ScrollAnimation/animationScrollWithEase.js +1 -0
  59. package/atoms/ScrollAnimation/index.cjs +41 -0
  60. package/atoms/ScrollAnimation/index.d.ts +7 -0
  61. package/atoms/ScrollAnimation/index.js +1 -0
  62. package/atoms/index.cjs +13 -19
  63. package/atoms/index.d.ts +2 -1
  64. package/atoms/index.js +1 -13
  65. package/index.cjs +12 -15
  66. package/index.d.ts +1 -0
  67. package/index.js +1 -3
  68. package/molecules/Accordion/Accordion.cjs +12 -34
  69. package/molecules/Accordion/Accordion.js +1 -35
  70. package/molecules/Accordion/Accordion.twig +54 -0
  71. package/molecules/Accordion/AccordionCore.cjs +8 -13
  72. package/molecules/Accordion/AccordionCore.d.ts +2 -2
  73. package/molecules/Accordion/AccordionCore.js +1 -34
  74. package/molecules/Accordion/AccordionItem.cjs +70 -114
  75. package/molecules/Accordion/AccordionItem.d.ts +7 -6
  76. package/molecules/Accordion/AccordionItem.js +1 -178
  77. package/molecules/Menu/Menu.cjs +148 -0
  78. package/molecules/Menu/Menu.d.ts +140 -0
  79. package/molecules/Menu/Menu.js +1 -0
  80. package/molecules/Menu/MenuBtn.cjs +53 -0
  81. package/molecules/Menu/MenuBtn.d.ts +39 -0
  82. package/molecules/Menu/MenuBtn.js +1 -0
  83. package/molecules/Menu/MenuList.cjs +134 -0
  84. package/molecules/Menu/MenuList.d.ts +101 -0
  85. package/molecules/Menu/MenuList.js +1 -0
  86. package/molecules/Menu/index.cjs +33 -0
  87. package/molecules/Menu/index.d.ts +3 -0
  88. package/molecules/Menu/index.js +1 -0
  89. package/molecules/Modal/Modal.cjs +42 -71
  90. package/molecules/Modal/Modal.d.ts +5 -5
  91. package/molecules/Modal/Modal.js +1 -150
  92. package/molecules/Modal/Modal.twig +108 -0
  93. package/molecules/Modal/ModalWithTransition.cjs +13 -43
  94. package/molecules/Modal/ModalWithTransition.js +1 -69
  95. package/molecules/Modal/StyledModal.twig +39 -0
  96. package/molecules/Panel/Panel.cjs +42 -76
  97. package/molecules/Panel/Panel.js +1 -117
  98. package/molecules/Panel/Panel.twig +73 -0
  99. package/molecules/Panel/StyledPanel.twig +28 -0
  100. package/molecules/Slider/AbstractSliderChild.cjs +10 -20
  101. package/molecules/Slider/AbstractSliderChild.d.ts +6 -2
  102. package/molecules/Slider/AbstractSliderChild.js +1 -43
  103. package/molecules/Slider/Slider.cjs +14 -24
  104. package/molecules/Slider/Slider.d.ts +6 -6
  105. package/molecules/Slider/Slider.js +1 -209
  106. package/molecules/Slider/SliderBtn.cjs +9 -16
  107. package/molecules/Slider/SliderBtn.d.ts +1 -1
  108. package/molecules/Slider/SliderBtn.js +1 -34
  109. package/molecules/Slider/SliderCount.cjs +9 -16
  110. package/molecules/Slider/SliderCount.js +1 -19
  111. package/molecules/Slider/SliderDots.cjs +9 -16
  112. package/molecules/Slider/SliderDots.js +1 -24
  113. package/molecules/Slider/SliderDrag.cjs +8 -13
  114. package/molecules/Slider/SliderDrag.js +1 -19
  115. package/molecules/Slider/SliderItem.cjs +14 -37
  116. package/molecules/Slider/SliderItem.js +1 -105
  117. package/molecules/Slider/SliderProgress.cjs +9 -16
  118. package/molecules/Slider/SliderProgress.js +1 -23
  119. package/molecules/Slider/index.cjs +9 -16
  120. package/molecules/Slider/index.js +1 -18
  121. package/molecules/Sticky/Sticky.cjs +11 -19
  122. package/molecules/Sticky/Sticky.d.ts +8 -8
  123. package/molecules/Sticky/Sticky.js +1 -107
  124. package/molecules/Sticky/Sticky.twig +31 -0
  125. package/molecules/TableOfContent/TableOfContent.cjs +9 -16
  126. package/molecules/TableOfContent/TableOfContent.d.ts +1 -1
  127. package/molecules/TableOfContent/TableOfContent.js +1 -42
  128. package/molecules/TableOfContent/TableOfContentAnchor.cjs +8 -13
  129. package/molecules/TableOfContent/TableOfContentAnchor.js +1 -39
  130. package/molecules/TableOfContent/index.cjs +9 -16
  131. package/molecules/TableOfContent/index.js +1 -6
  132. package/molecules/Tabs/Tabs.cjs +54 -82
  133. package/molecules/Tabs/Tabs.d.ts +5 -4
  134. package/molecules/Tabs/Tabs.js +1 -126
  135. package/molecules/Tabs/Tabs.twig +20 -0
  136. package/molecules/index.cjs +13 -18
  137. package/molecules/index.d.ts +1 -0
  138. package/molecules/index.js +1 -18
  139. package/organisms/Frame/Frame.cjs +107 -99
  140. package/organisms/Frame/Frame.d.ts +37 -4
  141. package/organisms/Frame/Frame.js +1 -171
  142. package/organisms/Frame/FrameAnchor.cjs +8 -13
  143. package/organisms/Frame/FrameAnchor.js +1 -22
  144. package/organisms/Frame/FrameForm.cjs +8 -13
  145. package/organisms/Frame/FrameForm.js +1 -22
  146. package/organisms/Frame/FrameTarget.cjs +31 -73
  147. package/organisms/Frame/FrameTarget.js +1 -109
  148. package/organisms/Frame/index.cjs +9 -16
  149. package/organisms/Frame/index.js +1 -10
  150. package/organisms/ImageGrid/ImageGrid.twig +42 -0
  151. package/organisms/index.cjs +9 -13
  152. package/organisms/index.js +1 -1
  153. package/package.json +3 -4
  154. package/primitives/Draggable/Draggable.cjs +15 -28
  155. package/primitives/Draggable/Draggable.d.ts +0 -5
  156. package/primitives/Draggable/Draggable.js +1 -38
  157. package/primitives/Sentinel/Sentinel.cjs +8 -13
  158. package/primitives/Sentinel/Sentinel.js +1 -15
  159. package/primitives/Transition/Transition.cjs +12 -17
  160. package/primitives/Transition/Transition.d.ts +2 -4
  161. package/primitives/Transition/Transition.js +1 -45
  162. package/primitives/index.cjs +9 -16
  163. package/primitives/index.js +1 -8
@@ -1,126 +1 @@
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
- var __async = (__this, __arguments, generator) => {
8
- return new Promise((resolve, reject) => {
9
- var fulfilled = (value) => {
10
- try {
11
- step(generator.next(value));
12
- } catch (e) {
13
- reject(e);
14
- }
15
- };
16
- var rejected = (value) => {
17
- try {
18
- step(generator.throw(value));
19
- } catch (e) {
20
- reject(e);
21
- }
22
- };
23
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
24
- step((generator = generator.apply(__this, __arguments)).next());
25
- });
26
- };
27
- import { Base } from "@studiometa/js-toolkit";
28
- import { transition } from "@studiometa/js-toolkit/utils";
29
- class Tabs extends Base {
30
- mounted() {
31
- this.items = this.$refs.btn.map((btn, index) => {
32
- const id = `${this.$id}-${index}`;
33
- const content = this.$refs.content[index];
34
- btn.setAttribute("id", id);
35
- content.setAttribute("aria-labelledby", id);
36
- const item = { btn, content, isEnabled: index > 0 };
37
- if (index > 0) {
38
- this.disableItem(item);
39
- } else {
40
- this.enableItem(item);
41
- }
42
- return item;
43
- });
44
- }
45
- onBtnClick(event, index) {
46
- this.items.forEach((item, i) => {
47
- if (i !== index) {
48
- this.disableItem(item);
49
- }
50
- });
51
- this.enableItem(this.items[index]);
52
- }
53
- enableItem(item) {
54
- return __async(this, null, function* () {
55
- if (!item || item.isEnabled) {
56
- return Promise.resolve(this);
57
- }
58
- item.isEnabled = true;
59
- const { btn, content } = item;
60
- const btnStyles = this.$options.styles.btn || {};
61
- const contentStyles = this.$options.styles.content || {};
62
- content.setAttribute("aria-hidden", "false");
63
- this.$emit("enable", item);
64
- return Promise.all([
65
- transition(btn, {
66
- from: btnStyles.closed,
67
- active: btnStyles.active,
68
- to: btnStyles.open
69
- }, "keep"),
70
- transition(content, {
71
- from: contentStyles.closed,
72
- active: contentStyles.active,
73
- to: contentStyles.open
74
- }, "keep")
75
- ]).then(() => Promise.resolve(this));
76
- });
77
- }
78
- disableItem(item) {
79
- return __async(this, null, function* () {
80
- if (!item || !item.isEnabled) {
81
- return Promise.resolve(this);
82
- }
83
- item.isEnabled = false;
84
- const { btn, content } = item;
85
- const btnStyles = this.$options.styles.btn || {};
86
- const contentStyles = this.$options.styles.content || {};
87
- content.setAttribute("aria-hidden", "true");
88
- this.$emit("disable", item);
89
- return Promise.all([
90
- transition(btn, {
91
- from: btnStyles.open,
92
- active: btnStyles.active,
93
- to: btnStyles.closed
94
- }, "keep"),
95
- transition(content, {
96
- from: contentStyles.open,
97
- active: contentStyles.active,
98
- to: contentStyles.closed
99
- }, "keep")
100
- ]).then(() => Promise.resolve(this));
101
- });
102
- }
103
- }
104
- __publicField(Tabs, "config", {
105
- name: "Tabs",
106
- refs: ["btn[]", "content[]"],
107
- emits: ["enable", "disable"],
108
- options: {
109
- styles: {
110
- type: Object,
111
- default: () => ({
112
- content: {
113
- closed: {
114
- position: "absolute",
115
- opacity: "0",
116
- pointerEvents: "none",
117
- visibility: "hidden"
118
- }
119
- }
120
- })
121
- }
122
- }
123
- });
124
- export {
125
- Tabs as default
126
- };
1
+ import{Base as a}from"@studiometa/js-toolkit";import{transition as o}from"@studiometa/js-toolkit/utils";class l extends a{static config={name:"Tabs",refs:["btn[]","content[]"],emits:["enable","disable"],options:{styles:{type:Object,default:()=>({content:{closed:{position:"absolute",opacity:"0",pointerEvents:"none",visibility:"hidden"}}}),merge:!0}}};mounted(){this.items=this.$refs.btn.map((t,s)=>{const i=`${this.$id}-${s}`,e=this.$refs.content[s];t.setAttribute("id",i),e.setAttribute("aria-labelledby",i);const n={btn:t,content:e,isEnabled:s>0};return s>0?this.disableItem(n):this.enableItem(n),n})}onBtnClick(t,s){this.items.forEach((i,e)=>{e!==s&&this.disableItem(i)}),this.enableItem(this.items[s])}async enableItem(t){if(!t||t.isEnabled)return Promise.resolve(this);t.isEnabled=!0;const{btn:s,content:i}=t,e=this.$options.styles.btn||{},n=this.$options.styles.content||{};return i.setAttribute("aria-hidden","false"),this.$emit("enable",t),Promise.all([o(s,{from:e.closed,active:e.active,to:e.open},"keep"),o(i,{from:n.closed,active:n.active,to:n.open},"keep")]).then(()=>Promise.resolve(this))}async disableItem(t){if(!t||!t.isEnabled)return Promise.resolve(this);t.isEnabled=!1;const{btn:s,content:i}=t,e=this.$options.styles.btn||{},n=this.$options.styles.content||{};return i.setAttribute("aria-hidden","true"),this.$emit("disable",t),Promise.all([o(s,{from:e.open,active:e.active,to:e.closed},"keep"),o(i,{from:n.open,active:n.active,to:n.closed},"keep")]).then(()=>Promise.resolve(this))}}export{l as default};
@@ -0,0 +1,20 @@
1
+ <div data-component="Tabs" data-option-styles='{ "btn": { "open": { "borderBottomColor": "#fff" } } }'>
2
+ {% block title_wrapper %}
3
+ {% for item in items %}
4
+ <button data-ref="btn[]" style="border-bottom: 1px solid transparent;">
5
+ {% block title %}
6
+ {{ item.title }}
7
+ {% endblock %}
8
+ </button>
9
+ {% endfor %}
10
+ {% endblock %}
11
+ {% block content_wrapper %}
12
+ {% for item in items %}
13
+ <div data-ref="content[]" aria-hidden="false">
14
+ {% block content %}
15
+ {{ item.content }}
16
+ {% endblock %}
17
+ </div>
18
+ {% endfor %}
19
+ {% endblock %}
20
+ </div>
@@ -4,27 +4,21 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
7
  var __export = (target, all) => {
9
8
  for (var name in all)
10
9
  __defProp(target, name, { get: all[name], enumerable: true });
11
10
  };
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 });
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
16
  }
18
- return target;
17
+ return to;
19
18
  };
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);
19
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
22
 
29
23
  // packages/ui/molecules/index.js
30
24
  var molecules_exports = {};
@@ -37,8 +31,10 @@ __export(molecules_exports, {
37
31
  Sticky: () => import_Sticky.default,
38
32
  Tabs: () => import_Tabs.default
39
33
  });
40
- __reExport(molecules_exports, require("./Slider/index.cjs"));
41
- __reExport(molecules_exports, require("./TableOfContent/index.cjs"));
34
+ module.exports = __toCommonJS(molecules_exports);
35
+ __reExport(molecules_exports, require("./Menu/index.cjs"), module.exports);
36
+ __reExport(molecules_exports, require("./Slider/index.cjs"), module.exports);
37
+ __reExport(molecules_exports, require("./TableOfContent/index.cjs"), module.exports);
42
38
  var import_Accordion = __toESM(require("./Accordion/Accordion.cjs"), 1);
43
39
  var import_AccordionItem = __toESM(require("./Accordion/AccordionItem.cjs"), 1);
44
40
  var import_Modal = __toESM(require("./Modal/Modal.cjs"), 1);
@@ -46,5 +42,4 @@ var import_ModalWithTransition = __toESM(require("./Modal/ModalWithTransition.cj
46
42
  var import_Panel = __toESM(require("./Panel/Panel.cjs"), 1);
47
43
  var import_Sticky = __toESM(require("./Sticky/Sticky.cjs"), 1);
48
44
  var import_Tabs = __toESM(require("./Tabs/Tabs.cjs"), 1);
49
- module.exports = __toCommonJS(molecules_exports);
50
45
  if (module.exports.default) module.exports = module.exports.default;
@@ -1,3 +1,4 @@
1
+ export * from "./Menu/index.js";
1
2
  export * from "./Slider/index.js";
2
3
  export * from "./TableOfContent/index.js";
3
4
  export { default as Accordion } from "./Accordion/Accordion.js";
@@ -1,18 +1 @@
1
- export * from "./Slider/index.js";
2
- export * from "./TableOfContent/index.js";
3
- import { default as default2 } from "./Accordion/Accordion.js";
4
- import { default as default3 } from "./Accordion/AccordionItem.js";
5
- import { default as default4 } from "./Modal/Modal.js";
6
- import { default as default5 } from "./Modal/ModalWithTransition.js";
7
- import { default as default6 } from "./Panel/Panel.js";
8
- import { default as default7 } from "./Sticky/Sticky.js";
9
- import { default as default8 } from "./Tabs/Tabs.js";
10
- export {
11
- default2 as Accordion,
12
- default3 as AccordionItem,
13
- default4 as Modal,
14
- default5 as ModalWithTransition,
15
- default6 as Panel,
16
- default7 as Sticky,
17
- default8 as Tabs
18
- };
1
+ export*from"./Menu/index.js";export*from"./Slider/index.js";export*from"./TableOfContent/index.js";import{default as f}from"./Accordion/Accordion.js";import{default as m}from"./Accordion/AccordionItem.js";import{default as p}from"./Modal/Modal.js";import{default as s}from"./Modal/ModalWithTransition.js";import{default as i}from"./Panel/Panel.js";import{default as n}from"./Sticky/Sticky.js";import{default as M}from"./Tabs/Tabs.js";export{f as Accordion,m as AccordionItem,p as Modal,s as ModalWithTransition,i as Panel,n as Sticky,M as Tabs};
@@ -5,62 +5,42 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
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
8
  var __export = (target, all) => {
10
9
  for (var name in all)
11
10
  __defProp(target, name, { get: all[name], enumerable: true });
12
11
  };
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 });
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
17
  }
19
- return target;
18
+ return to;
20
19
  };
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__ */ ((cache2) => {
25
- return (module2, temp) => {
26
- return cache2 && cache2.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache2 && cache2.set(module2, temp), temp);
27
- };
28
- })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
22
  var __publicField = (obj, key, value) => {
30
23
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
31
24
  return value;
32
25
  };
33
- var __async = (__this, __arguments, generator) => {
34
- return new Promise((resolve, reject) => {
35
- var fulfilled = (value) => {
36
- try {
37
- step(generator.next(value));
38
- } catch (e) {
39
- reject(e);
40
- }
41
- };
42
- var rejected = (value) => {
43
- try {
44
- step(generator.throw(value));
45
- } catch (e) {
46
- reject(e);
47
- }
48
- };
49
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
50
- step((generator = generator.apply(__this, __arguments)).next());
51
- });
52
- };
53
26
 
54
27
  // packages/ui/organisms/Frame/Frame.js
55
28
  var Frame_exports = {};
56
29
  __export(Frame_exports, {
57
30
  default: () => Frame
58
31
  });
32
+ module.exports = __toCommonJS(Frame_exports);
59
33
  var import_js_toolkit = require("@studiometa/js-toolkit");
60
34
  var import_utils = require("@studiometa/js-toolkit/utils");
61
35
  var import_FrameAnchor = __toESM(require("./FrameAnchor.cjs"), 1);
62
36
  var import_FrameForm = __toESM(require("./FrameForm.cjs"), 1);
63
37
  var import_FrameTarget = __toESM(require("./FrameTarget.cjs"), 1);
38
+ function getScrollPosition() {
39
+ return {
40
+ left: window.pageXOffset,
41
+ top: window.pageYOffset
42
+ };
43
+ }
64
44
  var cache = /* @__PURE__ */ new Map();
65
45
  var _Frame = class extends import_js_toolkit.Base {
66
46
  get id() {
@@ -84,6 +64,35 @@ var _Frame = class extends import_js_toolkit.Base {
84
64
  get directChildFrameTarget() {
85
65
  return this.getDirectChild("FrameTarget");
86
66
  }
67
+ mounted() {
68
+ if (this.$options.history) {
69
+ window.addEventListener("popstate", this);
70
+ }
71
+ }
72
+ destroyed() {
73
+ window.removeEventListener("popstate", this);
74
+ }
75
+ handleEvent(event) {
76
+ if (event.type === "popstate") {
77
+ this.onWindowPopstate(event);
78
+ }
79
+ if (event.type === "beforeunload") {
80
+ this.onWindowUnload();
81
+ }
82
+ }
83
+ onWindowUnload() {
84
+ const { history } = window;
85
+ if (!history.state) {
86
+ return;
87
+ }
88
+ history.replaceState({
89
+ ...history.state,
90
+ scroll: getScrollPosition()
91
+ }, "");
92
+ }
93
+ onWindowPopstate(event) {
94
+ this.goTo(window.location.href, event.state);
95
+ }
87
96
  onFrameAnchorFrameClick(event, index) {
88
97
  if (!this.directChildFrameAnchor.includes(this.$children.FrameAnchor[index])) {
89
98
  return;
@@ -108,70 +117,70 @@ var _Frame = class extends import_js_toolkit.Base {
108
117
  parseHTML(string = "") {
109
118
  return new DOMParser().parseFromString(string, "text/html");
110
119
  }
111
- goTo(url) {
112
- return __async(this, null, function* () {
113
- this.$log("goTo", url);
114
- const parsedUrl = new URL(url);
115
- if (parsedUrl.origin !== window.location.origin) {
116
- throw new Error("Cross origin request are not allowed.");
117
- }
118
- this.$emit("before-fetch", url);
119
- const content = yield this.fetch(url);
120
- const doc = this.parseHTML(content);
121
- const el = doc.querySelector(`#${this.id}`);
122
- const newFrame = new _Frame(el);
123
- newFrame.$children.registerAll();
124
- this.$emit("after-fetch", url, content);
125
- this.$emit("before-leave");
126
- yield Promise.all(this.directChildFrameTarget.map((target) => target.leave()));
127
- this.$emit("after-leave");
128
- this.$emit("before-content");
129
- this.directChildFrameTarget.map((target, index) => target.updateContent(newFrame.directChildFrameTarget[index]));
130
- if (this.$options.history) {
131
- document.title = doc.title;
132
- (0, import_utils.historyPush)({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
133
- }
134
- yield (0, import_utils.nextFrame)();
135
- this.$root.$update();
136
- yield (0, import_utils.nextFrame)();
137
- this.$emit("after-content");
138
- this.$emit("before-enter");
139
- yield Promise.all(this.directChildFrameTarget.map((target) => target.enter()));
140
- this.$emit("after-enter");
141
- });
142
- }
143
- fetch(url) {
144
- return __async(this, null, function* () {
145
- const cached = cache.get(url);
146
- if (cached) {
147
- if (cached.status === "pending") {
148
- return cached.promise;
149
- }
150
- return cached.content;
151
- }
152
- const promise = fetch(url);
153
- try {
154
- cache.set(url, {
155
- promise,
156
- status: "pending",
157
- content: void 0
158
- });
159
- const content = yield promise.then((response) => response.text());
160
- cache.set(url, {
161
- promise,
162
- status: "resolved",
163
- content
164
- });
165
- return content;
166
- } catch (err) {
167
- cache.set(url, {
168
- promise,
169
- status: "error",
170
- content: err
171
- });
172
- return err;
120
+ async goTo(url, scroll = null) {
121
+ this.$log("goTo", url);
122
+ const parsedUrl = new URL(url);
123
+ if (parsedUrl.origin !== window.location.origin) {
124
+ throw new Error("Cross origin request are not allowed.");
125
+ }
126
+ this.$emit("before-fetch", url);
127
+ const content = await this.fetch(url);
128
+ const doc = this.parseHTML(content);
129
+ const el = doc.querySelector(`#${this.id}`);
130
+ const newFrame = new _Frame(el);
131
+ newFrame.$children.registerAll();
132
+ this.$emit("after-fetch", url, content);
133
+ this.$emit("before-leave");
134
+ await Promise.all(this.directChildFrameTarget.map((target) => target.leave()));
135
+ this.$emit("after-leave");
136
+ this.$emit("before-content");
137
+ this.directChildFrameTarget.map((target, index) => target.updateContent(newFrame.directChildFrameTarget[index]));
138
+ if (this.$options.history) {
139
+ document.title = doc.title;
140
+ (0, import_utils.historyPush)({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
141
+ }
142
+ if (scroll) {
143
+ document.scrollingElement.scrollTop = scroll.top;
144
+ document.scrollingElement.scrollLeft = scroll.left;
145
+ }
146
+ await (0, import_utils.nextFrame)();
147
+ this.$root.$update();
148
+ await (0, import_utils.nextFrame)();
149
+ this.$emit("after-content");
150
+ this.$emit("before-enter");
151
+ await Promise.all(this.directChildFrameTarget.map((target) => target.enter()));
152
+ this.$emit("after-enter");
153
+ }
154
+ async fetch(url) {
155
+ const cached = cache.get(url);
156
+ if (cached) {
157
+ if (cached.status === "pending") {
158
+ return cached.promise;
173
159
  }
174
- });
160
+ return cached.content;
161
+ }
162
+ const promise = fetch(url);
163
+ try {
164
+ cache.set(url, {
165
+ promise,
166
+ status: "pending",
167
+ content: void 0
168
+ });
169
+ const content = await promise.then((response) => response.text());
170
+ cache.set(url, {
171
+ promise,
172
+ status: "resolved",
173
+ content
174
+ });
175
+ return content;
176
+ } catch (err) {
177
+ cache.set(url, {
178
+ promise,
179
+ status: "error",
180
+ content: err
181
+ });
182
+ return err;
183
+ }
175
184
  }
176
185
  };
177
186
  var Frame = _Frame;
@@ -198,5 +207,4 @@ __publicField(Frame, "config", {
198
207
  history: Boolean
199
208
  }
200
209
  });
201
- module.exports = __toCommonJS(Frame_exports);
202
210
  if (module.exports.default) module.exports = module.exports.default;
@@ -47,7 +47,7 @@ export default class Frame extends Base {
47
47
  * @param {string} name
48
48
  * @returns {any[]}
49
49
  */
50
- getDirectChild(name: string): any[];
50
+ getDirectChild(this: FrameInterface, name: string): any[];
51
51
  /**
52
52
  * Get direct `FrameAnchor` children.
53
53
  * @returns {FrameAnchor[]}
@@ -63,6 +63,35 @@ export default class Frame extends Base {
63
63
  * @returns {FrameTarget[]}
64
64
  */
65
65
  get directChildFrameTarget(): FrameTarget[];
66
+ /**
67
+ * Mounted hook.
68
+ * @returns {void}
69
+ */
70
+ mounted(): void;
71
+ /**
72
+ * Destroyed hook.
73
+ * @returns {void}
74
+ */
75
+ destroyed(): void;
76
+ /**
77
+ * Dispatch events.
78
+ * @param {PopStateEvent} event
79
+ * @returns {void}
80
+ */
81
+ handleEvent(event: PopStateEvent): void;
82
+ /**
83
+ * Prevent scroll top on unload.
84
+ *
85
+ * @returns {void}
86
+ */
87
+ onWindowUnload(): void;
88
+ /**
89
+ * Go to the previous URL on `popstate` event.
90
+ *
91
+ * @param {PopStateEvent} event
92
+ * @returns {void}
93
+ */
94
+ onWindowPopstate(event: PopStateEvent): void;
66
95
  /**
67
96
  * Prevent click on `FrameAnchor`.
68
97
  *
@@ -71,7 +100,7 @@ export default class Frame extends Base {
71
100
  * @param {number} index
72
101
  * @returns {void}
73
102
  */
74
- onFrameAnchorFrameClick(event: MouseEvent, index: number): void;
103
+ onFrameAnchorFrameClick(this: FrameInterface, event: MouseEvent, index: number): void;
75
104
  /**
76
105
  * Prevent submit on forms.
77
106
  *
@@ -80,7 +109,7 @@ export default class Frame extends Base {
80
109
  * @param {number} index
81
110
  * @returns {void}
82
111
  */
83
- onFrameFormFrameSubmit(event: SubmitEvent, index: number): void;
112
+ onFrameFormFrameSubmit(this: FrameInterface, event: SubmitEvent, index: number): void;
84
113
  /**
85
114
  * Parge an HTML string into a DOM object.
86
115
  * @param {string} string
@@ -90,9 +119,13 @@ export default class Frame extends Base {
90
119
  /**
91
120
  * Go to the given url.
92
121
  * @param {string} url
122
+ * @param {null|{ top: number, left: number }} [scroll]
93
123
  * @returns {Promise<void>}
94
124
  */
95
- goTo(url: string): Promise<void>;
125
+ goTo(url: string, scroll?: null | {
126
+ top: number;
127
+ left: number;
128
+ }): Promise<void>;
96
129
  /**
97
130
  * Fetch the given url.
98
131
  * @param {string} url