@studiometa/ui 1.0.0-alpha.8 → 1.0.0-beta.0
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.
- package/{molecules/Accordion → Accordion}/Accordion.js.map +1 -1
- package/{molecules/Accordion → Accordion}/AccordionCore.js.map +1 -1
- package/{molecules/Accordion → Accordion}/AccordionItem.js.map +1 -1
- package/{molecules/Accordion → Accordion}/index.js.map +1 -1
- package/{atoms/Action → Action}/Action.js.map +1 -1
- package/{atoms/Action → Action}/ActionEvent.js.map +1 -1
- package/{atoms/Action → Action}/Target.js.map +1 -1
- package/{atoms/Action → Action}/index.js.map +1 -1
- package/{molecules/AnchorNav → AnchorNav}/AnchorNav.js.map +1 -1
- package/{molecules/AnchorNav → AnchorNav}/AnchorNavLink.d.ts +2 -2
- package/{molecules/AnchorNav → AnchorNav}/AnchorNavLink.js +2 -2
- package/AnchorNav/AnchorNavLink.js.map +7 -0
- package/{molecules/AnchorNav → AnchorNav}/AnchorNavTarget.js.map +1 -1
- package/{molecules/AnchorNav → AnchorNav}/index.js.map +1 -1
- package/{atoms/AnchorScrollTo → AnchorScrollTo}/AnchorScrollTo.js.map +1 -1
- package/{atoms/AnchorScrollTo → AnchorScrollTo}/index.js.map +1 -1
- package/{atoms/Button → Button}/Button.twig +1 -1
- package/{atoms/Button → Button}/StyledButton.twig +1 -1
- package/{atoms/Button → Button}/StyledButtonRounded.twig +1 -1
- package/{atoms/CircularMarquee → CircularMarquee}/CircularMarquee.js.map +1 -1
- package/{atoms/CircularMarquee → CircularMarquee}/CircularMarquee.twig +1 -1
- package/{atoms/CircularMarquee → CircularMarquee}/index.js.map +1 -1
- package/{atoms/Cursor → Cursor}/Cursor.js.map +1 -1
- package/{atoms/Cursor → Cursor}/index.js.map +1 -1
- package/{atoms/Data → Data}/DataBind.js.map +1 -1
- package/{atoms/Data → Data}/DataComputed.js +0 -1
- package/Data/DataComputed.js.map +7 -0
- package/Data/DataEffect.js.map +7 -0
- package/{atoms/Data → Data}/DataModel.js.map +1 -1
- package/{atoms/Data → Data}/index.js.map +1 -1
- package/{atoms/Data → Data}/utils.js.map +1 -1
- package/{primitives/Draggable → Draggable}/Draggable.js.map +1 -1
- package/{primitives/Draggable → Draggable}/index.js.map +1 -1
- package/{atoms/Figure/Figure.d.ts → Figure/AbstractFigure.d.ts} +4 -12
- package/{atoms/Figure/Figure.js → Figure/AbstractFigure.js} +11 -29
- package/Figure/AbstractFigure.js.map +7 -0
- package/Figure/AbstractFigureDynamic.d.ts +29 -0
- package/Figure/AbstractFigureDynamic.js +48 -0
- package/Figure/AbstractFigureDynamic.js.map +7 -0
- package/Figure/Figure.d.ts +18 -0
- package/Figure/Figure.js +20 -0
- package/Figure/Figure.js.map +7 -0
- package/Figure/FigureShopify.d.ts +23 -0
- package/Figure/FigureShopify.js +38 -0
- package/Figure/FigureShopify.js.map +7 -0
- package/{atoms/Figure → Figure}/FigureTwicpics.d.ts +3 -19
- package/{atoms/Figure → Figure}/FigureTwicpics.js +10 -32
- package/Figure/FigureTwicpics.js.map +7 -0
- package/{atoms/Figure → Figure}/FigureTwicpics.twig +1 -1
- package/{atoms/Figure → Figure}/index.d.ts +1 -0
- package/{atoms/Figure → Figure}/index.js +1 -0
- package/Figure/index.js.map +7 -0
- package/Figure/utils.d.ts +8 -0
- package/Figure/utils.js +15 -0
- package/Figure/utils.js.map +7 -0
- package/{atoms/FigureVideo → FigureVideo}/FigureVideo.d.ts +1 -1
- package/{atoms/FigureVideo → FigureVideo}/FigureVideo.js +2 -2
- package/FigureVideo/FigureVideo.js.map +7 -0
- package/{atoms/FigureVideo → FigureVideo}/FigureVideoTwicpics.js +1 -1
- package/FigureVideo/FigureVideoTwicpics.js.map +7 -0
- package/{atoms/FigureVideo → FigureVideo}/FigureVideoTwicpics.twig +1 -1
- package/{atoms/FigureVideo → FigureVideo}/index.js.map +1 -1
- package/{organisms/Frame → Frame}/Frame.js +1 -1
- package/{organisms/Frame → Frame}/Frame.js.map +3 -3
- package/{organisms/Frame → Frame}/FrameAnchor.js.map +1 -1
- package/{organisms/Frame → Frame}/FrameForm.js.map +1 -1
- package/{organisms/Frame → Frame}/FrameTarget.d.ts +2 -2
- package/{organisms/Frame → Frame}/FrameTarget.js +1 -1
- package/Frame/FrameTarget.js.map +7 -0
- package/{organisms/Frame → Frame}/index.js.map +1 -1
- package/{organisms/Hero → Hero}/Hero.twig +2 -2
- package/{atoms/Icon/IconInline.twig → Icon/Icon.twig} +5 -1
- package/{atoms/Icon/IconInlineImg.twig → Icon/IconImg.twig} +5 -1
- package/{molecules/IconList → IconList}/IconList.twig +4 -4
- package/{organisms/ImageGrid → ImageGrid}/ImageGrid.twig +1 -1
- package/{atoms/LargeText → LargeText}/LargeText.js.map +1 -1
- package/{atoms/LargeText → LargeText}/index.js.map +1 -1
- package/{atoms/LazyInclude → LazyInclude}/LazyInclude.js.map +1 -1
- package/{atoms/LazyInclude → LazyInclude}/index.js.map +1 -1
- package/{molecules/MapboxStaticMap → MapboxStaticMap}/MapboxStaticMap.twig +1 -1
- package/{molecules/Menu → Menu}/Menu.js.map +1 -1
- package/{molecules/Menu → Menu}/MenuBtn.js.map +1 -1
- package/{molecules/Menu → Menu}/MenuList.d.ts +2 -2
- package/{molecules/Menu → Menu}/MenuList.js +1 -1
- package/Menu/MenuList.js.map +7 -0
- package/{molecules/Menu → Menu}/index.js.map +1 -1
- package/{molecules/Modal → Modal}/Modal.d.ts +1 -1
- package/{molecules/Modal → Modal}/Modal.js.map +1 -1
- package/{molecules/Modal → Modal}/Modal.twig +2 -2
- package/{molecules/Modal → Modal}/ModalWithTransition.js.map +1 -1
- package/{molecules/Modal → Modal}/StyledModal.twig +3 -3
- package/{molecules/Modal → Modal}/index.js.map +1 -1
- package/{molecules/Panel → Panel}/Panel.js.map +1 -1
- package/{molecules/Panel → Panel}/Panel.twig +1 -1
- package/{molecules/Panel → Panel}/StyledPanel.twig +3 -3
- package/{molecules/Panel → Panel}/index.js.map +1 -1
- package/{atoms/Prefetch → Prefetch}/AbstractPrefetch.js.map +1 -1
- package/{atoms/Prefetch → Prefetch}/PrefetchWhenOver.js.map +1 -1
- package/{atoms/Prefetch → Prefetch}/PrefetchWhenVisible.js.map +1 -1
- package/{atoms/Prefetch → Prefetch}/index.js.map +1 -1
- package/{molecules/Reinsurance → Reinsurance}/Reinsurance.twig +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/AbstractScrollAnimation.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimation.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationChild.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationChildWithEase.d.ts +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationChildWithEase.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationParent.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationWithEase.d.ts +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationWithEase.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/animationScrollWithEase.js.map +1 -1
- package/{atoms/ScrollAnimation → ScrollAnimation}/index.js.map +1 -1
- package/{atoms/ScrollReveal → ScrollReveal}/ScrollReveal.d.ts +1 -1
- package/{atoms/ScrollReveal → ScrollReveal}/ScrollReveal.js +1 -1
- package/ScrollReveal/ScrollReveal.js.map +7 -0
- package/{atoms/ScrollReveal → ScrollReveal}/index.js.map +1 -1
- package/{primitives/Sentinel → Sentinel}/Sentinel.js.map +1 -1
- package/{primitives/Sentinel → Sentinel}/index.js.map +1 -1
- package/{molecules/Slider → Slider}/AbstractSliderChild.js.map +1 -1
- package/{molecules/Slider → Slider}/Slider.js.map +1 -1
- package/{molecules/Slider → Slider}/SliderBtn.js.map +1 -1
- package/{molecules/Slider → Slider}/SliderCount.js.map +1 -1
- package/{molecules/Slider → Slider}/SliderDots.d.ts +2 -3
- package/{molecules/Slider → Slider}/SliderDots.js +2 -2
- package/Slider/SliderDots.js.map +7 -0
- package/{molecules/Slider → Slider}/SliderDrag.js.map +1 -1
- package/{molecules/Slider → Slider}/SliderItem.js.map +1 -1
- package/{molecules/Slider → Slider}/SliderProgress.js.map +1 -1
- package/{molecules/Slider → Slider}/index.js.map +1 -1
- package/{molecules/Sticky → Sticky}/Sticky.d.ts +1 -1
- package/{molecules/Sticky → Sticky}/Sticky.js +1 -1
- package/Sticky/Sticky.js.map +7 -0
- package/{molecules/Sticky → Sticky}/index.js.map +1 -1
- package/{molecules/TableOfContent → TableOfContent}/TableOfContent.d.ts +1 -1
- package/{molecules/TableOfContent → TableOfContent}/TableOfContent.js +1 -1
- package/TableOfContent/TableOfContent.js.map +7 -0
- package/{molecules/TableOfContent → TableOfContent}/TableOfContentAnchor.d.ts +2 -2
- package/{molecules/TableOfContent → TableOfContent}/TableOfContentAnchor.js +2 -2
- package/TableOfContent/TableOfContentAnchor.js.map +7 -0
- package/{molecules/TableOfContent → TableOfContent}/index.js.map +1 -1
- package/{molecules/Tabs → Tabs}/Tabs.d.ts +1 -2
- package/{molecules/Tabs → Tabs}/Tabs.js +1 -1
- package/Tabs/Tabs.js.map +7 -0
- package/{molecules/Tabs → Tabs}/index.js.map +1 -1
- package/{primitives/Transition → Transition}/Transition.d.ts +1 -1
- package/{primitives/Transition → Transition}/Transition.js +1 -1
- package/Transition/Transition.js.map +7 -0
- package/{primitives/Transition → Transition}/index.js.map +1 -1
- package/decorators/withTransition.d.ts +1 -0
- package/decorators/withTransition.js +47 -23
- package/decorators/withTransition.js.map +2 -2
- package/index.d.ts +25 -4
- package/index.js +25 -4
- package/index.js.map +2 -2
- package/package.json +2 -2
- package/atoms/Data/DataComputed.js.map +0 -7
- package/atoms/Data/DataEffect.js.map +0 -7
- package/atoms/Figure/Figure.js.map +0 -7
- package/atoms/Figure/FigureTwicpics.js.map +0 -7
- package/atoms/Figure/index.js.map +0 -7
- package/atoms/FigureVideo/FigureVideo.js.map +0 -7
- package/atoms/FigureVideo/FigureVideoTwicpics.js.map +0 -7
- package/atoms/Icon/Icon.twig +0 -12
- package/atoms/ScrollReveal/ScrollReveal.js.map +0 -7
- package/atoms/index.d.ts +0 -12
- package/atoms/index.js +0 -13
- package/atoms/index.js.map +0 -7
- package/molecules/AnchorNav/AnchorNavLink.js.map +0 -7
- package/molecules/Menu/MenuList.js.map +0 -7
- package/molecules/Slider/SliderDots.js.map +0 -7
- package/molecules/Sticky/Sticky.js.map +0 -7
- package/molecules/TableOfContent/TableOfContent.js.map +0 -7
- package/molecules/TableOfContent/TableOfContentAnchor.js.map +0 -7
- package/molecules/Tabs/Tabs.js.map +0 -7
- package/molecules/index.d.ts +0 -9
- package/molecules/index.js +0 -10
- package/molecules/index.js.map +0 -7
- package/organisms/Frame/FrameTarget.js.map +0 -7
- package/organisms/index.d.ts +0 -1
- package/organisms/index.js +0 -2
- package/organisms/index.js.map +0 -7
- package/primitives/Transition/Transition.js.map +0 -7
- package/primitives/index.d.ts +0 -3
- package/primitives/index.js +0 -4
- package/primitives/index.js.map +0 -7
- /package/{molecules/Accordion → Accordion}/Accordion.d.ts +0 -0
- /package/{molecules/Accordion → Accordion}/Accordion.js +0 -0
- /package/{molecules/Accordion → Accordion}/Accordion.twig +0 -0
- /package/{molecules/Accordion → Accordion}/AccordionCore.d.ts +0 -0
- /package/{molecules/Accordion → Accordion}/AccordionCore.js +0 -0
- /package/{molecules/Accordion → Accordion}/AccordionItem.d.ts +0 -0
- /package/{molecules/Accordion → Accordion}/AccordionItem.js +0 -0
- /package/{molecules/Accordion → Accordion}/index.d.ts +0 -0
- /package/{molecules/Accordion → Accordion}/index.js +0 -0
- /package/{atoms/Action → Action}/Action.d.ts +0 -0
- /package/{atoms/Action → Action}/Action.js +0 -0
- /package/{atoms/Action → Action}/ActionEvent.d.ts +0 -0
- /package/{atoms/Action → Action}/ActionEvent.js +0 -0
- /package/{atoms/Action → Action}/Target.d.ts +0 -0
- /package/{atoms/Action → Action}/Target.js +0 -0
- /package/{atoms/Action → Action}/index.d.ts +0 -0
- /package/{atoms/Action → Action}/index.js +0 -0
- /package/{molecules/AnchorNav → AnchorNav}/AnchorNav.d.ts +0 -0
- /package/{molecules/AnchorNav → AnchorNav}/AnchorNav.js +0 -0
- /package/{molecules/AnchorNav → AnchorNav}/AnchorNavTarget.d.ts +0 -0
- /package/{molecules/AnchorNav → AnchorNav}/AnchorNavTarget.js +0 -0
- /package/{molecules/AnchorNav → AnchorNav}/index.d.ts +0 -0
- /package/{molecules/AnchorNav → AnchorNav}/index.js +0 -0
- /package/{atoms/AnchorScrollTo → AnchorScrollTo}/AnchorScrollTo.d.ts +0 -0
- /package/{atoms/AnchorScrollTo → AnchorScrollTo}/AnchorScrollTo.js +0 -0
- /package/{atoms/AnchorScrollTo → AnchorScrollTo}/index.d.ts +0 -0
- /package/{atoms/AnchorScrollTo → AnchorScrollTo}/index.js +0 -0
- /package/{atoms/CircularMarquee → CircularMarquee}/CircularMarquee.d.ts +0 -0
- /package/{atoms/CircularMarquee → CircularMarquee}/CircularMarquee.js +0 -0
- /package/{atoms/CircularMarquee → CircularMarquee}/index.d.ts +0 -0
- /package/{atoms/CircularMarquee → CircularMarquee}/index.js +0 -0
- /package/{atoms/Cursor → Cursor}/Cursor.d.ts +0 -0
- /package/{atoms/Cursor → Cursor}/Cursor.js +0 -0
- /package/{atoms/Cursor → Cursor}/Cursor.twig +0 -0
- /package/{atoms/Cursor → Cursor}/index.d.ts +0 -0
- /package/{atoms/Cursor → Cursor}/index.js +0 -0
- /package/{atoms/Data → Data}/DataBind.d.ts +0 -0
- /package/{atoms/Data → Data}/DataBind.js +0 -0
- /package/{atoms/Data → Data}/DataComputed.d.ts +0 -0
- /package/{atoms/Data → Data}/DataEffect.d.ts +0 -0
- /package/{atoms/Data → Data}/DataEffect.js +0 -0
- /package/{atoms/Data → Data}/DataModel.d.ts +0 -0
- /package/{atoms/Data → Data}/DataModel.js +0 -0
- /package/{atoms/Data → Data}/index.d.ts +0 -0
- /package/{atoms/Data → Data}/index.js +0 -0
- /package/{atoms/Data → Data}/utils.d.ts +0 -0
- /package/{atoms/Data → Data}/utils.js +0 -0
- /package/{primitives/Draggable → Draggable}/Draggable.d.ts +0 -0
- /package/{primitives/Draggable → Draggable}/Draggable.js +0 -0
- /package/{primitives/Draggable → Draggable}/index.d.ts +0 -0
- /package/{primitives/Draggable → Draggable}/index.js +0 -0
- /package/{atoms/Figure → Figure}/Figure.twig +0 -0
- /package/{atoms/FigureVideo → FigureVideo}/FigureVideo.twig +0 -0
- /package/{atoms/FigureVideo → FigureVideo}/FigureVideoTwicpics.d.ts +0 -0
- /package/{atoms/FigureVideo → FigureVideo}/index.d.ts +0 -0
- /package/{atoms/FigureVideo → FigureVideo}/index.js +0 -0
- /package/{organisms/Frame → Frame}/Frame.d.ts +0 -0
- /package/{organisms/Frame → Frame}/FrameAnchor.d.ts +0 -0
- /package/{organisms/Frame → Frame}/FrameAnchor.js +0 -0
- /package/{organisms/Frame → Frame}/FrameForm.d.ts +0 -0
- /package/{organisms/Frame → Frame}/FrameForm.js +0 -0
- /package/{organisms/Frame → Frame}/index.d.ts +0 -0
- /package/{organisms/Frame → Frame}/index.js +0 -0
- /package/{atoms/LargeText → LargeText}/LargeText.d.ts +0 -0
- /package/{atoms/LargeText → LargeText}/LargeText.js +0 -0
- /package/{atoms/LargeText → LargeText}/LargeText.twig +0 -0
- /package/{atoms/LargeText → LargeText}/index.d.ts +0 -0
- /package/{atoms/LargeText → LargeText}/index.js +0 -0
- /package/{atoms/LazyInclude → LazyInclude}/LazyInclude.d.ts +0 -0
- /package/{atoms/LazyInclude → LazyInclude}/LazyInclude.js +0 -0
- /package/{atoms/LazyInclude → LazyInclude}/index.d.ts +0 -0
- /package/{atoms/LazyInclude → LazyInclude}/index.js +0 -0
- /package/{molecules/Menu → Menu}/Menu.d.ts +0 -0
- /package/{molecules/Menu → Menu}/Menu.js +0 -0
- /package/{molecules/Menu → Menu}/MenuBtn.d.ts +0 -0
- /package/{molecules/Menu → Menu}/MenuBtn.js +0 -0
- /package/{molecules/Menu → Menu}/index.d.ts +0 -0
- /package/{molecules/Menu → Menu}/index.js +0 -0
- /package/{molecules/Modal → Modal}/Modal.js +0 -0
- /package/{molecules/Modal → Modal}/ModalWithTransition.d.ts +0 -0
- /package/{molecules/Modal → Modal}/ModalWithTransition.js +0 -0
- /package/{molecules/Modal → Modal}/index.d.ts +0 -0
- /package/{molecules/Modal → Modal}/index.js +0 -0
- /package/{molecules/Panel → Panel}/Panel.d.ts +0 -0
- /package/{molecules/Panel → Panel}/Panel.js +0 -0
- /package/{molecules/Panel → Panel}/index.d.ts +0 -0
- /package/{molecules/Panel → Panel}/index.js +0 -0
- /package/{atoms/Prefetch → Prefetch}/AbstractPrefetch.d.ts +0 -0
- /package/{atoms/Prefetch → Prefetch}/AbstractPrefetch.js +0 -0
- /package/{atoms/Prefetch → Prefetch}/PrefetchWhenOver.d.ts +0 -0
- /package/{atoms/Prefetch → Prefetch}/PrefetchWhenOver.js +0 -0
- /package/{atoms/Prefetch → Prefetch}/PrefetchWhenVisible.d.ts +0 -0
- /package/{atoms/Prefetch → Prefetch}/PrefetchWhenVisible.js +0 -0
- /package/{atoms/Prefetch → Prefetch}/index.d.ts +0 -0
- /package/{atoms/Prefetch → Prefetch}/index.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/AbstractScrollAnimation.d.ts +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/AbstractScrollAnimation.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimation.d.ts +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimation.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationChild.d.ts +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationChild.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationChildWithEase.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationParent.d.ts +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationParent.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/ScrollAnimationWithEase.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/animationScrollWithEase.d.ts +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/animationScrollWithEase.js +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/index.d.ts +0 -0
- /package/{atoms/ScrollAnimation → ScrollAnimation}/index.js +0 -0
- /package/{atoms/ScrollReveal → ScrollReveal}/index.d.ts +0 -0
- /package/{atoms/ScrollReveal → ScrollReveal}/index.js +0 -0
- /package/{primitives/Sentinel → Sentinel}/Sentinel.d.ts +0 -0
- /package/{primitives/Sentinel → Sentinel}/Sentinel.js +0 -0
- /package/{primitives/Sentinel → Sentinel}/index.d.ts +0 -0
- /package/{primitives/Sentinel → Sentinel}/index.js +0 -0
- /package/{molecules/Slider → Slider}/AbstractSliderChild.d.ts +0 -0
- /package/{molecules/Slider → Slider}/AbstractSliderChild.js +0 -0
- /package/{molecules/Slider → Slider}/Slider.d.ts +0 -0
- /package/{molecules/Slider → Slider}/Slider.js +0 -0
- /package/{molecules/Slider → Slider}/SliderBtn.d.ts +0 -0
- /package/{molecules/Slider → Slider}/SliderBtn.js +0 -0
- /package/{molecules/Slider → Slider}/SliderCount.d.ts +0 -0
- /package/{molecules/Slider → Slider}/SliderCount.js +0 -0
- /package/{molecules/Slider → Slider}/SliderDrag.d.ts +0 -0
- /package/{molecules/Slider → Slider}/SliderDrag.js +0 -0
- /package/{molecules/Slider → Slider}/SliderItem.d.ts +0 -0
- /package/{molecules/Slider → Slider}/SliderItem.js +0 -0
- /package/{molecules/Slider → Slider}/SliderProgress.d.ts +0 -0
- /package/{molecules/Slider → Slider}/SliderProgress.js +0 -0
- /package/{molecules/Slider → Slider}/index.d.ts +0 -0
- /package/{molecules/Slider → Slider}/index.js +0 -0
- /package/{molecules/Sticky → Sticky}/Sticky.twig +0 -0
- /package/{molecules/Sticky → Sticky}/index.d.ts +0 -0
- /package/{molecules/Sticky → Sticky}/index.js +0 -0
- /package/{molecules/TableOfContent → TableOfContent}/index.d.ts +0 -0
- /package/{molecules/TableOfContent → TableOfContent}/index.js +0 -0
- /package/{molecules/Tabs → Tabs}/Tabs.twig +0 -0
- /package/{molecules/Tabs → Tabs}/index.d.ts +0 -0
- /package/{molecules/Tabs → Tabs}/index.js +0 -0
- /package/{primitives/Transition → Transition}/index.d.ts +0 -0
- /package/{primitives/Transition → Transition}/index.js +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Figure/AbstractFigureDynamic.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { AbstractFigure } from './AbstractFigure.js';\nimport { loadImage } from './utils.js';\n\nexport interface AbstractFigureDynamicProps extends BaseProps {\n $options: {\n disable: boolean;\n step: number;\n };\n}\n\n/**\n * AbstractFigureDynamic class.\n */\nexport class AbstractFigureDynamic<T extends BaseProps = BaseProps> extends AbstractFigure<\n T & AbstractFigureDynamicProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...AbstractFigure.config,\n name: 'AbstractFigureDynamic',\n options: {\n ...AbstractFigure.config.options,\n disable: Boolean,\n step: {\n type: Number,\n default: 50,\n },\n lazy: {\n type: Boolean,\n default: true,\n },\n },\n };\n\n /**\n * Get the formatted source or the original based on the `disable` option.\n */\n get original() {\n return this.$options.disable ? super.original : this.formatSrc(super.original);\n }\n\n /**\n * Format the source with dynamic parameters.\n */\n /* v8 ignore next 3 */\n formatSrc(src: string): string {\n return src;\n }\n\n /**\n * Reassign the source from the original on resize.\n */\n async resized() {\n const { original } = this;\n await loadImage(original);\n this.src = original;\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAYnB,MAAM,8BAA+D,eAE1E;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,SAAqB;AAAA,IAC1B,GAAG,eAAe;AAAA,IAClB,MAAM;AAAA,IACN,SAAS;AAAA,MACP,GAAG,eAAe,OAAO;AAAA,MACzB,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,SAAS,UAAU,MAAM,WAAW,KAAK,UAAU,MAAM,QAAQ;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,KAAqB;AAC7B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU;AACd,UAAM,EAAE,SAAS,IAAI;AACrB,UAAM,UAAU,QAAQ;AACxB,SAAK,MAAM;AAAA,EACb;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
|
|
2
|
+
import { AbstractFigure } from './AbstractFigure.js';
|
|
3
|
+
import type { AbstractFigureProps } from './AbstractFigure.js';
|
|
4
|
+
export interface FigureProps extends AbstractFigureProps {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Figure class.
|
|
8
|
+
*/
|
|
9
|
+
export declare class Figure<T extends BaseProps = BaseProps> extends AbstractFigure<T> {
|
|
10
|
+
/**
|
|
11
|
+
* Config.
|
|
12
|
+
*/
|
|
13
|
+
static config: BaseConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Terminate the component on load.
|
|
16
|
+
*/
|
|
17
|
+
onLoad(): void;
|
|
18
|
+
}
|
package/Figure/Figure.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AbstractFigure } from "./AbstractFigure.js";
|
|
2
|
+
class Figure extends AbstractFigure {
|
|
3
|
+
/**
|
|
4
|
+
* Config.
|
|
5
|
+
*/
|
|
6
|
+
static config = {
|
|
7
|
+
...AbstractFigure.config,
|
|
8
|
+
name: "Figure"
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Terminate the component on load.
|
|
12
|
+
*/
|
|
13
|
+
onLoad() {
|
|
14
|
+
this.$terminate();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
Figure
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=Figure.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Figure/Figure.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { AbstractFigure } from './AbstractFigure.js';\nimport type { AbstractFigureProps } from './AbstractFigure.js';\n\nexport interface FigureProps extends AbstractFigureProps {}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends AbstractFigure<T> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...AbstractFigure.config,\n name: 'Figure',\n };\n\n /**\n * Terminate the component on load.\n */\n onLoad() {\n this.$terminate();\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,sBAAsB;AAQxB,MAAM,eAAgD,eAAkB;AAAA;AAAA;AAAA;AAAA,EAI7E,OAAO,SAAqB;AAAA,IAC1B,GAAG,eAAe;AAAA,IAClB,MAAM;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
|
|
2
|
+
import { AbstractFigureDynamic } from './AbstractFigureDynamic.js';
|
|
3
|
+
export interface FigureShopifyProps extends BaseProps {
|
|
4
|
+
$options: {
|
|
5
|
+
crop?: 'top' | 'left' | 'right' | 'bottom' | 'center';
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Figure class.
|
|
10
|
+
*
|
|
11
|
+
* Manager lazyloading image sources.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FigureShopify<T extends BaseProps = BaseProps> extends AbstractFigureDynamic<T & FigureShopifyProps> {
|
|
14
|
+
/**
|
|
15
|
+
* Config.
|
|
16
|
+
*/
|
|
17
|
+
static config: BaseConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Format the source for Shopify CDN API.
|
|
20
|
+
* @see https://shopify.dev/docs/api/liquid/filters/image_url
|
|
21
|
+
*/
|
|
22
|
+
formatSrc(src: string): string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AbstractFigureDynamic } from "./AbstractFigureDynamic.js";
|
|
2
|
+
import { normalizeSize } from "./utils.js";
|
|
3
|
+
class FigureShopify extends AbstractFigureDynamic {
|
|
4
|
+
/**
|
|
5
|
+
* Config.
|
|
6
|
+
*/
|
|
7
|
+
static config = {
|
|
8
|
+
...AbstractFigureDynamic.config,
|
|
9
|
+
name: "FigureShopify",
|
|
10
|
+
options: {
|
|
11
|
+
...AbstractFigureDynamic.config.options,
|
|
12
|
+
crop: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: null
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Format the source for Shopify CDN API.
|
|
20
|
+
* @see https://shopify.dev/docs/api/liquid/filters/image_url
|
|
21
|
+
*/
|
|
22
|
+
formatSrc(src) {
|
|
23
|
+
const { crop, step } = this.$options;
|
|
24
|
+
const url = new URL(src, "https://localhost");
|
|
25
|
+
const width = normalizeSize(this.$refs.img.offsetWidth, step) * window.devicePixelRatio;
|
|
26
|
+
const height = normalizeSize(this.$refs.img.offsetHeight, step) * window.devicePixelRatio;
|
|
27
|
+
url.searchParams.set("width", String(width));
|
|
28
|
+
url.searchParams.set("height", String(height));
|
|
29
|
+
if (crop) {
|
|
30
|
+
url.searchParams.set("crop", this.$options.crop);
|
|
31
|
+
}
|
|
32
|
+
return url.toString();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
FigureShopify
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=FigureShopify.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Figure/FigureShopify.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { AbstractFigureDynamic } from './AbstractFigureDynamic.js';\nimport { normalizeSize } from './utils.js';\n\nexport interface FigureShopifyProps extends BaseProps {\n $options: {\n crop?: 'top' | 'left' | 'right' | 'bottom' | 'center';\n };\n}\n\n/**\n * Figure class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureShopify<T extends BaseProps = BaseProps> extends AbstractFigureDynamic<\n T & FigureShopifyProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...AbstractFigureDynamic.config,\n name: 'FigureShopify',\n options: {\n ...AbstractFigureDynamic.config.options,\n crop: {\n type: String,\n default: null,\n },\n },\n };\n\n /**\n * Format the source for Shopify CDN API.\n * @see https://shopify.dev/docs/api/liquid/filters/image_url\n */\n formatSrc(src: string): string {\n const { crop, step } = this.$options;\n\n const url = new URL(src, 'https://localhost');\n const width = normalizeSize(this.$refs.img.offsetWidth, step) * window.devicePixelRatio;\n const height = normalizeSize(this.$refs.img.offsetHeight, step) * window.devicePixelRatio;\n\n url.searchParams.set('width', String(width));\n url.searchParams.set('height', String(height));\n\n if (crop) {\n url.searchParams.set('crop', this.$options.crop);\n }\n\n return url.toString();\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAavB,MAAM,sBAAuD,sBAElE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,SAAqB;AAAA,IAC1B,GAAG,sBAAsB;AAAA,IACzB,MAAM;AAAA,IACN,SAAS;AAAA,MACP,GAAG,sBAAsB,OAAO;AAAA,MAChC,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,KAAqB;AAC7B,UAAM,EAAE,MAAM,KAAK,IAAI,KAAK;AAE5B,UAAM,MAAM,IAAI,IAAI,KAAK,mBAAmB;AAC5C,UAAM,QAAQ,cAAc,KAAK,MAAM,IAAI,aAAa,IAAI,IAAI,OAAO;AACvE,UAAM,SAAS,cAAc,KAAK,MAAM,IAAI,cAAc,IAAI,IAAI,OAAO;AAEzE,QAAI,aAAa,IAAI,SAAS,OAAO,KAAK,CAAC;AAC3C,QAAI,aAAa,IAAI,UAAU,OAAO,MAAM,CAAC;AAE7C,QAAI,MAAM;AACR,UAAI,aAAa,IAAI,QAAQ,KAAK,SAAS,IAAI;AAAA,IACjD;AAEA,WAAO,IAAI,SAAS;AAAA,EACtB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
|
|
2
|
-
import {
|
|
2
|
+
import { AbstractFigureDynamic } from './AbstractFigureDynamic.js';
|
|
3
3
|
export interface FigureTwicpicsProps extends BaseProps {
|
|
4
4
|
$options: {
|
|
5
5
|
transform: string;
|
|
6
6
|
domain: string;
|
|
7
7
|
path: string;
|
|
8
|
-
step: number;
|
|
9
8
|
mode: string;
|
|
10
9
|
dpr: boolean;
|
|
11
10
|
};
|
|
12
11
|
}
|
|
13
12
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Manager lazyloading image sources.
|
|
13
|
+
* FigureTwicpics class.
|
|
17
14
|
*/
|
|
18
|
-
export declare class FigureTwicpics<T extends BaseProps = BaseProps> extends
|
|
15
|
+
export declare class FigureTwicpics<T extends BaseProps = BaseProps> extends AbstractFigureDynamic<T & FigureTwicpicsProps> {
|
|
19
16
|
/**
|
|
20
17
|
* Config.
|
|
21
18
|
*/
|
|
@@ -28,11 +25,6 @@ export declare class FigureTwicpics<T extends BaseProps = BaseProps> extends Fig
|
|
|
28
25
|
* Get the Twicpics domain.
|
|
29
26
|
*/
|
|
30
27
|
get domain(): string;
|
|
31
|
-
/**
|
|
32
|
-
* Get formatted original source.
|
|
33
|
-
* If `disable` option is `true` returns the original src.
|
|
34
|
-
*/
|
|
35
|
-
get original(): string;
|
|
36
28
|
/**
|
|
37
29
|
* Get the current device pixel ratio
|
|
38
30
|
* Returns 1 if user agent is considered as a bot.
|
|
@@ -43,12 +35,4 @@ export declare class FigureTwicpics<T extends BaseProps = BaseProps> extends Fig
|
|
|
43
35
|
* Format the source for Twicpics.
|
|
44
36
|
*/
|
|
45
37
|
formatSrc(src: string): string;
|
|
46
|
-
/**
|
|
47
|
-
* Reassign the source from the original on resize.
|
|
48
|
-
*/
|
|
49
|
-
resized(): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Do not terminate on image load as we need to set the src on resize.
|
|
52
|
-
*/
|
|
53
|
-
onLoad(): void;
|
|
54
38
|
}
|
|
@@ -3,21 +3,18 @@ import {
|
|
|
3
3
|
withoutLeadingSlash,
|
|
4
4
|
withoutTrailingSlash
|
|
5
5
|
} from "@studiometa/js-toolkit/utils";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
const { step } = that.$options;
|
|
9
|
-
return Math.ceil(that.$refs.img[prop] / step) * step;
|
|
10
|
-
}
|
|
6
|
+
import { AbstractFigureDynamic } from "./AbstractFigureDynamic.js";
|
|
7
|
+
import { normalizeSize } from "./utils.js";
|
|
11
8
|
const isBot = /bot|crawl|slurp|spider/i.test(navigator.userAgent);
|
|
12
|
-
class FigureTwicpics extends
|
|
9
|
+
class FigureTwicpics extends AbstractFigureDynamic {
|
|
13
10
|
/**
|
|
14
11
|
* Config.
|
|
15
12
|
*/
|
|
16
13
|
static config = {
|
|
17
|
-
...
|
|
14
|
+
...AbstractFigureDynamic.config,
|
|
18
15
|
name: "FigureTwicpics",
|
|
19
16
|
options: {
|
|
20
|
-
...
|
|
17
|
+
...AbstractFigureDynamic.config.options,
|
|
21
18
|
transform: String,
|
|
22
19
|
domain: String,
|
|
23
20
|
path: String,
|
|
@@ -46,15 +43,7 @@ class FigureTwicpics extends Figure {
|
|
|
46
43
|
* Get the Twicpics domain.
|
|
47
44
|
*/
|
|
48
45
|
get domain() {
|
|
49
|
-
|
|
50
|
-
return url.host;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get formatted original source.
|
|
54
|
-
* If `disable` option is `true` returns the original src.
|
|
55
|
-
*/
|
|
56
|
-
get original() {
|
|
57
|
-
return this.$options.disable ? super.original : this.formatSrc(super.original);
|
|
46
|
+
return this.$options.domain || new URL(this.$refs.img.dataset.src).host;
|
|
58
47
|
}
|
|
59
48
|
/**
|
|
60
49
|
* Get the current device pixel ratio
|
|
@@ -71,33 +60,22 @@ class FigureTwicpics extends Figure {
|
|
|
71
60
|
* Format the source for Twicpics.
|
|
72
61
|
*/
|
|
73
62
|
formatSrc(src) {
|
|
63
|
+
const { transform, mode, step } = this.$options;
|
|
74
64
|
const url = new URL(src, "https://localhost");
|
|
75
65
|
url.host = this.domain;
|
|
76
66
|
url.port = "";
|
|
77
67
|
if (this.path && !url.pathname.startsWith(withLeadingSlash(this.path))) {
|
|
78
68
|
url.pathname = `/${this.path}${url.pathname}`;
|
|
79
69
|
}
|
|
80
|
-
const width = normalizeSize(this,
|
|
81
|
-
const height = normalizeSize(this,
|
|
70
|
+
const width = normalizeSize(this.$refs.img.offsetWidth, step) * this.devicePixelRatio;
|
|
71
|
+
const height = normalizeSize(this.$refs.img.offsetHeight, step) * this.devicePixelRatio;
|
|
82
72
|
url.searchParams.set(
|
|
83
73
|
"twic",
|
|
84
|
-
["v1",
|
|
74
|
+
["v1", transform, `${mode}=${width}x${height}`].filter(Boolean).join("/")
|
|
85
75
|
);
|
|
86
76
|
url.search = decodeURIComponent(url.search);
|
|
87
77
|
return url.toString();
|
|
88
78
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Reassign the source from the original on resize.
|
|
91
|
-
*/
|
|
92
|
-
async resized() {
|
|
93
|
-
const { src } = await loadImage(this.original);
|
|
94
|
-
this.src = src;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Do not terminate on image load as we need to set the src on resize.
|
|
98
|
-
*/
|
|
99
|
-
onLoad() {
|
|
100
|
-
}
|
|
101
79
|
}
|
|
102
80
|
export {
|
|
103
81
|
FigureTwicpics
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Figure/FigureTwicpics.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport {\n withLeadingSlash,\n withoutLeadingSlash,\n withoutTrailingSlash,\n} from '@studiometa/js-toolkit/utils';\nimport { AbstractFigureDynamic } from './AbstractFigureDynamic.js';\nimport { normalizeSize } from './utils.js';\n\nexport interface FigureTwicpicsProps extends BaseProps {\n $options: {\n transform: string;\n domain: string;\n path: string;\n mode: string;\n dpr: boolean;\n };\n}\n\n/**\n * Determine if the user agent is a bot or not.\n */\nconst isBot = /bot|crawl|slurp|spider/i.test(navigator.userAgent);\n\n/**\n * FigureTwicpics class.\n */\nexport class FigureTwicpics<T extends BaseProps = BaseProps> extends AbstractFigureDynamic<\n T & FigureTwicpicsProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...AbstractFigureDynamic.config,\n name: 'FigureTwicpics',\n options: {\n ...AbstractFigureDynamic.config.options,\n transform: String,\n domain: String,\n path: String,\n disable: Boolean,\n step: {\n type: Number,\n default: 50,\n },\n mode: {\n type: String,\n default: 'cover',\n },\n dpr: {\n type: Boolean,\n default: true,\n },\n },\n };\n\n /**\n * Get the Twicpics path.\n */\n get path(): string {\n return withoutTrailingSlash(withoutLeadingSlash(this.$options.path));\n }\n\n /**\n * Get the Twicpics domain.\n */\n get domain(): string {\n return this.$options.domain || new URL(this.$refs.img.dataset.src).host;\n }\n\n /**\n * Get the current device pixel ratio\n * Returns 1 if user agent is considered as a bot.\n * Returns 1 if disabled by the `data-option-no-dpr` attribute.\n */\n get devicePixelRatio() {\n if (!this.$options.dpr || isBot) {\n return 1;\n }\n\n return window.devicePixelRatio;\n }\n\n /**\n * Format the source for Twicpics.\n */\n formatSrc(src: string): string {\n const { transform, mode, step } = this.$options;\n\n const url = new URL(src, 'https://localhost');\n url.host = this.domain;\n url.port = '';\n\n if (this.path && !url.pathname.startsWith(withLeadingSlash(this.path))) {\n url.pathname = `/${this.path}${url.pathname}`;\n }\n\n const width = normalizeSize(this.$refs.img.offsetWidth, step) * this.devicePixelRatio;\n const height = normalizeSize(this.$refs.img.offsetHeight, step) * this.devicePixelRatio;\n\n url.searchParams.set(\n 'twic',\n ['v1', transform, `${mode}=${width}x${height}`].filter(Boolean).join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n return url.toString();\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAe9B,MAAM,QAAQ,0BAA0B,KAAK,UAAU,SAAS;AAKzD,MAAM,uBAAwD,sBAEnE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,SAAqB;AAAA,IAC1B,GAAG,sBAAsB;AAAA,IACzB,MAAM;AAAA,IACN,SAAS;AAAA,MACP,GAAG,sBAAsB,OAAO;AAAA,MAChC,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAe;AACjB,WAAO,qBAAqB,oBAAoB,KAAK,SAAS,IAAI,CAAC;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAiB;AACnB,WAAO,KAAK,SAAS,UAAU,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG,EAAE;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,mBAAmB;AACrB,QAAI,CAAC,KAAK,SAAS,OAAO,OAAO;AAC/B,aAAO;AAAA,IACT;AAEA,WAAO,OAAO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,KAAqB;AAC7B,UAAM,EAAE,WAAW,MAAM,KAAK,IAAI,KAAK;AAEvC,UAAM,MAAM,IAAI,IAAI,KAAK,mBAAmB;AAC5C,QAAI,OAAO,KAAK;AAChB,QAAI,OAAO;AAEX,QAAI,KAAK,QAAQ,CAAC,IAAI,SAAS,WAAW,iBAAiB,KAAK,IAAI,CAAC,GAAG;AACtE,UAAI,WAAW,IAAI,KAAK,IAAI,GAAG,IAAI,QAAQ;AAAA,IAC7C;AAEA,UAAM,QAAQ,cAAc,KAAK,MAAM,IAAI,aAAa,IAAI,IAAI,KAAK;AACrE,UAAM,SAAS,cAAc,KAAK,MAAM,IAAI,cAAc,IAAI,IAAI,KAAK;AAEvE,QAAI,aAAa;AAAA,MACf;AAAA,MACA,CAAC,MAAM,WAAW,GAAG,IAAI,IAAI,KAAK,IAAI,MAAM,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAC1E;AAEA,QAAI,SAAS,mBAAmB,IAAI,MAAM;AAE1C,WAAO,IAAI,SAAS;AAAA,EACtB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/Figure/utils.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function loadImage(src) {
|
|
2
|
+
return new Promise((resolve) => {
|
|
3
|
+
const img = new Image();
|
|
4
|
+
img.addEventListener("load", () => resolve(img));
|
|
5
|
+
img.src = src;
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
function normalizeSize(size, step) {
|
|
9
|
+
return Math.ceil(size / step) * step;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
loadImage,
|
|
13
|
+
normalizeSize
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Figure/utils.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Load the given image.\n */\nexport function loadImage(src: string): Promise<HTMLImageElement> {\n return new Promise((resolve) => {\n const img = new Image();\n img.addEventListener('load', () => resolve(img));\n img.src = src;\n });\n}\n\n/**\n * Normalize a size to the given step.\n */\nexport function normalizeSize(size:number, step:number): number {\n return Math.ceil(size / step) * step;\n}\n"],
|
|
5
|
+
"mappings": "AAGO,SAAS,UAAU,KAAwC;AAChE,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,MAAM,IAAI,MAAM;AACtB,QAAI,iBAAiB,QAAQ,MAAM,QAAQ,GAAG,CAAC;AAC/C,QAAI,MAAM;AAAA,EACZ,CAAC;AACH;AAKO,SAAS,cAAc,MAAa,MAAqB;AAC9D,SAAO,KAAK,KAAK,OAAO,IAAI,IAAI;AAClC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
|
|
2
|
-
import { Transition } from '
|
|
2
|
+
import { Transition } from '../Transition/index.js';
|
|
3
3
|
export interface FigureVideoProps extends BaseProps {
|
|
4
4
|
$refs: {
|
|
5
5
|
video: HTMLVideoElement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withMountWhenInView } from "@studiometa/js-toolkit";
|
|
2
|
-
import { Transition } from "
|
|
3
|
-
import { loadImage } from "../
|
|
2
|
+
import { Transition } from "../Transition/index.js";
|
|
3
|
+
import { loadImage } from "../Figure/utils.js";
|
|
4
4
|
class FigureVideo extends withMountWhenInView(
|
|
5
5
|
Transition,
|
|
6
6
|
{
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/FigureVideo/FigureVideo.ts"],
|
|
4
|
+
"sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../Transition/index.js';\nimport { loadImage } from '../Figure/utils.js';\n\nexport interface FigureVideoProps extends BaseProps {\n $refs: {\n video: HTMLVideoElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * FigureVideo class.\n */\nexport class FigureVideo<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(\n Transition,\n {\n threshold: [0, 1],\n },\n)<T & FigureVideoProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'FigureVideo',\n emits: ['load'],\n refs: ['video'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target(): HTMLVideoElement {\n return this.$refs.video;\n }\n\n /**\n * Get the video sources.\n */\n get sources(): Array<HTMLSourceElement> {\n return Array.from(this.$refs.video.querySelectorAll('source'));\n }\n\n /**\n * Load poster\n */\n loadPoster(): Promise<void|HTMLImageElement> {\n const { video } = this.$refs;\n\n if (!video.dataset.poster) {\n return Promise.resolve();\n }\n\n return loadImage(video.dataset.poster).then(() => {\n video.poster = video.dataset.poster;\n this.$log('fresh poster loaded');\n })\n }\n\n /**\n * Load sources\n * @returns {Promise}\n */\n loadSources(): Promise<void> {\n const { video } = this.$refs;\n\n this.sources.forEach((source) => {\n if (!source.dataset.src) {\n return;\n }\n source.src = source.dataset.src;\n });\n\n return new Promise<void>((resolve) => {\n const loadHandler = () => {\n video.removeEventListener('loadeddata', loadHandler);\n this.$log('fresh sources loaded');\n resolve();\n };\n video.addEventListener('loadeddata', loadHandler);\n video.load();\n });\n }\n\n /**\n * Load\n * @returns {Promise}\n */\n load(): Promise<any[]> {\n return Promise.all([this.loadPoster(), this.loadSources()]);\n }\n\n /**\n * Load on mount.\n */\n async mounted() {\n this.$log('mounted');\n const { video } = this.$refs;\n\n if (!video) {\n throw new Error('[VideoFigure] The `video` ref is required.');\n }\n\n if (!(video instanceof HTMLVideoElement)) {\n throw new Error('[VideoFigure] The `video` ref must be an `<video>` element.');\n }\n\n if (!this.$options.lazy) {\n this.$log('Lazy loading disabled');\n return;\n }\n\n this.$log('start loading');\n await this.load();\n this.$log('all is loaded');\n await this.enter();\n this.$log('transition done');\n this.$emit('load');\n }\n\n /**\n * Terminate the component on load.\n */\n onLoad() {\n this.$terminate();\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,2BAA2B;AAEpC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAcnB,MAAM,oBAAqD;AAAA,EAChE;AAAA,EACA;AAAA,IACE,WAAW,CAAC,GAAG,CAAC;AAAA,EAClB;AACF,EAAwB;AAAA;AAAA;AAAA;AAAA,EAItB,OAAO,SAAqB;AAAA,IAC1B,GAAG,WAAW;AAAA,IACd,MAAM;AAAA,IACN,OAAO,CAAC,MAAM;AAAA,IACd,MAAM,CAAC,OAAO;AAAA,IACd,SAAS;AAAA,MACP,GAAG,WAAW,OAAO;AAAA,MACrB,MAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAA2B;AAC7B,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,UAAoC;AACtC,WAAO,MAAM,KAAK,KAAK,MAAM,MAAM,iBAAiB,QAAQ,CAAC;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,aAA6C;AAC3C,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,QAAI,CAAC,MAAM,QAAQ,QAAQ;AACzB,aAAO,QAAQ,QAAQ;AAAA,IACzB;AAEA,WAAO,UAAU,MAAM,QAAQ,MAAM,EAAE,KAAK,MAAM;AAChD,YAAM,SAAS,MAAM,QAAQ;AAC7B,WAAK,KAAK,qBAAqB;AAAA,IACjC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAA6B;AAC3B,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,SAAK,QAAQ,QAAQ,CAAC,WAAW;AAC/B,UAAI,CAAC,OAAO,QAAQ,KAAK;AACvB;AAAA,MACF;AACA,aAAO,MAAM,OAAO,QAAQ;AAAA,IAC9B,CAAC;AAED,WAAO,IAAI,QAAc,CAAC,YAAY;AACpC,YAAM,cAAc,MAAM;AACxB,cAAM,oBAAoB,cAAc,WAAW;AACnD,aAAK,KAAK,sBAAsB;AAChC,gBAAQ;AAAA,MACV;AACA,YAAM,iBAAiB,cAAc,WAAW;AAChD,YAAM,KAAK;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAuB;AACrB,WAAO,QAAQ,IAAI,CAAC,KAAK,WAAW,GAAG,KAAK,YAAY,CAAC,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU;AACd,SAAK,KAAK,SAAS;AACnB,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAEA,QAAI,EAAE,iBAAiB,mBAAmB;AACxC,YAAM,IAAI,MAAM,6DAA6D;AAAA,IAC/E;AAEA,QAAI,CAAC,KAAK,SAAS,MAAM;AACvB,WAAK,KAAK,uBAAuB;AACjC;AAAA,IACF;AAEA,SAAK,KAAK,eAAe;AACzB,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK,eAAe;AACzB,UAAM,KAAK,MAAM;AACjB,SAAK,KAAK,iBAAiB;AAC3B,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
withoutLeadingSlash,
|
|
4
4
|
withoutTrailingSlash
|
|
5
5
|
} from "@studiometa/js-toolkit/utils";
|
|
6
|
-
import { loadImage } from "../
|
|
6
|
+
import { loadImage } from "../Figure/utils.js";
|
|
7
7
|
import { FigureVideo } from "./FigureVideo.js";
|
|
8
8
|
function normalizeSize(that, prop) {
|
|
9
9
|
const { step } = that.$options;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/FigureVideo/FigureVideoTwicpics.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport {\n withLeadingSlash,\n withoutLeadingSlash,\n withoutTrailingSlash,\n} from '@studiometa/js-toolkit/utils';\nimport { loadImage } from '../Figure/utils.js';\nimport { FigureVideo } from './FigureVideo.js';\n\nexport interface FigureVideoTwicpicsProps extends BaseProps {\n $refs: {\n video: HTMLVideoElement;\n };\n $options: {\n lazy: boolean;\n transform: string;\n domain: string;\n path: string;\n step: number;\n mode: string;\n };\n}\n\n/**\n * Normalize the given size to the step option.\n */\n// eslint-disable-next-line no-use-before-define\nfunction normalizeSize(that: FigureVideoTwicpics, prop: string): number {\n const { step } = that.$options;\n return Math.ceil(that.$refs.video[prop] / step) * step;\n}\n\n/**\n * FigureVideo class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureVideoTwicpics<T extends BaseProps = BaseProps> extends FigureVideo<\n T & FigureVideoTwicpicsProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...FigureVideo.config,\n name: 'FigureVideoTwicpics',\n options: {\n ...FigureVideo.config.options,\n transform: String,\n domain: String,\n path: String,\n step: {\n type: Number,\n default: 50,\n },\n mode: {\n type: String,\n default: 'cover',\n },\n },\n };\n\n /**\n * Get the Twicpics path.\n */\n get path(): string {\n return withoutTrailingSlash(withoutLeadingSlash(this.$options.path));\n }\n\n /**\n * Get the Twicpics domain.\n */\n get domain(): string {\n if (this.$options.domain) {\n return this.$options.domain;\n }\n const url = new URL(this.sources[0].dataset.src);\n return url.host;\n }\n\n /**\n * Format the source for Twicpics.\n * @param {string} src\n * @param {Array} options\n * @returns {string}\n */\n formatSrc(src: string, options: Array<string> = []): string {\n const url = new URL(src, 'https://localhost');\n url.host = this.domain;\n url.port = '';\n\n if (this.path && !url.pathname.startsWith(withLeadingSlash(this.path))) {\n url.pathname = `/${this.path}${url.pathname}`;\n }\n\n const width = normalizeSize(this, 'offsetWidth');\n const height = normalizeSize(this, 'offsetHeight');\n\n this.$log(this.$options.mode, width, height);\n\n url.searchParams.set(\n 'twic',\n ['v1', this.$options.transform, `${this.$options.mode}=${width}x${height}`, ...options]\n .filter(Boolean)\n .join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n return url.toString();\n }\n\n /**\n * Load poster\n */\n loadPoster(): Promise<void|HTMLImageElement> {\n const { video } = this.$refs;\n\n if (!video.dataset.poster) {\n return Promise.resolve();\n }\n\n const twicPoster = this.formatSrc(video.dataset.poster);\n\n return loadImage(twicPoster).then(() => {\n video.poster = twicPoster;\n this.$log('fresh poster loaded');\n });\n }\n\n /**\n * Load sources\n */\n loadSources(): Promise<void> {\n const { video } = this.$refs;\n\n this.sources.forEach((source) => {\n if (!source.dataset.src) {\n return;\n }\n source.src = this.formatSrc(\n source.dataset.src,\n source.dataset.output ? [`output=${source.dataset.output}`] : [],\n );\n });\n\n return new Promise((resolve) => {\n const loadHandler = () => {\n resolve();\n video.removeEventListener('canplaythrough', loadHandler);\n this.$log('fresh sources loaded');\n };\n\n video.addEventListener('canplaythrough', loadHandler);\n\n this.$refs.video.width = normalizeSize(this, 'offsetWidth');\n this.$refs.video.height = normalizeSize(this, 'offsetHeight');\n\n video.load();\n });\n }\n\n /**\n * Reassign the source from the original on resize.\n */\n async resized() {\n const width = normalizeSize(this, 'offsetWidth');\n const height = normalizeSize(this, 'offsetHeight');\n\n if (width === this.$refs.video.width && height === this.$refs.video.height) {\n return;\n }\n\n this.$refs.video.width = width;\n this.$refs.video.height = height;\n\n await this.load();\n }\n\n /**\n * Do not terminate on image load as we need to set the src on resize.\n */\n onLoad() {\n // Do not terminate on image load as we need.\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../packages/ui/FigureVideo/index.ts"],
|
|
4
4
|
"sourcesContent": ["export * from './FigureVideo.js';\nexport * from './FigureVideoTwicpics.js';\n"],
|
|
5
5
|
"mappings": "AAAA,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
@@ -122,7 +122,7 @@ class Frame extends Base {
|
|
|
122
122
|
const doc = this.parseHTML(content);
|
|
123
123
|
const el = doc.querySelector(`#${this.id}`);
|
|
124
124
|
const newFrame = new Frame(el);
|
|
125
|
-
newFrame
|
|
125
|
+
newFrame.__children.registerAll();
|
|
126
126
|
this.$emit("after-fetch", url, content);
|
|
127
127
|
this.$emit("before-leave");
|
|
128
128
|
await Promise.all(this.directChildrenFrameTarget.map((target) => target.leave()));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { nextFrame, historyPush } from '@studiometa/js-toolkit/utils';\nimport { FrameAnchor } from './FrameAnchor.js';\nimport { FrameForm } from './FrameForm.js';\nimport { FrameTarget } from './FrameTarget.js';\n\n/**\n * Get the scroll position.\n */\nfunction getScrollPosition() {\n return {\n left: window.pageXOffset,\n top: window.pageYOffset,\n };\n}\n\n/**\n * The fetch cache.\n */\nconst cache: Map<\n string,\n { promise: Promise<string>; status: 'pending' | 'resolved' | 'error'; content: string }\n> = new Map();\n\nexport interface FrameProps extends BaseProps {\n $children: {\n FrameAnchor: FrameAnchor[];\n FrameForm: FrameForm[];\n FrameTarget: FrameTarget[];\n // eslint-disable-next-line no-use-before-define\n Frame: Frame[];\n };\n $options: {\n history: boolean;\n };\n}\n\n/**\n * Class.\n */\nexport class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Frame',\n emits: [\n 'before-fetch',\n 'after-fetch',\n 'before-leave',\n 'after-leave',\n 'before-content',\n 'after-content',\n 'before-enter',\n 'after-enter',\n ],\n components: {\n FrameAnchor,\n FrameForm,\n FrameTarget,\n Frame,\n },\n options: {\n history: Boolean,\n },\n };\n\n /**\n * Get uniq id.\n */\n get id() {\n return this.$el.id;\n }\n\n /**\n * Get direct `FrameTarget` children.\n */\n get directChildrenFrameTarget(): FrameTarget[] {\n return getDirectChildren(this, 'Frame', 'FrameTarget');\n }\n\n /**\n * Prevent scroll top on unload.\n */\n onWindowUnload() {\n const { history } = window;\n\n if (!history.state) {\n return;\n }\n\n history.replaceState(\n {\n ...history.state,\n scroll: getScrollPosition(),\n },\n '',\n );\n }\n\n /**\n * Go to the previous URL on `popstate` event.\n */\n onWindowPopstate({ event }: { event: PopStateEvent }) {\n this.goTo(window.location.href, null, event.state);\n }\n\n /**\n * Prevent click on `FrameAnchor`.\n */\n onFrameAnchorClick({ target, event }: { event: MouseEvent, target: FrameAnchor }) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameAnchor', target)) {\n return;\n }\n\n this.$log('onAFrameClick', target, event);\n event.preventDefault();\n\n // Do nothing when clicking links on the same page\n // @todo handle hash change\n if (target.href === window.location.href) {\n return;\n }\n\n this.goTo(target.href);\n }\n\n /**\n * Prevent submit on forms.\n */\n onFrameFormSubmit({ event, target }: { event: SubmitEvent, target: FrameForm }) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameForm', target)) {\n return;\n }\n\n this.$log('onFrameFormFrameSubmit', target, event);\n event.preventDefault();\n const url = new URL(target.action);\n\n if (target.$el.method === 'get') {\n // @ts-ignore\n url.search = new URLSearchParams(new FormData(target.$el)).toString();\n this.goTo(url.toString());\n }\n\n if (target.$el.method === 'post') {\n this.goTo(url.toString(), new FormData(target.$el));\n }\n }\n\n /**\n * Parge an HTML string into a DOM object.\n */\n parseHTML(string = '') {\n return new DOMParser().parseFromString(string, 'text/html');\n }\n\n /**\n * Go to the given url.\n */\n async goTo(url: string, formData: FormData = null, scroll: { top: number; left: number } = null) {\n this.$log('goTo', url);\n const parsedUrl = new URL(url);\n\n if (parsedUrl.origin !== window.location.origin) {\n throw new Error('Cross origin request are not allowed.');\n }\n\n this.$emit('before-fetch', url);\n\n // @todo add option to use content as is or to parse it and extract the new frame\n const content = await this.fetch(url, formData);\n const doc = this.parseHTML(content);\n const el = doc.querySelector(`#${this.id}`);\n // @todo manage el === null\n const newFrame = new Frame(el as HTMLElement);\n newFrame
|
|
5
|
-
"mappings": "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
|
|
3
|
+
"sources": ["../../packages/ui/Frame/Frame.ts"],
|
|
4
|
+
"sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { nextFrame, historyPush } from '@studiometa/js-toolkit/utils';\nimport { FrameAnchor } from './FrameAnchor.js';\nimport { FrameForm } from './FrameForm.js';\nimport { FrameTarget } from './FrameTarget.js';\n\n/**\n * Get the scroll position.\n */\nfunction getScrollPosition() {\n return {\n left: window.pageXOffset,\n top: window.pageYOffset,\n };\n}\n\n/**\n * The fetch cache.\n */\nconst cache: Map<\n string,\n { promise: Promise<string>; status: 'pending' | 'resolved' | 'error'; content: string }\n> = new Map();\n\nexport interface FrameProps extends BaseProps {\n $children: {\n FrameAnchor: FrameAnchor[];\n FrameForm: FrameForm[];\n FrameTarget: FrameTarget[];\n // eslint-disable-next-line no-use-before-define\n Frame: Frame[];\n };\n $options: {\n history: boolean;\n };\n}\n\n/**\n * Class.\n */\nexport class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Frame',\n emits: [\n 'before-fetch',\n 'after-fetch',\n 'before-leave',\n 'after-leave',\n 'before-content',\n 'after-content',\n 'before-enter',\n 'after-enter',\n ],\n components: {\n FrameAnchor,\n FrameForm,\n FrameTarget,\n Frame,\n },\n options: {\n history: Boolean,\n },\n };\n\n /**\n * Get uniq id.\n */\n get id() {\n return this.$el.id;\n }\n\n /**\n * Get direct `FrameTarget` children.\n */\n get directChildrenFrameTarget(): FrameTarget[] {\n return getDirectChildren(this, 'Frame', 'FrameTarget');\n }\n\n /**\n * Prevent scroll top on unload.\n */\n onWindowUnload() {\n const { history } = window;\n\n if (!history.state) {\n return;\n }\n\n history.replaceState(\n {\n ...history.state,\n scroll: getScrollPosition(),\n },\n '',\n );\n }\n\n /**\n * Go to the previous URL on `popstate` event.\n */\n onWindowPopstate({ event }: { event: PopStateEvent }) {\n this.goTo(window.location.href, null, event.state);\n }\n\n /**\n * Prevent click on `FrameAnchor`.\n */\n onFrameAnchorClick({ target, event }: { event: MouseEvent, target: FrameAnchor }) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameAnchor', target)) {\n return;\n }\n\n this.$log('onAFrameClick', target, event);\n event.preventDefault();\n\n // Do nothing when clicking links on the same page\n // @todo handle hash change\n if (target.href === window.location.href) {\n return;\n }\n\n this.goTo(target.href);\n }\n\n /**\n * Prevent submit on forms.\n */\n onFrameFormSubmit({ event, target }: { event: SubmitEvent, target: FrameForm }) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameForm', target)) {\n return;\n }\n\n this.$log('onFrameFormFrameSubmit', target, event);\n event.preventDefault();\n const url = new URL(target.action);\n\n if (target.$el.method === 'get') {\n // @ts-ignore\n url.search = new URLSearchParams(new FormData(target.$el)).toString();\n this.goTo(url.toString());\n }\n\n if (target.$el.method === 'post') {\n this.goTo(url.toString(), new FormData(target.$el));\n }\n }\n\n /**\n * Parge an HTML string into a DOM object.\n */\n parseHTML(string = '') {\n return new DOMParser().parseFromString(string, 'text/html');\n }\n\n /**\n * Go to the given url.\n */\n async goTo(url: string, formData: FormData = null, scroll: { top: number; left: number } = null) {\n this.$log('goTo', url);\n const parsedUrl = new URL(url);\n\n if (parsedUrl.origin !== window.location.origin) {\n throw new Error('Cross origin request are not allowed.');\n }\n\n this.$emit('before-fetch', url);\n\n // @todo add option to use content as is or to parse it and extract the new frame\n const content = await this.fetch(url, formData);\n const doc = this.parseHTML(content);\n const el = doc.querySelector(`#${this.id}`);\n // @todo manage el === null\n const newFrame = new Frame(el as HTMLElement);\n newFrame.__children.registerAll();\n\n this.$emit('after-fetch', url, content);\n\n this.$emit('before-leave');\n // Leave all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.leave()));\n\n this.$emit('after-leave');\n this.$emit('before-content');\n\n // Update content\n // @todo insert non existing FrameTarget as well\n this.directChildrenFrameTarget.map((target, index) =>\n target.updateContent(newFrame.directChildrenFrameTarget[index]),\n );\n\n // Push history\n if (this.$options.history && formData === null) {\n document.title = doc.title;\n historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });\n }\n\n if (scroll) {\n document.scrollingElement.scrollTop = scroll.top;\n document.scrollingElement.scrollLeft = scroll.left;\n }\n\n // Update components\n await nextFrame();\n this.$root.$update();\n await nextFrame();\n\n this.$emit('after-content');\n this.$emit('before-enter');\n\n // Enter all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.enter()));\n\n this.$emit('after-enter');\n }\n\n /**\n * Fetch the given url.\n */\n async fetch(url: string, formData: FormData = null): Promise<string> {\n // @note skip cache for POST requests.\n if (formData) {\n const promise = fetch(url, {\n method: 'post',\n body: formData,\n }).then((response) => response.text());\n\n const content = await promise;\n return content;\n }\n\n const cached = cache.get(url);\n\n if (cached) {\n if (cached.status === 'pending') {\n return cached.promise;\n }\n\n return cached.content;\n }\n\n const promise = fetch(url).then((response) => response.text());\n\n try {\n cache.set(url, {\n promise,\n status: 'pending',\n content: undefined,\n });\n\n const content = await promise;\n\n cache.set(url, {\n promise,\n status: 'resolved',\n content,\n });\n\n return content;\n } catch (err) {\n cache.set(url, {\n promise,\n status: 'error',\n content: err,\n });\n\n return err;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["promise"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../packages/ui/Frame/FrameAnchor.ts"],
|
|
4
4
|
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\n\nexport interface FrameAnchorProps extends BaseProps {\n $el: HTMLAnchorElement;\n}\n\n/**\n * FrameAnchor class.\n */\nexport class FrameAnchor<T extends BaseProps = BaseProps> extends Base<T & FrameAnchorProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'FrameAnchor',\n };\n\n /**\n * Get the URL.\n */\n get href(): string {\n return this.$el.href;\n }\n}\n"],
|
|
5
5
|
"mappings": "AAAA,SAAS,YAAY;AAUd,MAAM,oBAAqD,KAA2B;AAAA;AAAA;AAAA;AAAA,EAI3F,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAe;AACjB,WAAO,KAAK,IAAI;AAAA,EAClB;AACF;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../packages/ui/Frame/FrameForm.ts"],
|
|
4
4
|
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\n\nexport interface FrameFormProps extends BaseProps {\n $el: HTMLFormElement;\n}\n\n/**\n * FrameForm class.\n */\nexport class FrameForm<T extends BaseProps = BaseProps> extends Base<T & FrameFormProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'FrameForm',\n };\n\n /**\n * Get the form action.\n */\n get action(): string {\n return this.$el.action;\n }\n}\n"],
|
|
5
5
|
"mappings": "AAAA,SAAS,YAAY;AAUd,MAAM,kBAAmD,KAAyB;AAAA;AAAA;AAAA;AAAA,EAIvF,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAiB;AACnB,WAAO,KAAK,IAAI;AAAA,EAClB;AACF;",
|
|
6
6
|
"names": []
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
|
|
2
|
-
import { Transition } from '
|
|
2
|
+
import { Transition } from '../Transition/index.js';
|
|
3
3
|
export interface FrameTargetProps extends BaseProps {
|
|
4
4
|
$options: {
|
|
5
5
|
mode: 'replace' | 'prepend' | 'append';
|
|
@@ -25,7 +25,7 @@ export declare class FrameTarget<T extends BaseProps = BaseProps> extends Transi
|
|
|
25
25
|
/**
|
|
26
26
|
* Override options.
|
|
27
27
|
*/
|
|
28
|
-
get $options(): import("@studiometa/js-toolkit
|
|
28
|
+
get $options(): import("@studiometa/js-toolkit").BaseOptions & (T & FrameTargetProps & import("../index.js").TransitionProps)["$options"];
|
|
29
29
|
/**
|
|
30
30
|
* Get uniq ID.
|
|
31
31
|
*/
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Frame/FrameTarget.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { addClass, transition } from '@studiometa/js-toolkit/utils';\nimport { Transition } from '../Transition/index.js';\n\nexport interface FrameTargetProps extends BaseProps {\n $options: {\n mode: 'replace' | 'prepend' | 'append';\n id: string;\n leaveKeep: true;\n };\n}\n\n/**\n * FrameTarget class.\n */\nexport class FrameTarget<T extends BaseProps = BaseProps> extends Transition<T & FrameTargetProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'FrameTarget',\n log: true,\n options: {\n ...Transition.config.options,\n mode: {\n type: String,\n default: 'replace', // or 'prepend' or 'append'\n },\n id: String,\n },\n };\n\n /**\n * Insert modes.\n */\n static __INSERT_MODES = {\n prepend: 'afterbegin',\n append: 'beforeend',\n } as const;\n\n /**\n * Override options.\n */\n // @ts-ignore\n get $options() {\n const options = super.$options;\n\n options.leaveKeep = true;\n\n return options;\n }\n\n /**\n * Get uniq ID.\n */\n get id(): string {\n return this.$options.id ?? this.$el.id;\n }\n\n /**\n * Enter transition.\n */\n async enter() {\n this.$log('enter');\n\n const { enterFrom: from, enterActive: active, enterTo: to, leaveTo, enterKeep } = this.$options;\n const transitionStyles = { from, active, to };\n\n switch (this.$options.mode) {\n case 'append':\n case 'prepend':\n await Promise.all(\n Array.from(this.$el.children)\n .filter((child) =>\n from.split(' ').every((className) => child.classList.contains(className)),\n )\n .map((child) =>\n transition(child as HTMLElement, transitionStyles, enterKeep ? 'keep' : undefined),\n ),\n );\n break;\n case 'replace':\n default:\n transitionStyles.from = Array.from(new Set([from, leaveTo].flat())).join(' ');\n await transition(this.$el, transitionStyles, enterKeep ? 'keep' : undefined);\n }\n }\n\n /**\n * Update the content from the new target.\n * @param {FrameTarget} newTarget The instance of the new target.\n * @returns {void}\n */\n updateContent(newTarget: FrameTarget) {\n // @todo manage 'prepend' and 'append' transition\n // only the new content should have the transition\n // - add the leaveTo and enterFrom classes to all `newTarget.children`\n // - or wrap the new content in a custom div ?\n switch (this.$options.mode) {\n case 'prepend':\n case 'append':\n addClass(Array.from(newTarget.$el.children), this.$options.enterFrom.split(' '));\n this.$el.insertAdjacentHTML(\n FrameTarget.__INSERT_MODES[this.$options.mode],\n newTarget.$el.innerHTML,\n );\n break;\n case 'replace':\n default:\n this.$el.innerHTML = newTarget.$el.innerHTML;\n break;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,UAAU,kBAAkB;AACrC,SAAS,kBAAkB;AAapB,MAAM,oBAAqD,WAAiC;AAAA;AAAA;AAAA;AAAA,EAIjG,OAAO,SAAqB;AAAA,IAC1B,GAAG,WAAW;AAAA,IACd,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,MACP,GAAG,WAAW,OAAO;AAAA,MACrB,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA;AAAA,MACX;AAAA,MACA,IAAI;AAAA,IACN;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBAAiB;AAAA,IACtB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,WAAW;AACb,UAAM,UAAU,MAAM;AAEtB,YAAQ,YAAY;AAEpB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAa;AACf,WAAO,KAAK,SAAS,MAAM,KAAK,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ;AACZ,SAAK,KAAK,OAAO;AAEjB,UAAM,EAAE,WAAW,MAAM,aAAa,QAAQ,SAAS,IAAI,SAAS,UAAU,IAAI,KAAK;AACvF,UAAM,mBAAmB,EAAE,MAAM,QAAQ,GAAG;AAE5C,YAAQ,KAAK,SAAS,MAAM;AAAA,MAC1B,KAAK;AAAA,MACL,KAAK;AACH,cAAM,QAAQ;AAAA,UACZ,MAAM,KAAK,KAAK,IAAI,QAAQ,EACzB;AAAA,YAAO,CAAC,UACP,KAAK,MAAM,GAAG,EAAE,MAAM,CAAC,cAAc,MAAM,UAAU,SAAS,SAAS,CAAC;AAAA,UAC1E,EACC;AAAA,YAAI,CAAC,UACJ,WAAW,OAAsB,kBAAkB,YAAY,SAAS,MAAS;AAAA,UACnF;AAAA,QACJ;AACA;AAAA,MACF,KAAK;AAAA,MACL;AACE,yBAAiB,OAAO,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG;AAC5E,cAAM,WAAW,KAAK,KAAK,kBAAkB,YAAY,SAAS,MAAS;AAAA,IAC/E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,WAAwB;AAKpC,YAAQ,KAAK,SAAS,MAAM;AAAA,MAC1B,KAAK;AAAA,MACL,KAAK;AACH,iBAAS,MAAM,KAAK,UAAU,IAAI,QAAQ,GAAG,KAAK,SAAS,UAAU,MAAM,GAAG,CAAC;AAC/E,aAAK,IAAI;AAAA,UACP,YAAY,eAAe,KAAK,SAAS,IAAI;AAAA,UAC7C,UAAU,IAAI;AAAA,QAChB;AACA;AAAA,MACF,KAAK;AAAA,MACL;AACE,aAAK,IAAI,YAAY,UAAU,IAAI;AACnC;AAAA,IACJ;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../packages/ui/Frame/index.ts"],
|
|
4
4
|
"sourcesContent": ["export * from './Frame.js';\nexport * from './FrameAnchor.js';\nexport * from './FrameForm.js';\nexport * from './FrameTarget.js';\n"],
|
|
5
5
|
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
{% endblock %}
|
|
109
109
|
{% block background %}
|
|
110
110
|
{% if image.src %}
|
|
111
|
-
{% include '@ui/
|
|
111
|
+
{% include '@ui/Figure/Figure.twig' with image only %}
|
|
112
112
|
{% endif %}
|
|
113
113
|
{% endblock %}
|
|
114
114
|
{% block content %}
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
{% if actions %}
|
|
139
139
|
<div {{ html_attributes(actions_attributes) }}>
|
|
140
140
|
{% for action in actions %}
|
|
141
|
-
{% include '@ui/
|
|
141
|
+
{% include '@ui/Button/StyledButtonRounded.twig' with action only %}
|
|
142
142
|
{% endfor %}
|
|
143
143
|
</div>
|
|
144
144
|
{% endif %}
|
|
@@ -23,7 +23,11 @@
|
|
|
23
23
|
) %}
|
|
24
24
|
|
|
25
25
|
{%- set icon -%}
|
|
26
|
-
{
|
|
26
|
+
{% if ':' in name %}
|
|
27
|
+
{{ meta_icon(name) }}
|
|
28
|
+
{% else %}
|
|
29
|
+
{{ source('@svg/%s.svg'|format(name), ignore_missing = true) }}
|
|
30
|
+
{% endif %}
|
|
27
31
|
{%- endset -%}
|
|
28
32
|
|
|
29
33
|
{% if icon is not empty or not (ignore_missing ?? true) %}
|