@studiometa/ui 0.2.8 → 0.2.11

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 (73) hide show
  1. package/atoms/Cursor/Cursor.cjs +5 -1
  2. package/atoms/Cursor/Cursor.d.ts +6 -0
  3. package/atoms/Cursor/Cursor.js +1 -1
  4. package/atoms/Figure/Figure.cjs +19 -5
  5. package/atoms/Figure/Figure.d.ts +40 -17
  6. package/atoms/Figure/Figure.js +1 -1
  7. package/atoms/Figure/FigureTwicPics.cjs +1 -1
  8. package/atoms/Figure/FigureTwicPics.d.ts +5 -0
  9. package/atoms/Figure/FigureTwicPics.js +1 -1
  10. package/atoms/LargeText/LargeText.cjs +11 -11
  11. package/atoms/LargeText/LargeText.d.ts +2 -2
  12. package/atoms/LargeText/LargeText.js +1 -1
  13. package/atoms/LargeText/LargeText.twig +1 -1
  14. package/atoms/ScrollReveal/ScrollReveal.cjs +72 -0
  15. package/atoms/ScrollReveal/ScrollReveal.d.ts +77 -0
  16. package/atoms/ScrollReveal/ScrollReveal.js +1 -0
  17. package/atoms/ScrollReveal/index.cjs +29 -0
  18. package/atoms/ScrollReveal/index.d.ts +1 -0
  19. package/atoms/ScrollReveal/index.js +1 -0
  20. package/atoms/index.cjs +1 -0
  21. package/atoms/index.d.ts +1 -0
  22. package/atoms/index.js +1 -1
  23. package/decorators/index.cjs +29 -0
  24. package/decorators/index.d.ts +1 -0
  25. package/decorators/index.js +1 -0
  26. package/decorators/withTransition.cjs +66 -0
  27. package/decorators/withTransition.d.ts +43 -0
  28. package/decorators/withTransition.js +1 -0
  29. package/index.cjs +1 -0
  30. package/index.d.ts +1 -0
  31. package/index.js +1 -1
  32. package/molecules/Menu/Menu.cjs +7 -16
  33. package/molecules/Menu/Menu.d.ts +12 -12
  34. package/molecules/Menu/Menu.js +1 -1
  35. package/molecules/Menu/MenuBtn.cjs +1 -5
  36. package/molecules/Menu/MenuBtn.d.ts +0 -1
  37. package/molecules/Menu/MenuBtn.js +1 -1
  38. package/molecules/Menu/MenuList.cjs +1 -3
  39. package/molecules/Menu/MenuList.d.ts +12 -14
  40. package/molecules/Menu/MenuList.js +1 -1
  41. package/molecules/Modal/Modal.cjs +11 -3
  42. package/molecules/Modal/Modal.d.ts +17 -5
  43. package/molecules/Modal/Modal.js +1 -1
  44. package/molecules/Modal/Modal.twig +5 -2
  45. package/molecules/Modal/StyledModal.twig +5 -2
  46. package/molecules/Panel/StyledPanel.twig +8 -3
  47. package/molecules/Slider/Slider.cjs +68 -22
  48. package/molecules/Slider/Slider.d.ts +25 -2
  49. package/molecules/Slider/Slider.js +1 -1
  50. package/molecules/Slider/SliderDots.cjs +9 -4
  51. package/molecules/Slider/SliderDots.d.ts +18 -1
  52. package/molecules/Slider/SliderDots.js +1 -1
  53. package/molecules/Slider/SliderDrag.cjs +14 -3
  54. package/molecules/Slider/SliderDrag.d.ts +31 -3
  55. package/molecules/Slider/SliderDrag.js +1 -1
  56. package/molecules/Slider/SliderItem.cjs +1 -1
  57. package/molecules/Slider/SliderItem.js +1 -1
  58. package/molecules/Slider/SliderProgress.cjs +3 -4
  59. package/molecules/Slider/SliderProgress.js +1 -1
  60. package/organisms/Frame/Frame.cjs +11 -18
  61. package/organisms/Frame/Frame.d.ts +6 -17
  62. package/organisms/Frame/Frame.js +1 -1
  63. package/organisms/Frame/FrameAnchor.cjs +1 -5
  64. package/organisms/Frame/FrameAnchor.d.ts +0 -8
  65. package/organisms/Frame/FrameAnchor.js +1 -1
  66. package/organisms/Frame/FrameForm.cjs +1 -5
  67. package/organisms/Frame/FrameForm.d.ts +0 -8
  68. package/organisms/Frame/FrameForm.js +1 -1
  69. package/organisms/Frame/FrameTarget.d.ts +16 -10
  70. package/package.json +2 -2
  71. package/primitives/Transition/Transition.cjs +3 -41
  72. package/primitives/Transition/Transition.d.ts +6 -66
  73. package/primitives/Transition/Transition.js +1 -1
@@ -25,7 +25,6 @@
25
25
  /**
26
26
  * Orchestrate the slider items state transition.
27
27
  * @todo a11y
28
- * @todo better state management with `mode` option
29
28
  */
30
29
  export default class Slider extends Base {
31
30
  /**
@@ -50,6 +49,10 @@ export default class Slider extends Base {
50
49
  type: NumberConstructor;
51
50
  default: number;
52
51
  };
52
+ dropSensitivity: {
53
+ type: NumberConstructor;
54
+ default: number;
55
+ };
53
56
  };
54
57
  };
55
58
  __distanceX: number;
@@ -80,6 +83,11 @@ export default class Slider extends Base {
80
83
  * @type {Record<SliderModes, number>}
81
84
  */
82
85
  origins: Record<SliderModes, number>;
86
+ /**
87
+ * Wether or not the wrapper is focused.
88
+ * @type {boolean}
89
+ */
90
+ hasFocus: boolean;
83
91
  /**
84
92
  * Get the current state.
85
93
  * @returns {SliderState}
@@ -122,7 +130,6 @@ export default class Slider extends Base {
122
130
  /**
123
131
  * Get the states for each SliderItem.
124
132
  *
125
- * @todo save value for every available modes to avoid recalculation when switching
126
133
  * @this {SliderInterface}
127
134
  */
128
135
  getStates(this: SliderInterface): {
@@ -199,6 +206,22 @@ export default class Slider extends Base {
199
206
  * @returns {void}
200
207
  */
201
208
  onSliderDragDrop(this: SliderInterface, props: import('@studiometa/js-toolkit/services/drag').DragServiceProps): void;
209
+ /**
210
+ * Enable focus.
211
+ * @returns {void}
212
+ */
213
+ onWrapperFocus(): void;
214
+ /**
215
+ * Disable focus.
216
+ * @returns {void}
217
+ */
218
+ onWrapperBlur(): void;
219
+ /**
220
+ * Go prev or next when focus is on the wrapper and pressing arrow keys.
221
+ * @param {import('@studiometa/js-toolkit/services/key').KeyServiceProps} props
222
+ * @returns {void}
223
+ */
224
+ keyed({ LEFT, RIGHT, isDown }: import('@studiometa/js-toolkit/services/key').KeyServiceProps): void;
202
225
  /**
203
226
  * Prepare invisible items.
204
227
  * @returns {void}
@@ -1 +1 @@
1
- import{Base as o}from"@studiometa/js-toolkit";import{clamp as d,inertiaFinalValue as c,nextFrame as h}from"@studiometa/js-toolkit/utils";import u from"./SliderDrag.js";import g from"./SliderItem.js";class x extends o{static config={name:"Slider",refs:["wrapper"],emits:["goto","index"],components:{SliderItem:g,SliderDrag:u},options:{mode:{type:String,default:"left"},fitBounds:Boolean,contain:Boolean,sensitivity:{type:Number,default:1}}};__distanceX=0;__initialX=0;__currentIndex=0;get currentIndex(){return this.__currentIndex}set currentIndex(e){this.currentSliderItem.disactivate(),this.$emit("index",e),this.__currentIndex=e,this.currentSliderItem.activate()}states=[];origins={left:0,center:0,right:0};get currentState(){return this.states[this.currentIndex]}get firstState(){return this.states[0]}get lastState(){return this.states[this.states.length-1]}get containMinState(){return this.getStateValueByMode(this.firstState.x,"left")}get containMaxState(){return this.getStateValueByMode(this.lastState.x,"right")}get indexMax(){return this.$children.SliderItem.length-1}get currentSliderItem(){return this.$children.SliderItem[this.currentIndex]}getStates(){const{wrapper:e}=this.$refs,t=e.getBoundingClientRect();return this.origins={left:t.left,center:t.x+t.width/2,right:t.x+t.width},this.$children.SliderItem.map(i=>({x:{left:(i.rect.x-this.origins.left)*-1,center:(i.rect.x+i.rect.width/2-this.origins.center)*-1,right:(i.rect.x+i.rect.width-this.origins.right)*-1}}))}getOriginByMode(e){return this.origins[e??this.$options.mode]}getStateValueByMode(e,t){return e[t??this.$options.mode]}mounted(){this.states=this.getStates(),this.prepareInvisibleItems(),this.goTo(this.currentIndex)}resized(){h(()=>{this.states=this.getStates(),h(()=>{this.prepareInvisibleItems(),this.goTo(this.currentIndex)})})}goNext(){this.currentIndex+1>this.indexMax||this.goTo(this.currentIndex+1)}goPrev(){this.currentIndex-1<0||this.goTo(this.currentIndex-1)}goTo(e){if(e<0||e>this.indexMax)throw new Error("Index out of bound.");let t=this.getStateValueByMode(this.states[e].x);this.$options.contain&&(this.$children.SliderItem[this.indexMax].willBeFullyVisible(t)?t=this.getStateValueByMode(this.lastState.x,"right"):this.$children.SliderItem[0].willBeFullyVisible(t)&&(t=this.getStateValueByMode(this.firstState.x,"left")));const i=this.getVisibleItems(t);e<this.currentIndex&&i.reverse(),i.forEach(s=>{h(()=>s.move(t))}),this.currentIndex=e,this.$emit("goto",e)}onSliderDragStart(){this.__initialX=this.currentSliderItem?this.currentSliderItem.x:0}onSliderDragDrag(e){Math.abs(e.delta.y)>Math.abs(e.delta.x)||(this.__distanceX=this.__initialX+e.distance.x*this.$options.sensitivity,this.getVisibleItems(this.__distanceX).forEach(t=>{t.moveInstantly(this.__distanceX)}))}onSliderDragDrop(e){if(Math.abs(e.delta.y)>Math.abs(e.delta.x))return;let t=d(c(this.__distanceX,e.delta.x*this.$options.sensitivity),0,this.getStateValueByMode(this.lastState.x));const i=this.states.map(n=>Math.abs(t-this.getStateValueByMode(n.x))),s=Math.min(...i),r=i.findIndex(n=>n===s);this.$options.fitBounds?this.goTo(r):(this.$options.contain&&(t=Math.min(this.containMinState,t),t=Math.max(this.containMaxState,t)),this.$children.SliderItem.forEach(n=>{n.move(t)}),this.currentIndex=r)}prepareInvisibleItems(){const e=this.states[this.currentIndex],t=[],i=[];this.getInvisibleItems(this.getStateValueByMode(e.x)).forEach((s,r)=>{if(r>this.currentIndex){t.push(s);return}r<this.currentIndex&&i.push(s)}),t.forEach(s=>{const r=this.getStateWhereItemWillBeInvisible(s);r&&s.moveInstantly(this.getStateValueByMode(r.x))}),i.forEach(s=>{const r=this.getStateWhereItemWillBeInvisible(s,{reversed:!0});r&&s.moveInstantly(this.getStateValueByMode(r.x))})}getStateWhereItemWillBeInvisible(e,{reversed:t=!1}={}){const i=this.states.filter(a=>e.willBeVisible(this.getStateValueByMode(a.x))),s=i[0],r=i[i.length-1],n=this.states.findIndex(a=>this.getStateValueByMode(a.x)===this.getStateValueByMode(s.x)),l=this.states.findIndex(a=>a.x===r.x);return t?this.states[l+1]:this.states[n-1]}getVisibleItems(e){return this.$children.SliderItem.filter(t=>t.isVisible||t.willBeVisible(e))}getInvisibleItems(e){return this.$children.SliderItem.filter(t=>!t.isVisible&&!t.willBeVisible(e))}}export{x as default};
1
+ import{Base as d}from"@studiometa/js-toolkit";import{clamp as c,inertiaFinalValue as u,nextFrame as h,isDev as f}from"@studiometa/js-toolkit/utils";import x from"./SliderDrag.js";import g from"./SliderItem.js";class I extends d{static config={name:"Slider",refs:["wrapper","debug"],emits:["goto","index"],components:{SliderItem:g,SliderDrag:x},options:{mode:{type:String,default:"left"},fitBounds:Boolean,contain:Boolean,sensitivity:{type:Number,default:1},dropSensitivity:{type:Number,default:2}}};__distanceX=0;__initialX=0;__currentIndex=0;get currentIndex(){return this.__currentIndex}set currentIndex(e){this.currentSliderItem.disactivate(),this.$emit("index",e),this.__currentIndex=e,this.currentSliderItem.activate()}states=[];origins={left:0,center:0,right:0};hasFocus=!1;get currentState(){return this.states[this.currentIndex]}get firstState(){return this.states[0]}get lastState(){return this.states[this.states.length-1]}get containMinState(){return this.getStateValueByMode(this.firstState.x,"left")}get containMaxState(){return this.getStateValueByMode(this.lastState.x,"right")}get indexMax(){return this.$children.SliderItem.length-1}get currentSliderItem(){return this.$children.SliderItem[this.currentIndex]}getStates(){const{wrapper:e}=this.$refs,t=e.getBoundingClientRect();this.origins={left:t.left,center:t.x+t.width/2,right:t.x+t.width};const i=this.$children.SliderItem.map(s=>({x:{left:(s.rect.x-this.origins.left)*-1,center:(s.rect.x+s.rect.width/2-this.origins.center)*-1,right:(s.rect.x+s.rect.width-this.origins.right)*-1}}));if(this.$options.contain){const{mode:s}=this.$options;if(s==="left"){const n=this.$children.SliderItem.at(-1),r=i.find(a=>{const o=n.rect.x-this.origins.left+n.rect.width+a.x.left,l=t.width-o;return l>0?(a.x.left=Math.min(a.x.left+l,0),!0):!1});if(r)return i.map(a=>(a.x.left=Math.max(a.x.left,r.x.left),a))}if(s==="right"){const n=i.findIndex(a=>a.x.right<=0),r=n<0?i.at(-1):i[n-1];return i.map(a=>(a.x.right=n<0?r.x.right:Math.min(a.x.right,0),a))}s==="center"&&f&&console.warn(`[${this.$id}]`,"The `center` mode is not yet compatible with the `contain` mode.")}return i}getOriginByMode(e){return this.origins[e??this.$options.mode]}getStateValueByMode(e,t){return e[t??this.$options.mode]}mounted(){this.states=this.getStates(),this.prepareInvisibleItems(),this.goTo(this.currentIndex)}resized(){h(()=>{this.states=this.getStates(),h(()=>{this.prepareInvisibleItems(),this.goTo(this.currentIndex)})})}goNext(){this.currentIndex+1>this.indexMax||this.goTo(this.currentIndex+1)}goPrev(){this.currentIndex-1<0||this.goTo(this.currentIndex-1)}goTo(e){if(e<0||e>this.indexMax)throw new Error("Index out of bound.");const t=this.getStateValueByMode(this.currentState.x),i=this.getStateValueByMode(this.states[e].x),s=this.getVisibleItems(i),n=this.getInvisibleItems(i);s.forEach(r=>{t!==i&&r.moveInstantly(t),h(()=>r.move(i))}),n.forEach(r=>{r.moveInstantly(i)}),this.currentIndex=e,this.$emit("goto",e)}onSliderDragStart(){this.__initialX=this.currentSliderItem?this.currentSliderItem.x:0}onSliderDragDrag(e){Math.abs(e.delta.y)>Math.abs(e.delta.x)||(this.__distanceX=this.__initialX+e.distance.x*this.$options.sensitivity,this.getVisibleItems(this.__distanceX).forEach(t=>{t.moveInstantly(this.__distanceX)}))}onSliderDragDrop(e){if(Math.abs(e.delta.y)>Math.abs(e.delta.x))return;let t=c(u(this.__distanceX,e.delta.x*this.$options.dropSensitivity),0,this.getStateValueByMode(this.lastState.x));const i=this.states.map(r=>Math.abs(t-this.getStateValueByMode(r.x))),s=Math.min(...i),n=i.findIndex(r=>r===s);this.$options.fitBounds?this.goTo(n):(this.$options.contain&&(t=Math.min(this.containMinState,t),t=Math.max(this.containMaxState,t)),this.$children.SliderItem.forEach(r=>{r.move(t)}),this.currentIndex=n)}onWrapperFocus(){this.hasFocus=!0}onWrapperBlur(){this.hasFocus=!1}keyed({LEFT:e,RIGHT:t,isDown:i}){this.hasFocus&&i&&(e?this.goPrev():t&&this.goNext())}prepareInvisibleItems(){const e=this.states[this.currentIndex],t=[],i=[];this.getInvisibleItems(this.getStateValueByMode(e.x)).forEach((s,n)=>{if(n>this.currentIndex){t.push(s);return}n<this.currentIndex&&i.push(s)}),t.forEach(s=>{const n=this.getStateWhereItemWillBeInvisible(s);n&&s.moveInstantly(this.getStateValueByMode(n.x))}),i.forEach(s=>{const n=this.getStateWhereItemWillBeInvisible(s,{reversed:!0});n&&s.moveInstantly(this.getStateValueByMode(n.x))})}getStateWhereItemWillBeInvisible(e,{reversed:t=!1}={}){const i=this.states.filter(o=>e.willBeVisible(this.getStateValueByMode(o.x))),s=i[0],n=i[i.length-1],r=this.states.findIndex(o=>this.getStateValueByMode(o.x)===this.getStateValueByMode(s.x)),a=this.states.findIndex(o=>o.x===n.x);return t?this.states[a+1]:this.states[r-1]}getVisibleItems(e){return this.$children.SliderItem.filter(t=>t.isVisible||t.willBeVisible(e))}getInvisibleItems(e){return this.$children.SliderItem.filter(t=>!t.isVisible&&!t.willBeVisible(e))}}export{I as default};
@@ -30,12 +30,17 @@ __export(SliderDots_exports, {
30
30
  default: () => SliderDots
31
31
  });
32
32
  module.exports = __toCommonJS(SliderDots_exports);
33
+ var import_decorators = require("../../decorators/index.cjs");
33
34
  var import_AbstractSliderChild = __toESM(require("./AbstractSliderChild.cjs"), 1);
34
- var SliderDots = class extends import_AbstractSliderChild.default {
35
+ var SliderDots = class extends (0, import_decorators.withTransition)(import_AbstractSliderChild.default) {
36
+ get target() {
37
+ return this.$refs.dots;
38
+ }
39
+ currentIndex = 0;
35
40
  update(index) {
36
- this.$refs.dots.forEach((dot, i) => {
37
- dot.classList.toggle("is-active", index === i);
38
- });
41
+ this.leave(this.$refs.dots[this.currentIndex]);
42
+ this.enter(this.$refs.dots[index]);
43
+ this.currentIndex = index;
39
44
  }
40
45
  onDotsClick(event, index) {
41
46
  this.$parent.goTo(index);
@@ -1,3 +1,8 @@
1
+ declare const SliderDots_base: typeof AbstractSliderChild & (new (...a: any[]) => {
2
+ readonly target: HTMLElement | HTMLElement[];
3
+ enter(target?: HTMLElement | HTMLElement[]): Promise<void | void[]>;
4
+ leave(target?: HTMLElement | HTMLElement[]): Promise<void | void[]>;
5
+ });
1
6
  /**
2
7
  * @typedef {SliderDots & {
3
8
  * $refs: {
@@ -8,7 +13,7 @@
8
13
  /**
9
14
  * SliderDots class.
10
15
  */
11
- export default class SliderDots extends AbstractSliderChild {
16
+ export default class SliderDots extends SliderDots_base {
12
17
  /**
13
18
  * Config.
14
19
  */
@@ -16,6 +21,17 @@ export default class SliderDots extends AbstractSliderChild {
16
21
  name: string;
17
22
  refs: string[];
18
23
  };
24
+ /**
25
+ * Get target.
26
+ * @this {SliderDotsInterface}
27
+ * @returns {HTMLButtonElement[]}
28
+ */
29
+ get target(): HTMLButtonElement[];
30
+ /**
31
+ * The current active index.
32
+ * @type {number}
33
+ */
34
+ currentIndex: number;
19
35
  /**
20
36
  * Update dots classes according to the new index.
21
37
  *
@@ -39,3 +55,4 @@ export type SliderDotsInterface = SliderDots & {
39
55
  };
40
56
  };
41
57
  import AbstractSliderChild from "./AbstractSliderChild.js";
58
+ export {};
@@ -1 +1 @@
1
- import o from"./AbstractSliderChild.js";class i extends o{static config={name:"SliderDots",refs:["dots[]"]};update(s){this.$refs.dots.forEach((t,e)=>{t.classList.toggle("is-active",s===e)})}onDotsClick(s,t){this.$parent.goTo(t)}}export{i as default};
1
+ import{withTransition as r}from"../../decorators/index.js";import s from"./AbstractSliderChild.js";class i extends r(s){static config={name:"SliderDots",refs:["dots[]"]};get target(){return this.$refs.dots}currentIndex=0;update(t){this.leave(this.$refs.dots[this.currentIndex]),this.enter(this.$refs.dots[t]),this.currentIndex=t}onDotsClick(t,e){this.$parent.goTo(e)}}export{i as default};
@@ -29,6 +29,15 @@ __export(SliderDrag_exports, {
29
29
  module.exports = __toCommonJS(SliderDrag_exports);
30
30
  var import_js_toolkit = require("@studiometa/js-toolkit");
31
31
  var SliderDrag = class extends (0, import_js_toolkit.withDrag)(import_js_toolkit.Base) {
32
+ get shouldPreventScroll() {
33
+ const { distance } = this.$services.get("dragged");
34
+ return Math.abs(distance.x) > this.$options.scrollLockThreshold && Math.abs(distance.x) > Math.abs(distance.y);
35
+ }
36
+ onTouchmove(event) {
37
+ if (this.shouldPreventScroll) {
38
+ event.preventDefault();
39
+ }
40
+ }
32
41
  dragged(props) {
33
42
  this.$emit(props.mode, props);
34
43
  }
@@ -36,9 +45,11 @@ var SliderDrag = class extends (0, import_js_toolkit.withDrag)(import_js_toolkit
36
45
  __publicField(SliderDrag, "config", {
37
46
  name: "SliderDrag",
38
47
  emits: ["start", "drag", "drop", "inertia", "stop"],
39
- sensitivity: {
40
- type: Number,
41
- default: 1
48
+ options: {
49
+ scrollLockThreshold: {
50
+ type: Number,
51
+ default: 10
52
+ }
42
53
  }
43
54
  });
44
55
  if (module.exports.default) module.exports = module.exports.default;
@@ -1,3 +1,10 @@
1
+ /**
2
+ * @typedef {SliderDrag & {
3
+ * $options: {
4
+ * scrollLockThreshold: number;
5
+ * }
6
+ * }} SliderDragInterface
7
+ */
1
8
  /**
2
9
  * SliderDrag class.
3
10
  */
@@ -8,11 +15,27 @@ export default class SliderDrag extends Base {
8
15
  static config: {
9
16
  name: string;
10
17
  emits: string[];
11
- sensitivity: {
12
- type: NumberConstructor;
13
- default: number;
18
+ options: {
19
+ scrollLockThreshold: {
20
+ type: NumberConstructor;
21
+ default: number;
22
+ };
14
23
  };
15
24
  };
25
+ /**
26
+ * Test if the scroll should be blocked. Used with the touchmove event to prevent
27
+ * scrolling vertically when trying to drag the slider.
28
+ *
29
+ * @this {SliderDragInterface}
30
+ * @returns {boolean}
31
+ */
32
+ get shouldPreventScroll(): boolean;
33
+ /**
34
+ * Touchmove handler.
35
+ * @param {TouchEvent} event
36
+ * @returns {void}
37
+ */
38
+ onTouchmove(event: TouchEvent): void;
16
39
  /**
17
40
  * Emit drag events.
18
41
  * @param {import('@studiometa/js-toolkit/services/drag').DragServiceProps} props
@@ -20,4 +43,9 @@ export default class SliderDrag extends Base {
20
43
  */
21
44
  dragged(props: import('@studiometa/js-toolkit/services/drag').DragServiceProps): void;
22
45
  }
46
+ export type SliderDragInterface = SliderDrag & {
47
+ $options: {
48
+ scrollLockThreshold: number;
49
+ };
50
+ };
23
51
  import { Base } from "@studiometa/js-toolkit";
@@ -1 +1 @@
1
- import{Base as e,withDrag as i}from"@studiometa/js-toolkit";class a extends i(e){static config={name:"SliderDrag",emits:["start","drag","drop","inertia","stop"],sensitivity:{type:Number,default:1}};dragged(t){this.$emit(t.mode,t)}}export{a as default};
1
+ import{Base as t,withDrag as r}from"@studiometa/js-toolkit";class s extends r(t){static config={name:"SliderDrag",emits:["start","drag","drop","inertia","stop"],options:{scrollLockThreshold:{type:Number,default:10}}};get shouldPreventScroll(){const{distance:e}=this.$services.get("dragged");return Math.abs(e.x)>this.$options.scrollLockThreshold&&Math.abs(e.x)>Math.abs(e.y)}onTouchmove(e){this.shouldPreventScroll&&e.preventDefault()}dragged(e){this.$emit(e.mode,e)}}export{s as default};
@@ -56,7 +56,7 @@ var SliderItem = class extends (0, import_js_toolkit.withIntersectionObserver)(i
56
56
  this.isVisible = isIntersecting;
57
57
  }
58
58
  ticked() {
59
- this.dampedX = (0, import_utils.damp)(this.x, this.dampedX, 0.2, 1e-5);
59
+ this.dampedX = (0, import_utils.damp)(this.x, this.dampedX, 0.1, 1e-5);
60
60
  this.render();
61
61
  if (this.dampedX === this.x) {
62
62
  this.$services.disable("ticked");
@@ -1 +1 @@
1
- import{Base as t,withIntersectionObserver as s}from"@studiometa/js-toolkit";import{damp as d,domScheduler as h,transform as r}from"@studiometa/js-toolkit/utils";class l extends s(t,{threshold:[0,1]}){static config={name:"SliderItem",emits:["is-fully-visible","is-partially-visible","is-hidden"]};isVisible=!1;x=0;dampedX=0;mounted(){this.updateRectAdjustedWithX()}resized(){this.updateRectAdjustedWithX()}destroyed(){this.moveInstantly(0)}intersected([{intersectionRatio:e,isIntersecting:i}]){e>=1?(this.$emit("is-fully-visible"),this.$el.setAttribute("aria-hidden","false")):e>0?(this.$emit("is-partially-visible"),this.$el.setAttribute("aria-hidden","true")):(this.$emit("is-hidden"),this.$el.setAttribute("aria-hidden","true")),this.isVisible=i}ticked(){this.dampedX=d(this.x,this.dampedX,.2,1e-5),this.render(),this.dampedX===this.x&&this.$services.disable("ticked")}activate(){this.$el.classList.add("is-active")}disactivate(){this.$el.classList.remove("is-active")}move(e){this.x=e,this.$services.has("ticked")||this.$services.enable("ticked")}moveInstantly(e){this.x=e,this.dampedX=e,this.render()}render(){h.write(()=>{r(this.$el,{x:this.dampedX})})}willBeVisible(e){return this.rect.x+e<window.innerWidth*1.5&&this.rect.x+e+this.rect.width>window.innerWidth*-.5}willBeFullyVisible(e){return this.rect.x+e<window.innerWidth&&this.rect.x+e>0&&this.rect.x+e+this.rect.width<window.innerWidth&&this.rect.x+e+this.rect.width>0}updateRectAdjustedWithX(){const e=this.x*-1,i=this.$el.getBoundingClientRect().toJSON();this.rect={...i,left:i.left+e,right:i.left+e+i.width,x:i.left+e}}}export{l as default};
1
+ import{Base as t,withIntersectionObserver as s}from"@studiometa/js-toolkit";import{damp as d,domScheduler as h,transform as r}from"@studiometa/js-toolkit/utils";class l extends s(t,{threshold:[0,1]}){static config={name:"SliderItem",emits:["is-fully-visible","is-partially-visible","is-hidden"]};isVisible=!1;x=0;dampedX=0;mounted(){this.updateRectAdjustedWithX()}resized(){this.updateRectAdjustedWithX()}destroyed(){this.moveInstantly(0)}intersected([{intersectionRatio:e,isIntersecting:i}]){e>=1?(this.$emit("is-fully-visible"),this.$el.setAttribute("aria-hidden","false")):e>0?(this.$emit("is-partially-visible"),this.$el.setAttribute("aria-hidden","true")):(this.$emit("is-hidden"),this.$el.setAttribute("aria-hidden","true")),this.isVisible=i}ticked(){this.dampedX=d(this.x,this.dampedX,.1,1e-5),this.render(),this.dampedX===this.x&&this.$services.disable("ticked")}activate(){this.$el.classList.add("is-active")}disactivate(){this.$el.classList.remove("is-active")}move(e){this.x=e,this.$services.has("ticked")||this.$services.enable("ticked")}moveInstantly(e){this.x=e,this.dampedX=e,this.render()}render(){h.write(()=>{r(this.$el,{x:this.dampedX})})}willBeVisible(e){return this.rect.x+e<window.innerWidth*1.5&&this.rect.x+e+this.rect.width>window.innerWidth*-.5}willBeFullyVisible(e){return this.rect.x+e<window.innerWidth&&this.rect.x+e>0&&this.rect.x+e+this.rect.width<window.innerWidth&&this.rect.x+e+this.rect.width>0}updateRectAdjustedWithX(){const e=this.x*-1,i=this.$el.getBoundingClientRect().toJSON();this.rect={...i,left:i.left+e,right:i.left+e+i.width,x:i.left+e}}}export{l as default};
@@ -35,11 +35,10 @@ var import_AbstractSliderChild = __toESM(require("./AbstractSliderChild.cjs"), 1
35
35
  var SliderProgress = class extends import_AbstractSliderChild.default {
36
36
  update(index) {
37
37
  import_utils.domScheduler.read(() => {
38
- const unit = this.$refs.progress.clientWidth / (this.$parent.indexMax + 1);
38
+ const { progress } = this.$refs;
39
+ const x = (0, import_utils.map)(index, 0, this.$parent.indexMax, progress.clientWidth * -1, 0);
39
40
  import_utils.domScheduler.write(() => {
40
- this.$refs.progress.style.transform = (0, import_utils.matrix)({
41
- translateX: (0, import_utils.map)(index, 0, this.$parent.indexMax, (this.$refs.progress.clientWidth - unit) * -1, 0)
42
- });
41
+ (0, import_utils.transform)(progress, { x });
43
42
  });
44
43
  });
45
44
  }
@@ -1 +1 @@
1
- import{matrix as t,map as i,domScheduler as r}from"@studiometa/js-toolkit/utils";import a from"./AbstractSliderChild.js";class o extends a{static config={name:"SliderProgress",refs:["progress"]};update(e){r.read(()=>{const s=this.$refs.progress.clientWidth/(this.$parent.indexMax+1);r.write(()=>{this.$refs.progress.style.transform=t({translateX:i(e,0,this.$parent.indexMax,(this.$refs.progress.clientWidth-s)*-1,0)})})})}}export{o as default};
1
+ import{transform as i,map as o,domScheduler as e}from"@studiometa/js-toolkit/utils";import d from"./AbstractSliderChild.js";class a extends d{static config={name:"SliderProgress",refs:["progress"]};update(s){e.read(()=>{const{progress:r}=this.$refs,t=o(s,0,this.$parent.indexMax,r.clientWidth*-1,0);e.write(()=>{i(r,{x:t})})})}}export{a as default};
@@ -55,14 +55,8 @@ var _Frame = class extends import_js_toolkit.Base {
55
55
  }
56
56
  return this.$children[name].filter((child) => this.$children.Frame.every((frame) => frame.$children[name] ? !frame.$children[name].includes(child) : true));
57
57
  }
58
- get directChildFrameAnchor() {
59
- return this.getDirectChild("FrameAnchor");
60
- }
61
- get directChildFrameForm() {
62
- return this.getDirectChild("FrameForm");
63
- }
64
- get directChildFrameTarget() {
65
- return this.getDirectChild("FrameTarget");
58
+ get directChildrenFrameTarget() {
59
+ return (0, import_js_toolkit.getDirectChildren)(this, "Frame", "FrameTarget");
66
60
  }
67
61
  mounted() {
68
62
  if (this.$options.history) {
@@ -93,11 +87,11 @@ var _Frame = class extends import_js_toolkit.Base {
93
87
  onWindowPopstate(event) {
94
88
  this.goTo(window.location.href, event.state);
95
89
  }
96
- onFrameAnchorFrameClick(event, index) {
97
- if (!this.directChildFrameAnchor.includes(this.$children.FrameAnchor[index])) {
90
+ onFrameAnchorClick(index, event) {
91
+ if (!(0, import_js_toolkit.isDirectChild)(this, "Frame", "FrameAnchor", this.$children.FrameAnchor[index])) {
98
92
  return;
99
93
  }
100
- this.$log("onAFrameClick", event, index);
94
+ this.$log("onAFrameClick", index, event);
101
95
  event.preventDefault();
102
96
  const anchor = this.$children.FrameAnchor[index];
103
97
  if (anchor.href === window.location.href) {
@@ -105,11 +99,11 @@ var _Frame = class extends import_js_toolkit.Base {
105
99
  }
106
100
  this.goTo(anchor.href);
107
101
  }
108
- onFrameFormFrameSubmit(event, index) {
109
- if (!this.directChildFrameForm.includes(this.$children.FrameForm[index])) {
102
+ onFrameFormSubmit(index, event) {
103
+ if (!(0, import_js_toolkit.isDirectChild)(this, "Frame", "FrameForm", this.$children.FrameForm[index])) {
110
104
  return;
111
105
  }
112
- this.$log("onFrameFormFrameSubmit", event);
106
+ this.$log("onFrameFormFrameSubmit", index, event);
113
107
  event.preventDefault();
114
108
  const form = this.$children.FrameForm[index];
115
109
  const url = new URL(form.action);
@@ -133,10 +127,10 @@ var _Frame = class extends import_js_toolkit.Base {
133
127
  newFrame.$children.registerAll();
134
128
  this.$emit("after-fetch", url, content);
135
129
  this.$emit("before-leave");
136
- await Promise.all(this.directChildFrameTarget.map((target) => target.leave()));
130
+ await Promise.all(this.directChildrenFrameTarget.map((target) => target.leave()));
137
131
  this.$emit("after-leave");
138
132
  this.$emit("before-content");
139
- this.directChildFrameTarget.map((target, index) => target.updateContent(newFrame.directChildFrameTarget[index]));
133
+ this.directChildrenFrameTarget.map((target, index) => target.updateContent(newFrame.directChildrenFrameTarget[index]));
140
134
  if (this.$options.history) {
141
135
  document.title = doc.title;
142
136
  (0, import_utils.historyPush)({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
@@ -150,7 +144,7 @@ var _Frame = class extends import_js_toolkit.Base {
150
144
  await (0, import_utils.nextFrame)();
151
145
  this.$emit("after-content");
152
146
  this.$emit("before-enter");
153
- await Promise.all(this.directChildFrameTarget.map((target) => target.enter()));
147
+ await Promise.all(this.directChildrenFrameTarget.map((target) => target.enter()));
154
148
  this.$emit("after-enter");
155
149
  }
156
150
  async fetch(url) {
@@ -198,7 +192,6 @@ __publicField(Frame, "config", {
198
192
  "before-enter",
199
193
  "after-enter"
200
194
  ],
201
- log: true,
202
195
  components: {
203
196
  FrameAnchor: import_FrameAnchor.default,
204
197
  FrameForm: import_FrameForm.default,
@@ -24,7 +24,6 @@ export default class Frame extends Base {
24
24
  static config: {
25
25
  name: string;
26
26
  emits: string[];
27
- log: boolean;
28
27
  components: {
29
28
  FrameAnchor: typeof FrameAnchor;
30
29
  FrameForm: typeof FrameForm;
@@ -48,21 +47,11 @@ export default class Frame extends Base {
48
47
  * @returns {any[]}
49
48
  */
50
49
  getDirectChild(this: FrameInterface, 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
50
  /**
62
51
  * Get direct `FrameTarget` children.
63
52
  * @returns {FrameTarget[]}
64
53
  */
65
- get directChildFrameTarget(): FrameTarget[];
54
+ get directChildrenFrameTarget(): FrameTarget[];
66
55
  /**
67
56
  * Mounted hook.
68
57
  * @returns {void}
@@ -96,20 +85,20 @@ export default class Frame extends Base {
96
85
  * Prevent click on `FrameAnchor`.
97
86
  *
98
87
  * @this {FrameInterface}
99
- * @param {MouseEvent} event
100
88
  * @param {number} index
89
+ * @param {MouseEvent} event
101
90
  * @returns {void}
102
91
  */
103
- onFrameAnchorFrameClick(this: FrameInterface, event: MouseEvent, index: number): void;
92
+ onFrameAnchorClick(this: FrameInterface, index: number, event: MouseEvent): void;
104
93
  /**
105
94
  * Prevent submit on forms.
106
95
  *
107
96
  * @this {FrameInterface}
108
- * @param {SubmitEvent} event
109
97
  * @param {number} index
98
+ * @param {SubmitEvent} event
110
99
  * @returns {void}
111
100
  */
112
- onFrameFormFrameSubmit(this: FrameInterface, event: SubmitEvent, index: number): void;
101
+ onFrameFormSubmit(this: FrameInterface, index: number, event: SubmitEvent): void;
113
102
  /**
114
103
  * Parge an HTML string into a DOM object.
115
104
  * @param {string} string
@@ -147,6 +136,6 @@ export type FrameInterface = Frame & {
147
136
  };
148
137
  };
149
138
  import { Base } from "@studiometa/js-toolkit";
139
+ import FrameTarget from "./FrameTarget.js";
150
140
  import FrameAnchor from "./FrameAnchor.js";
151
141
  import FrameForm from "./FrameForm.js";
152
- import FrameTarget from "./FrameTarget.js";
@@ -1 +1 @@
1
- import{Base as d}from"@studiometa/js-toolkit";import{nextFrame as c,historyPush as f}from"@studiometa/js-toolkit/utils";import p from"./FrameAnchor.js";import g from"./FrameForm.js";import F from"./FrameTarget.js";function u(){return{left:window.pageXOffset,top:window.pageYOffset}}const a=new Map;class s extends d{static config={name:"Frame",emits:["before-fetch","after-fetch","before-leave","after-leave","before-content","after-content","before-enter","after-enter"],log:!0,components:{FrameAnchor:p,FrameForm:g,FrameTarget:F,Frame:s},options:{history:Boolean}};get id(){return this.$el.id}getDirectChild(e){return this.$children[e]?this.$children.Frame?this.$children[e].filter(t=>this.$children.Frame.every(r=>r.$children[e]?!r.$children[e].includes(t):!0)):this.$children[e]:[]}get directChildFrameAnchor(){return this.getDirectChild("FrameAnchor")}get directChildFrameForm(){return this.getDirectChild("FrameForm")}get directChildFrameTarget(){return this.getDirectChild("FrameTarget")}mounted(){this.$options.history&&window.addEventListener("popstate",this)}destroyed(){window.removeEventListener("popstate",this)}handleEvent(e){e.type==="popstate"&&this.onWindowPopstate(e),e.type==="beforeunload"&&this.onWindowUnload()}onWindowUnload(){const{history:e}=window;!e.state||e.replaceState({...e.state,scroll:u()},"")}onWindowPopstate(e){this.goTo(window.location.href,e.state)}onFrameAnchorFrameClick(e,t){if(!this.directChildFrameAnchor.includes(this.$children.FrameAnchor[t]))return;this.$log("onAFrameClick",e,t),e.preventDefault();const r=this.$children.FrameAnchor[t];r.href!==window.location.href&&this.goTo(r.href)}onFrameFormFrameSubmit(e,t){if(!this.directChildFrameForm.includes(this.$children.FrameForm[t]))return;this.$log("onFrameFormFrameSubmit",e),e.preventDefault();const r=this.$children.FrameForm[t],i=new URL(r.action);i.search=new URLSearchParams(new FormData(r.$el)).toString(),this.goTo(i.toString())}parseHTML(e=""){return new DOMParser().parseFromString(e,"text/html")}async goTo(e,t=null){this.$log("goTo",e);const r=new URL(e);if(r.origin!==window.location.origin)throw new Error("Cross origin request are not allowed.");this.$emit("before-fetch",e);const i=await this.fetch(e),n=this.parseHTML(i),l=n.querySelector(`#${this.id}`),h=new s(l);h.$children.registerAll(),this.$emit("after-fetch",e,i),this.$emit("before-leave"),await Promise.all(this.directChildFrameTarget.map(o=>o.leave())),this.$emit("after-leave"),this.$emit("before-content"),this.directChildFrameTarget.map((o,m)=>o.updateContent(h.directChildFrameTarget[m])),this.$options.history&&(document.title=n.title,f({path:r.pathname,search:r.searchParams})),t&&(document.scrollingElement.scrollTop=t.top,document.scrollingElement.scrollLeft=t.left),await c(),this.$root.$update(),await c(),this.$emit("after-content"),this.$emit("before-enter"),await Promise.all(this.directChildFrameTarget.map(o=>o.enter())),this.$emit("after-enter")}async fetch(e){const t=a.get(e);if(t)return t.status==="pending"?t.promise:t.content;const r=fetch(e);try{a.set(e,{promise:r,status:"pending",content:void 0});const i=await r.then(n=>n.text());return a.set(e,{promise:r,status:"resolved",content:i}),i}catch(i){return a.set(e,{promise:r,status:"error",content:i}),i}}}export{s as default};
1
+ import{Base as f,isDirectChild as c,getDirectChildren as p}from"@studiometa/js-toolkit";import{nextFrame as m,historyPush as w}from"@studiometa/js-toolkit/utils";import g from"./FrameAnchor.js";import F from"./FrameForm.js";import u from"./FrameTarget.js";function $(){return{left:window.pageXOffset,top:window.pageYOffset}}const a=new Map;class s extends f{static config={name:"Frame",emits:["before-fetch","after-fetch","before-leave","after-leave","before-content","after-content","before-enter","after-enter"],components:{FrameAnchor:g,FrameForm:F,FrameTarget:u,Frame:s},options:{history:Boolean}};get id(){return this.$el.id}getDirectChild(e){return this.$children[e]?this.$children.Frame?this.$children[e].filter(r=>this.$children.Frame.every(t=>t.$children[e]?!t.$children[e].includes(r):!0)):this.$children[e]:[]}get directChildrenFrameTarget(){return p(this,"Frame","FrameTarget")}mounted(){this.$options.history&&window.addEventListener("popstate",this)}destroyed(){window.removeEventListener("popstate",this)}handleEvent(e){e.type==="popstate"&&this.onWindowPopstate(e),e.type==="beforeunload"&&this.onWindowUnload()}onWindowUnload(){const{history:e}=window;!e.state||e.replaceState({...e.state,scroll:$()},"")}onWindowPopstate(e){this.goTo(window.location.href,e.state)}onFrameAnchorClick(e,r){if(!c(this,"Frame","FrameAnchor",this.$children.FrameAnchor[e]))return;this.$log("onAFrameClick",e,r),r.preventDefault();const t=this.$children.FrameAnchor[e];t.href!==window.location.href&&this.goTo(t.href)}onFrameFormSubmit(e,r){if(!c(this,"Frame","FrameForm",this.$children.FrameForm[e]))return;this.$log("onFrameFormFrameSubmit",e,r),r.preventDefault();const t=this.$children.FrameForm[e],i=new URL(t.action);i.search=new URLSearchParams(new FormData(t.$el)).toString(),this.goTo(i.toString())}parseHTML(e=""){return new DOMParser().parseFromString(e,"text/html")}async goTo(e,r=null){this.$log("goTo",e);const t=new URL(e);if(t.origin!==window.location.origin)throw new Error("Cross origin request are not allowed.");this.$emit("before-fetch",e);const i=await this.fetch(e),n=this.parseHTML(i),l=n.querySelector(`#${this.id}`),h=new s(l);h.$children.registerAll(),this.$emit("after-fetch",e,i),this.$emit("before-leave"),await Promise.all(this.directChildrenFrameTarget.map(o=>o.leave())),this.$emit("after-leave"),this.$emit("before-content"),this.directChildrenFrameTarget.map((o,d)=>o.updateContent(h.directChildrenFrameTarget[d])),this.$options.history&&(document.title=n.title,w({path:t.pathname,search:t.searchParams})),r&&(document.scrollingElement.scrollTop=r.top,document.scrollingElement.scrollLeft=r.left),await m(),this.$root.$update(),await m(),this.$emit("after-content"),this.$emit("before-enter"),await Promise.all(this.directChildrenFrameTarget.map(o=>o.enter())),this.$emit("after-enter")}async fetch(e){const r=a.get(e);if(r)return r.status==="pending"?r.promise:r.content;const t=fetch(e);try{a.set(e,{promise:t,status:"pending",content:void 0});const i=await t.then(n=>n.text());return a.set(e,{promise:t,status:"resolved",content:i}),i}catch(i){return a.set(e,{promise:t,status:"error",content:i}),i}}}export{s as default};
@@ -32,12 +32,8 @@ var FrameAnchor = class extends import_js_toolkit.Base {
32
32
  get href() {
33
33
  return this.$el.href;
34
34
  }
35
- onClick(event) {
36
- this.$emit("frame-click", event);
37
- }
38
35
  };
39
36
  __publicField(FrameAnchor, "config", {
40
- name: "FrameAnchor",
41
- emits: ["frame-click"]
37
+ name: "FrameAnchor"
42
38
  });
43
39
  if (module.exports.default) module.exports = module.exports.default;
@@ -12,7 +12,6 @@ export default class FrameAnchor extends Base {
12
12
  */
13
13
  static config: {
14
14
  name: string;
15
- emits: string[];
16
15
  };
17
16
  /**
18
17
  * Get the URL.
@@ -21,13 +20,6 @@ export default class FrameAnchor extends Base {
21
20
  * @returns {string}
22
21
  */
23
22
  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
23
  }
32
24
  export type FrameAnchorInterface = FrameAnchor & {
33
25
  $el: HTMLAnchorElement;
@@ -1 +1 @@
1
- import{Base as r}from"@studiometa/js-toolkit";class t extends r{static config={name:"FrameAnchor",emits:["frame-click"]};get href(){return this.$el.href}onClick(e){this.$emit("frame-click",e)}}export{t as default};
1
+ import{Base as e}from"@studiometa/js-toolkit";class r extends e{static config={name:"FrameAnchor"};get href(){return this.$el.href}}export{r as default};
@@ -32,12 +32,8 @@ var FrameForm = class extends import_js_toolkit.Base {
32
32
  get action() {
33
33
  return this.$el.action;
34
34
  }
35
- onSubmit(event) {
36
- this.$emit("frame-submit", event);
37
- }
38
35
  };
39
36
  __publicField(FrameForm, "config", {
40
- name: "FrameForm",
41
- emits: ["frame-submit"]
37
+ name: "FrameForm"
42
38
  });
43
39
  if (module.exports.default) module.exports = module.exports.default;
@@ -9,7 +9,6 @@
9
9
  export default class FrameForm extends Base {
10
10
  static config: {
11
11
  name: string;
12
- emits: string[];
13
12
  };
14
13
  /**
15
14
  * Get the form action.
@@ -18,13 +17,6 @@ export default class FrameForm extends Base {
18
17
  * @returns {string}
19
18
  */
20
19
  get action(): string;
21
- /**
22
- * Dispatch the form `submit` event.
23
- *
24
- * @param {SubmitEvent} event
25
- * @returns {void}
26
- */
27
- onSubmit(event: SubmitEvent): void;
28
20
  }
29
21
  export type FrameFormInterface = FrameForm & {
30
22
  $el: HTMLFormElement;
@@ -1 +1 @@
1
- import{Base as e}from"@studiometa/js-toolkit";class m extends e{static config={name:"FrameForm",emits:["frame-submit"]};get action(){return this.$el.action}onSubmit(t){this.$emit("frame-submit",t)}}export{m as default};
1
+ import{Base as e}from"@studiometa/js-toolkit";class t extends e{static config={name:"FrameForm"};get action(){return this.$el.action}}export{t as default};
@@ -1,7 +1,12 @@
1
+ declare const FrameTarget_base: typeof import("@studiometa/js-toolkit").Base & (new (...a: any[]) => {
2
+ readonly target: HTMLElement | HTMLElement[];
3
+ enter(target?: HTMLElement | HTMLElement[]): Promise<void | void[]>;
4
+ leave(target?: HTMLElement | HTMLElement[]): Promise<void | void[]>;
5
+ });
1
6
  /**
2
7
  * FrameTarget class.
3
8
  */
4
- export default class FrameTarget extends Transition {
9
+ export default class FrameTarget extends FrameTarget_base {
5
10
  /**
6
11
  * Config.
7
12
  */
@@ -14,15 +19,11 @@ export default class FrameTarget extends Transition {
14
19
  default: string;
15
20
  };
16
21
  id: StringConstructor;
17
- enterFrom: StringConstructor;
18
- enterActive: StringConstructor;
19
- enterTo: StringConstructor;
20
- enterKeep: BooleanConstructor;
21
- leaveFrom: StringConstructor;
22
- leaveActive: StringConstructor;
23
- leaveTo: StringConstructor;
24
- leaveKeep: BooleanConstructor;
25
22
  };
23
+ debug?: boolean;
24
+ refs?: string[];
25
+ emits?: string[];
26
+ components?: import("@studiometa/js-toolkit/Base/index.js").BaseConfigComponents;
26
27
  };
27
28
  /**
28
29
  * Insert modes.
@@ -36,6 +37,11 @@ export default class FrameTarget extends Transition {
36
37
  * @returns {string}
37
38
  */
38
39
  get id(): string;
40
+ /**
41
+ * Enter transition.
42
+ * @returns {Promise<void>}
43
+ */
44
+ enter(): Promise<void>;
39
45
  /**
40
46
  * Update the content from the new target.
41
47
  *
@@ -44,4 +50,4 @@ export default class FrameTarget extends Transition {
44
50
  */
45
51
  updateContent(newTarget: FrameTarget): void;
46
52
  }
47
- import { Transition } from "../../primitives/index.js";
53
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiometa/ui",
3
- "version": "0.2.8",
3
+ "version": "0.2.11",
4
4
  "description": "A set of opiniated, unstyled and accessible components",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "homepage": "https://github.com/studiometa/ui#readme",
31
31
  "dependencies": {
32
- "@studiometa/js-toolkit": "^2.2.2",
32
+ "@studiometa/js-toolkit": "^2.4.1",
33
33
  "deepmerge": "^4.2.2"
34
34
  }
35
35
  }