@studiometa/ui 0.2.23 → 0.2.25
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/README.md +2 -12
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +11 -0
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs.map +2 -2
- package/atoms/AnchorScrollTo/AnchorScrollTo.js +11 -0
- package/atoms/AnchorScrollTo/AnchorScrollTo.js.map +2 -2
- package/atoms/Button/StyledButton.twig +6 -4
- package/atoms/Button/StyledButtonRounded.twig +65 -0
- package/atoms/Cursor/Cursor.cjs +12 -0
- package/atoms/Cursor/Cursor.cjs.map +2 -2
- package/atoms/Cursor/Cursor.js +12 -0
- package/atoms/Cursor/Cursor.js.map +2 -2
- package/atoms/Figure/Figure.cjs +27 -3
- package/atoms/Figure/Figure.cjs.map +2 -2
- package/atoms/Figure/Figure.js +27 -3
- package/atoms/Figure/Figure.js.map +2 -2
- package/atoms/Figure/Figure.twig +6 -1
- package/atoms/Figure/FigureTwicpics.cjs +21 -0
- package/atoms/Figure/FigureTwicpics.cjs.map +1 -1
- package/atoms/Figure/FigureTwicpics.js +21 -0
- package/atoms/Figure/FigureTwicpics.js.map +1 -1
- package/atoms/LargeText/LargeText.cjs +27 -0
- package/atoms/LargeText/LargeText.cjs.map +2 -2
- package/atoms/LargeText/LargeText.js +27 -0
- package/atoms/LargeText/LargeText.js.map +2 -2
- package/atoms/LazyInclude/LazyInclude.cjs +15 -0
- package/atoms/LazyInclude/LazyInclude.cjs.map +2 -2
- package/atoms/LazyInclude/LazyInclude.js +15 -0
- package/atoms/LazyInclude/LazyInclude.js.map +2 -2
- package/atoms/Prefetch/AbstractPrefetch.cjs +12 -0
- package/atoms/Prefetch/AbstractPrefetch.cjs.map +2 -2
- package/atoms/Prefetch/AbstractPrefetch.js +12 -0
- package/atoms/Prefetch/AbstractPrefetch.js.map +2 -2
- package/atoms/Prefetch/PrefetchWhenOver.cjs +6 -0
- package/atoms/Prefetch/PrefetchWhenOver.cjs.map +2 -2
- package/atoms/Prefetch/PrefetchWhenOver.js +6 -0
- package/atoms/Prefetch/PrefetchWhenOver.js.map +2 -2
- package/atoms/Prefetch/PrefetchWhenVisible.cjs +6 -0
- package/atoms/Prefetch/PrefetchWhenVisible.cjs.map +2 -2
- package/atoms/Prefetch/PrefetchWhenVisible.js +6 -0
- package/atoms/Prefetch/PrefetchWhenVisible.js.map +2 -2
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs +12 -0
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs.map +2 -2
- package/atoms/ScrollAnimation/AbstractScrollAnimation.js +12 -0
- package/atoms/ScrollAnimation/AbstractScrollAnimation.js.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimation.cjs +6 -0
- package/atoms/ScrollAnimation/ScrollAnimation.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimation.js +6 -0
- package/atoms/ScrollAnimation/ScrollAnimation.js.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs +18 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimationChild.js +18 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.js.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.js +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.js.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs +6 -0
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationParent.js +6 -0
- package/atoms/ScrollAnimation/ScrollAnimationParent.js.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.d.ts +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.js +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.js.map +1 -1
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs +6 -0
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs.map +2 -2
- package/atoms/ScrollAnimation/animationScrollWithEase.js +6 -0
- package/atoms/ScrollAnimation/animationScrollWithEase.js.map +2 -2
- package/atoms/ScrollReveal/ScrollReveal.cjs +12 -0
- package/atoms/ScrollReveal/ScrollReveal.cjs.map +1 -1
- package/atoms/ScrollReveal/ScrollReveal.js +12 -0
- package/atoms/ScrollReveal/ScrollReveal.js.map +1 -1
- package/decorators/withTransition.cjs +16 -2
- package/decorators/withTransition.cjs.map +2 -2
- package/decorators/withTransition.js +16 -2
- package/decorators/withTransition.js.map +2 -2
- package/molecules/Accordion/AccordionCore.cjs +9 -0
- package/molecules/Accordion/AccordionCore.cjs.map +2 -2
- package/molecules/Accordion/AccordionCore.js +9 -0
- package/molecules/Accordion/AccordionCore.js.map +2 -2
- package/molecules/Accordion/AccordionItem.cjs +33 -1
- package/molecules/Accordion/AccordionItem.cjs.map +2 -2
- package/molecules/Accordion/AccordionItem.d.ts +1 -1
- package/molecules/Accordion/AccordionItem.js +29 -1
- package/molecules/Accordion/AccordionItem.js.map +2 -2
- package/molecules/Menu/Menu.cjs +47 -0
- package/molecules/Menu/Menu.cjs.map +1 -1
- package/molecules/Menu/Menu.js +47 -0
- package/molecules/Menu/Menu.js.map +1 -1
- package/molecules/Menu/MenuBtn.cjs +24 -0
- package/molecules/Menu/MenuBtn.cjs.map +1 -1
- package/molecules/Menu/MenuBtn.js +24 -0
- package/molecules/Menu/MenuBtn.js.map +1 -1
- package/molecules/Menu/MenuList.cjs +39 -0
- package/molecules/Menu/MenuList.cjs.map +2 -2
- package/molecules/Menu/MenuList.d.ts +1 -1
- package/molecules/Menu/MenuList.js +39 -0
- package/molecules/Menu/MenuList.js.map +2 -2
- package/molecules/Modal/Modal.cjs +50 -1
- package/molecules/Modal/Modal.cjs.map +2 -2
- package/molecules/Modal/Modal.d.ts +3 -3
- package/molecules/Modal/Modal.js +50 -1
- package/molecules/Modal/Modal.js.map +2 -2
- package/molecules/Modal/ModalWithTransition.cjs +6 -0
- package/molecules/Modal/ModalWithTransition.cjs.map +2 -2
- package/molecules/Modal/ModalWithTransition.js +6 -0
- package/molecules/Modal/ModalWithTransition.js.map +2 -2
- package/molecules/Panel/Panel.cjs +19 -0
- package/molecules/Panel/Panel.cjs.map +2 -2
- package/molecules/Panel/Panel.js +19 -0
- package/molecules/Panel/Panel.js.map +2 -2
- package/molecules/Slider/AbstractSliderChild.cjs +24 -0
- package/molecules/Slider/AbstractSliderChild.cjs.map +2 -2
- package/molecules/Slider/AbstractSliderChild.js +24 -0
- package/molecules/Slider/AbstractSliderChild.js.map +2 -2
- package/molecules/Slider/Slider.cjs +97 -0
- package/molecules/Slider/Slider.cjs.map +2 -2
- package/molecules/Slider/Slider.d.ts +3 -2
- package/molecules/Slider/Slider.js +97 -0
- package/molecules/Slider/Slider.js.map +2 -2
- package/molecules/Slider/SliderBtn.cjs +22 -2
- package/molecules/Slider/SliderBtn.cjs.map +2 -2
- package/molecules/Slider/SliderBtn.d.ts +1 -0
- package/molecules/Slider/SliderBtn.js +22 -2
- package/molecules/Slider/SliderBtn.js.map +2 -2
- package/molecules/Slider/SliderCount.cjs +9 -0
- package/molecules/Slider/SliderCount.cjs.map +2 -2
- package/molecules/Slider/SliderCount.js +9 -0
- package/molecules/Slider/SliderCount.js.map +2 -2
- package/molecules/Slider/SliderDots.cjs +19 -0
- package/molecules/Slider/SliderDots.cjs.map +2 -2
- package/molecules/Slider/SliderDots.js +19 -0
- package/molecules/Slider/SliderDots.js.map +2 -2
- package/molecules/Slider/SliderDrag.cjs +15 -0
- package/molecules/Slider/SliderDrag.cjs.map +2 -2
- package/molecules/Slider/SliderDrag.js +15 -0
- package/molecules/Slider/SliderDrag.js.map +2 -2
- package/molecules/Slider/SliderItem.cjs +75 -14
- package/molecules/Slider/SliderItem.cjs.map +2 -2
- package/molecules/Slider/SliderItem.d.ts +12 -11
- package/molecules/Slider/SliderItem.js +75 -14
- package/molecules/Slider/SliderItem.js.map +2 -2
- package/molecules/Slider/SliderProgress.cjs +6 -0
- package/molecules/Slider/SliderProgress.cjs.map +2 -2
- package/molecules/Slider/SliderProgress.js +6 -0
- package/molecules/Slider/SliderProgress.js.map +2 -2
- package/molecules/Sticky/Sticky.cjs +56 -0
- package/molecules/Sticky/Sticky.cjs.map +2 -2
- package/molecules/Sticky/Sticky.js +56 -0
- package/molecules/Sticky/Sticky.js.map +2 -2
- package/molecules/TableOfContent/TableOfContent.cjs +13 -0
- package/molecules/TableOfContent/TableOfContent.cjs.map +1 -1
- package/molecules/TableOfContent/TableOfContent.js +13 -0
- package/molecules/TableOfContent/TableOfContent.js.map +1 -1
- package/molecules/TableOfContent/TableOfContentAnchor.cjs +16 -0
- package/molecules/TableOfContent/TableOfContentAnchor.cjs.map +2 -2
- package/molecules/TableOfContent/TableOfContentAnchor.js +16 -0
- package/molecules/TableOfContent/TableOfContentAnchor.js.map +2 -2
- package/molecules/Tabs/Tabs.cjs +16 -0
- package/molecules/Tabs/Tabs.cjs.map +2 -2
- package/molecules/Tabs/Tabs.d.ts +3 -3
- package/molecules/Tabs/Tabs.js +16 -0
- package/molecules/Tabs/Tabs.js.map +2 -2
- package/organisms/Frame/Frame.cjs +30 -0
- package/organisms/Frame/Frame.cjs.map +2 -2
- package/organisms/Frame/Frame.js +30 -0
- package/organisms/Frame/Frame.js.map +2 -2
- package/organisms/Frame/FrameAnchor.cjs +6 -0
- package/organisms/Frame/FrameAnchor.cjs.map +1 -1
- package/organisms/Frame/FrameAnchor.js +6 -0
- package/organisms/Frame/FrameAnchor.js.map +1 -1
- package/organisms/Frame/FrameForm.cjs +6 -0
- package/organisms/Frame/FrameForm.cjs.map +1 -1
- package/organisms/Frame/FrameForm.js +6 -0
- package/organisms/Frame/FrameForm.js.map +1 -1
- package/organisms/Frame/FrameTarget.cjs +25 -2
- package/organisms/Frame/FrameTarget.cjs.map +2 -2
- package/organisms/Frame/FrameTarget.d.ts +1 -1
- package/organisms/Frame/FrameTarget.js +25 -2
- package/organisms/Frame/FrameTarget.js.map +2 -2
- package/organisms/Hero/Hero.twig +151 -0
- package/package.json +2 -2
- package/primitives/Draggable/Draggable.cjs +18 -0
- package/primitives/Draggable/Draggable.cjs.map +2 -2
- package/primitives/Draggable/Draggable.js +18 -0
- package/primitives/Draggable/Draggable.js.map +2 -2
- package/primitives/Sentinel/Sentinel.cjs +3 -0
- package/primitives/Sentinel/Sentinel.cjs.map +2 -2
- package/primitives/Sentinel/Sentinel.js +3 -0
- package/primitives/Sentinel/Sentinel.js.map +2 -2
- package/primitives/Transition/Transition.cjs +3 -0
- package/primitives/Transition/Transition.cjs.map +1 -1
- package/primitives/Transition/Transition.js +3 -0
- package/primitives/Transition/Transition.js.map +1 -1
package/README.md
CHANGED
|
@@ -53,20 +53,10 @@ cd ui/
|
|
|
53
53
|
|
|
54
54
|
# Install root dependencies
|
|
55
55
|
npm install
|
|
56
|
-
composer install
|
|
57
56
|
ddev start
|
|
58
57
|
|
|
59
|
-
# Install back-end dependencies
|
|
60
|
-
cd packages/docs/.symfony
|
|
61
|
-
composer install
|
|
62
|
-
|
|
63
58
|
# Launch the dev environment
|
|
64
|
-
cd ..
|
|
65
|
-
npm run dev
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
You can also [open the repository in GitPod](https://gitpod.io/#https://github.com/studiometa/ui) and start the dev server with the following command in the root of the project:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
59
|
npm run docs:dev
|
|
72
60
|
```
|
|
61
|
+
|
|
62
|
+
You can also [open the repository in GitPod](https://gitpod.io/#https://github.com/studiometa/ui) and start the dev environment there.
|
|
@@ -30,9 +30,20 @@ module.exports = __toCommonJS(AnchorScrollTo_exports);
|
|
|
30
30
|
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
31
31
|
var import_utils = require("@studiometa/js-toolkit/utils");
|
|
32
32
|
var AnchorScrollTo = class extends import_js_toolkit.Base {
|
|
33
|
+
/**
|
|
34
|
+
* Get the target selector.
|
|
35
|
+
*
|
|
36
|
+
* @returns {string}
|
|
37
|
+
*/
|
|
33
38
|
get targetSelector() {
|
|
34
39
|
return this.$el.hash;
|
|
35
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Scroll to the target selector on click.
|
|
43
|
+
*
|
|
44
|
+
* @param {MouseEvent} event
|
|
45
|
+
* @returns {void}
|
|
46
|
+
*/
|
|
36
47
|
onClick(event) {
|
|
37
48
|
try {
|
|
38
49
|
(0, import_utils.scrollTo)(this.targetSelector);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/AnchorScrollTo/AnchorScrollTo.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { scrollTo } from '@studiometa/js-toolkit/utils';\n\nexport interface AnchorScrollToProps extends BaseProps {\n $el: HTMLAnchorElement;\n}\n\n/**\n * AncorScrollTo class.\n */\nexport class AnchorScrollTo<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAErB,mBAAyB;AASlB,IAAM,iBAAN,cAA8D,
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { scrollTo } from '@studiometa/js-toolkit/utils';\n\nexport interface AnchorScrollToProps extends BaseProps {\n $el: HTMLAnchorElement;\n}\n\n/**\n * AncorScrollTo class.\n */\nexport class AnchorScrollTo<T extends BaseProps = BaseProps> extends Base<AnchorScrollToProps & T> {\n static config: BaseConfig = {\n name: 'AnchorScrollTo',\n };\n\n /**\n * Get the target selector.\n *\n * @returns {string}\n */\n get targetSelector() {\n return this.$el.hash;\n }\n\n /**\n * Scroll to the target selector on click.\n *\n * @param {MouseEvent} event\n * @returns {void}\n */\n onClick(event) {\n try {\n scrollTo(this.targetSelector);\n event.preventDefault();\n } catch {\n // Silence is golden.\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAErB,mBAAyB;AASlB,IAAM,iBAAN,cAA8D,uBAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjG,IAAI,iBAAiB;AACnB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ,OAAO;AACb,QAAI;AACF,iCAAS,KAAK,cAAc;AAC5B,YAAM,eAAe;AAAA,IACvB,QAAE;AAAA,IAEF;AAAA,EACF;AACF;AA3BE,cADW,gBACJ,UAAqB;AAAA,EAC1B,MAAM;AACR;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,9 +4,20 @@ class AnchorScrollTo extends Base {
|
|
|
4
4
|
static config = {
|
|
5
5
|
name: "AnchorScrollTo"
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Get the target selector.
|
|
9
|
+
*
|
|
10
|
+
* @returns {string}
|
|
11
|
+
*/
|
|
7
12
|
get targetSelector() {
|
|
8
13
|
return this.$el.hash;
|
|
9
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Scroll to the target selector on click.
|
|
17
|
+
*
|
|
18
|
+
* @param {MouseEvent} event
|
|
19
|
+
* @returns {void}
|
|
20
|
+
*/
|
|
10
21
|
onClick(event) {
|
|
11
22
|
try {
|
|
12
23
|
scrollTo(this.targetSelector);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/AnchorScrollTo/AnchorScrollTo.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { scrollTo } from '@studiometa/js-toolkit/utils';\n\nexport interface AnchorScrollToProps extends BaseProps {\n $el: HTMLAnchorElement;\n}\n\n/**\n * AncorScrollTo class.\n */\nexport class AnchorScrollTo<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,gBAAgB;AASlB,MAAM,uBAAwD,
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { scrollTo } from '@studiometa/js-toolkit/utils';\n\nexport interface AnchorScrollToProps extends BaseProps {\n $el: HTMLAnchorElement;\n}\n\n/**\n * AncorScrollTo class.\n */\nexport class AnchorScrollTo<T extends BaseProps = BaseProps> extends Base<AnchorScrollToProps & T> {\n static config: BaseConfig = {\n name: 'AnchorScrollTo',\n };\n\n /**\n * Get the target selector.\n *\n * @returns {string}\n */\n get targetSelector() {\n return this.$el.hash;\n }\n\n /**\n * Scroll to the target selector on click.\n *\n * @param {MouseEvent} event\n * @returns {void}\n */\n onClick(event) {\n try {\n scrollTo(this.targetSelector);\n event.preventDefault();\n } catch {\n // Silence is golden.\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,gBAAgB;AASlB,MAAM,uBAAwD,KAA8B;AAAA,EACjG,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,iBAAiB;AACnB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ,OAAO;AACb,QAAI;AACF,eAAS,KAAK,cAAc;AAC5B,YAAM,eAAe;AAAA,IACvB,QAAE;AAAA,IAEF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -35,13 +35,15 @@
|
|
|
35
35
|
] %}
|
|
36
36
|
|
|
37
37
|
{% set attr =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
merge_html_attributes(
|
|
39
|
+
attr ?? null,
|
|
40
|
+
null,
|
|
41
|
+
{
|
|
41
42
|
class: [
|
|
42
43
|
theme_shared,
|
|
43
44
|
theme == 'primary' ? theme_primary : '',
|
|
44
45
|
theme == 'secondary' ? theme_secondary : ''
|
|
45
46
|
]
|
|
46
|
-
}
|
|
47
|
+
}
|
|
48
|
+
)
|
|
47
49
|
%}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{#
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
* Styled button rounded.
|
|
5
|
+
*
|
|
6
|
+
* @param 'primary' $theme
|
|
7
|
+
* @param $icon_class
|
|
8
|
+
*/
|
|
9
|
+
#}
|
|
10
|
+
|
|
11
|
+
{% extends '@ui/atoms/Button/Button.twig' %}
|
|
12
|
+
|
|
13
|
+
{% set icon_only = icon_only|default(false) %}
|
|
14
|
+
|
|
15
|
+
{% set theme = theme|default('primary') %}
|
|
16
|
+
|
|
17
|
+
{% set theme_shared = [
|
|
18
|
+
'rounded-full cursor-pointer transition',
|
|
19
|
+
'disabled:cursor-not-allowed leading-6',
|
|
20
|
+
{
|
|
21
|
+
'inline-block': icon is not defined,
|
|
22
|
+
'inline-flex items-center': icon is defined,
|
|
23
|
+
'px-6 py-4': not icon_only,
|
|
24
|
+
'w-14 relative p-4': icon_only
|
|
25
|
+
}
|
|
26
|
+
] %}
|
|
27
|
+
|
|
28
|
+
{% set theme_primary = ['text-white bg-black', 'hover:bg-opacity-75 disabled:bg-opacity-50'] %}
|
|
29
|
+
|
|
30
|
+
{% set theme_secondary = [
|
|
31
|
+
'ring ring-inset ring-2 ring-black ring-opacity-25',
|
|
32
|
+
{
|
|
33
|
+
'hover:ring-opacity-100': (attr is defined and attr.disabled is not defined)
|
|
34
|
+
or attr is not defined
|
|
35
|
+
}
|
|
36
|
+
] %}
|
|
37
|
+
|
|
38
|
+
{% set attr =
|
|
39
|
+
merge_html_attributes(
|
|
40
|
+
attr ?? null,
|
|
41
|
+
null,
|
|
42
|
+
{
|
|
43
|
+
class: [
|
|
44
|
+
theme_shared,
|
|
45
|
+
theme == 'primary' ? theme_primary : '',
|
|
46
|
+
theme == 'secondary' ? theme_secondary : ''
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
%}
|
|
51
|
+
{% set icon_class = icon_class|default({}) %}
|
|
52
|
+
{% if icon_only %}
|
|
53
|
+
{% set icon_classes =
|
|
54
|
+
icon_classes
|
|
55
|
+
|default(['absolute top-1/2 left-1/2 -translate-y-1/2 -translate-x-1/2'])
|
|
56
|
+
|merge(icon_class)
|
|
57
|
+
%}
|
|
58
|
+
{% endif %}
|
|
59
|
+
|
|
60
|
+
{% block icon %}
|
|
61
|
+
{{ parent() }}
|
|
62
|
+
{% if icon_only %}
|
|
63
|
+
|
|
64
|
+
{% endif %}
|
|
65
|
+
{% endblock %}
|
package/atoms/Cursor/Cursor.cjs
CHANGED
|
@@ -36,6 +36,9 @@ var Cursor = class extends import_js_toolkit.Base {
|
|
|
36
36
|
pointerX = 0;
|
|
37
37
|
pointerY = 0;
|
|
38
38
|
pointerScale = 0;
|
|
39
|
+
/**
|
|
40
|
+
* Mounted hook.
|
|
41
|
+
*/
|
|
39
42
|
mounted() {
|
|
40
43
|
this.x = 0;
|
|
41
44
|
this.y = 0;
|
|
@@ -45,6 +48,9 @@ var Cursor = class extends import_js_toolkit.Base {
|
|
|
45
48
|
this.pointerScale = 0;
|
|
46
49
|
this.render({ x: this.x, y: this.y, scale: this.scale });
|
|
47
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Moved hook.
|
|
53
|
+
*/
|
|
48
54
|
moved({ event, x, y, isDown }) {
|
|
49
55
|
if (!this.$services.has("ticked")) {
|
|
50
56
|
this.$services.enable("ticked");
|
|
@@ -66,6 +72,9 @@ var Cursor = class extends import_js_toolkit.Base {
|
|
|
66
72
|
}
|
|
67
73
|
this.pointerScale = scale;
|
|
68
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* RequestAnimationFrame hook.
|
|
77
|
+
*/
|
|
69
78
|
ticked() {
|
|
70
79
|
this.x = (0, import_utils.damp)(this.pointerX, this.x, this.$options.translateDampFactor);
|
|
71
80
|
this.y = (0, import_utils.damp)(this.pointerY, this.y, this.$options.translateDampFactor);
|
|
@@ -79,6 +88,9 @@ var Cursor = class extends import_js_toolkit.Base {
|
|
|
79
88
|
this.$services.disable("ticked");
|
|
80
89
|
}
|
|
81
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Render the cursor.
|
|
93
|
+
*/
|
|
82
94
|
render({ x, y, scale }) {
|
|
83
95
|
const transform = (0, import_utils.matrix)({
|
|
84
96
|
translateX: x,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/Cursor/Cursor.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, PointerServiceProps, BaseProps } from '@studiometa/js-toolkit';\nimport { damp, matrix } from '@studiometa/js-toolkit/utils';\n\nexport interface CursorProps extends BaseProps {\n $options: {\n growSelectors: string;\n shrinkSelectors: string;\n scale: number;\n growTo: number;\n shrinkTo: number;\n translateDampFactor: number;\n growDampFactor: number;\n shrinkDampFactor: number;\n };\n}\n\n/**\n * Cursor class.\n */\nexport class Cursor<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAErB,mBAA6B;AAkBtB,IAAM,SAAN,cAAsD,
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, PointerServiceProps, BaseProps } from '@studiometa/js-toolkit';\nimport { damp, matrix } from '@studiometa/js-toolkit/utils';\n\nexport interface CursorProps extends BaseProps {\n $options: {\n growSelectors: string;\n shrinkSelectors: string;\n scale: number;\n growTo: number;\n shrinkTo: number;\n translateDampFactor: number;\n growDampFactor: number;\n shrinkDampFactor: number;\n };\n}\n\n/**\n * Cursor class.\n */\nexport class Cursor<T extends BaseProps = BaseProps> extends Base<CursorProps & T> {\n static config: BaseConfig = {\n name: 'Cursor',\n options: {\n growSelectors: {\n type: String,\n default: 'a, a *, button, button *, [data-cursor-grow], [data-cursor-grow] *',\n },\n shrinkSelectors: {\n type: String,\n default: '[data-cursor-shrink], [data-cursor-shrink] *',\n },\n scale: {\n type: Number,\n default: 1,\n },\n growTo: {\n type: Number,\n default: 2,\n },\n shrinkTo: {\n type: Number,\n default: 0.5,\n },\n translateDampFactor: {\n type: Number,\n default: 0.25,\n },\n growDampFactor: {\n type: Number,\n default: 0.25,\n },\n shrinkDampFactor: {\n type: Number,\n default: 0.25,\n },\n },\n };\n\n x = 0;\n\n y = 0;\n\n scale = 0;\n\n pointerX = 0;\n\n pointerY = 0;\n\n pointerScale = 0;\n\n /**\n * Mounted hook.\n */\n mounted() {\n this.x = 0;\n this.y = 0;\n this.scale = 0;\n this.pointerX = 0;\n this.pointerY = 0;\n this.pointerScale = 0;\n this.render({ x: this.x, y: this.y, scale: this.scale });\n }\n\n /**\n * Moved hook.\n */\n moved({ event, x, y, isDown }: PointerServiceProps) {\n if (!this.$services.has('ticked')) {\n this.$services.enable('ticked');\n }\n\n this.pointerX = x;\n this.pointerY = y;\n\n let { scale } = this.$options;\n\n if (!event) {\n this.pointerScale = scale;\n return;\n }\n\n const shouldGrow =\n (event.target instanceof Element && event.target.matches(this.$options.growSelectors)) ||\n false;\n const shouldReduce =\n isDown ||\n (event.target instanceof Element && event.target.matches(this.$options.shrinkSelectors)) ||\n false;\n\n if (shouldGrow) {\n scale = this.$options.growTo;\n }\n\n if (shouldReduce) {\n scale = this.$options.shrinkTo;\n }\n\n this.pointerScale = scale;\n }\n\n /**\n * RequestAnimationFrame hook.\n */\n ticked() {\n this.x = damp(this.pointerX, this.x, this.$options.translateDampFactor);\n this.y = damp(this.pointerY, this.y, this.$options.translateDampFactor);\n this.scale = damp(\n this.pointerScale,\n this.scale,\n this.pointerScale < this.scale\n ? this.$options.shrinkDampFactor\n : this.$options.growDampFactor,\n );\n\n this.render({ x: this.x, y: this.y, scale: this.scale });\n\n if (this.x === this.pointerX && this.y === this.pointerY && this.scale === this.pointerScale) {\n this.$services.disable('ticked');\n }\n }\n\n /**\n * Render the cursor.\n */\n render({ x, y, scale }: { x: number; y: number; scale: number }) {\n const transform = matrix({\n translateX: x,\n translateY: y,\n scaleX: scale,\n scaleY: scale,\n });\n this.$el.style.transform = `translateZ(0) ${transform}`;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/atoms/Cursor/Cursor.js
CHANGED
|
@@ -44,6 +44,9 @@ class Cursor extends Base {
|
|
|
44
44
|
pointerX = 0;
|
|
45
45
|
pointerY = 0;
|
|
46
46
|
pointerScale = 0;
|
|
47
|
+
/**
|
|
48
|
+
* Mounted hook.
|
|
49
|
+
*/
|
|
47
50
|
mounted() {
|
|
48
51
|
this.x = 0;
|
|
49
52
|
this.y = 0;
|
|
@@ -53,6 +56,9 @@ class Cursor extends Base {
|
|
|
53
56
|
this.pointerScale = 0;
|
|
54
57
|
this.render({ x: this.x, y: this.y, scale: this.scale });
|
|
55
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Moved hook.
|
|
61
|
+
*/
|
|
56
62
|
moved({ event, x, y, isDown }) {
|
|
57
63
|
if (!this.$services.has("ticked")) {
|
|
58
64
|
this.$services.enable("ticked");
|
|
@@ -74,6 +80,9 @@ class Cursor extends Base {
|
|
|
74
80
|
}
|
|
75
81
|
this.pointerScale = scale;
|
|
76
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* RequestAnimationFrame hook.
|
|
85
|
+
*/
|
|
77
86
|
ticked() {
|
|
78
87
|
this.x = damp(this.pointerX, this.x, this.$options.translateDampFactor);
|
|
79
88
|
this.y = damp(this.pointerY, this.y, this.$options.translateDampFactor);
|
|
@@ -87,6 +96,9 @@ class Cursor extends Base {
|
|
|
87
96
|
this.$services.disable("ticked");
|
|
88
97
|
}
|
|
89
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Render the cursor.
|
|
101
|
+
*/
|
|
90
102
|
render({ x, y, scale }) {
|
|
91
103
|
const transform = matrix({
|
|
92
104
|
translateX: x,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/Cursor/Cursor.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, PointerServiceProps, BaseProps } from '@studiometa/js-toolkit';\nimport { damp, matrix } from '@studiometa/js-toolkit/utils';\n\nexport interface CursorProps extends BaseProps {\n $options: {\n growSelectors: string;\n shrinkSelectors: string;\n scale: number;\n growTo: number;\n shrinkTo: number;\n translateDampFactor: number;\n growDampFactor: number;\n shrinkDampFactor: number;\n };\n}\n\n/**\n * Cursor class.\n */\nexport class Cursor<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,MAAM,cAAc;AAkBtB,MAAM,eAAgD,
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, PointerServiceProps, BaseProps } from '@studiometa/js-toolkit';\nimport { damp, matrix } from '@studiometa/js-toolkit/utils';\n\nexport interface CursorProps extends BaseProps {\n $options: {\n growSelectors: string;\n shrinkSelectors: string;\n scale: number;\n growTo: number;\n shrinkTo: number;\n translateDampFactor: number;\n growDampFactor: number;\n shrinkDampFactor: number;\n };\n}\n\n/**\n * Cursor class.\n */\nexport class Cursor<T extends BaseProps = BaseProps> extends Base<CursorProps & T> {\n static config: BaseConfig = {\n name: 'Cursor',\n options: {\n growSelectors: {\n type: String,\n default: 'a, a *, button, button *, [data-cursor-grow], [data-cursor-grow] *',\n },\n shrinkSelectors: {\n type: String,\n default: '[data-cursor-shrink], [data-cursor-shrink] *',\n },\n scale: {\n type: Number,\n default: 1,\n },\n growTo: {\n type: Number,\n default: 2,\n },\n shrinkTo: {\n type: Number,\n default: 0.5,\n },\n translateDampFactor: {\n type: Number,\n default: 0.25,\n },\n growDampFactor: {\n type: Number,\n default: 0.25,\n },\n shrinkDampFactor: {\n type: Number,\n default: 0.25,\n },\n },\n };\n\n x = 0;\n\n y = 0;\n\n scale = 0;\n\n pointerX = 0;\n\n pointerY = 0;\n\n pointerScale = 0;\n\n /**\n * Mounted hook.\n */\n mounted() {\n this.x = 0;\n this.y = 0;\n this.scale = 0;\n this.pointerX = 0;\n this.pointerY = 0;\n this.pointerScale = 0;\n this.render({ x: this.x, y: this.y, scale: this.scale });\n }\n\n /**\n * Moved hook.\n */\n moved({ event, x, y, isDown }: PointerServiceProps) {\n if (!this.$services.has('ticked')) {\n this.$services.enable('ticked');\n }\n\n this.pointerX = x;\n this.pointerY = y;\n\n let { scale } = this.$options;\n\n if (!event) {\n this.pointerScale = scale;\n return;\n }\n\n const shouldGrow =\n (event.target instanceof Element && event.target.matches(this.$options.growSelectors)) ||\n false;\n const shouldReduce =\n isDown ||\n (event.target instanceof Element && event.target.matches(this.$options.shrinkSelectors)) ||\n false;\n\n if (shouldGrow) {\n scale = this.$options.growTo;\n }\n\n if (shouldReduce) {\n scale = this.$options.shrinkTo;\n }\n\n this.pointerScale = scale;\n }\n\n /**\n * RequestAnimationFrame hook.\n */\n ticked() {\n this.x = damp(this.pointerX, this.x, this.$options.translateDampFactor);\n this.y = damp(this.pointerY, this.y, this.$options.translateDampFactor);\n this.scale = damp(\n this.pointerScale,\n this.scale,\n this.pointerScale < this.scale\n ? this.$options.shrinkDampFactor\n : this.$options.growDampFactor,\n );\n\n this.render({ x: this.x, y: this.y, scale: this.scale });\n\n if (this.x === this.pointerX && this.y === this.pointerY && this.scale === this.pointerScale) {\n this.$services.disable('ticked');\n }\n }\n\n /**\n * Render the cursor.\n */\n render({ x, y, scale }: { x: number; y: number; scale: number }) {\n const transform = matrix({\n translateX: x,\n translateY: y,\n scaleX: scale,\n scaleY: scale,\n });\n this.$el.style.transform = `translateZ(0) ${transform}`;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/atoms/Figure/Figure.cjs
CHANGED
|
@@ -29,21 +29,39 @@ __export(Figure_exports, {
|
|
|
29
29
|
module.exports = __toCommonJS(Figure_exports);
|
|
30
30
|
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
31
31
|
var import_primitives = require("../../primitives/index.cjs");
|
|
32
|
-
var Figure = class extends (0, import_js_toolkit.withMountWhenInView)(
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
var Figure = class extends (0, import_js_toolkit.withMountWhenInView)(
|
|
33
|
+
import_primitives.Transition,
|
|
34
|
+
{
|
|
35
|
+
threshold: [0, 1]
|
|
36
|
+
}
|
|
37
|
+
) {
|
|
38
|
+
/**
|
|
39
|
+
* Get the transition target.
|
|
40
|
+
*/
|
|
35
41
|
get target() {
|
|
36
42
|
return this.$refs.img;
|
|
37
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the image source.
|
|
46
|
+
*/
|
|
38
47
|
get src() {
|
|
39
48
|
return this.$refs.img.src;
|
|
40
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Set the image source.
|
|
52
|
+
*/
|
|
41
53
|
set src(value) {
|
|
42
54
|
this.$refs.img.src = value;
|
|
43
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the original source.
|
|
58
|
+
*/
|
|
44
59
|
get original() {
|
|
45
60
|
return this.$refs.img.dataset.src;
|
|
46
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Load on mount.
|
|
64
|
+
*/
|
|
47
65
|
mounted() {
|
|
48
66
|
const { img } = this.$refs;
|
|
49
67
|
if (!img) {
|
|
@@ -68,10 +86,16 @@ var Figure = class extends (0, import_js_toolkit.withMountWhenInView)(import_pri
|
|
|
68
86
|
tempImg.src = src;
|
|
69
87
|
}
|
|
70
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Terminate the component on load.
|
|
91
|
+
*/
|
|
71
92
|
onLoad() {
|
|
72
93
|
this.$terminate();
|
|
73
94
|
}
|
|
74
95
|
};
|
|
96
|
+
/**
|
|
97
|
+
* Config.
|
|
98
|
+
*/
|
|
75
99
|
__publicField(Figure, "config", {
|
|
76
100
|
...import_primitives.Transition.config,
|
|
77
101
|
name: "Figure",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/Figure/Figure.ts"],
|
|
4
|
-
"sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(Transition
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAoC;AAEpC,wBAA2B;AAcpB,IAAM,SAAN,kBAAsD,
|
|
4
|
+
"sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(\n Transition,\n {\n threshold: [0, 1],\n },\n)<T & FigureProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'Figure',\n emits: ['load'],\n refs: ['img'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target() {\n return this.$refs.img;\n }\n\n /**\n * Get the image source.\n */\n get src() {\n return this.$refs.img.src;\n }\n\n /**\n * Set the image source.\n */\n set src(value: string) {\n this.$refs.img.src = value;\n }\n\n /**\n * Get the original source.\n */\n get original() {\n return this.$refs.img.dataset.src;\n }\n\n /**\n * Load on mount.\n */\n mounted() {\n const { img } = this.$refs;\n\n if (!img) {\n throw new Error('[Figure] The `img` ref is required.');\n }\n\n if (!(img instanceof HTMLImageElement)) {\n throw new Error('[Figure] The `img` ref must be an `<img>` element.');\n }\n\n const src = this.original;\n\n if (this.$options.lazy && src && src !== this.src) {\n let tempImg = new Image();\n tempImg.addEventListener(\n 'load',\n async () => {\n this.src = src;\n tempImg = null;\n this.enter();\n this.$emit('load');\n },\n { once: true },\n );\n tempImg.src = src;\n }\n }\n\n /**\n * Terminate the component on load.\n */\n onLoad() {\n this.$terminate();\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAoC;AAEpC,wBAA2B;AAcpB,IAAM,SAAN,kBAAsD;AAAA,EAC3D;AAAA,EACA;AAAA,IACE,WAAW,CAAC,GAAG,CAAC;AAAA,EAClB;AACF,EAAmB;AAAA;AAAA;AAAA;AAAA,EAkBjB,IAAI,SAAS;AACX,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAM;AACR,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,IAAI,OAAe;AACrB,SAAK,MAAM,IAAI,MAAM;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,MAAM,IAAI,QAAQ;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,UAAM,EAAE,IAAI,IAAI,KAAK;AAErB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,QAAI,EAAE,eAAe,mBAAmB;AACtC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,UAAM,MAAM,KAAK;AAEjB,QAAI,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACjD,UAAI,UAAU,IAAI,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA,YAAY;AACV,eAAK,MAAM;AACX,oBAAU;AACV,eAAK,MAAM;AACX,eAAK,MAAM,MAAM;AAAA,QACnB;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AACA,cAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AACF;AAAA;AAAA;AAAA;AA7EE,cATW,QASJ,UAAqB;AAAA,EAC1B,GAAG,6BAAW;AAAA,EACd,MAAM;AAAA,EACN,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,CAAC,KAAK;AAAA,EACZ,SAAS;AAAA,IACP,GAAG,6BAAW,OAAO;AAAA,IACrB,MAAM;AAAA,EACR;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/atoms/Figure/Figure.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { withMountWhenInView } from "@studiometa/js-toolkit";
|
|
2
2
|
import { Transition } from "../../primitives/index.js";
|
|
3
|
-
class Figure extends withMountWhenInView(
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
class Figure extends withMountWhenInView(
|
|
4
|
+
Transition,
|
|
5
|
+
{
|
|
6
|
+
threshold: [0, 1]
|
|
7
|
+
}
|
|
8
|
+
) {
|
|
9
|
+
/**
|
|
10
|
+
* Config.
|
|
11
|
+
*/
|
|
6
12
|
static config = {
|
|
7
13
|
...Transition.config,
|
|
8
14
|
name: "Figure",
|
|
@@ -13,18 +19,33 @@ class Figure extends withMountWhenInView(Transition, {
|
|
|
13
19
|
lazy: Boolean
|
|
14
20
|
}
|
|
15
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* Get the transition target.
|
|
24
|
+
*/
|
|
16
25
|
get target() {
|
|
17
26
|
return this.$refs.img;
|
|
18
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Get the image source.
|
|
30
|
+
*/
|
|
19
31
|
get src() {
|
|
20
32
|
return this.$refs.img.src;
|
|
21
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Set the image source.
|
|
36
|
+
*/
|
|
22
37
|
set src(value) {
|
|
23
38
|
this.$refs.img.src = value;
|
|
24
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the original source.
|
|
42
|
+
*/
|
|
25
43
|
get original() {
|
|
26
44
|
return this.$refs.img.dataset.src;
|
|
27
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Load on mount.
|
|
48
|
+
*/
|
|
28
49
|
mounted() {
|
|
29
50
|
const { img } = this.$refs;
|
|
30
51
|
if (!img) {
|
|
@@ -49,6 +70,9 @@ class Figure extends withMountWhenInView(Transition, {
|
|
|
49
70
|
tempImg.src = src;
|
|
50
71
|
}
|
|
51
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Terminate the component on load.
|
|
75
|
+
*/
|
|
52
76
|
onLoad() {
|
|
53
77
|
this.$terminate();
|
|
54
78
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/Figure/Figure.ts"],
|
|
4
|
-
"sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(Transition
|
|
5
|
-
"mappings": "AAAA,SAAS,2BAA2B;AAEpC,SAAS,kBAAkB;AAcpB,MAAM,eAAgD,
|
|
4
|
+
"sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(\n Transition,\n {\n threshold: [0, 1],\n },\n)<T & FigureProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'Figure',\n emits: ['load'],\n refs: ['img'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target() {\n return this.$refs.img;\n }\n\n /**\n * Get the image source.\n */\n get src() {\n return this.$refs.img.src;\n }\n\n /**\n * Set the image source.\n */\n set src(value: string) {\n this.$refs.img.src = value;\n }\n\n /**\n * Get the original source.\n */\n get original() {\n return this.$refs.img.dataset.src;\n }\n\n /**\n * Load on mount.\n */\n mounted() {\n const { img } = this.$refs;\n\n if (!img) {\n throw new Error('[Figure] The `img` ref is required.');\n }\n\n if (!(img instanceof HTMLImageElement)) {\n throw new Error('[Figure] The `img` ref must be an `<img>` element.');\n }\n\n const src = this.original;\n\n if (this.$options.lazy && src && src !== this.src) {\n let tempImg = new Image();\n tempImg.addEventListener(\n 'load',\n async () => {\n this.src = src;\n tempImg = null;\n this.enter();\n this.$emit('load');\n },\n { once: true },\n );\n tempImg.src = src;\n }\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;AAcpB,MAAM,eAAgD;AAAA,EAC3D;AAAA,EACA;AAAA,IACE,WAAW,CAAC,GAAG,CAAC;AAAA,EAClB;AACF,EAAmB;AAAA;AAAA;AAAA;AAAA,EAIjB,OAAO,SAAqB;AAAA,IAC1B,GAAG,WAAW;AAAA,IACd,MAAM;AAAA,IACN,OAAO,CAAC,MAAM;AAAA,IACd,MAAM,CAAC,KAAK;AAAA,IACZ,SAAS;AAAA,MACP,GAAG,WAAW,OAAO;AAAA,MACrB,MAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAS;AACX,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAM;AACR,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,IAAI,OAAe;AACrB,SAAK,MAAM,IAAI,MAAM;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,MAAM,IAAI,QAAQ;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,UAAM,EAAE,IAAI,IAAI,KAAK;AAErB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,QAAI,EAAE,eAAe,mBAAmB;AACtC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,UAAM,MAAM,KAAK;AAEjB,QAAI,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACjD,UAAI,UAAU,IAAI,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA,YAAY;AACV,eAAK,MAAM;AACX,oBAAU;AACV,eAAK,MAAM;AACX,eAAK,MAAM,MAAM;AAAA,QACnB;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AACA,cAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/atoms/Figure/Figure.twig
CHANGED
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
* @param boolean $inline
|
|
19
19
|
* Wether to enable the display of the figure inline or not. When `inline`, the root element
|
|
20
20
|
* will have a max-width set corresponding to the `width` given. Use with caution.
|
|
21
|
+
* @param string $placeholder
|
|
22
|
+
* Use a custom placeholder.
|
|
23
|
+
* @param string $placeholder_color
|
|
24
|
+
* Set an hexadecimal custom color for the generic placeholder.
|
|
21
25
|
* @param array $attr
|
|
22
26
|
* Custom attributes for the root element.
|
|
23
27
|
* @param array $inner_attr
|
|
@@ -44,12 +48,13 @@
|
|
|
44
48
|
{% set width = width|default(100) %}
|
|
45
49
|
{% set lazy = lazy ?? true %}
|
|
46
50
|
|
|
51
|
+
{% set placeholder_color = placeholder_color|default('#eee') %}
|
|
47
52
|
{%- set placeholder_markup -%}
|
|
48
53
|
<svg xmlns="http://www.w3.org/2000/svg"
|
|
49
54
|
viewbox="0 0 {{ width }} {{ height }}"
|
|
50
55
|
width="{{ width }}"
|
|
51
56
|
height="{{ height }}">
|
|
52
|
-
<rect x="0" y="0" width="{{ width }}" height="{{ height }}" fill="
|
|
57
|
+
<rect x="0" y="0" width="{{ width }}" height="{{ height }}" fill="{{ placeholder_color }}" />
|
|
53
58
|
</svg>
|
|
54
59
|
{%- endset -%}
|
|
55
60
|
{% set generic_placeholder = 'data:image/svg+xml,%s'|format(placeholder_markup|url_encode) %}
|
|
@@ -34,16 +34,28 @@ function normalizeSize(that, prop) {
|
|
|
34
34
|
return Math.ceil(that.$refs.img[prop] / step) * step;
|
|
35
35
|
}
|
|
36
36
|
var FigureTwicpics = class extends import_Figure.Figure {
|
|
37
|
+
/**
|
|
38
|
+
* Get the Twicpics path.
|
|
39
|
+
*/
|
|
37
40
|
get path() {
|
|
38
41
|
return (0, import_utils.withoutTrailingSlash)((0, import_utils.withoutLeadingSlash)(this.$options.path));
|
|
39
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the Twicpics domain.
|
|
45
|
+
*/
|
|
40
46
|
get domain() {
|
|
41
47
|
const url = new URL(this.$refs.img.dataset.src);
|
|
42
48
|
return url.host;
|
|
43
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Get formattted original source.
|
|
52
|
+
*/
|
|
44
53
|
get original() {
|
|
45
54
|
return this.formatSrc(super.original);
|
|
46
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Format the source for Twicpics.
|
|
58
|
+
*/
|
|
47
59
|
formatSrc(src) {
|
|
48
60
|
const url = new URL(src, "https://localhost");
|
|
49
61
|
url.host = this.domain;
|
|
@@ -60,12 +72,21 @@ var FigureTwicpics = class extends import_Figure.Figure {
|
|
|
60
72
|
url.search = decodeURIComponent(url.search);
|
|
61
73
|
return url.toString();
|
|
62
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Reassign the source from the original on resize.
|
|
77
|
+
*/
|
|
63
78
|
resized() {
|
|
64
79
|
this.src = this.original;
|
|
65
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Do not terminate on image load as we need to set the src on resize.
|
|
83
|
+
*/
|
|
66
84
|
onLoad() {
|
|
67
85
|
}
|
|
68
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* Config.
|
|
89
|
+
*/
|
|
69
90
|
__publicField(FigureTwicpics, "config", {
|
|
70
91
|
...import_Figure.Figure.config,
|
|
71
92
|
name: "FigureTwicpics",
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/atoms/Figure/FigureTwicpics.ts"],
|
|
4
4
|
"sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { withoutLeadingSlash, withoutTrailingSlash } from '@studiometa/js-toolkit/utils';\nimport { Figure } from './Figure.js';\n\nexport interface FigureTwicpicsProps extends BaseProps {\n $options: {\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: FigureTwicpics, prop: string): number {\n const { step } = that.$options;\n return Math.ceil(that.$refs.img[prop] / step) * step;\n}\n\n/**\n * Figure class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureTwicpics<T extends BaseProps = BaseProps> extends Figure<\n T & FigureTwicpicsProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Figure.config,\n name: 'FigureTwicpics',\n options: {\n ...Figure.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 const url = new URL(this.$refs.img.dataset.src);\n return url.host;\n }\n\n /**\n * Get formattted original source.\n */\n get original() {\n return this.formatSrc(super.original);\n }\n\n /**\n * Format the source for Twicpics.\n */\n formatSrc(src: string): string {\n const url = new URL(src, 'https://localhost');\n url.host = this.domain;\n url.port = '';\n\n if (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 url.searchParams.set(\n 'twic',\n ['v1', this.$options.transform, `${this.$options.mode}=${width}x${height}`]\n .filter(Boolean)\n .join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n return url.toString();\n }\n\n /**\n * Reassign the source from the original on resize.\n */\n resized() {\n this.src = this.original;\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": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA0D;AAC1D,oBAAuB;AAgBvB,SAAS,cAAc,MAAsB,MAAsB;AACjE,QAAM,EAAE,KAAK,IAAI,KAAK;AACtB,SAAO,KAAK,KAAK,KAAK,MAAM,IAAI,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA0D;AAC1D,oBAAuB;AAgBvB,SAAS,cAAc,MAAsB,MAAsB;AACjE,QAAM,EAAE,KAAK,IAAI,KAAK;AACtB,SAAO,KAAK,KAAK,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI;AAClD;AAOO,IAAM,iBAAN,cAA8D,qBAEnE;AAAA;AAAA;AAAA;AAAA,EA0BA,IAAI,OAAe;AACjB,eAAO,uCAAqB,kCAAoB,KAAK,SAAS,IAAI,CAAC;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAiB;AACnB,UAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG;AAC9C,WAAO,IAAI;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,UAAU,MAAM,QAAQ;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,KAAqB;AAC7B,UAAM,MAAM,IAAI,IAAI,KAAK,mBAAmB;AAC5C,QAAI,OAAO,KAAK;AAChB,QAAI,OAAO;AAEX,QAAI,KAAK,MAAM;AACb,UAAI,WAAW,IAAI,KAAK,OAAO,IAAI;AAAA,IACrC;AAEA,UAAM,QAAQ,cAAc,MAAM,aAAa;AAC/C,UAAM,SAAS,cAAc,MAAM,cAAc;AAEjD,QAAI,aAAa;AAAA,MACf;AAAA,MACA,CAAC,MAAM,KAAK,SAAS,WAAW,GAAG,KAAK,SAAS,QAAQ,SAAS,QAAQ,EACvE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb;AAEA,QAAI,SAAS,mBAAmB,IAAI,MAAM;AAE1C,WAAO,IAAI,SAAS;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,SAAK,MAAM,KAAK;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AAAA,EAET;AACF;AAAA;AAAA;AAAA;AAjFE,cANW,gBAMJ,UAAqB;AAAA,EAC1B,GAAG,qBAAO;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,IACP,GAAG,qBAAO,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -5,6 +5,9 @@ function normalizeSize(that, prop) {
|
|
|
5
5
|
return Math.ceil(that.$refs.img[prop] / step) * step;
|
|
6
6
|
}
|
|
7
7
|
class FigureTwicpics extends Figure {
|
|
8
|
+
/**
|
|
9
|
+
* Config.
|
|
10
|
+
*/
|
|
8
11
|
static config = {
|
|
9
12
|
...Figure.config,
|
|
10
13
|
name: "FigureTwicpics",
|
|
@@ -23,16 +26,28 @@ class FigureTwicpics extends Figure {
|
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Get the Twicpics path.
|
|
31
|
+
*/
|
|
26
32
|
get path() {
|
|
27
33
|
return withoutTrailingSlash(withoutLeadingSlash(this.$options.path));
|
|
28
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the Twicpics domain.
|
|
37
|
+
*/
|
|
29
38
|
get domain() {
|
|
30
39
|
const url = new URL(this.$refs.img.dataset.src);
|
|
31
40
|
return url.host;
|
|
32
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Get formattted original source.
|
|
44
|
+
*/
|
|
33
45
|
get original() {
|
|
34
46
|
return this.formatSrc(super.original);
|
|
35
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Format the source for Twicpics.
|
|
50
|
+
*/
|
|
36
51
|
formatSrc(src) {
|
|
37
52
|
const url = new URL(src, "https://localhost");
|
|
38
53
|
url.host = this.domain;
|
|
@@ -49,9 +64,15 @@ class FigureTwicpics extends Figure {
|
|
|
49
64
|
url.search = decodeURIComponent(url.search);
|
|
50
65
|
return url.toString();
|
|
51
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Reassign the source from the original on resize.
|
|
69
|
+
*/
|
|
52
70
|
resized() {
|
|
53
71
|
this.src = this.original;
|
|
54
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Do not terminate on image load as we need to set the src on resize.
|
|
75
|
+
*/
|
|
55
76
|
onLoad() {
|
|
56
77
|
}
|
|
57
78
|
}
|