@studiometa/ui 1.0.0-rc.0 → 1.0.0-rc.1
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/AnchorScrollTo/AnchorScrollTo.d.ts +2 -2
- package/AnchorScrollTo/AnchorScrollTo.js +0 -1
- package/AnchorScrollTo/AnchorScrollTo.js.map +2 -2
- package/Button/Button.twig +12 -9
- package/Button/StyledButton.twig +40 -5
- package/Button/StyledButtonRounded.twig +12 -42
- package/Data/DataBind.js +1 -1
- package/Data/DataBind.js.map +2 -2
- package/Draggable/Draggable.js +7 -2
- package/Draggable/Draggable.js.map +2 -2
- package/Figure/Figure.d.ts +1 -0
- package/Figure/Figure.js.map +2 -2
- package/Frame/AbstractFrameTrigger.d.ts +43 -0
- package/Frame/AbstractFrameTrigger.js +72 -0
- package/Frame/AbstractFrameTrigger.js.map +7 -0
- package/Frame/Frame.d.ts +55 -27
- package/Frame/Frame.js +132 -138
- package/Frame/Frame.js.map +3 -3
- package/Frame/FrameAnchor.d.ts +7 -4
- package/Frame/FrameAnchor.js +8 -5
- package/Frame/FrameAnchor.js.map +2 -2
- package/Frame/FrameForm.d.ts +22 -4
- package/Frame/FrameForm.js +43 -6
- package/Frame/FrameForm.js.map +2 -2
- package/Frame/FrameLoader.d.ts +22 -0
- package/Frame/FrameLoader.js +22 -0
- package/Frame/FrameLoader.js.map +7 -0
- package/Frame/FrameTarget.d.ts +6 -17
- package/Frame/FrameTarget.js +25 -60
- package/Frame/FrameTarget.js.map +2 -2
- package/Frame/FrameTriggerLoader.d.ts +13 -0
- package/Frame/FrameTriggerLoader.js +13 -0
- package/Frame/FrameTriggerLoader.js.map +7 -0
- package/Frame/index.d.ts +4 -0
- package/Frame/index.js +4 -0
- package/Frame/index.js.map +2 -2
- package/Frame/types.d.ts +12 -0
- package/Frame/types.js +1 -0
- package/Frame/types.js.map +7 -0
- package/Frame/utils.d.ts +9 -0
- package/Frame/utils.js +13 -0
- package/Frame/utils.js.map +7 -0
- package/Slider/AbstractSliderChild.d.ts +5 -9
- package/Slider/AbstractSliderChild.js +0 -11
- package/Slider/AbstractSliderChild.js.map +2 -2
- package/Slider/Slider.d.ts +23 -30
- package/Slider/Slider.js +40 -100
- package/Slider/Slider.js.map +2 -2
- package/Slider/SliderBtn.d.ts +0 -3
- package/Slider/SliderBtn.js +3 -7
- package/Slider/SliderBtn.js.map +2 -2
- package/Slider/SliderCount.d.ts +0 -2
- package/Slider/SliderCount.js +4 -3
- package/Slider/SliderCount.js.map +2 -2
- package/Slider/SliderDots.d.ts +0 -3
- package/Slider/SliderDots.js +6 -7
- package/Slider/SliderDots.js.map +2 -2
- package/Slider/SliderDrag.d.ts +0 -2
- package/Slider/SliderDrag.js +0 -2
- package/Slider/SliderDrag.js.map +2 -2
- package/Slider/SliderItem.d.ts +10 -26
- package/Slider/SliderItem.js +9 -41
- package/Slider/SliderItem.js.map +2 -2
- package/decorators/withTransition.d.ts +4 -0
- package/decorators/withTransition.js +40 -45
- package/decorators/withTransition.js.map +2 -2
- package/package.json +4 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Base } from '@studiometa/js-toolkit';
|
|
2
2
|
import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';
|
|
3
|
+
import { scrollTo } from '@studiometa/js-toolkit/utils';
|
|
3
4
|
export interface AnchorScrollToProps extends BaseProps {
|
|
4
5
|
$el: HTMLAnchorElement;
|
|
5
6
|
}
|
|
@@ -10,9 +11,8 @@ export declare class AnchorScrollTo<T extends BaseProps = BaseProps> extends Bas
|
|
|
10
11
|
static config: BaseConfig;
|
|
11
12
|
/**
|
|
12
13
|
* Get the target selector.
|
|
13
|
-
* @returns {string}
|
|
14
14
|
*/
|
|
15
|
-
get targetSelector():
|
|
15
|
+
get targetSelector(): Parameters<typeof scrollTo>[0];
|
|
16
16
|
/**
|
|
17
17
|
* Scroll to the target selector on click.
|
|
18
18
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/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<AnchorScrollToProps & T> {\n static config: BaseConfig = {\n name: 'AnchorScrollTo',\n };\n\n /**\n * Get the target selector.\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
|
|
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 get targetSelector(): Parameters<typeof scrollTo>[0] {\n return this.$el.hash;\n }\n\n /**\n * Scroll to the target selector on click.\n */\n onClick({ event }: { event: MouseEvent }) {\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,EAKA,IAAI,iBAAiD;AACnD,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,EAAE,MAAM,GAA0B;AACxC,QAAI;AACF,eAAS,KAAK,cAAc;AAC5B,YAAM,eAAe;AAAA,IACvB,QAAQ;AAAA,IAER;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/Button/Button.twig
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* @param array $attr
|
|
10
10
|
* @param string $icon
|
|
11
11
|
* @param array $icon_attr
|
|
12
|
-
* @param array|string $icon_classes
|
|
13
12
|
* @param 'start'|'end' $icon_position
|
|
14
13
|
* @param boolean $icon_only
|
|
15
14
|
*/
|
|
@@ -34,26 +33,30 @@
|
|
|
34
33
|
href: tag == 'a' and href is defined ? href : false,
|
|
35
34
|
aria_label: icon_only ? label : false
|
|
36
35
|
},
|
|
37
|
-
{
|
|
36
|
+
{
|
|
37
|
+
class: ['btn']
|
|
38
|
+
}
|
|
38
39
|
)
|
|
39
40
|
%}
|
|
40
41
|
|
|
41
42
|
{% set rendered_icon %}
|
|
42
43
|
{% block icon %}
|
|
43
|
-
{# @TODO: Breaking change -> Delete icon_classes to use only icon_attr #}
|
|
44
44
|
{% include '@ui/Icon/Icon.twig' with {
|
|
45
45
|
name: icon ?? '',
|
|
46
46
|
attr: merge_html_attributes(
|
|
47
47
|
icon_attr ?? null,
|
|
48
48
|
{
|
|
49
|
-
class:
|
|
50
|
-
'
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
class: [
|
|
50
|
+
'h-[0.75lh]',
|
|
51
|
+
{
|
|
52
|
+
'mr-3': not icon_only and icon_position == 'start',
|
|
53
|
+
'ml-3': not icon_only and icon_position == 'end'
|
|
54
|
+
}
|
|
55
|
+
]
|
|
53
56
|
},
|
|
54
57
|
{
|
|
55
|
-
class:
|
|
56
|
-
}
|
|
58
|
+
class: '[&>svg]:w-full [&>svg]:h-full'
|
|
59
|
+
}
|
|
57
60
|
)
|
|
58
61
|
} %}
|
|
59
62
|
{% endblock %}
|
package/Button/StyledButton.twig
CHANGED
|
@@ -4,30 +4,46 @@
|
|
|
4
4
|
* Styled button.
|
|
5
5
|
*
|
|
6
6
|
* @param 'primary'|'secondary'|'tertiary' $theme
|
|
7
|
+
* @param boolean $icon_only
|
|
8
|
+
* @param 's'|'m'|'l' $size
|
|
7
9
|
*/
|
|
8
10
|
#}
|
|
9
11
|
|
|
10
12
|
{% extends '@ui/Button/Button.twig' %}
|
|
11
13
|
|
|
12
|
-
{% set
|
|
14
|
+
{% set icon_position = icon_position ?? 'start' %}
|
|
15
|
+
{% set icon_only = icon_only ?? false %}
|
|
13
16
|
|
|
14
17
|
{% set theme = theme|default('primary') %}
|
|
15
18
|
|
|
19
|
+
{% set size = size ?? 'm' %}
|
|
20
|
+
{% if size not in ['s', 'm', 'l'] %}
|
|
21
|
+
{% set size = 'm' %}
|
|
22
|
+
{% endif %}
|
|
23
|
+
|
|
16
24
|
{% set theme_shared = [
|
|
17
25
|
'rounded cursor-pointer transition',
|
|
18
26
|
'disabled:cursor-not-allowed',
|
|
19
27
|
{
|
|
20
28
|
'inline-block': icon is not defined,
|
|
21
29
|
'inline-flex items-center': icon is defined,
|
|
22
|
-
'px-6 py-4': not icon_only,
|
|
23
|
-
'
|
|
30
|
+
'px-6 py-4': size == 'l' and not icon_only,
|
|
31
|
+
'px-3 py-2': size == 'm' and not icon_only,
|
|
32
|
+
'px-2.5 py-1.5': size == 's' and not icon_only,
|
|
33
|
+
'p-4': size == 'l' and icon_only,
|
|
34
|
+
'p-3': size == 'm' and icon_only,
|
|
35
|
+
'p-2': size == 's' and icon_only,
|
|
36
|
+
'text-sm': size == 's'
|
|
24
37
|
}
|
|
25
38
|
] %}
|
|
26
39
|
|
|
27
|
-
{% set theme_primary = [
|
|
40
|
+
{% set theme_primary = [
|
|
41
|
+
'text-white bg-black dark:text-black dark:bg-white',
|
|
42
|
+
'hover:bg-opacity-75 disabled:bg-opacity-50'
|
|
43
|
+
] %}
|
|
28
44
|
|
|
29
45
|
{% set theme_secondary = [
|
|
30
|
-
'ring ring-inset ring-2 ring-black ring-opacity-25',
|
|
46
|
+
'ring ring-inset ring-2 ring-black dark:ring-white ring-opacity-25 dark:ring-opacity-25',
|
|
31
47
|
{
|
|
32
48
|
'hover:ring-opacity-100': (attr is defined and attr.disabled is not defined)
|
|
33
49
|
or attr is not defined
|
|
@@ -47,3 +63,22 @@
|
|
|
47
63
|
}
|
|
48
64
|
)
|
|
49
65
|
%}
|
|
66
|
+
|
|
67
|
+
{% set icon_attr =
|
|
68
|
+
merge_html_attributes(
|
|
69
|
+
icon_attr ?? null,
|
|
70
|
+
{
|
|
71
|
+
class: 'h-[0.75lh]'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
class: {
|
|
75
|
+
'mr-3': size == 'l' and not icon_only and icon_position == 'start',
|
|
76
|
+
'ml-3': size == 'l' and not icon_only and icon_position == 'end',
|
|
77
|
+
'mr-2': size == 'm' and not icon_only and icon_position == 'start',
|
|
78
|
+
'ml-2': size == 'm' and not icon_only and icon_position == 'end',
|
|
79
|
+
'mr-1': size == 's' and not icon_only and icon_position == 'start',
|
|
80
|
+
'ml-1': size == 's' and not icon_only and icon_position == 'end'
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
%}
|
|
@@ -8,58 +8,28 @@
|
|
|
8
8
|
*/
|
|
9
9
|
#}
|
|
10
10
|
|
|
11
|
-
{% extends '@ui/Button/
|
|
11
|
+
{% extends '@ui/Button/StyledButton.twig' %}
|
|
12
12
|
|
|
13
|
-
{% set icon_only = icon_only
|
|
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
|
-
] %}
|
|
13
|
+
{% set icon_only = icon_only ?? null %}
|
|
37
14
|
|
|
38
15
|
{% set attr =
|
|
39
16
|
merge_html_attributes(
|
|
40
17
|
attr ?? null,
|
|
41
18
|
null,
|
|
42
19
|
{
|
|
43
|
-
class: [
|
|
44
|
-
theme_shared,
|
|
45
|
-
theme == 'primary' ? theme_primary : '',
|
|
46
|
-
theme == 'secondary' ? theme_secondary : ''
|
|
47
|
-
]
|
|
20
|
+
class: ['rounded-full']
|
|
48
21
|
}
|
|
49
22
|
)
|
|
50
23
|
%}
|
|
51
|
-
|
|
24
|
+
|
|
52
25
|
{% if icon_only %}
|
|
53
|
-
{% set
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
26
|
+
{% set icon_attr =
|
|
27
|
+
merge_html_attributes(
|
|
28
|
+
icon_attr ?? null,
|
|
29
|
+
{
|
|
30
|
+
class: 'h-[0.75lh] aspect-square'
|
|
31
|
+
},
|
|
32
|
+
null
|
|
33
|
+
)
|
|
57
34
|
%}
|
|
58
35
|
{% endif %}
|
|
59
|
-
|
|
60
|
-
{% block icon %}
|
|
61
|
-
{{ parent() }}
|
|
62
|
-
{% if icon_only %}
|
|
63
|
-
|
|
64
|
-
{% endif %}
|
|
65
|
-
{% endblock %}
|
package/Data/DataBind.js
CHANGED
|
@@ -31,7 +31,7 @@ class DataBind extends Base {
|
|
|
31
31
|
return this.$options.prop;
|
|
32
32
|
}
|
|
33
33
|
const { target } = this;
|
|
34
|
-
if (target instanceof HTMLInputElement) {
|
|
34
|
+
if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {
|
|
35
35
|
return "value";
|
|
36
36
|
}
|
|
37
37
|
return "textContent";
|
package/Data/DataBind.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/Data/DataBind.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { isArray } from '@studiometa/js-toolkit/utils';\nimport { isInput, isCheckbox, isSelect } from './utils.js';\n\nconst groups = new Map<string, Set<DataBind>>();\n\nexport interface DataBindProps extends BaseProps {\n $options: {\n prop: string;\n group: string;\n };\n}\n\nexport class DataBind<T extends BaseProps = BaseProps> extends Base<DataBindProps & T> {\n static config: BaseConfig = {\n name: 'DataBind',\n options: {\n prop: String,\n group: String,\n },\n };\n\n get relatedInstances() {\n const { group } = this.$options;\n\n const instances = groups.get(group) ?? groups.set(group, new Set()).get(group);\n\n for (const instance of instances) {\n if (!instance.$el.isConnected) {\n instances.delete(instance);\n }\n }\n\n return instances;\n }\n\n get multiple() {\n return this.$options.group.endsWith('[]');\n }\n\n get target() {\n return this.$el;\n }\n\n get prop() {\n if (this.$options.prop) {\n return this.$options.prop;\n }\n\n const { target } = this;\n if (target instanceof HTMLInputElement) {\n return 'value';\n }\n\n return 'textContent';\n }\n\n get value() {\n return this.get();\n }\n\n set value(value) {\n this.set(value);\n }\n\n get() {\n const { target, multiple } = this;\n\n if (isSelect(target)) {\n if (multiple) {\n const values = [];\n // @ts-ignore\n for (const option of target.options) {\n if (option.selected) {\n values.push(option.value);\n }\n }\n\n return values;\n }\n\n const option = target.options.item(target.selectedIndex);\n return option.value;\n }\n\n if (isCheckbox(target)) {\n if (multiple) {\n const values = new Set();\n for (const instance of this.relatedInstances) {\n if (isCheckbox(instance.target) && instance.target.checked) {\n values.add(instance.target.value);\n }\n }\n return Array.from(values);\n } else {\n return target.checked;\n }\n }\n\n return target[this.prop];\n }\n\n set(value: boolean | string | string[], dispatch = true) {\n const { target, multiple, relatedInstances } = this;\n\n if (dispatch) {\n for (const instance of relatedInstances) {\n if (instance !== this && instance.value !== value) {\n instance.set(value, false);\n }\n }\n }\n\n if (isSelect(target)) {\n // @ts-ignore\n for (const option of target.options) {\n option.selected =\n multiple && isArray(value) ? value.includes(option.value) : option.value === value;\n }\n return;\n }\n\n if (isInput(target)) {\n switch (target.type) {\n case 'radio':\n target.checked = target.value === value;\n return;\n case 'checkbox':\n target.checked =\n multiple && isArray(value) ? value.includes(target.value) : Boolean(value);\n return;\n }\n }\n\n target[this.prop] = value;\n }\n\n mounted() {\n this.relatedInstances.add(this);\n }\n\n destroyed() {\n this.relatedInstances.delete(this);\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,eAAe;AACxB,SAAS,SAAS,YAAY,gBAAgB;AAE9C,MAAM,SAAS,oBAAI,IAA2B;AASvC,MAAM,iBAAkD,KAAwB;AAAA,EACrF,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,IAAI,mBAAmB;AACrB,UAAM,EAAE,MAAM,IAAI,KAAK;AAEvB,UAAM,YAAY,OAAO,IAAI,KAAK,KAAK,OAAO,IAAI,OAAO,oBAAI,IAAI,CAAC,EAAE,IAAI,KAAK;AAE7E,eAAW,YAAY,WAAW;AAChC,UAAI,CAAC,SAAS,IAAI,aAAa;AAC7B,kBAAU,OAAO,QAAQ;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,SAAS,MAAM,SAAS,IAAI;AAAA,EAC1C;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAO;AACT,QAAI,KAAK,SAAS,MAAM;AACtB,aAAO,KAAK,SAAS;AAAA,IACvB;AAEA,UAAM,EAAE,OAAO,IAAI;AACnB,QAAI,kBAAkB,kBAAkB;
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { isArray } from '@studiometa/js-toolkit/utils';\nimport { isInput, isCheckbox, isSelect } from './utils.js';\n\nconst groups = new Map<string, Set<DataBind>>();\n\nexport interface DataBindProps extends BaseProps {\n $options: {\n prop: string;\n group: string;\n };\n}\n\nexport class DataBind<T extends BaseProps = BaseProps> extends Base<DataBindProps & T> {\n static config: BaseConfig = {\n name: 'DataBind',\n options: {\n prop: String,\n group: String,\n },\n };\n\n get relatedInstances() {\n const { group } = this.$options;\n\n const instances = groups.get(group) ?? groups.set(group, new Set()).get(group);\n\n for (const instance of instances) {\n if (!instance.$el.isConnected) {\n instances.delete(instance);\n }\n }\n\n return instances;\n }\n\n get multiple() {\n return this.$options.group.endsWith('[]');\n }\n\n get target() {\n return this.$el;\n }\n\n get prop() {\n if (this.$options.prop) {\n return this.$options.prop;\n }\n\n const { target } = this;\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n return 'value';\n }\n\n return 'textContent';\n }\n\n get value() {\n return this.get();\n }\n\n set value(value) {\n this.set(value);\n }\n\n get() {\n const { target, multiple } = this;\n\n if (isSelect(target)) {\n if (multiple) {\n const values = [];\n // @ts-ignore\n for (const option of target.options) {\n if (option.selected) {\n values.push(option.value);\n }\n }\n\n return values;\n }\n\n const option = target.options.item(target.selectedIndex);\n return option.value;\n }\n\n if (isCheckbox(target)) {\n if (multiple) {\n const values = new Set();\n for (const instance of this.relatedInstances) {\n if (isCheckbox(instance.target) && instance.target.checked) {\n values.add(instance.target.value);\n }\n }\n return Array.from(values);\n } else {\n return target.checked;\n }\n }\n\n return target[this.prop];\n }\n\n set(value: boolean | string | string[], dispatch = true) {\n const { target, multiple, relatedInstances } = this;\n\n if (dispatch) {\n for (const instance of relatedInstances) {\n if (instance !== this && instance.value !== value) {\n instance.set(value, false);\n }\n }\n }\n\n if (isSelect(target)) {\n // @ts-ignore\n for (const option of target.options) {\n option.selected =\n multiple && isArray(value) ? value.includes(option.value) : option.value === value;\n }\n return;\n }\n\n if (isInput(target)) {\n switch (target.type) {\n case 'radio':\n target.checked = target.value === value;\n return;\n case 'checkbox':\n target.checked =\n multiple && isArray(value) ? value.includes(target.value) : Boolean(value);\n return;\n }\n }\n\n target[this.prop] = value;\n }\n\n mounted() {\n this.relatedInstances.add(this);\n }\n\n destroyed() {\n this.relatedInstances.delete(this);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["option"]
|
|
7
7
|
}
|
package/Draggable/Draggable.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Base, withDrag } from "@studiometa/js-toolkit";
|
|
2
|
-
import {
|
|
2
|
+
import { domScheduler, transform } from "@studiometa/js-toolkit/utils";
|
|
3
3
|
class Draggable extends withDrag(Base) {
|
|
4
4
|
/**
|
|
5
5
|
* Config.
|
|
@@ -34,7 +34,12 @@ class Draggable extends withDrag(Base) {
|
|
|
34
34
|
}
|
|
35
35
|
this.x = this.originX + props.x - props.origin.x;
|
|
36
36
|
this.y = this.originY + props.y - props.origin.y;
|
|
37
|
-
|
|
37
|
+
domScheduler.write(() => {
|
|
38
|
+
transform(this.$el, {
|
|
39
|
+
x: this.x,
|
|
40
|
+
y: this.y
|
|
41
|
+
});
|
|
42
|
+
});
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/Draggable/Draggable.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base, withDrag } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig, DragServiceProps } from '@studiometa/js-toolkit';\nimport {
|
|
5
|
-
"mappings": "AAAA,SAAS,MAAM,gBAAgB;AAE/B,SAAS,cAAc;
|
|
4
|
+
"sourcesContent": ["import { Base, withDrag } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig, DragServiceProps } from '@studiometa/js-toolkit';\nimport { domScheduler, transform } from '@studiometa/js-toolkit/utils';\n\n/**\n * Draggable class.\n */\nexport class Draggable<T extends BaseProps = BaseProps> extends withDrag(Base)<T> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'DraggableElement',\n };\n\n /**\n * Horizontal transformation.\n */\n x = 0;\n\n /**\n * Vertical transformation.\n */\n y = 0;\n\n /**\n * Horizontal position origin.\n */\n originX = 0;\n\n /**\n * Vertical position origin.\n */\n originY = 0;\n\n /**\n * Drag service hook.\n */\n dragged(props: DragServiceProps) {\n if (props.mode === 'start') {\n this.originX = this.x;\n this.originY = this.y;\n return;\n }\n\n this.x = this.originX + props.x - props.origin.x;\n this.y = this.originY + props.y - props.origin.y;\n\n domScheduler.write(() => {\n transform(this.$el, {\n x: this.x,\n y: this.y,\n });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,MAAM,gBAAgB;AAE/B,SAAS,cAAc,iBAAiB;AAKjC,MAAM,kBAAmD,SAAS,IAAI,EAAK;AAAA;AAAA;AAAA;AAAA,EAIhF,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI;AAAA;AAAA;AAAA;AAAA,EAKJ,IAAI;AAAA;AAAA;AAAA;AAAA,EAKJ,UAAU;AAAA;AAAA;AAAA;AAAA,EAKV,UAAU;AAAA;AAAA;AAAA;AAAA,EAKV,QAAQ,OAAyB;AAC/B,QAAI,MAAM,SAAS,SAAS;AAC1B,WAAK,UAAU,KAAK;AACpB,WAAK,UAAU,KAAK;AACpB;AAAA,IACF;AAEA,SAAK,IAAI,KAAK,UAAU,MAAM,IAAI,MAAM,OAAO;AAC/C,SAAK,IAAI,KAAK,UAAU,MAAM,IAAI,MAAM,OAAO;AAE/C,iBAAa,MAAM,MAAM;AACvB,gBAAU,KAAK,KAAK;AAAA,QAClB,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/Figure/Figure.d.ts
CHANGED
package/Figure/Figure.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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;
|
|
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 * @see https://ui.studiometa.dev/-/components/Figure/\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;AASxB,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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Base } from '@studiometa/js-toolkit';
|
|
2
|
+
import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
|
|
3
|
+
import type { FrameRequestInit } from './types.js';
|
|
4
|
+
import { FrameTriggerLoader } from './FrameTriggerLoader.js';
|
|
5
|
+
export interface AbstractFrameTriggerProps extends BaseProps {
|
|
6
|
+
$el: HTMLFormElement | HTMLAnchorElement;
|
|
7
|
+
$options: {
|
|
8
|
+
requestInit: RequestInit;
|
|
9
|
+
headers: Record<string, string>;
|
|
10
|
+
};
|
|
11
|
+
$children: {
|
|
12
|
+
FrameTriggerLoader: FrameTriggerLoader[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* AbstractFrameTrigger class.
|
|
17
|
+
*/
|
|
18
|
+
export declare class AbstractFrameTrigger<T extends BaseProps = BaseProps> extends Base<T & AbstractFrameTriggerProps> {
|
|
19
|
+
/**
|
|
20
|
+
* Config.
|
|
21
|
+
*/
|
|
22
|
+
static config: BaseConfig;
|
|
23
|
+
/**
|
|
24
|
+
* The URL to use for the request.
|
|
25
|
+
*/
|
|
26
|
+
get url(): URL;
|
|
27
|
+
/**
|
|
28
|
+
* Option for the fetch request.
|
|
29
|
+
*/
|
|
30
|
+
get requestInit(): FrameRequestInit;
|
|
31
|
+
/**
|
|
32
|
+
* Trigger FrameLoaders enter.
|
|
33
|
+
*/
|
|
34
|
+
onFrameFetchBefore(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Trigger FrameLoaders leave.
|
|
37
|
+
*/
|
|
38
|
+
onFrameFetchAfter(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Trigger request.
|
|
41
|
+
*/
|
|
42
|
+
trigger(): Promise<void>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Base, getClosestParent } from "@studiometa/js-toolkit";
|
|
2
|
+
import { EVENTS } from "./utils.js";
|
|
3
|
+
import { FrameTriggerLoader } from "./FrameTriggerLoader.js";
|
|
4
|
+
class AbstractFrameTrigger extends Base {
|
|
5
|
+
/**
|
|
6
|
+
* Config.
|
|
7
|
+
*/
|
|
8
|
+
static config = {
|
|
9
|
+
name: "AbstractFrameTrigger",
|
|
10
|
+
emits: Object.values(EVENTS),
|
|
11
|
+
options: {
|
|
12
|
+
requestInit: Object,
|
|
13
|
+
headers: Object
|
|
14
|
+
},
|
|
15
|
+
components: {
|
|
16
|
+
FrameTriggerLoader
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* The URL to use for the request.
|
|
21
|
+
*/
|
|
22
|
+
get url() {
|
|
23
|
+
return new URL(this.$el instanceof HTMLFormElement ? this.$el.action : this.$el.href);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Option for the fetch request.
|
|
27
|
+
*/
|
|
28
|
+
get requestInit() {
|
|
29
|
+
const { requestInit, headers } = this.$options;
|
|
30
|
+
return {
|
|
31
|
+
...requestInit,
|
|
32
|
+
// @ts-expect-error this will be right.
|
|
33
|
+
trigger: this,
|
|
34
|
+
headers: {
|
|
35
|
+
...requestInit.headers,
|
|
36
|
+
...headers
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Trigger FrameLoaders enter.
|
|
42
|
+
*/
|
|
43
|
+
onFrameFetchBefore() {
|
|
44
|
+
for (const loader of this.$children.FrameTriggerLoader) {
|
|
45
|
+
if (getClosestParent(loader, this.constructor) === this) {
|
|
46
|
+
loader.enter();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Trigger FrameLoaders leave.
|
|
52
|
+
*/
|
|
53
|
+
onFrameFetchAfter() {
|
|
54
|
+
for (const loader of this.$children.FrameTriggerLoader) {
|
|
55
|
+
if (getClosestParent(loader, this.constructor) === this) {
|
|
56
|
+
loader.leave();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Trigger request.
|
|
62
|
+
*/
|
|
63
|
+
async trigger() {
|
|
64
|
+
const { url, requestInit } = this;
|
|
65
|
+
this.$log("trigger", url, requestInit);
|
|
66
|
+
this.$emit(EVENTS.TRIGGER, url, requestInit);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
AbstractFrameTrigger
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=AbstractFrameTrigger.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../packages/ui/Frame/AbstractFrameTrigger.ts"],
|
|
4
|
+
"sourcesContent": ["import { Base, getClosestParent } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport type { FrameRequestInit } from './types.js';\nimport { EVENTS } from './utils.js';\nimport { FrameTriggerLoader } from './FrameTriggerLoader.js';\n\nexport interface AbstractFrameTriggerProps extends BaseProps {\n $el: HTMLFormElement | HTMLAnchorElement;\n $options: {\n requestInit: RequestInit;\n headers: Record<string, string>;\n };\n $children: {\n FrameTriggerLoader: FrameTriggerLoader[];\n };\n}\n\n/**\n * AbstractFrameTrigger class.\n */\nexport class AbstractFrameTrigger<T extends BaseProps = BaseProps> extends Base<\n T & AbstractFrameTriggerProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'AbstractFrameTrigger',\n emits: Object.values(EVENTS),\n options: {\n requestInit: Object,\n headers: Object,\n },\n components: {\n FrameTriggerLoader,\n },\n };\n\n /**\n * The URL to use for the request.\n */\n get url(): URL {\n return new URL(this.$el instanceof HTMLFormElement ? this.$el.action : this.$el.href);\n }\n\n /**\n * Option for the fetch request.\n */\n get requestInit(): FrameRequestInit {\n const { requestInit, headers } = this.$options;\n\n return {\n ...requestInit,\n // @ts-expect-error this will be right.\n trigger: this,\n headers: {\n ...requestInit.headers,\n ...headers,\n },\n };\n }\n\n /**\n * Trigger FrameLoaders enter.\n */\n onFrameFetchBefore() {\n for (const loader of this.$children.FrameTriggerLoader) {\n if (getClosestParent(loader, this.constructor) === this) {\n loader.enter();\n }\n }\n }\n\n /**\n * Trigger FrameLoaders leave.\n */\n onFrameFetchAfter() {\n for (const loader of this.$children.FrameTriggerLoader) {\n if (getClosestParent(loader, this.constructor) === this) {\n loader.leave();\n }\n }\n }\n\n /**\n * Trigger request.\n */\n async trigger() {\n const { url, requestInit } = this;\n this.$log('trigger', url, requestInit);\n this.$emit(EVENTS.TRIGGER, url, requestInit);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,MAAM,wBAAwB;AAGvC,SAAS,cAAc;AACvB,SAAS,0BAA0B;AAgB5B,MAAM,6BAA8D,KAEzE;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,MAAM;AAAA,IAC3B,SAAS;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAW;AACb,WAAO,IAAI,IAAI,KAAK,eAAe,kBAAkB,KAAK,IAAI,SAAS,KAAK,IAAI,IAAI;AAAA,EACtF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,cAAgC;AAClC,UAAM,EAAE,aAAa,QAAQ,IAAI,KAAK;AAEtC,WAAO;AAAA,MACL,GAAG;AAAA;AAAA,MAEH,SAAS;AAAA,MACT,SAAS;AAAA,QACP,GAAG,YAAY;AAAA,QACf,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB;AACnB,eAAW,UAAU,KAAK,UAAU,oBAAoB;AACtD,UAAI,iBAAiB,QAAQ,KAAK,WAAW,MAAM,MAAM;AACvD,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAClB,eAAW,UAAU,KAAK,UAAU,oBAAoB;AACtD,UAAI,iBAAiB,QAAQ,KAAK,WAAW,MAAM,MAAM;AACvD,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU;AACd,UAAM,EAAE,KAAK,YAAY,IAAI;AAC7B,SAAK,KAAK,WAAW,KAAK,WAAW;AACrC,SAAK,MAAM,OAAO,SAAS,KAAK,WAAW;AAAA,EAC7C;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/Frame/Frame.d.ts
CHANGED
|
@@ -3,70 +3,98 @@ import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';
|
|
|
3
3
|
import { FrameAnchor } from './FrameAnchor.js';
|
|
4
4
|
import { FrameForm } from './FrameForm.js';
|
|
5
5
|
import { FrameTarget } from './FrameTarget.js';
|
|
6
|
+
import { FrameLoader } from './FrameLoader.js';
|
|
7
|
+
import type { FrameRequestInit, FrameTriggerEvent } from './types.js';
|
|
6
8
|
export interface FrameProps extends BaseProps {
|
|
7
9
|
$children: {
|
|
8
10
|
FrameAnchor: FrameAnchor[];
|
|
9
11
|
FrameForm: FrameForm[];
|
|
10
12
|
FrameTarget: FrameTarget[];
|
|
11
|
-
|
|
13
|
+
FrameLoader: FrameLoader[];
|
|
12
14
|
};
|
|
13
15
|
$options: {
|
|
14
16
|
history: boolean;
|
|
17
|
+
requestInit: RequestInit;
|
|
18
|
+
headers: Record<string, string>;
|
|
15
19
|
};
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
18
|
-
*
|
|
22
|
+
* Frame class.
|
|
23
|
+
* @see https://ui.studiometa.dev/-/components/Frame/
|
|
19
24
|
*/
|
|
20
25
|
export declare class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {
|
|
21
26
|
/**
|
|
22
27
|
* Config.
|
|
23
28
|
*/
|
|
24
29
|
static config: BaseConfig;
|
|
30
|
+
/**
|
|
31
|
+
* DOM Parser to parse the new content to be injected.
|
|
32
|
+
*/
|
|
33
|
+
domParser: DOMParser;
|
|
34
|
+
/**
|
|
35
|
+
* Abort controller to prevent multiple simultaneous fetches.
|
|
36
|
+
*/
|
|
37
|
+
abortController: AbortController;
|
|
38
|
+
/**
|
|
39
|
+
* Header names.
|
|
40
|
+
*/
|
|
41
|
+
headerNames: {
|
|
42
|
+
readonly ACCEPT: "accept";
|
|
43
|
+
readonly X_REQUESTED_BY: "x-requested-by";
|
|
44
|
+
readonly X_TRIGGERED_BY: "x-triggered-by";
|
|
45
|
+
readonly USER_AGENT: "user-agent";
|
|
46
|
+
};
|
|
25
47
|
/**
|
|
26
48
|
* Get uniq id.
|
|
27
49
|
*/
|
|
28
50
|
get id(): string;
|
|
29
51
|
/**
|
|
30
|
-
*
|
|
52
|
+
* The client used for the fetch request.
|
|
31
53
|
*/
|
|
32
|
-
get
|
|
54
|
+
get client(): typeof fetch;
|
|
33
55
|
/**
|
|
34
|
-
*
|
|
56
|
+
* Default request init.
|
|
35
57
|
*/
|
|
36
|
-
|
|
58
|
+
get requestInit(): RequestInit;
|
|
37
59
|
/**
|
|
38
|
-
*
|
|
60
|
+
* Get chidlren limited to the current instance.
|
|
39
61
|
*/
|
|
40
|
-
|
|
41
|
-
event: PopStateEvent;
|
|
42
|
-
}): void;
|
|
62
|
+
getDirectChildren(name: keyof FrameProps['$children']): any[];
|
|
43
63
|
/**
|
|
44
|
-
*
|
|
64
|
+
* Fetch new content on frame-trigger.
|
|
45
65
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
target: FrameAnchor;
|
|
66
|
+
onFrameAnchorFrameTrigger({ args: [url, requestInit] }: {
|
|
67
|
+
args: FrameTriggerEvent['detail'];
|
|
49
68
|
}): void;
|
|
50
69
|
/**
|
|
51
|
-
*
|
|
70
|
+
* Fetch new content on frame-trigger.
|
|
52
71
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
target: FrameForm;
|
|
72
|
+
onFrameFormFrameTrigger({ args: [url, requestInit] }: {
|
|
73
|
+
args: [URL, FrameRequestInit];
|
|
56
74
|
}): void;
|
|
57
75
|
/**
|
|
58
|
-
*
|
|
76
|
+
* Update content on history back/forward navigation.
|
|
77
|
+
*/
|
|
78
|
+
onWindowPopstate(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Trigger FrameLoaders enter.
|
|
81
|
+
*/
|
|
82
|
+
onFrameFetchBefore(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Trigger FrameLoaders leave.
|
|
85
|
+
*/
|
|
86
|
+
onFrameFetchAfter(): void;
|
|
87
|
+
emitSync(event: string, trigger?: FrameForm | FrameAnchor, ...args: any[]): void;
|
|
88
|
+
/**
|
|
89
|
+
* Fetch given url.
|
|
59
90
|
*/
|
|
60
|
-
|
|
91
|
+
fetch(url: URL, requestInit?: FrameRequestInit): Promise<void>;
|
|
61
92
|
/**
|
|
62
|
-
*
|
|
93
|
+
* Dispatch the contents to update to their matching FrameTarget.
|
|
63
94
|
*/
|
|
64
|
-
|
|
65
|
-
top: number;
|
|
66
|
-
left: number;
|
|
67
|
-
}): Promise<void>;
|
|
95
|
+
content(url: URL, requestInit: FrameRequestInit, content: string): Promise<void>;
|
|
68
96
|
/**
|
|
69
|
-
*
|
|
97
|
+
* Handle errors.
|
|
70
98
|
*/
|
|
71
|
-
|
|
99
|
+
error(url: URL, requestInit: FrameRequestInit, error: Error): Promise<void>;
|
|
72
100
|
}
|