@studiometa/ui 0.1.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +37 -1
  2. package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +52 -0
  3. package/atoms/AnchorScrollTo/AnchorScrollTo.d.ts +31 -0
  4. package/atoms/AnchorScrollTo/AnchorScrollTo.js +26 -0
  5. package/atoms/Cursor/Cursor.cjs +129 -0
  6. package/{Cursor.d.ts → atoms/Cursor/Cursor.d.ts} +0 -0
  7. package/atoms/Cursor/Cursor.js +103 -0
  8. package/atoms/Figure/Figure.cjs +53 -0
  9. package/atoms/Figure/Figure.d.ts +31 -0
  10. package/atoms/Figure/Figure.js +27 -0
  11. package/atoms/LargeText/LargeText.cjs +74 -0
  12. package/atoms/LargeText/LargeText.d.ts +71 -0
  13. package/atoms/LargeText/LargeText.js +48 -0
  14. package/atoms/LazyInclude/LazyInclude.cjs +72 -0
  15. package/atoms/LazyInclude/LazyInclude.d.ts +64 -0
  16. package/atoms/LazyInclude/LazyInclude.js +46 -0
  17. package/atoms/Prefetch/AbstractPrefetch.cjs +84 -0
  18. package/atoms/Prefetch/AbstractPrefetch.d.ts +52 -0
  19. package/atoms/Prefetch/AbstractPrefetch.js +58 -0
  20. package/atoms/Prefetch/PrefetchWhenOver.cjs +65 -0
  21. package/atoms/Prefetch/PrefetchWhenOver.d.ts +21 -0
  22. package/atoms/Prefetch/PrefetchWhenOver.js +35 -0
  23. package/atoms/Prefetch/PrefetchWhenVisible.cjs +66 -0
  24. package/atoms/Prefetch/PrefetchWhenVisible.d.ts +21 -0
  25. package/atoms/Prefetch/PrefetchWhenVisible.js +36 -0
  26. package/atoms/Prefetch/index.cjs +40 -0
  27. package/atoms/Prefetch/index.d.ts +3 -0
  28. package/atoms/Prefetch/index.js +8 -0
  29. package/atoms/index.cjs +45 -0
  30. package/atoms/index.d.ts +6 -0
  31. package/atoms/index.js +13 -0
  32. package/index.cjs +26 -0
  33. package/index.d.ts +3 -6
  34. package/index.js +3 -6
  35. package/molecules/Accordion/Accordion.cjs +65 -0
  36. package/{Accordion/index.d.ts → molecules/Accordion/Accordion.d.ts} +5 -6
  37. package/molecules/Accordion/Accordion.js +35 -0
  38. package/molecules/Accordion/AccordionCore.cjs +60 -0
  39. package/{Accordion/Accordion.d.ts → molecules/Accordion/AccordionCore.d.ts} +0 -0
  40. package/molecules/Accordion/AccordionCore.js +34 -0
  41. package/molecules/Accordion/AccordionItem.cjs +208 -0
  42. package/{Accordion → molecules/Accordion}/AccordionItem.d.ts +11 -13
  43. package/molecules/Accordion/AccordionItem.js +178 -0
  44. package/molecules/Modal/Modal.cjs +176 -0
  45. package/{Modal.d.ts → molecules/Modal/Modal.d.ts} +9 -9
  46. package/molecules/Modal/Modal.js +150 -0
  47. package/molecules/Modal/ModalWithTransition.cjs +100 -0
  48. package/molecules/Modal/ModalWithTransition.d.ts +29 -0
  49. package/molecules/Modal/ModalWithTransition.js +69 -0
  50. package/molecules/Panel/Panel.cjs +148 -0
  51. package/molecules/Panel/Panel.d.ts +42 -0
  52. package/molecules/Panel/Panel.js +117 -0
  53. package/molecules/Slider/AbstractSliderChild.cjs +74 -0
  54. package/molecules/Slider/AbstractSliderChild.d.ts +55 -0
  55. package/molecules/Slider/AbstractSliderChild.js +43 -0
  56. package/molecules/Slider/Slider.cjs +240 -0
  57. package/molecules/Slider/Slider.d.ts +245 -0
  58. package/molecules/Slider/Slider.js +209 -0
  59. package/molecules/Slider/SliderBtn.cjs +65 -0
  60. package/molecules/Slider/SliderBtn.d.ts +31 -0
  61. package/molecules/Slider/SliderBtn.js +34 -0
  62. package/molecules/Slider/SliderCount.cjs +50 -0
  63. package/molecules/Slider/SliderCount.d.ts +21 -0
  64. package/molecules/Slider/SliderCount.js +19 -0
  65. package/molecules/Slider/SliderDots.cjs +55 -0
  66. package/molecules/Slider/SliderDots.d.ts +33 -0
  67. package/molecules/Slider/SliderDots.js +24 -0
  68. package/molecules/Slider/SliderDrag.cjs +45 -0
  69. package/molecules/Slider/SliderDrag.d.ts +16 -0
  70. package/molecules/Slider/SliderDrag.js +19 -0
  71. package/molecules/Slider/SliderItem.cjs +130 -0
  72. package/molecules/Slider/SliderItem.d.ts +106 -0
  73. package/molecules/Slider/SliderItem.js +105 -0
  74. package/molecules/Slider/SliderProgress.cjs +54 -0
  75. package/molecules/Slider/SliderProgress.d.ts +27 -0
  76. package/molecules/Slider/SliderProgress.js +23 -0
  77. package/molecules/Slider/index.cjs +50 -0
  78. package/molecules/Slider/index.d.ts +8 -0
  79. package/molecules/Slider/index.js +18 -0
  80. package/molecules/Sticky/Sticky.cjs +133 -0
  81. package/molecules/Sticky/Sticky.d.ts +141 -0
  82. package/molecules/Sticky/Sticky.js +107 -0
  83. package/molecules/TableOfContent/TableOfContent.cjs +73 -0
  84. package/molecules/TableOfContent/TableOfContent.d.ts +59 -0
  85. package/molecules/TableOfContent/TableOfContent.js +42 -0
  86. package/molecules/TableOfContent/TableOfContentAnchor.cjs +65 -0
  87. package/molecules/TableOfContent/TableOfContentAnchor.d.ts +36 -0
  88. package/molecules/TableOfContent/TableOfContentAnchor.js +39 -0
  89. package/molecules/TableOfContent/index.cjs +38 -0
  90. package/molecules/TableOfContent/index.d.ts +2 -0
  91. package/molecules/TableOfContent/index.js +6 -0
  92. package/molecules/Tabs/Tabs.cjs +152 -0
  93. package/{Tabs.d.ts → molecules/Tabs/Tabs.d.ts} +2 -4
  94. package/molecules/Tabs/Tabs.js +126 -0
  95. package/molecules/index.cjs +50 -0
  96. package/molecules/index.d.ts +9 -0
  97. package/molecules/index.js +18 -0
  98. package/organisms/Frame/Frame.cjs +202 -0
  99. package/organisms/Frame/Frame.d.ts +119 -0
  100. package/organisms/Frame/Frame.js +171 -0
  101. package/organisms/Frame/FrameAnchor.cjs +48 -0
  102. package/organisms/Frame/FrameAnchor.d.ts +35 -0
  103. package/organisms/Frame/FrameAnchor.js +22 -0
  104. package/organisms/Frame/FrameForm.cjs +48 -0
  105. package/organisms/Frame/FrameForm.d.ts +32 -0
  106. package/organisms/Frame/FrameForm.js +22 -0
  107. package/organisms/Frame/FrameTarget.cjs +134 -0
  108. package/organisms/Frame/FrameTarget.d.ts +47 -0
  109. package/organisms/Frame/FrameTarget.js +109 -0
  110. package/organisms/Frame/index.cjs +42 -0
  111. package/organisms/Frame/index.d.ts +4 -0
  112. package/organisms/Frame/index.js +10 -0
  113. package/organisms/index.cjs +24 -0
  114. package/organisms/index.d.ts +1 -0
  115. package/organisms/index.js +1 -0
  116. package/package.json +2 -2
  117. package/primitives/Draggable/Draggable.cjs +64 -0
  118. package/{Draggable.d.ts → primitives/Draggable/Draggable.d.ts} +0 -0
  119. package/primitives/Draggable/Draggable.js +38 -0
  120. package/primitives/Sentinel/Sentinel.cjs +41 -0
  121. package/primitives/Sentinel/Sentinel.d.ts +12 -0
  122. package/primitives/Sentinel/Sentinel.js +15 -0
  123. package/primitives/Transition/Transition.cjs +71 -0
  124. package/primitives/Transition/Transition.d.ts +69 -0
  125. package/primitives/Transition/Transition.js +45 -0
  126. package/primitives/index.cjs +40 -0
  127. package/primitives/index.d.ts +3 -0
  128. package/primitives/index.js +8 -0
  129. package/Accordion/Accordion.js +0 -29
  130. package/Accordion/AccordionItem.js +0 -197
  131. package/Accordion/index.js +0 -12
  132. package/Cursor.js +0 -121
  133. package/Draggable.js +0 -31
  134. package/Modal.js +0 -167
  135. package/Tabs.js +0 -106
@@ -0,0 +1,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/index.js
30
+ var molecules_exports = {};
31
+ __export(molecules_exports, {
32
+ Accordion: () => import_Accordion.default,
33
+ AccordionItem: () => import_AccordionItem.default,
34
+ Modal: () => import_Modal.default,
35
+ ModalWithTransition: () => import_ModalWithTransition.default,
36
+ Panel: () => import_Panel.default,
37
+ Sticky: () => import_Sticky.default,
38
+ Tabs: () => import_Tabs.default
39
+ });
40
+ __reExport(molecules_exports, require("./Slider/index.cjs"));
41
+ __reExport(molecules_exports, require("./TableOfContent/index.cjs"));
42
+ var import_Accordion = __toESM(require("./Accordion/Accordion.cjs"), 1);
43
+ var import_AccordionItem = __toESM(require("./Accordion/AccordionItem.cjs"), 1);
44
+ var import_Modal = __toESM(require("./Modal/Modal.cjs"), 1);
45
+ var import_ModalWithTransition = __toESM(require("./Modal/ModalWithTransition.cjs"), 1);
46
+ var import_Panel = __toESM(require("./Panel/Panel.cjs"), 1);
47
+ var import_Sticky = __toESM(require("./Sticky/Sticky.cjs"), 1);
48
+ var import_Tabs = __toESM(require("./Tabs/Tabs.cjs"), 1);
49
+ module.exports = __toCommonJS(molecules_exports);
50
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,9 @@
1
+ export * from "./Slider/index.js";
2
+ export * from "./TableOfContent/index.js";
3
+ export { default as Accordion } from "./Accordion/Accordion.js";
4
+ export { default as AccordionItem } from "./Accordion/AccordionItem.js";
5
+ export { default as Modal } from "./Modal/Modal.js";
6
+ export { default as ModalWithTransition } from "./Modal/ModalWithTransition.js";
7
+ export { default as Panel } from "./Panel/Panel.js";
8
+ export { default as Sticky } from "./Sticky/Sticky.js";
9
+ export { default as Tabs } from "./Tabs/Tabs.js";
@@ -0,0 +1,18 @@
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
+ };
@@ -0,0 +1,202 @@
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__ */ ((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);
29
+ var __publicField = (obj, key, value) => {
30
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
31
+ return value;
32
+ };
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
+
54
+ // packages/ui/organisms/Frame/Frame.js
55
+ var Frame_exports = {};
56
+ __export(Frame_exports, {
57
+ default: () => Frame
58
+ });
59
+ var import_js_toolkit = require("@studiometa/js-toolkit");
60
+ var import_utils = require("@studiometa/js-toolkit/utils");
61
+ var import_FrameAnchor = __toESM(require("./FrameAnchor.cjs"), 1);
62
+ var import_FrameForm = __toESM(require("./FrameForm.cjs"), 1);
63
+ var import_FrameTarget = __toESM(require("./FrameTarget.cjs"), 1);
64
+ var cache = /* @__PURE__ */ new Map();
65
+ var _Frame = class extends import_js_toolkit.Base {
66
+ get id() {
67
+ return this.$el.id;
68
+ }
69
+ getDirectChild(name) {
70
+ if (!this.$children[name]) {
71
+ return [];
72
+ }
73
+ if (!this.$children.Frame) {
74
+ return this.$children[name];
75
+ }
76
+ return this.$children[name].filter((child) => this.$children.Frame.every((frame) => frame.$children[name] ? !frame.$children[name].includes(child) : true));
77
+ }
78
+ get directChildFrameAnchor() {
79
+ return this.getDirectChild("FrameAnchor");
80
+ }
81
+ get directChildFrameForm() {
82
+ return this.getDirectChild("form");
83
+ }
84
+ get directChildFrameTarget() {
85
+ return this.getDirectChild("FrameTarget");
86
+ }
87
+ onFrameAnchorFrameClick(event, index) {
88
+ if (!this.directChildFrameAnchor.includes(this.$children.FrameAnchor[index])) {
89
+ return;
90
+ }
91
+ this.$log("onAFrameClick", event, index);
92
+ event.preventDefault();
93
+ const anchor = this.$children.FrameAnchor[index];
94
+ if (anchor.href === window.location.href) {
95
+ return;
96
+ }
97
+ this.goTo(anchor.href);
98
+ }
99
+ onFrameFormFrameSubmit(event, index) {
100
+ if (!this.directChildFrameForm.includes(this.$children.FrameForm[index])) {
101
+ return;
102
+ }
103
+ this.$log("onFrameFormFrameSubmit", event);
104
+ event.preventDefault();
105
+ const form = this.$children.FrameForm[index];
106
+ this.goTo(form.action);
107
+ }
108
+ parseHTML(string = "") {
109
+ return new DOMParser().parseFromString(string, "text/html");
110
+ }
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;
173
+ }
174
+ });
175
+ }
176
+ };
177
+ var Frame = _Frame;
178
+ __publicField(Frame, "config", {
179
+ name: "Frame",
180
+ emits: [
181
+ "before-fetch",
182
+ "after-fetch",
183
+ "before-leave",
184
+ "after-leave",
185
+ "before-content",
186
+ "after-content",
187
+ "before-enter",
188
+ "after-enter"
189
+ ],
190
+ log: true,
191
+ components: {
192
+ FrameAnchor: import_FrameAnchor.default,
193
+ FrameForm: import_FrameForm.default,
194
+ FrameTarget: import_FrameTarget.default,
195
+ Frame: _Frame
196
+ },
197
+ options: {
198
+ history: Boolean
199
+ }
200
+ });
201
+ module.exports = __toCommonJS(Frame_exports);
202
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @typedef {Object} FrameOptions
3
+ * @property {boolean} history
4
+ * @property {'replace'|'prepend'|'append'} position
5
+ * @property {string} target
6
+ */
7
+ /**
8
+ * @typedef {Frame & {
9
+ * $children: {
10
+ * FrameAnchor: FrameAnchor[],
11
+ * FrameForm: FrameForm[],
12
+ * FrameTarget: FrameTarget[],
13
+ * Frame: Frame[],
14
+ * }
15
+ * }} FrameInterface
16
+ */
17
+ /**
18
+ * Class.
19
+ */
20
+ export default class Frame extends Base {
21
+ /**
22
+ * Config.
23
+ */
24
+ static config: {
25
+ name: string;
26
+ emits: string[];
27
+ log: boolean;
28
+ components: {
29
+ FrameAnchor: typeof FrameAnchor;
30
+ FrameForm: typeof FrameForm;
31
+ FrameTarget: typeof FrameTarget;
32
+ Frame: typeof Frame;
33
+ };
34
+ options: {
35
+ history: BooleanConstructor;
36
+ };
37
+ };
38
+ /**
39
+ * Get uniq id.
40
+ * @returns {string}
41
+ */
42
+ get id(): string;
43
+ /**
44
+ * Get direct children.
45
+ *
46
+ * @this {FrameInterface}
47
+ * @param {string} name
48
+ * @returns {any[]}
49
+ */
50
+ getDirectChild(name: string): any[];
51
+ /**
52
+ * Get direct `FrameAnchor` children.
53
+ * @returns {FrameAnchor[]}
54
+ */
55
+ get directChildFrameAnchor(): FrameAnchor[];
56
+ /**
57
+ * Get direct `FrameForm` children.
58
+ * @returns {FrameForm[]}
59
+ */
60
+ get directChildFrameForm(): FrameForm[];
61
+ /**
62
+ * Get direct `FrameTarget` children.
63
+ * @returns {FrameTarget[]}
64
+ */
65
+ get directChildFrameTarget(): FrameTarget[];
66
+ /**
67
+ * Prevent click on `FrameAnchor`.
68
+ *
69
+ * @this {FrameInterface}
70
+ * @param {MouseEvent} event
71
+ * @param {number} index
72
+ * @returns {void}
73
+ */
74
+ onFrameAnchorFrameClick(event: MouseEvent, index: number): void;
75
+ /**
76
+ * Prevent submit on forms.
77
+ *
78
+ * @this {FrameInterface}
79
+ * @param {SubmitEvent} event
80
+ * @param {number} index
81
+ * @returns {void}
82
+ */
83
+ onFrameFormFrameSubmit(event: SubmitEvent, index: number): void;
84
+ /**
85
+ * Parge an HTML string into a DOM object.
86
+ * @param {string} string
87
+ * @returns {Document}
88
+ */
89
+ parseHTML(string?: string): Document;
90
+ /**
91
+ * Go to the given url.
92
+ * @param {string} url
93
+ * @returns {Promise<void>}
94
+ */
95
+ goTo(url: string): Promise<void>;
96
+ /**
97
+ * Fetch the given url.
98
+ * @param {string} url
99
+ * @returns {Promise<string>}
100
+ */
101
+ fetch(url: string): Promise<string>;
102
+ }
103
+ export type FrameOptions = {
104
+ history: boolean;
105
+ position: 'replace' | 'prepend' | 'append';
106
+ target: string;
107
+ };
108
+ export type FrameInterface = Frame & {
109
+ $children: {
110
+ FrameAnchor: FrameAnchor[];
111
+ FrameForm: FrameForm[];
112
+ FrameTarget: FrameTarget[];
113
+ Frame: Frame[];
114
+ };
115
+ };
116
+ import { Base } from "@studiometa/js-toolkit";
117
+ import FrameAnchor from "./FrameAnchor.js";
118
+ import FrameForm from "./FrameForm.js";
119
+ import FrameTarget from "./FrameTarget.js";
@@ -0,0 +1,171 @@
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 { nextFrame, historyPush } from "@studiometa/js-toolkit/utils";
29
+ import FrameAnchor from "./FrameAnchor.js";
30
+ import FrameForm from "./FrameForm.js";
31
+ import FrameTarget from "./FrameTarget.js";
32
+ const cache = /* @__PURE__ */ new Map();
33
+ const _Frame = class extends Base {
34
+ get id() {
35
+ return this.$el.id;
36
+ }
37
+ getDirectChild(name) {
38
+ if (!this.$children[name]) {
39
+ return [];
40
+ }
41
+ if (!this.$children.Frame) {
42
+ return this.$children[name];
43
+ }
44
+ return this.$children[name].filter((child) => this.$children.Frame.every((frame) => frame.$children[name] ? !frame.$children[name].includes(child) : true));
45
+ }
46
+ get directChildFrameAnchor() {
47
+ return this.getDirectChild("FrameAnchor");
48
+ }
49
+ get directChildFrameForm() {
50
+ return this.getDirectChild("form");
51
+ }
52
+ get directChildFrameTarget() {
53
+ return this.getDirectChild("FrameTarget");
54
+ }
55
+ onFrameAnchorFrameClick(event, index) {
56
+ if (!this.directChildFrameAnchor.includes(this.$children.FrameAnchor[index])) {
57
+ return;
58
+ }
59
+ this.$log("onAFrameClick", event, index);
60
+ event.preventDefault();
61
+ const anchor = this.$children.FrameAnchor[index];
62
+ if (anchor.href === window.location.href) {
63
+ return;
64
+ }
65
+ this.goTo(anchor.href);
66
+ }
67
+ onFrameFormFrameSubmit(event, index) {
68
+ if (!this.directChildFrameForm.includes(this.$children.FrameForm[index])) {
69
+ return;
70
+ }
71
+ this.$log("onFrameFormFrameSubmit", event);
72
+ event.preventDefault();
73
+ const form = this.$children.FrameForm[index];
74
+ this.goTo(form.action);
75
+ }
76
+ parseHTML(string = "") {
77
+ return new DOMParser().parseFromString(string, "text/html");
78
+ }
79
+ goTo(url) {
80
+ return __async(this, null, function* () {
81
+ this.$log("goTo", url);
82
+ const parsedUrl = new URL(url);
83
+ if (parsedUrl.origin !== window.location.origin) {
84
+ throw new Error("Cross origin request are not allowed.");
85
+ }
86
+ this.$emit("before-fetch", url);
87
+ const content = yield this.fetch(url);
88
+ const doc = this.parseHTML(content);
89
+ const el = doc.querySelector(`#${this.id}`);
90
+ const newFrame = new _Frame(el);
91
+ newFrame.$children.registerAll();
92
+ this.$emit("after-fetch", url, content);
93
+ this.$emit("before-leave");
94
+ yield Promise.all(this.directChildFrameTarget.map((target) => target.leave()));
95
+ this.$emit("after-leave");
96
+ this.$emit("before-content");
97
+ this.directChildFrameTarget.map((target, index) => target.updateContent(newFrame.directChildFrameTarget[index]));
98
+ if (this.$options.history) {
99
+ document.title = doc.title;
100
+ historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
101
+ }
102
+ yield nextFrame();
103
+ this.$root.$update();
104
+ yield nextFrame();
105
+ this.$emit("after-content");
106
+ this.$emit("before-enter");
107
+ yield Promise.all(this.directChildFrameTarget.map((target) => target.enter()));
108
+ this.$emit("after-enter");
109
+ });
110
+ }
111
+ fetch(url) {
112
+ return __async(this, null, function* () {
113
+ const cached = cache.get(url);
114
+ if (cached) {
115
+ if (cached.status === "pending") {
116
+ return cached.promise;
117
+ }
118
+ return cached.content;
119
+ }
120
+ const promise = fetch(url);
121
+ try {
122
+ cache.set(url, {
123
+ promise,
124
+ status: "pending",
125
+ content: void 0
126
+ });
127
+ const content = yield promise.then((response) => response.text());
128
+ cache.set(url, {
129
+ promise,
130
+ status: "resolved",
131
+ content
132
+ });
133
+ return content;
134
+ } catch (err) {
135
+ cache.set(url, {
136
+ promise,
137
+ status: "error",
138
+ content: err
139
+ });
140
+ return err;
141
+ }
142
+ });
143
+ }
144
+ };
145
+ let Frame = _Frame;
146
+ __publicField(Frame, "config", {
147
+ name: "Frame",
148
+ emits: [
149
+ "before-fetch",
150
+ "after-fetch",
151
+ "before-leave",
152
+ "after-leave",
153
+ "before-content",
154
+ "after-content",
155
+ "before-enter",
156
+ "after-enter"
157
+ ],
158
+ log: true,
159
+ components: {
160
+ FrameAnchor,
161
+ FrameForm,
162
+ FrameTarget,
163
+ Frame: _Frame
164
+ },
165
+ options: {
166
+ history: Boolean
167
+ }
168
+ });
169
+ export {
170
+ Frame as default
171
+ };
@@ -0,0 +1,48 @@
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/organisms/Frame/FrameAnchor.js
30
+ var FrameAnchor_exports = {};
31
+ __export(FrameAnchor_exports, {
32
+ default: () => FrameAnchor
33
+ });
34
+ var import_js_toolkit = require("@studiometa/js-toolkit");
35
+ var FrameAnchor = class extends import_js_toolkit.Base {
36
+ get href() {
37
+ return this.$el.href;
38
+ }
39
+ onClick(event) {
40
+ this.$emit("frame-click", event);
41
+ }
42
+ };
43
+ __publicField(FrameAnchor, "config", {
44
+ name: "FrameAnchor",
45
+ emits: ["frame-click"]
46
+ });
47
+ module.exports = __toCommonJS(FrameAnchor_exports);
48
+ if (module.exports.default) module.exports = module.exports.default;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @typedef {FrameAnchor & {
3
+ * $el: HTMLAnchorElement
4
+ * }} FrameAnchorInterface
5
+ */
6
+ /**
7
+ * FrameAnchor class.
8
+ */
9
+ export default class FrameAnchor extends Base {
10
+ /**
11
+ * Config.
12
+ */
13
+ static config: {
14
+ name: string;
15
+ emits: string[];
16
+ };
17
+ /**
18
+ * Get the URL.
19
+ *
20
+ * @this {FrameAnchorInterface}
21
+ * @returns {string}
22
+ */
23
+ get href(): string;
24
+ /**
25
+ * Dispatch the link click event.
26
+ *
27
+ * @param {MouseEvent} event
28
+ * @returns {void}
29
+ */
30
+ onClick(event: MouseEvent): void;
31
+ }
32
+ export type FrameAnchorInterface = FrameAnchor & {
33
+ $el: HTMLAnchorElement;
34
+ };
35
+ import { Base } from "@studiometa/js-toolkit";
@@ -0,0 +1,22 @@
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
+ class FrameAnchor extends Base {
9
+ get href() {
10
+ return this.$el.href;
11
+ }
12
+ onClick(event) {
13
+ this.$emit("frame-click", event);
14
+ }
15
+ }
16
+ __publicField(FrameAnchor, "config", {
17
+ name: "FrameAnchor",
18
+ emits: ["frame-click"]
19
+ });
20
+ export {
21
+ FrameAnchor as default
22
+ };