@3t-transform/threeteeui 0.1.52 → 0.1.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/cjs/{domsanitiser.options-b2d88e35.js → domsanitiser.options-cd2932a9.js} +17 -17
  2. package/dist/cjs/tttx-button.cjs.entry.js +23 -23
  3. package/dist/cjs/tttx-dialog-box.cjs.entry.js +69 -69
  4. package/dist/cjs/tttx-filter.cjs.entry.js +182 -180
  5. package/dist/cjs/tttx-form.cjs.entry.js +457 -457
  6. package/dist/cjs/tttx-icon.cjs.entry.js +10 -10
  7. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +58 -58
  8. package/dist/cjs/tttx-list.cjs.entry.js +31 -31
  9. package/dist/cjs/tttx-loading-spinner.cjs.entry.js +15 -15
  10. package/dist/cjs/tttx-qrcode.cjs.entry.js +27 -27
  11. package/dist/cjs/tttx-sorter.cjs.entry.js +107 -104
  12. package/dist/cjs/tttx-standalone-input.cjs.entry.js +78 -78
  13. package/dist/cjs/tttx-toolbar.cjs.entry.js +9 -9
  14. package/dist/collection/components/atoms/tttx-button/tttx-button.js +110 -110
  15. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +14 -14
  16. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +62 -62
  17. package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +22 -22
  18. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +109 -109
  19. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +38 -38
  20. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +67 -67
  21. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +17 -17
  22. package/dist/collection/components/atoms/tttx-qrcode/tttx-qrcode.js +81 -81
  23. package/dist/collection/components/atoms/tttx-qrcode/tttx-qrcode.stories.js +22 -22
  24. package/dist/collection/components/molecules/tttx-dialog-box/tttx-dialog-box.js +172 -172
  25. package/dist/collection/components/molecules/tttx-dialog-box/tttx-dialog-box.stories.js +289 -289
  26. package/dist/collection/components/molecules/tttx-filter/tttx-filter.js +416 -400
  27. package/dist/collection/components/molecules/tttx-filter/tttx-filter.stories.js +80 -80
  28. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.js +37 -37
  29. package/dist/collection/components/molecules/tttx-form/lib/validityCheck.js +61 -61
  30. package/dist/collection/components/molecules/tttx-form/tttx-form.js +479 -479
  31. package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +272 -272
  32. package/dist/collection/components/molecules/tttx-list/tttx-list.js +105 -105
  33. package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +43 -43
  34. package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.js +253 -236
  35. package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.stories.js +42 -42
  36. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +759 -759
  37. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +172 -172
  38. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.js +44 -44
  39. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.stories.js +14 -14
  40. package/dist/collection/components/palette.stories.js +7 -7
  41. package/dist/collection/docs/gettingstarted-developer.stories.js +5 -5
  42. package/dist/collection/icons.js +2838 -2838
  43. package/dist/collection/index.js +1 -1
  44. package/dist/collection/shared/domsanitiser.options.js +14 -14
  45. package/dist/components/domsanitiser.options.js +17 -17
  46. package/dist/components/tttx-button2.js +48 -48
  47. package/dist/components/tttx-dialog-box.js +97 -97
  48. package/dist/components/tttx-filter.js +217 -215
  49. package/dist/components/tttx-form.js +475 -475
  50. package/dist/components/tttx-icon2.js +28 -28
  51. package/dist/components/tttx-keyvalue-block.js +76 -76
  52. package/dist/components/tttx-list.js +53 -53
  53. package/dist/components/tttx-loading-spinner.js +33 -33
  54. package/dist/components/tttx-qrcode.js +45 -45
  55. package/dist/components/tttx-sorter.js +136 -133
  56. package/dist/components/tttx-standalone-input.js +130 -130
  57. package/dist/components/tttx-toolbar.js +26 -26
  58. package/dist/esm/{domsanitiser.options-81611f82.js → domsanitiser.options-563c1cf3.js} +17 -17
  59. package/dist/esm/polyfills/core-js.js +0 -0
  60. package/dist/esm/polyfills/dom.js +0 -0
  61. package/dist/esm/polyfills/es5-html-element.js +0 -0
  62. package/dist/esm/polyfills/index.js +0 -0
  63. package/dist/esm/polyfills/system.js +0 -0
  64. package/dist/esm/tttx-button.entry.js +23 -23
  65. package/dist/esm/tttx-dialog-box.entry.js +69 -69
  66. package/dist/esm/tttx-filter.entry.js +182 -180
  67. package/dist/esm/tttx-form.entry.js +457 -457
  68. package/dist/esm/tttx-icon.entry.js +10 -10
  69. package/dist/esm/tttx-keyvalue-block.entry.js +58 -58
  70. package/dist/esm/tttx-list.entry.js +31 -31
  71. package/dist/esm/tttx-loading-spinner.entry.js +15 -15
  72. package/dist/esm/tttx-qrcode.entry.js +27 -27
  73. package/dist/esm/tttx-sorter.entry.js +107 -104
  74. package/dist/esm/tttx-standalone-input.entry.js +78 -78
  75. package/dist/esm/tttx-toolbar.entry.js +9 -9
  76. package/dist/tttx/p-225e6fa6.entry.js +1 -0
  77. package/dist/tttx/{p-bc3b9283.entry.js → p-58d7c978.entry.js} +1 -1
  78. package/dist/tttx/{p-c751ebc2.entry.js → p-8b511fff.entry.js} +1 -1
  79. package/dist/tttx/{p-6a6ff7b7.entry.js → p-909c090d.entry.js} +1 -1
  80. package/dist/tttx/p-a658e1ac.entry.js +1 -0
  81. package/dist/tttx/{p-0b25ac9c.js → p-d3835fde.js} +2 -2
  82. package/dist/tttx/tttx.esm.js +1 -1
  83. package/dist/types/components/atoms/tttx-button/tttx-button.d.ts +10 -10
  84. package/dist/types/components/atoms/tttx-button/tttx-button.stories.d.ts +10 -10
  85. package/dist/types/components/atoms/tttx-icon/tttx-icon.d.ts +5 -5
  86. package/dist/types/components/atoms/tttx-icon/tttx-icon.stories.d.ts +20 -20
  87. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +7 -7
  88. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +9 -9
  89. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.d.ts +6 -6
  90. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.d.ts +17 -17
  91. package/dist/types/components/atoms/tttx-qrcode/tttx-qrcode.d.ts +8 -8
  92. package/dist/types/components/atoms/tttx-qrcode/tttx-qrcode.stories.d.ts +23 -23
  93. package/dist/types/components/molecules/tttx-dialog-box/tttx-dialog-box.d.ts +18 -18
  94. package/dist/types/components/molecules/tttx-dialog-box/tttx-dialog-box.stories.d.ts +24 -24
  95. package/dist/types/components/molecules/tttx-filter/tttx-filter.d.ts +44 -43
  96. package/dist/types/components/molecules/tttx-filter/tttx-filter.stories.d.ts +76 -0
  97. package/dist/types/components/molecules/tttx-form/lib/setErrorState.d.ts +13 -13
  98. package/dist/types/components/molecules/tttx-form/lib/validityCheck.d.ts +17 -17
  99. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +133 -133
  100. package/dist/types/components/molecules/tttx-form/tttx-form.stories.d.ts +278 -0
  101. package/dist/types/components/molecules/tttx-list/tttx-list.d.ts +11 -11
  102. package/dist/types/components/molecules/tttx-list/tttx-list.stories.d.ts +14 -0
  103. package/dist/types/components/molecules/tttx-sorter/tttx-sorter.d.ts +21 -20
  104. package/dist/types/components/molecules/tttx-sorter/tttx-sorter.stories.d.ts +30 -0
  105. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +69 -69
  106. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +143 -143
  107. package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.d.ts +4 -4
  108. package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.stories.d.ts +13 -13
  109. package/dist/types/components/palette.stories.d.ts +6 -6
  110. package/dist/types/components.d.ts +2 -0
  111. package/dist/types/docs/gettingstarted-developer.stories.d.ts +5 -5
  112. package/dist/types/icons.d.ts +2 -2
  113. package/dist/types/index.d.ts +1 -1
  114. package/dist/types/shared/domsanitiser.options.d.ts +10 -10
  115. package/package.json +1 -1
  116. package/dist/tttx/p-3b29e8af.entry.js +0 -1
  117. package/dist/tttx/p-637e7e88.entry.js +0 -1
@@ -1,9 +1,9 @@
1
- declare const _default: {
2
- title: string;
3
- component: string;
4
- };
5
- export default _default;
6
- export declare const KeyValueBlock: () => string;
7
- export declare const KeyValueSubtitleBlock: () => string;
8
- export declare const HorizontalKeyValueBlock: () => string;
9
- export declare const HorizontalKeyValueSubtitleBlock: () => string;
1
+ declare const _default: {
2
+ title: string;
3
+ component: string;
4
+ };
5
+ export default _default;
6
+ export declare const KeyValueBlock: () => string;
7
+ export declare const KeyValueSubtitleBlock: () => string;
8
+ export declare const HorizontalKeyValueBlock: () => string;
9
+ export declare const HorizontalKeyValueSubtitleBlock: () => string;
@@ -1,6 +1,6 @@
1
- export declare class TttxLoadingSpinner {
2
- loadingMessage: boolean;
3
- size: 'small' | 'large';
4
- renderLoadingMessage(): any;
5
- render(): any;
6
- }
1
+ export declare class TttxLoadingSpinner {
2
+ loadingMessage: boolean;
3
+ size: 'small' | 'large';
4
+ renderLoadingMessage(): any;
5
+ render(): any;
6
+ }
@@ -1,17 +1,17 @@
1
- declare const _default: {
2
- title: string;
3
- component: string;
4
- argTypes: {
5
- loadingMessage: {
6
- control: string;
7
- };
8
- size: {
9
- control: {
10
- type: string;
11
- };
12
- options: string[];
13
- };
14
- };
15
- };
16
- export default _default;
17
- export declare const Example: (args: any) => string;
1
+ declare const _default: {
2
+ title: string;
3
+ component: string;
4
+ argTypes: {
5
+ loadingMessage: {
6
+ control: string;
7
+ };
8
+ size: {
9
+ control: {
10
+ type: string;
11
+ };
12
+ options: string[];
13
+ };
14
+ };
15
+ };
16
+ export default _default;
17
+ export declare const Example: (args: any) => string;
@@ -1,8 +1,8 @@
1
- export declare class TttxQrCode {
2
- link: string;
3
- size: number;
4
- hostElement: HTMLElement;
5
- componentDidLoad(): void;
6
- setShadowCanvas(id: string, options: any): void;
7
- render(): any;
8
- }
1
+ export declare class TttxQrCode {
2
+ link: string;
3
+ size: number;
4
+ hostElement: HTMLElement;
5
+ componentDidLoad(): void;
6
+ setShadowCanvas(id: string, options: any): void;
7
+ render(): any;
8
+ }
@@ -1,23 +1,23 @@
1
- declare const _default: {
2
- title: string;
3
- component: string;
4
- argTypes: {
5
- url: {
6
- control: {
7
- type: string;
8
- };
9
- };
10
- size: {
11
- control: string;
12
- default: number;
13
- };
14
- };
15
- };
16
- export default _default;
17
- export declare const basicQRCode: {
18
- (args: any): string;
19
- args: {
20
- url: string;
21
- size: number;
22
- };
23
- };
1
+ declare const _default: {
2
+ title: string;
3
+ component: string;
4
+ argTypes: {
5
+ url: {
6
+ control: {
7
+ type: string;
8
+ };
9
+ };
10
+ size: {
11
+ control: string;
12
+ default: number;
13
+ };
14
+ };
15
+ };
16
+ export default _default;
17
+ export declare const basicQRCode: {
18
+ (args: any): string;
19
+ args: {
20
+ url: string;
21
+ size: number;
22
+ };
23
+ };
@@ -1,18 +1,18 @@
1
- import { EventEmitter } from '../../../stencil-public-runtime';
2
- import { DialogItems } from './interfaces';
3
- export declare class TttxDialogBox {
4
- data: string | DialogItems;
5
- size: 'regular' | 'mobile' | 'large' | 'small';
6
- elementSize: 'regular' | 'mobile' | 'large' | 'small';
7
- private _data;
8
- closeButtonClick: EventEmitter;
9
- buttonClick: EventEmitter;
10
- handleResize(): void;
11
- onCloseClickHandler(): void;
12
- onButtonClickHandler(index: number): void;
13
- renderHeader(header: any): any;
14
- renderContent(content: any): any;
15
- renderFooter(footer: any): any;
16
- componentWillLoad(): void;
17
- render(): any;
18
- }
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { DialogItems } from './interfaces';
3
+ export declare class TttxDialogBox {
4
+ data: string | DialogItems;
5
+ size: 'regular' | 'mobile' | 'large' | 'small';
6
+ elementSize: 'regular' | 'mobile' | 'large' | 'small';
7
+ private _data;
8
+ closeButtonClick: EventEmitter;
9
+ buttonClick: EventEmitter;
10
+ handleResize(): void;
11
+ onCloseClickHandler(): void;
12
+ onButtonClickHandler(index: number): void;
13
+ renderHeader(header: any): any;
14
+ renderContent(content: any): any;
15
+ renderFooter(footer: any): any;
16
+ componentWillLoad(): void;
17
+ render(): any;
18
+ }
@@ -1,24 +1,24 @@
1
- declare const _default: {
2
- title: string;
3
- component: string;
4
- parameters: {
5
- docs: {
6
- description: {
7
- component: string;
8
- };
9
- };
10
- };
11
- };
12
- export default _default;
13
- export declare const Default: any;
14
- export declare const Mobile: any;
15
- export declare const Small: any;
16
- export declare const Large: any;
17
- export declare const closeDisabled: any;
18
- export declare const Icon: any;
19
- export declare const Info: any;
20
- export declare const Success: any;
21
- export declare const Warning: any;
22
- export declare const Critical: any;
23
- export declare const CustomHTML: any;
24
- export declare const OverflowingText: any;
1
+ declare const _default: {
2
+ title: string;
3
+ component: string;
4
+ parameters: {
5
+ docs: {
6
+ description: {
7
+ component: string;
8
+ };
9
+ };
10
+ };
11
+ };
12
+ export default _default;
13
+ export declare const Default: any;
14
+ export declare const Mobile: any;
15
+ export declare const Small: any;
16
+ export declare const Large: any;
17
+ export declare const closeDisabled: any;
18
+ export declare const Icon: any;
19
+ export declare const Info: any;
20
+ export declare const Success: any;
21
+ export declare const Warning: any;
22
+ export declare const Critical: any;
23
+ export declare const CustomHTML: any;
24
+ export declare const OverflowingText: any;
@@ -1,43 +1,44 @@
1
- import { EventEmitter } from '../../../stencil-public-runtime';
2
- export interface FilterSettings {
3
- optionIcon: string;
4
- optionIconColor: string;
5
- optionText: string;
6
- }
7
- export interface FilterChangeEvent {
8
- selectedFilters: string[];
9
- filterKey: string;
10
- allSelected: boolean;
11
- }
12
- export declare class TttxFilter {
13
- filterKey: string;
14
- filterOptions: string | FilterSettings[];
15
- showSelectAll: boolean;
16
- showSearchField: boolean;
17
- showOptionIcons: boolean;
18
- filterButtonStyle: 'list filter' | 'list icon' | 'table icon';
19
- filterHeader: string;
20
- defaultFilterOptions: string[] | string;
21
- popoverWidth: string;
22
- showPopover: boolean;
23
- displayedFilterSettings: FilterSettings[];
24
- selectedFilters: string[];
25
- filterSearchTerm: string;
26
- allSelected: boolean;
27
- filterChangeEvent: EventEmitter<FilterChangeEvent>;
28
- el: any;
29
- handleCloseFilter(): void;
30
- emitFilterEvent(): void;
31
- onFilterButtonClick(): void;
32
- onCloseButtonClick(): void;
33
- onApplyFilterButtonClick(): void;
34
- onFilterOptionSelected(selectedOption: string): void;
35
- componentWillLoad(): void;
36
- togglePopover(): void;
37
- handleFilterChange(event: Event | InputEvent): void;
38
- onSelectAllClick(): void;
39
- getFilterButtonClassName(buttonStyle: string): "" | "--table-icon" | "--list-icon";
40
- parseFilterOptions(): any;
41
- parseDefaultFilterOptions(): any;
42
- render(): any;
43
- }
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ export interface FilterSettings {
3
+ optionIcon: string;
4
+ optionIconColor: string;
5
+ optionText: string;
6
+ }
7
+ export interface FilterChangeEvent {
8
+ selectedFilters: string[];
9
+ filterKey: string;
10
+ allSelected: boolean;
11
+ }
12
+ export declare class TttxFilter {
13
+ filterKey: string;
14
+ filterOptions: string | FilterSettings[];
15
+ showSelectAll: boolean;
16
+ showSearchField: boolean;
17
+ showOptionIcons: boolean;
18
+ filterButtonStyle: 'list filter' | 'list icon' | 'table icon';
19
+ filterHeader: string;
20
+ defaultFilterOptions: string[] | string;
21
+ popoverWidth: string;
22
+ showPopover: boolean;
23
+ displayedFilterSettings: FilterSettings[];
24
+ selectedFilters: string[];
25
+ filterSearchTerm: string;
26
+ allSelected: boolean;
27
+ filterChangeEvent: EventEmitter<FilterChangeEvent>;
28
+ toggleFilter: EventEmitter<boolean>;
29
+ el: any;
30
+ handleCloseFilter(): void;
31
+ emitFilterEvent(): void;
32
+ onFilterButtonClick(): void;
33
+ onCloseButtonClick(): void;
34
+ onApplyFilterButtonClick(): void;
35
+ onFilterOptionSelected(selectedOption: string): void;
36
+ componentWillLoad(): void;
37
+ togglePopover(): void;
38
+ handleFilterChange(event: Event | InputEvent): void;
39
+ onSelectAllClick(): void;
40
+ getFilterButtonClassName(buttonStyle: string): "" | "--table-icon" | "--list-icon";
41
+ parseFilterOptions(): any;
42
+ parseDefaultFilterOptions(): any;
43
+ render(): any;
44
+ }
@@ -0,0 +1,76 @@
1
+ declare const _default: {
2
+ title: string;
3
+ component: string;
4
+ argTypes: {
5
+ filterOptions: {
6
+ control: {
7
+ type: string;
8
+ };
9
+ };
10
+ filterButtonStyle: {
11
+ table: {
12
+ defaultValue: {
13
+ summary: string;
14
+ };
15
+ };
16
+ control: {
17
+ type: string;
18
+ };
19
+ options: string[];
20
+ };
21
+ showSearchField: {
22
+ table: {
23
+ defaultValue: {
24
+ summary: boolean;
25
+ };
26
+ };
27
+ control: {
28
+ type: string;
29
+ };
30
+ };
31
+ showSelectAll: {
32
+ table: {
33
+ defaultValue: {
34
+ summary: boolean;
35
+ };
36
+ };
37
+ control: {
38
+ type: string;
39
+ };
40
+ };
41
+ showOptionIcons: {
42
+ table: {
43
+ defaultValue: {
44
+ summary: boolean;
45
+ };
46
+ };
47
+ control: {
48
+ type: string;
49
+ };
50
+ };
51
+ filterHeader: {
52
+ control: {
53
+ type: string;
54
+ };
55
+ };
56
+ popoverWidth: {
57
+ control: {
58
+ type: string;
59
+ };
60
+ };
61
+ };
62
+ parameters: {
63
+ actions: {
64
+ handles: string[];
65
+ };
66
+ };
67
+ decorators: import("@storybook/types").Addon_DecoratorFunction<unknown>[];
68
+ };
69
+ export default _default;
70
+ export declare const Default: any;
71
+ export declare const CustomFilterOptions: any;
72
+ export declare const DefaultFilterOptions: any;
73
+ export declare const EverythingDefaultFilterOptions: any;
74
+ export declare const ListFilterWithoutSearchField: any;
75
+ export declare const TableIconWithoutOptionIconsOrSelectAll: any;
76
+ export declare const WithCustomWidth: any;
@@ -1,13 +1,13 @@
1
- /**
2
- * Sets the error state of an input field by updating its class and error message.
3
- * If an error was detected, it sets the input field's class to "invalid" and
4
- * displays the error message in an error bubble. If no error was detected,
5
- * it removes the "invalid" class from the input field and clears the error bubble.
6
- *
7
- * @param {HTMLInputElement} target - The input field to update.
8
- * @param {boolean} hasError - Whether an error was detected in the field.
9
- * @param {string} errorMessage - The error message to display (if any).
10
- * @return {void}
11
- */
12
- declare function setErrorState(target: any, hasError: any, errorMessage: any): void;
13
- export default setErrorState;
1
+ /**
2
+ * Sets the error state of an input field by updating its class and error message.
3
+ * If an error was detected, it sets the input field's class to "invalid" and
4
+ * displays the error message in an error bubble. If no error was detected,
5
+ * it removes the "invalid" class from the input field and clears the error bubble.
6
+ *
7
+ * @param {HTMLInputElement} target - The input field to update.
8
+ * @param {boolean} hasError - Whether an error was detected in the field.
9
+ * @param {string} errorMessage - The error message to display (if any).
10
+ * @return {void}
11
+ */
12
+ declare function setErrorState(target: any, hasError: any, errorMessage: any): void;
13
+ export default setErrorState;
@@ -1,17 +1,17 @@
1
- /**
2
- * Validates the input field on focusout event by checking its validity state,
3
- * sets an error message if there's an issue, and emits a "dataChanged" event to
4
- * the parent component with the field name and its new value.
5
- *
6
- * @param {Event} event - The focusout event triggered by the input field.
7
- * @return {void}
8
- */
9
- declare function validityCheck(event: {
10
- target: any;
11
- preventDefault: Function;
12
- }): {
13
- target: any;
14
- hasError: boolean;
15
- errorMessage: string;
16
- };
17
- export default validityCheck;
1
+ /**
2
+ * Validates the input field on focusout event by checking its validity state,
3
+ * sets an error message if there's an issue, and emits a "dataChanged" event to
4
+ * the parent component with the field name and its new value.
5
+ *
6
+ * @param {Event} event - The focusout event triggered by the input field.
7
+ * @return {void}
8
+ */
9
+ declare function validityCheck(event: {
10
+ target: any;
11
+ preventDefault: Function;
12
+ }): {
13
+ target: any;
14
+ hasError: boolean;
15
+ errorMessage: string;
16
+ };
17
+ export default validityCheck;