@maggioli-design-system/mds-input-range 2.5.2 → 2.5.3

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.
@@ -19,15 +19,17 @@ export class Locale {
19
19
  };
20
20
  this.update = (doc) => {
21
21
  const context = doc !== null && doc !== void 0 ? doc : this.element.shadowRoot;
22
- context && context.querySelectorAll('*').forEach(el => {
23
- if (el.tagName.toLowerCase().startsWith('mds-')) {
24
- // eslint-disable-next-line no-restricted-syntax
25
- if (el && 'updateLang' in el) {
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
- el.updateLang();
22
+ if (context) {
23
+ context.querySelectorAll('*').forEach(el => {
24
+ if (el.tagName.toLowerCase().startsWith('mds-')) {
25
+ // eslint-disable-next-line no-restricted-syntax
26
+ if (el && 'updateLang' in el) {
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ el.updateLang();
29
+ }
28
30
  }
29
- }
30
- });
31
+ });
32
+ }
31
33
  };
32
34
  this.pluralize = (tag, context) => {
33
35
  const languagePhrase = this.config[this.language] ? this.config[this.language][tag] : this.config[this.rollbackLanguage][tag];
@@ -0,0 +1,5 @@
1
+ const randomNumber = (min, max, integer = false) => {
2
+ const num = Math.random() * (max - min) + min;
3
+ return integer ? Math.floor(num) : num;
4
+ };
5
+ export { randomNumber, };
@@ -25,4 +25,13 @@ const hasSlotted = (el, name) => {
25
25
  }
26
26
  return false;
27
27
  };
28
- export { hasSlottedElements, hasSlottedNodes, hasSlotted, };
28
+ const hasSlottedContent = (el, name) => {
29
+ var _a;
30
+ const query = name ? `slot[name="${name}"]` : 'slot:not([name])';
31
+ const slot = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(query);
32
+ if (!slot)
33
+ return false;
34
+ const assignedNodes = slot.assignedNodes({ flatten: true });
35
+ return assignedNodes.some(node => { var _a; return node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== ''; });
36
+ };
37
+ export { hasSlottedElements, hasSlottedNodes, hasSlottedContent, hasSlotted, };
@@ -7,6 +7,15 @@ const cssDurationToMilliseconds = (duration, defaultValue = 1000) => {
7
7
  }
8
8
  return defaultValue;
9
9
  };
10
+ const cssDurationToSeconds = (duration, defaultValue = 1000) => {
11
+ if (duration.includes('ms')) {
12
+ return Number(duration.replace('ms', '')) / 1000;
13
+ }
14
+ if (duration.includes('s')) {
15
+ return Number(duration.replace('s', ''));
16
+ }
17
+ return defaultValue;
18
+ };
10
19
  const cssSizeToNumber = (size, defaultValue = 0) => {
11
20
  if (size.includes('px')) {
12
21
  return Number(size.replace('px', ''));
@@ -19,4 +28,10 @@ const cssSizeToNumber = (size, defaultValue = 0) => {
19
28
  }
20
29
  return defaultValue;
21
30
  };
22
- export { cssDurationToMilliseconds, cssSizeToNumber, };
31
+ const cssRotationToNumber = (size, defaultValue = 0) => {
32
+ if (size.includes('deg')) {
33
+ return Number(size.replace('deg', ''));
34
+ }
35
+ return defaultValue;
36
+ };
37
+ export { cssDurationToMilliseconds, cssDurationToSeconds, cssRotationToNumber, cssSizeToNumber, };
@@ -25,7 +25,7 @@ export default {
25
25
  },
26
26
  },
27
27
  };
28
- const Template = args => h("mds-input-range", Object.assign({}, args), "Range label");
28
+ const Template = args => (h("mds-input-range", Object.assign({}, args), "Range label"));
29
29
  const TemplateFormatLabel = args => {
30
30
  useEffect(() => {
31
31
  document.querySelector('#custom-labeled').formatValue = formatValue;
@@ -42,34 +42,50 @@ const TemplateFormatLabel = args => {
42
42
  const value = parseFloat((bytes / Math.pow(k, i)).toFixed(decimals));
43
43
  return `${value} ${sizes[i]}`;
44
44
  };
45
- return h("div", null, h("mds-input-range", Object.assign({ id: "custom-labeled" }, args, { step: "1048576", min: "0", max: "1073741824" }), "File size"));
45
+ return (h("div", null, h("mds-input-range", Object.assign({ id: "custom-labeled" }, args, { step: "1048576", min: "0", max: "1073741824" }), "File size")));
46
46
  };
47
47
  const hideHeaderCss = `
48
48
  mds-input-range::part(header) {
49
49
  display: none;
50
50
  }
51
51
  `;
52
- const HideHeaderTemplate = args => h("div", null, h("style", null, hideHeaderCss), h("mds-input-range", Object.assign({}, args), "This shouldn't be visible"));
53
- export const Default = Template.bind({});
54
- export const Disabled = Template.bind({});
55
- Disabled.args = {
56
- disabled: true,
52
+ const HideHeaderTemplate = args => (h("div", null, h("style", null, hideHeaderCss), h("mds-input-range", Object.assign({}, args), "This shouldn't be visible")));
53
+ export const Default = {
54
+ render: Template,
57
55
  };
58
- export const Min = Template.bind({});
59
- Min.args = {
60
- min: -100,
56
+ export const Disabled = {
57
+ render: Template,
58
+ args: {
59
+ disabled: true,
60
+ },
61
+ };
62
+ export const Min = {
63
+ render: Template,
64
+ args: {
65
+ min: -100,
66
+ },
67
+ };
68
+ export const Max = {
69
+ render: Template,
70
+ args: {
71
+ max: 200,
72
+ },
73
+ };
74
+ export const Step = {
75
+ render: Template,
76
+ args: {
77
+ step: 10,
78
+ },
61
79
  };
62
- export const Max = Template.bind({});
63
- Max.args = {
64
- max: 200,
80
+ export const Value = {
81
+ render: Template,
82
+ args: {
83
+ value: 90,
84
+ },
65
85
  };
66
- export const Step = Template.bind({});
67
- Step.args = {
68
- step: 10,
86
+ export const FormatLabel = {
87
+ render: TemplateFormatLabel,
69
88
  };
70
- export const Value = Template.bind({});
71
- Value.args = {
72
- value: 90,
89
+ export const HideHeader = {
90
+ render: HideHeaderTemplate,
73
91
  };
74
- export const FormatLabel = TemplateFormatLabel.bind({});
75
- export const HideHeader = HideHeaderTemplate.bind({});
@@ -11,12 +11,27 @@ const buttonVariantDictionary = [
11
11
  'success',
12
12
  'warning',
13
13
  ];
14
+ const buttonDropdownVariantDictionary = [
15
+ 'ai',
16
+ 'dark',
17
+ 'error',
18
+ 'info',
19
+ 'light',
20
+ 'primary',
21
+ 'secondary',
22
+ 'success',
23
+ 'warning',
24
+ ];
14
25
  const buttonToneVariantDictionary = [
15
26
  'strong',
16
27
  'weak',
17
28
  'ghost',
18
29
  'quiet',
19
30
  ];
31
+ const buttonToneMinimalVariantDictionary = [
32
+ 'strong',
33
+ 'weak',
34
+ ];
20
35
  const buttonTargetDictionary = [
21
36
  'blank',
22
37
  'self',
@@ -27,6 +42,10 @@ const buttonSizeDictionary = [
27
42
  'lg',
28
43
  'xl',
29
44
  ];
45
+ const tabSizeDictionary = [
46
+ 'sm',
47
+ 'md',
48
+ ];
30
49
  const buttonIconPositionDictionary = [
31
50
  'left',
32
51
  'right',
@@ -36,4 +55,4 @@ const buttonTypeDictionary = [
36
55
  'submit',
37
56
  'reset',
38
57
  ];
39
- export { buttonIconPositionDictionary, buttonSizeDictionary, buttonTargetDictionary, buttonToneVariantDictionary, buttonTypeDictionary, buttonVariantDictionary, };
58
+ export { buttonDropdownVariantDictionary, buttonIconPositionDictionary, buttonSizeDictionary, buttonTargetDictionary, buttonToneMinimalVariantDictionary, buttonToneVariantDictionary, buttonTypeDictionary, buttonVariantDictionary, tabSizeDictionary, };
@@ -1,5 +1,5 @@
1
1
  import jsonIconsDictionary from "../fixtures/icons.json";
2
- import jsonMggIconsDictionary from "../fixtures/iconsauce.json";
2
+ import jsonMggIconsDictionary from "@maggioli-design-system/svg-icons/dist/iconsauce.json";
3
3
  const iconsDictionary = jsonIconsDictionary;
4
4
  const mggIconsDictionary = jsonMggIconsDictionary;
5
5
  const svgIconsDictionary = [
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-06-03T13:05:00",
2
+ "timestamp": "2026-01-16T15:00:11",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.27.2",
package/dist/stats.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
- "timestamp": "2025-06-03T13:05:01",
2
+ "timestamp": "2026-01-16T15:00:12",
3
3
  "compiler": {
4
4
  "name": "node",
5
- "version": "22.11.0"
5
+ "version": "22.15.0"
6
6
  },
7
7
  "app": {
8
8
  "namespace": "MdsInputRange",
9
9
  "fsNamespace": "mds-input-range",
10
10
  "components": 1,
11
11
  "entries": 1,
12
- "bundles": 103,
12
+ "bundles": 104,
13
13
  "outputs": [
14
14
  {
15
15
  "name": "dist-collection",
16
- "files": 55,
16
+ "files": 56,
17
17
  "generatedFiles": [
18
18
  "./dist/collection/common/aria.js",
19
19
  "./dist/collection/common/browser.js",
@@ -24,6 +24,7 @@
24
24
  "./dist/collection/common/icon.js",
25
25
  "./dist/collection/common/keyboard-manager.js",
26
26
  "./dist/collection/common/locale.js",
27
+ "./dist/collection/common/number.js",
27
28
  "./dist/collection/common/slot.js",
28
29
  "./dist/collection/common/string.js",
29
30
  "./dist/collection/common/unit.js",
@@ -767,6 +768,7 @@
767
768
  "./src/common/icon.ts": [],
768
769
  "./src/common/keyboard-manager.ts": [],
769
770
  "./src/common/locale.ts": [],
771
+ "./src/common/number.ts": [],
770
772
  "./src/common/slot.ts": [],
771
773
  "./src/common/string.ts": [],
772
774
  "./src/common/unit.ts": [],
@@ -795,8 +797,7 @@
795
797
  "./src/dictionary/file-extensions.ts": [],
796
798
  "./src/dictionary/floating-ui.ts": [],
797
799
  "./src/dictionary/icon.ts": [
798
- "./src/fixtures/icons.json",
799
- "./src/fixtures/iconsauce.json"
800
+ "./src/fixtures/icons.json"
800
801
  ],
801
802
  "./src/dictionary/input.ts": [],
802
803
  "./src/dictionary/keyboard.ts": [],
@@ -0,0 +1,2 @@
1
+ declare const randomNumber: (min: number, max: number, integer?: boolean) => number;
2
+ export { randomNumber, };
@@ -1,4 +1,5 @@
1
1
  declare const hasSlottedElements: (el: HTMLElement, name?: string) => boolean;
2
2
  declare const hasSlottedNodes: (el: HTMLElement, name?: string) => boolean;
3
3
  declare const hasSlotted: (el: HTMLElement, name?: string) => boolean;
4
- export { hasSlottedElements, hasSlottedNodes, hasSlotted, };
4
+ declare const hasSlottedContent: (el: HTMLElement, name?: string) => boolean;
5
+ export { hasSlottedElements, hasSlottedNodes, hasSlottedContent, hasSlotted, };
@@ -1,3 +1,5 @@
1
1
  declare const cssDurationToMilliseconds: (duration: string, defaultValue?: number) => number;
2
+ declare const cssDurationToSeconds: (duration: string, defaultValue?: number) => number;
2
3
  declare const cssSizeToNumber: (size: string, defaultValue?: number) => number;
3
- export { cssDurationToMilliseconds, cssSizeToNumber, };
4
+ declare const cssRotationToNumber: (size: string, defaultValue?: number) => number;
5
+ export { cssDurationToMilliseconds, cssDurationToSeconds, cssRotationToNumber, cssSizeToNumber, };
@@ -34,11 +34,42 @@ declare const _default: {
34
34
  };
35
35
  };
36
36
  export default _default;
37
- export declare const Default: any;
38
- export declare const Disabled: any;
39
- export declare const Min: any;
40
- export declare const Max: any;
41
- export declare const Step: any;
42
- export declare const Value: any;
43
- export declare const FormatLabel: any;
44
- export declare const HideHeader: any;
37
+ export declare const Default: {
38
+ render: (args: any) => any;
39
+ };
40
+ export declare const Disabled: {
41
+ render: (args: any) => any;
42
+ args: {
43
+ disabled: boolean;
44
+ };
45
+ };
46
+ export declare const Min: {
47
+ render: (args: any) => any;
48
+ args: {
49
+ min: number;
50
+ };
51
+ };
52
+ export declare const Max: {
53
+ render: (args: any) => any;
54
+ args: {
55
+ max: number;
56
+ };
57
+ };
58
+ export declare const Step: {
59
+ render: (args: any) => any;
60
+ args: {
61
+ step: number;
62
+ };
63
+ };
64
+ export declare const Value: {
65
+ render: (args: any) => any;
66
+ args: {
67
+ value: number;
68
+ };
69
+ };
70
+ export declare const FormatLabel: {
71
+ render: (args: any) => any;
72
+ };
73
+ export declare const HideHeader: {
74
+ render: (args: any) => any;
75
+ };
@@ -1,7 +1,10 @@
1
1
  declare const buttonVariantDictionary: string[];
2
+ declare const buttonDropdownVariantDictionary: string[];
2
3
  declare const buttonToneVariantDictionary: string[];
4
+ declare const buttonToneMinimalVariantDictionary: string[];
3
5
  declare const buttonTargetDictionary: string[];
4
6
  declare const buttonSizeDictionary: string[];
7
+ declare const tabSizeDictionary: string[];
5
8
  declare const buttonIconPositionDictionary: string[];
6
9
  declare const buttonTypeDictionary: string[];
7
- export { buttonIconPositionDictionary, buttonSizeDictionary, buttonTargetDictionary, buttonToneVariantDictionary, buttonTypeDictionary, buttonVariantDictionary, };
10
+ export { buttonDropdownVariantDictionary, buttonIconPositionDictionary, buttonSizeDictionary, buttonTargetDictionary, buttonToneMinimalVariantDictionary, buttonToneVariantDictionary, buttonTypeDictionary, buttonVariantDictionary, tabSizeDictionary, };
@@ -1,4 +1,4 @@
1
- declare const iconsDictionary: string[];
1
+ declare const iconsDictionary: any;
2
2
  declare const mggIconsDictionary: string[];
3
3
  declare const svgIconsDictionary: string[];
4
4
  export { iconsDictionary, mggIconsDictionary, svgIconsDictionary, };
@@ -1,5 +1,7 @@
1
1
  export type ButtonType = 'a' | 'button' | 'reset' | 'submit';
2
2
  export type ButtonTargetType = 'self' | 'blank';
3
3
  export type ButtonSizeType = 'sm' | 'md' | 'lg' | 'xl';
4
+ export type TabSizeType = 'sm' | 'md';
4
5
  export type ButtonIconPositionType = 'left' | 'right';
5
6
  export type ButtonVariantType = 'ai' | 'apple' | 'dark' | 'error' | 'google' | 'info' | 'light' | 'primary' | 'secondary' | 'success' | 'warning';
7
+ export type ButtonDropdownVariantType = 'ai' | 'dark' | 'error' | 'info' | 'light' | 'primary' | 'secondary' | 'success' | 'warning';
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-06-03T08:10:23",
2
+ "timestamp": "2026-01-16T12:28:24",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.27.2",
@@ -366,6 +366,11 @@
366
366
  "docstring": "",
367
367
  "path": "src/type/text.ts"
368
368
  },
369
+ "src/type/button.ts::ButtonDropdownVariantType": {
370
+ "declaration": "export type ButtonDropdownVariantType =\n | 'ai'\n | 'dark'\n | 'error'\n | 'info'\n | 'light'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'",
371
+ "docstring": "",
372
+ "path": "src/type/button.ts"
373
+ },
369
374
  "src/components/mds-calendar-cell/meta/types.ts::CalendarCellType": {
370
375
  "declaration": "export type CalendarCellType =\n | 'other'\n | 'current'\n | 'weekend'",
371
376
  "docstring": "",
@@ -387,7 +392,7 @@
387
392
  "path": "src/type/variant.ts"
388
393
  },
389
394
  "src/components/mds-chip/meta/interface.ts::MdsChipEvent": {
390
- "declaration": "interface MdsChipEvent {\n event: Event\n element: HTMLMdsChipElement\n}",
395
+ "declaration": "interface MdsChipEvent {\n event: Event\n selected?: boolean\n element: HTMLMdsChipElement\n}",
391
396
  "docstring": "",
392
397
  "path": "src/components/mds-chip/meta/interface.ts"
393
398
  },
@@ -596,6 +601,11 @@
596
601
  "docstring": "",
597
602
  "path": "src/type/typography.ts"
598
603
  },
604
+ "src/components/mds-mention/meta/type.ts::MentionSize": {
605
+ "declaration": "export type MentionSize =\n | 'sm'\n | 'md'\n | 'lg'",
606
+ "docstring": "",
607
+ "path": "src/components/mds-mention/meta/type.ts"
608
+ },
599
609
  "src/components/mds-modal/meta/types.ts::ModalPositionType": {
600
610
  "declaration": "export type ModalPositionType =\n | 'bottom'\n | 'bottom-left'\n | 'bottom-right'\n | 'center'\n | 'left'\n | 'right'\n | 'top'\n | 'top-left'\n | 'top-right'",
601
611
  "docstring": "",
@@ -636,6 +646,11 @@
636
646
  "docstring": "",
637
647
  "path": "src/components/mds-policy-ai/meta/types.ts"
638
648
  },
649
+ "src/type/button.ts::TabSizeType": {
650
+ "declaration": "export type TabSizeType =\n | 'sm'\n | 'md'",
651
+ "docstring": "",
652
+ "path": "src/type/button.ts"
653
+ },
639
654
  "src/components/mds-pref-animation/meta/types.ts::AnimationModeType": {
640
655
  "declaration": "export type AnimationModeType =\n | 'reduce'\n | 'no-preference'\n | 'system'",
641
656
  "docstring": "",
@@ -716,6 +731,11 @@
716
731
  "docstring": "",
717
732
  "path": "src/components/mds-radial-menu/meta/types.ts"
718
733
  },
734
+ "src/components.d.ts::ModalOverflowType": {
735
+ "declaration": "any",
736
+ "docstring": "",
737
+ "path": "src/components.d.ts"
738
+ },
719
739
  "src/components/mds-stepper-bar/meta/event-detail.ts::MdsStepperBarEventDetail": {
720
740
  "declaration": "export interface MdsStepperBarEventDetail {\n step: number\n value: string\n}",
721
741
  "docstring": "",
@@ -726,6 +746,11 @@
726
746
  "docstring": "",
727
747
  "path": "src/components/mds-stepper-bar-item/meta/event-detail.ts"
728
748
  },
749
+ "src/components/mds-tab/meta/type.ts::DirectionType": {
750
+ "declaration": "export type DirectionType =\n | 'horizontal'\n | 'vertical'",
751
+ "docstring": "",
752
+ "path": "src/components/mds-tab/meta/type.ts"
753
+ },
729
754
  "src/type/animation.ts::HorizontalActionsAnimationType": {
730
755
  "declaration": "export type HorizontalActionsAnimationType =\n | 'fade'\n | 'slide'",
731
756
  "docstring": "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maggioli-design-system/mds-input-range",
3
- "version": "2.5.2",
3
+ "version": "2.5.3",
4
4
  "description": "mds-input-range is a web-component from Magma Design System, built with StencilJS, TypeScript, Storybook. It's based on the web-component standard and it's designed to be agnostic from the JavaScript framework you are using.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@maggioli-design-system/styles": "15.11.0",
28
- "@maggioli-design-system/mds-text": "4.7.4",
28
+ "@maggioli-design-system/mds-text": "4.7.5",
29
29
  "@stencil/core": "4.27.2"
30
30
  },
31
31
  "license": "MIT",
@@ -41,15 +41,17 @@ export class Locale {
41
41
 
42
42
  update = (doc?: Document | ShadowRoot): void => {
43
43
  const context = doc ?? this.element.shadowRoot
44
- context && context.querySelectorAll('*').forEach(el => {
45
- if (el.tagName.toLowerCase().startsWith('mds-')) {
46
- // eslint-disable-next-line no-restricted-syntax
47
- if (el && 'updateLang' in el) {
48
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
- (el as any).updateLang()
44
+ if (context) {
45
+ context.querySelectorAll('*').forEach(el => {
46
+ if (el.tagName.toLowerCase().startsWith('mds-')) {
47
+ // eslint-disable-next-line no-restricted-syntax
48
+ if (el && 'updateLang' in el) {
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ (el as any).updateLang()
51
+ }
50
52
  }
51
- }
52
- })
53
+ })
54
+ }
53
55
  }
54
56
 
55
57
  private pluralize = (tag: string | string[], context: Record<string, string | number | boolean>): string => {
@@ -0,0 +1,8 @@
1
+ const randomNumber = (min: number, max: number, integer: boolean = false): number => {
2
+ const num = Math.random() * (max - min) + min
3
+ return integer ? Math.floor(num) : num
4
+ }
5
+
6
+ export {
7
+ randomNumber,
8
+ }
@@ -28,8 +28,20 @@ const hasSlotted = (el: HTMLElement, name?: string): boolean => {
28
28
  return false
29
29
  }
30
30
 
31
+ const hasSlottedContent = (el: HTMLElement, name?: string): boolean => {
32
+ const query = name ? `slot[name="${name}"]` : 'slot:not([name])'
33
+ const slot: HTMLSlotElement = el.shadowRoot?.querySelector(query) as HTMLSlotElement
34
+ if (!slot) return false
35
+
36
+ const assignedNodes = slot.assignedNodes({ flatten: true })
37
+ return assignedNodes.some(node =>
38
+ node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '',
39
+ )
40
+ }
41
+
31
42
  export {
32
43
  hasSlottedElements,
33
44
  hasSlottedNodes,
45
+ hasSlottedContent,
34
46
  hasSlotted,
35
47
  }
@@ -11,6 +11,19 @@ const cssDurationToMilliseconds = (duration: string, defaultValue = 1000): numbe
11
11
  return defaultValue
12
12
  }
13
13
 
14
+ const cssDurationToSeconds = (duration: string, defaultValue = 1000): number => {
15
+
16
+ if (duration.includes('ms')) {
17
+ return Number(duration.replace('ms', '')) / 1000
18
+ }
19
+
20
+ if (duration.includes('s')) {
21
+ return Number(duration.replace('s', ''))
22
+ }
23
+
24
+ return defaultValue
25
+ }
26
+
14
27
  const cssSizeToNumber = (size: string, defaultValue = 0): number => {
15
28
  if (size.includes('px')) {
16
29
  return Number(size.replace('px', ''))
@@ -27,7 +40,17 @@ const cssSizeToNumber = (size: string, defaultValue = 0): number => {
27
40
  return defaultValue
28
41
  }
29
42
 
43
+ const cssRotationToNumber = (size: string, defaultValue = 0): number => {
44
+ if (size.includes('deg')) {
45
+ return Number(size.replace('deg', ''))
46
+ }
47
+
48
+ return defaultValue
49
+ }
50
+
30
51
  export {
31
52
  cssDurationToMilliseconds,
53
+ cssDurationToSeconds,
54
+ cssRotationToNumber,
32
55
  cssSizeToNumber,
33
56
  }