indicator-ui 0.1.46 → 0.1.48

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 (147) hide show
  1. package/dist/index.css +617 -0
  2. package/dist/index.css.map +1 -1
  3. package/dist/index.js +17548 -14323
  4. package/dist/index.js.map +1 -1
  5. package/dist/scss/ui/formFields/FormFieldWrapper/styles/mixins/index.scss +1 -0
  6. package/dist/scss/ui/formFields/FormFieldWrapper/styles/mixins/inputFieldWrapper.scss +50 -0
  7. package/dist/types/src/hooks/forms/__tests__/lib/getDataByPath.test.d.ts +1 -0
  8. package/dist/types/src/hooks/forms/__tests__/lib/getFormDataPaths.test.d.ts +1 -0
  9. package/dist/types/src/hooks/forms/__tests__/lib/setDataByPath.test.d.ts +1 -0
  10. package/dist/types/src/hooks/forms/__tests__/lib/utils.test.d.ts +1 -0
  11. package/dist/types/src/hooks/forms/classes/index.d.ts +44 -0
  12. package/dist/types/src/hooks/forms/index.d.ts +2 -0
  13. package/dist/types/src/hooks/forms/lib/fieldsProps.d.ts +11 -0
  14. package/dist/types/src/hooks/forms/lib/getDataByPath.d.ts +4 -0
  15. package/dist/types/src/hooks/forms/lib/getFormDataPaths.d.ts +5 -0
  16. package/dist/types/src/hooks/forms/lib/index.d.ts +5 -0
  17. package/dist/types/src/hooks/forms/lib/scheme.d.ts +13 -0
  18. package/dist/types/src/hooks/forms/lib/setDataByPath.d.ts +5 -0
  19. package/dist/types/src/hooks/forms/lib/utils.d.ts +9 -0
  20. package/dist/types/src/hooks/forms/types/formTypes.d.ts +51 -0
  21. package/dist/types/src/hooks/forms/types/index.d.ts +2 -3
  22. package/dist/types/src/hooks/forms/types/scheme.d.ts +151 -0
  23. package/dist/types/src/hooks/forms/useForm.d.ts +212 -0
  24. package/dist/types/src/hooks/forms/validateFunctions/config.d.ts +2 -0
  25. package/dist/types/src/hooks/forms/validateFunctions/index.d.ts +8 -0
  26. package/dist/types/src/hooks/forms/validateFunctions/validateArray.d.ts +1 -0
  27. package/dist/types/src/hooks/forms/validateFunctions/validateDateTime.d.ts +7 -0
  28. package/dist/types/src/hooks/forms/validateFunctions/validateEqualsTo.d.ts +1 -0
  29. package/dist/types/src/hooks/forms/validateFunctions/validateFile.d.ts +3 -0
  30. package/dist/types/src/hooks/forms/validateFunctions/validateNum.d.ts +6 -0
  31. package/dist/types/src/hooks/forms/validateFunctions/validateRequired.d.ts +1 -0
  32. package/dist/types/src/hooks/forms/validateFunctions/validateStr.d.ts +8 -0
  33. package/dist/types/src/hooks/index.d.ts +1 -0
  34. package/dist/types/src/lib/tsCheck/index.d.ts +1 -0
  35. package/dist/types/src/test/App.d.ts +1 -1
  36. package/dist/types/src/test/layout/PageLayout.d.ts +1 -1
  37. package/dist/types/src/test/pages/ButtonsPage.d.ts +1 -1
  38. package/dist/types/src/test/pages/CascadeSelectorPage.d.ts +1 -1
  39. package/dist/types/src/test/pages/CheckboxMarkPage.d.ts +1 -1
  40. package/dist/types/src/test/pages/CheckboxPage.d.ts +1 -1
  41. package/dist/types/src/test/pages/DateTimeFieldMaskPage.d.ts +1 -1
  42. package/dist/types/src/test/pages/DateTimeFieldsPage.d.ts +1 -1
  43. package/dist/types/src/test/pages/DateTimePickerPage.d.ts +1 -1
  44. package/dist/types/src/test/pages/DropdownItemPage.d.ts +1 -1
  45. package/dist/types/src/test/pages/FieldsPage.d.ts +1 -1
  46. package/dist/types/src/test/pages/FormBuilderPage.d.ts +1 -1
  47. package/dist/types/src/test/pages/FormPage.d.ts +1 -0
  48. package/dist/types/src/test/pages/HomePage.d.ts +1 -1
  49. package/dist/types/src/test/pages/LoadingIndicatorPage.d.ts +1 -1
  50. package/dist/types/src/test/pages/MediaPlayerPage.d.ts +1 -1
  51. package/dist/types/src/test/pages/MicroButtonsPage.d.ts +1 -1
  52. package/dist/types/src/test/pages/ModalsPage.d.ts +1 -1
  53. package/dist/types/src/test/pages/PaginationPage.d.ts +1 -1
  54. package/dist/types/src/test/pages/SlideTransitionPage.d.ts +1 -1
  55. package/dist/types/src/test/pages/TabFramePage.d.ts +1 -1
  56. package/dist/types/src/test/pages/TagPage.d.ts +1 -1
  57. package/dist/types/src/test/pages/TestPage.d.ts +1 -1
  58. package/dist/types/src/test/pages/ToggleBasePage.d.ts +1 -1
  59. package/dist/types/src/test/pages/TogglePage.d.ts +1 -1
  60. package/dist/types/src/test/pages/TooltipTage.d.ts +1 -1
  61. package/dist/types/src/test/pages/UiAnimationsPage.d.ts +1 -1
  62. package/dist/types/src/test/pages/UseSmartPositionPage.d.ts +1 -1
  63. package/dist/types/src/test/pages/UseSmartScrollPage.d.ts +1 -1
  64. package/dist/types/src/test/pages/UserPickPage.d.ts +1 -1
  65. package/dist/types/src/test/pages/index.d.ts +1 -0
  66. package/dist/types/src/types/mixins.d.ts +10 -0
  67. package/dist/types/src/ui/Carousel/ui/Carousel.d.ts +1 -1
  68. package/dist/types/src/ui/CascadeSelector/ui/CascadeSelector.d.ts +1 -1
  69. package/dist/types/src/ui/DateTimePicker/ui/components/CalendarButton.d.ts +1 -1
  70. package/dist/types/src/ui/DateTimePicker/ui/components/CalendarDay.d.ts +1 -1
  71. package/dist/types/src/ui/DateTimePicker/ui/components/CalendarMonth.d.ts +1 -1
  72. package/dist/types/src/ui/DateTimePicker/ui/components/CalendarYear.d.ts +1 -1
  73. package/dist/types/src/ui/DateTimePicker/ui/components/TimePickerFeed.d.ts +1 -1
  74. package/dist/types/src/ui/DateTimePicker/ui/components/TimePickerTag.d.ts +1 -1
  75. package/dist/types/src/ui/DateTimePicker/ui/parts/Footer.d.ts +1 -1
  76. package/dist/types/src/ui/DateTimePicker/ui/parts/Header.d.ts +1 -1
  77. package/dist/types/src/ui/DateTimePicker/ui/parts/Main.d.ts +1 -1
  78. package/dist/types/src/ui/DateTimePicker/ui/pickers/DatePicker.d.ts +1 -1
  79. package/dist/types/src/ui/DateTimePicker/ui/pickers/MonthPicker.d.ts +1 -1
  80. package/dist/types/src/ui/DateTimePicker/ui/pickers/TimePicker.d.ts +1 -1
  81. package/dist/types/src/ui/DateTimePicker/ui/pickers/YearPicker.d.ts +1 -1
  82. package/dist/types/src/ui/Dropdown/types/DropdownTypes.d.ts +5 -0
  83. package/dist/types/src/ui/DropdownItem/types/DropdownItemTypes.d.ts +5 -0
  84. package/dist/types/src/ui/FormBuilder/lib/formBuilder.d.ts +1 -1
  85. package/dist/types/src/ui/InputFields/DateTimeField/ui/DateField.d.ts +1 -1
  86. package/dist/types/src/ui/InputFields/DateTimeField/ui/DateFieldBase.d.ts +1 -1
  87. package/dist/types/src/ui/InputFields/DateTimeField/ui/DateTimeField.d.ts +1 -1
  88. package/dist/types/src/ui/InputFields/DateTimeField/ui/TimeField.d.ts +1 -1
  89. package/dist/types/src/ui/InputFields/DateTimeField/ui/TimeFieldBase.d.ts +1 -1
  90. package/dist/types/src/ui/InputFields/DateTimeFieldMask/ui/DateTimeFieldMask.d.ts +1 -1
  91. package/dist/types/src/ui/InputFields/DateTimeRangeField/ui/DateRangeField.d.ts +1 -1
  92. package/dist/types/src/ui/InputFields/DateTimeRangeField/ui/DateTimeRangeField.d.ts +1 -1
  93. package/dist/types/src/ui/InputFields/DateTimeRangeField/ui/TimeRangeField.d.ts +1 -1
  94. package/dist/types/src/ui/InputFields/SelectField/types/SelectFieldTypes.d.ts +4 -0
  95. package/dist/types/src/ui/InputFields/TextareaField/ui/TextareaField.d.ts +1 -1
  96. package/dist/types/src/ui/Loaders/ui/LoadingIndicator.d.ts +1 -1
  97. package/dist/types/src/ui/MediaViewer/ui/components/ControlBar.d.ts +1 -1
  98. package/dist/types/src/ui/MediaViewer/ui/components/VideoProgressBar.d.ts +1 -1
  99. package/dist/types/src/ui/PaginationBar/ui/PageSwitcher.d.ts +1 -1
  100. package/dist/types/src/ui/PaginationBar/ui/PaginationBar.d.ts +1 -1
  101. package/dist/types/src/ui/PlayButton/ui/PlayButton.d.ts +1 -1
  102. package/dist/types/src/ui/SlideTransition/ui/SlideTransition.d.ts +1 -1
  103. package/dist/types/src/ui/TabButtons/ui/TabButtons.d.ts +1 -1
  104. package/dist/types/src/ui/TabFrame/ui/TabFrame.d.ts +1 -1
  105. package/dist/types/src/ui/Tag/ui/Tag.d.ts +1 -1
  106. package/dist/types/src/ui/Tag/ui/TagCheckbox.d.ts +1 -1
  107. package/dist/types/src/ui/Tag/ui/TagCount.d.ts +1 -1
  108. package/dist/types/src/ui/Toggle/ui/Toggle.d.ts +1 -1
  109. package/dist/types/src/ui/Tooltip/ui/Tooltip.d.ts +1 -1
  110. package/dist/types/src/ui/UserPick/ui/UserPick.d.ts +1 -1
  111. package/dist/types/src/ui/formFields/FormField/index.d.ts +1 -0
  112. package/dist/types/src/ui/formFields/FormField/styles/index.d.ts +1 -0
  113. package/dist/types/src/ui/formFields/FormField/ui/FormField.d.ts +6 -0
  114. package/dist/types/src/ui/formFields/FormField/ui/FormFieldBase.d.ts +19 -0
  115. package/dist/types/src/ui/formFields/FormField/ui/index.d.ts +2 -0
  116. package/dist/types/src/ui/formFields/FormFieldWrapper/index.d.ts +1 -0
  117. package/dist/types/src/ui/formFields/FormFieldWrapper/styles/index.d.ts +1 -0
  118. package/dist/types/src/ui/formFields/FormFieldWrapper/ui/FormFieldWrapper.d.ts +24 -0
  119. package/dist/types/src/ui/formFields/FormFieldWrapper/ui/index.d.ts +1 -0
  120. package/dist/types/src/ui/formFields/FormRadioField/index.d.ts +1 -0
  121. package/dist/types/src/ui/formFields/FormRadioField/ui/FieldItem.d.ts +11 -0
  122. package/dist/types/src/ui/formFields/FormRadioField/ui/FormRadioField.d.ts +18 -0
  123. package/dist/types/src/ui/formFields/FormRadioField/ui/index.d.ts +1 -0
  124. package/dist/types/src/ui/formFields/FormSelectField/config/index.d.ts +1 -0
  125. package/dist/types/src/ui/formFields/FormSelectField/index.d.ts +1 -0
  126. package/dist/types/src/ui/formFields/FormSelectField/styles/index.d.ts +1 -0
  127. package/dist/types/src/ui/formFields/FormSelectField/ui/FormSelectField.d.ts +8 -0
  128. package/dist/types/src/ui/formFields/FormSelectField/ui/FormSelectFieldBase.d.ts +21 -0
  129. package/dist/types/src/ui/formFields/FormSelectField/ui/index.d.ts +2 -0
  130. package/dist/types/src/ui/formFields/FormSwitcherField/index.d.ts +1 -0
  131. package/dist/types/src/ui/formFields/FormSwitcherField/ui/FormSwitcherField.d.ts +5 -0
  132. package/dist/types/src/ui/formFields/FormSwitcherField/ui/index.d.ts +1 -0
  133. package/dist/types/src/ui/formFields/FormTextareaField/index.d.ts +1 -0
  134. package/dist/types/src/ui/formFields/FormTextareaField/styles/index.d.ts +1 -0
  135. package/dist/types/src/ui/formFields/FormTextareaField/ui/FormTextareaField.d.ts +14 -0
  136. package/dist/types/src/ui/formFields/FormTextareaField/ui/index.d.ts +1 -0
  137. package/dist/types/src/ui/formFields/extends/index.d.ts +1 -0
  138. package/dist/types/src/ui/formFields/extends/style/index.d.ts +2 -0
  139. package/dist/types/src/ui/formFields/extends/ui/DropdownArrow.d.ts +6 -0
  140. package/dist/types/src/ui/formFields/extends/ui/InputInnerButton.d.ts +7 -0
  141. package/dist/types/src/ui/formFields/extends/ui/index.d.ts +2 -0
  142. package/dist/types/src/ui/formFields/index.d.ts +6 -0
  143. package/dist/types/src/ui/index.d.ts +1 -0
  144. package/docs/Notes.md +134 -0
  145. package/package.json +2 -2
  146. package/dist/scss/ui/InputFields/index.scss +0 -7
  147. package/dist/types/src/hooks/forms/useForms.d.ts +0 -3
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { ComponentRefType } from "../../../../../../types";
3
+ import { FormSelectFieldBase } from './FormSelectFieldBase';
4
+ import { FormFieldWrapper } from '../../FormFieldWrapper';
5
+ type RefType = ComponentRefType<typeof FormFieldWrapper>;
6
+ type PropsType<D, M extends boolean> = React.ComponentProps<typeof FormSelectFieldBase<D, M>> & React.ComponentProps<typeof FormFieldWrapper>;
7
+ export declare const FormSelectField: <D, M extends boolean = false>(props: PropsType<D, M> & React.RefAttributes<RefType>) => React.ReactElement | null;
8
+ export {};
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import { FieldPropsType } from "../../../../hooks";
3
+ import { DropdownItemPropsType } from "../../../../ui";
4
+ import { FormFieldBase } from '../../FormField';
5
+ type SelectFieldOptionsExtendItemType<T> = DropdownItemPropsType & {
6
+ value: T;
7
+ label?: string;
8
+ };
9
+ type SelectFieldOptionsItemType<T> = SelectFieldOptionsExtendItemType<T> | T;
10
+ type SelectFieldOptionsType<T> = Array<SelectFieldOptionsItemType<T>>;
11
+ type SelectFieldValueType<D, M> = M extends true ? Array<D> : D;
12
+ type BasePropsType<D, M extends boolean> = {
13
+ options?: SelectFieldOptionsType<D>;
14
+ multiple?: M;
15
+ theme?: "light" | "dark";
16
+ disabled?: boolean;
17
+ required?: boolean;
18
+ };
19
+ type PropsType<D, M extends boolean> = Omit<React.ComponentProps<typeof FormFieldBase>, keyof BasePropsType<D, M> | keyof FieldPropsType<SelectFieldValueType<D, M>>> & FieldPropsType<SelectFieldValueType<D, M>> & BasePropsType<D, M>;
20
+ export declare function FormSelectFieldBase<D, M extends boolean = false>(props: PropsType<D, M>): import("react/jsx-runtime").JSX.Element;
21
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './FormSelectFieldBase';
2
+ export * from './FormSelectField';
@@ -0,0 +1 @@
1
+ export * from './ui';
@@ -0,0 +1,5 @@
1
+ import { TogglePropsType } from "../../../../ui";
2
+ import { FieldPropsType } from "../../../../hooks";
3
+ type PropsType = Omit<TogglePropsType, keyof FieldPropsType<boolean>> & FieldPropsType<boolean>;
4
+ export declare function FormSwitcherField(props: PropsType): JSX.Element;
5
+ export {};
@@ -0,0 +1 @@
1
+ export * from './FormSwitcherField';
@@ -0,0 +1 @@
1
+ export * from './ui';
@@ -0,0 +1 @@
1
+ export { default as TextareaFieldStyle } from './TextareaField.module.scss';
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { FieldPropsType } from "../../../../hooks";
3
+ type BasePropsType = FieldPropsType<string> & {
4
+ /**
5
+ * Изменяет размер текстового поля, если текст не помещается.
6
+ *
7
+ * По умолчанию: ```false```
8
+ * */
9
+ autoResize?: boolean;
10
+ theme?: "light" | "dark";
11
+ };
12
+ type PropsType = Omit<React.ComponentProps<'textarea'>, keyof BasePropsType> & BasePropsType;
13
+ export declare function FormTextareaField(props: PropsType): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1 @@
1
+ export * from './FormTextareaField';
@@ -0,0 +1 @@
1
+ export * from './ui';
@@ -0,0 +1,2 @@
1
+ export { default as DropdownArrowStyle } from './DropdownArrow.module.scss';
2
+ export { default as InputInnerButtonStyle } from './InputInnerButton.module.scss';
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ type PropsType = React.ComponentProps<'button'> & {
3
+ open?: boolean;
4
+ };
5
+ export declare function DropdownArrow(props: PropsType): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ type PropsType = React.ComponentProps<'button'> & {
3
+ icon: React.ReactNode;
4
+ color: 'gray' | 'red';
5
+ };
6
+ export declare function InputInnerButton(props: PropsType): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './DropdownArrow';
2
+ export * from './InputInnerButton';
@@ -0,0 +1,6 @@
1
+ export * from './FormField';
2
+ export * from './FormSelectField';
3
+ export * from './FormFieldWrapper';
4
+ export * from './FormSwitcherField';
5
+ export * from './FormRadioField';
6
+ export * from './FormTextareaField';
@@ -25,3 +25,4 @@ export * from './PlayButton';
25
25
  export * from './DateTimePicker';
26
26
  export * from './Tooltip';
27
27
  export * from './Dropdown';
28
+ export * from './formFields';
package/docs/Notes.md CHANGED
@@ -53,3 +53,137 @@ newEl.addEventListener("dragover", e => {
53
53
 
54
54
  `Keydown` событие срабатывает только на сфокусированном объекте и всплывает вверх по дереву, пока не встретит слушатель.
55
55
  После обработки слушателем идет дальше - искать следующий (если не отменить всплытие).
56
+
57
+
58
+
59
+ ## Про `TS`
60
+
61
+ ### Бесконечная рекурсия в типах или ***Type instantiation is excessively deep and possibly infinite.***
62
+
63
+ Давайте рассмотрим такой пример рекурсивных типов.
64
+
65
+ ```typescript
66
+ type GetBaseKeyChains<P extends string, T> =
67
+ IsAny<T> extends false
68
+ ? P | `${P}${GetDeepKeyChains<T> | GetArrayKeyChains<T>}`
69
+ : P | `${P}${'.' | '['}${string}`
70
+
71
+ type GetArrayKeyChains<T> =
72
+ IsArray<T> extends false
73
+ ? never
74
+ : ClearArrayType<T> extends infer Arr
75
+ ? IsTuple<Arr> extends true
76
+ ? {
77
+ [K in Extract<keyof Arr, `${number}`>]: GetBaseKeyChains<`[${K}]`, Arr[K]>
78
+ }[Extract<keyof Arr, `${number}`>]
79
+ : Arr extends any[]
80
+ ? `[${number}]` | GetBaseKeyChains<`[${number}]`, Arr[number]>
81
+ : never
82
+ : never
83
+
84
+ type GetDeepKeyChains<T> =
85
+ IsObjectType<T> extends false
86
+ ? never
87
+ : ClearObjectType<T> extends infer Form
88
+ ? {
89
+ [K in Extract<keyof Form, string>]: GetBaseKeyChains<`.${K}`, Form[K]>
90
+ }[Extract<keyof Form, string>]
91
+ : never
92
+
93
+
94
+ export type FormPath<T> = '' |
95
+ (
96
+ IsObjectType<T> extends false
97
+ ? GetArrayKeyChains<T>
98
+ : ClearObjectType<T> extends infer Form
99
+ ? {
100
+ [K in Extract<keyof Form, string>]: GetBaseKeyChains<`${K}`, Form[K]>
101
+ }[Extract<keyof Form, string>]
102
+ : never
103
+ )
104
+ ```
105
+
106
+ Как видно из примера, `GetBaseKeyChains` вызывает `GetArrayKeyChains` и `GetDeepKeyChains`,
107
+ а они в свою очередь вызывают его, что создаёт рекурсию.
108
+
109
+ Все бы хорошо, тип рабочий, всё правильно делает, но когда ты начинаешь его использовать в других типах,
110
+ которые используются в других типах и т. д., `ts` начинает офигевать от "глубины" наших намерений и предлагает поумерить пыл.
111
+
112
+ ```
113
+ TS2589: Type instantiation is excessively deep and possibly infinite.
114
+ ```
115
+
116
+ Ошибка говорит о том, что слишком глубоко и, возможно, бесконечно.
117
+ Чтобы не было бесконечно, у рекурсии обязательно должно быть условие выхода.
118
+ Есть ли оно у этой?
119
+
120
+ Да, есть — `IsObjectType<T> extends false ? never : ...` или `IsArray<T> extends false ? never :` или `IsAny<T> extends false ...`
121
+
122
+ Но почему же `ts` всё равно ругается на `possibly infinite`? Ах да — `excessively deep`, `ts` ленивый.
123
+ Если он видит, что тип вывести слишком тяжело, он такой: "Не братан, по-моему, тут слишком глубоко и бесконечно".
124
+
125
+ На самом деле это круто, что есть такой защитный механизм, но как всё же победить это? Давайте разбираться.
126
+
127
+ Один из способов (и это единственный, который мы рассмотрим, но он довольно логичный и исходит из защиты от слишком
128
+ глубокой рекурсии в нормальных языках программирования) — это ограничить глубину рекурсии.
129
+
130
+ ```typescript
131
+ type SafeRecursiveArr = [1, 2, 3, 4, 5]
132
+ type SafeRecursiveStep<T> = T extends [infer _, ...infer Rest] ? Rest : never
133
+ type CanContinueRecursive<T> = SafeRecursiveStep<T> extends never ? false : true
134
+ ```
135
+
136
+ Здесь мы создали пару конструкций, которые помогут отслеживать возможность продолжать спуск и
137
+ уменьшать счётчик допустимой глубины.
138
+
139
+ Круто, теперь имплементируем это в наши изначальные типы.
140
+
141
+ ```typescript
142
+ type GetBaseKeyChains<P extends string, T, SafeArr> =
143
+ CanContinueRecursive<SafeArr> extends false
144
+ ? never
145
+ : IsAny<T> extends false
146
+ ? P | `${P}${GetDeepKeyChains<T, SafeRecursiveStep<SafeArr>> | GetArrayKeyChains<T, SafeRecursiveStep<SafeArr>>}`
147
+ : P | `${P}${'.' | '['}${string}`
148
+
149
+ type GetArrayKeyChains<T, SafeArr> =
150
+ CanContinueRecursive<SafeArr> extends false
151
+ ? never
152
+ : IsArray<T> extends false
153
+ ? never
154
+ : ClearArrayType<T> extends infer Arr
155
+ ? IsTuple<Arr> extends true
156
+ ? {
157
+ [K in Extract<keyof Arr, `${number}`>]: GetBaseKeyChains<`[${K}]`, Arr[K], SafeRecursiveStep<SafeArr>>
158
+ }[Extract<keyof Arr, `${number}`>]
159
+ : Arr extends any[]
160
+ ? `[${number}]` | GetBaseKeyChains<`[${number}]`, Arr[number], SafeRecursiveStep<SafeArr>>
161
+ : never
162
+ : never
163
+
164
+ type GetDeepKeyChains<T, SafeArr> =
165
+ CanContinueRecursive<SafeArr> extends false
166
+ ? never
167
+ : IsObjectType<T> extends false
168
+ ? never
169
+ : ClearObjectType<T> extends infer Form
170
+ ? {
171
+ [K in Extract<keyof Form, string>]: GetBaseKeyChains<`.${K}`, Form[K], SafeRecursiveStep<SafeArr>>
172
+ }[Extract<keyof Form, string>]
173
+ : never
174
+
175
+
176
+ export type FormPath<T> = '' |
177
+ (
178
+ IsObjectType<T> extends false
179
+ ? GetArrayKeyChains<T, SafeRecursiveArr>
180
+ : ClearObjectType<T> extends infer Form
181
+ ? {
182
+ [K in Extract<keyof Form, string>]: GetBaseKeyChains<`${K}`, Form[K], SafeRecursiveArr>
183
+ }[Extract<keyof Form, string>]
184
+ : never
185
+ )
186
+ ```
187
+
188
+ Теперь `ts` будет нормально реагировать на использование типа `FormPath` в других типах,
189
+ и можно не бояться увидеть сообщение об ошибке.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "indicator-ui",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/types/src/index.d.ts",
6
6
  "style": "dist/index.css",
@@ -63,7 +63,7 @@
63
63
  "tsconfig-paths-webpack-plugin": "^4.2.0",
64
64
  "tslib": "^2.8.1",
65
65
  "typed-css-modules-webpack-plugin": "^0.2.0",
66
- "typescript": "^5.7.3",
66
+ "typescript": "^5.9.3",
67
67
  "webpack": "^5.97.1",
68
68
  "webpack-cli": "^6.0.1",
69
69
  "webpack-dev-server": "^5.2.0"
@@ -1,7 +0,0 @@
1
- @forward "FlexField";
2
- @forward "InputFieldWrapper";
3
- @forward "RadioField";
4
- @forward "SelectField";
5
- @forward "SwitcherField";
6
- @forward "TextareaField";
7
- @forward "InputField";
@@ -1,3 +0,0 @@
1
- type PropsType = [];
2
- export declare function useForms(...args: PropsType): void;
3
- export {};