pne-ui 4.3.0-rc.13 → 4.3.0-rc.14

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 (112) hide show
  1. package/README.md +126 -0
  2. package/cjs/component/PneCheckbox.js +2 -0
  3. package/cjs/component/PneCheckbox.js.map +1 -1
  4. package/cjs/component/PneField.d.ts +49 -9
  5. package/cjs/component/PneField.js +108 -23
  6. package/cjs/component/PneField.js.map +1 -1
  7. package/cjs/component/PneFieldContext.d.ts +30 -9
  8. package/cjs/component/PneFieldContext.js +33 -13
  9. package/cjs/component/PneFieldContext.js.map +1 -1
  10. package/cjs/component/PneModal.d.ts +65 -22
  11. package/cjs/component/PneModal.js +308 -31
  12. package/cjs/component/PneModal.js.map +1 -1
  13. package/cjs/component/PneModalActions.d.ts +12 -3
  14. package/cjs/component/PneModalActions.js +57 -31
  15. package/cjs/component/PneModalActions.js.map +1 -1
  16. package/cjs/component/PneSwitch.js +2 -0
  17. package/cjs/component/PneSwitch.js.map +1 -1
  18. package/cjs/component/PneTextField.js +122 -23
  19. package/cjs/component/PneTextField.js.map +1 -1
  20. package/cjs/component/PneToggleInput.d.ts +2 -0
  21. package/cjs/component/PneToggleInput.js +15 -1
  22. package/cjs/component/PneToggleInput.js.map +1 -1
  23. package/cjs/component/confirm/PneConfirmProvider.js +4 -1
  24. package/cjs/component/confirm/PneConfirmProvider.js.map +1 -1
  25. package/cjs/component/dropdown/PneAutocompleteShared.js +5 -7
  26. package/cjs/component/dropdown/PneAutocompleteShared.js.map +1 -1
  27. package/cjs/component/dropdown/PneSelect.js +38 -10
  28. package/cjs/component/dropdown/PneSelect.js.map +1 -1
  29. package/cjs/component/non-abstract-entity-selector/AbstractEntitySelectModal.d.ts +1 -0
  30. package/cjs/component/non-abstract-entity-selector/AbstractEntitySelectModal.js +5 -2
  31. package/cjs/component/non-abstract-entity-selector/AbstractEntitySelectModal.js.map +1 -1
  32. package/cjs/component/search-ui/filters/component/criterion/GroupingCriterion.js +1 -6
  33. package/cjs/component/search-ui/filters/component/criterion/GroupingCriterion.js.map +1 -1
  34. package/cjs/component/search-ui/filters/component/criterion/MultigetCriterionPanel.js +6 -9
  35. package/cjs/component/search-ui/filters/component/criterion/MultigetCriterionPanel.js.map +1 -1
  36. package/cjs/component/search-ui/filters/component/criterion/TransactionSessionStatusCriterion.js +6 -9
  37. package/cjs/component/search-ui/filters/component/criterion/TransactionSessionStatusCriterion.js.map +1 -1
  38. package/cjs/component/search-ui/filters/component/template/SearchUITemplatePanel.js +6 -9
  39. package/cjs/component/search-ui/filters/component/template/SearchUITemplatePanel.js.map +1 -1
  40. package/cjs/component/widget-board/WidgetBoardHeaderControls.js +1 -1
  41. package/cjs/component/widget-board/WidgetBoardHeaderControls.js.map +1 -1
  42. package/cjs/component/widget-board/WidgetBoardVisibilityModal.js +1 -1
  43. package/cjs/component/widget-board/WidgetBoardVisibilityModal.js.map +1 -1
  44. package/cjs/component/widget-board/WidgetLayoutsPanel.js +1 -1
  45. package/cjs/component/widget-board/WidgetLayoutsPanel.js.map +1 -1
  46. package/cjs/exports/buttons.d.ts +0 -1
  47. package/cjs/exports/buttons.js +1 -3
  48. package/cjs/exports/buttons.js.map +1 -1
  49. package/cjs/exports/inputs.d.ts +3 -1
  50. package/cjs/exports/inputs.js +3 -1
  51. package/cjs/exports/inputs.js.map +1 -1
  52. package/cjs/exports/modals.d.ts +1 -1
  53. package/cjs/exports/modals.js.map +1 -1
  54. package/esm/component/PneCheckbox.js +2 -0
  55. package/esm/component/PneCheckbox.js.map +1 -1
  56. package/esm/component/PneField.d.ts +49 -9
  57. package/esm/component/PneField.js +109 -24
  58. package/esm/component/PneField.js.map +1 -1
  59. package/esm/component/PneFieldContext.d.ts +30 -9
  60. package/esm/component/PneFieldContext.js +30 -10
  61. package/esm/component/PneFieldContext.js.map +1 -1
  62. package/esm/component/PneModal.d.ts +65 -22
  63. package/esm/component/PneModal.js +310 -33
  64. package/esm/component/PneModal.js.map +1 -1
  65. package/esm/component/PneModalActions.d.ts +12 -3
  66. package/esm/component/PneModalActions.js +57 -31
  67. package/esm/component/PneModalActions.js.map +1 -1
  68. package/esm/component/PneSwitch.js +2 -0
  69. package/esm/component/PneSwitch.js.map +1 -1
  70. package/esm/component/PneTextField.js +122 -23
  71. package/esm/component/PneTextField.js.map +1 -1
  72. package/esm/component/PneToggleInput.d.ts +2 -0
  73. package/esm/component/PneToggleInput.js +15 -1
  74. package/esm/component/PneToggleInput.js.map +1 -1
  75. package/esm/component/confirm/PneConfirmProvider.js +4 -1
  76. package/esm/component/confirm/PneConfirmProvider.js.map +1 -1
  77. package/esm/component/dropdown/PneAutocompleteShared.js +5 -7
  78. package/esm/component/dropdown/PneAutocompleteShared.js.map +1 -1
  79. package/esm/component/dropdown/PneSelect.js +38 -10
  80. package/esm/component/dropdown/PneSelect.js.map +1 -1
  81. package/esm/component/non-abstract-entity-selector/AbstractEntitySelectModal.d.ts +1 -0
  82. package/esm/component/non-abstract-entity-selector/AbstractEntitySelectModal.js +5 -2
  83. package/esm/component/non-abstract-entity-selector/AbstractEntitySelectModal.js.map +1 -1
  84. package/esm/component/search-ui/filters/component/criterion/GroupingCriterion.js +1 -6
  85. package/esm/component/search-ui/filters/component/criterion/GroupingCriterion.js.map +1 -1
  86. package/esm/component/search-ui/filters/component/criterion/MultigetCriterionPanel.js +6 -9
  87. package/esm/component/search-ui/filters/component/criterion/MultigetCriterionPanel.js.map +1 -1
  88. package/esm/component/search-ui/filters/component/criterion/TransactionSessionStatusCriterion.js +6 -9
  89. package/esm/component/search-ui/filters/component/criterion/TransactionSessionStatusCriterion.js.map +1 -1
  90. package/esm/component/search-ui/filters/component/template/SearchUITemplatePanel.js +6 -9
  91. package/esm/component/search-ui/filters/component/template/SearchUITemplatePanel.js.map +1 -1
  92. package/esm/component/widget-board/WidgetBoardHeaderControls.js +1 -1
  93. package/esm/component/widget-board/WidgetBoardHeaderControls.js.map +1 -1
  94. package/esm/component/widget-board/WidgetBoardVisibilityModal.js +1 -1
  95. package/esm/component/widget-board/WidgetBoardVisibilityModal.js.map +1 -1
  96. package/esm/component/widget-board/WidgetLayoutsPanel.js +1 -1
  97. package/esm/component/widget-board/WidgetLayoutsPanel.js.map +1 -1
  98. package/esm/exports/buttons.d.ts +0 -1
  99. package/esm/exports/buttons.js +0 -1
  100. package/esm/exports/buttons.js.map +1 -1
  101. package/esm/exports/inputs.d.ts +3 -1
  102. package/esm/exports/inputs.js +1 -0
  103. package/esm/exports/inputs.js.map +1 -1
  104. package/esm/exports/modals.d.ts +1 -1
  105. package/esm/exports/modals.js.map +1 -1
  106. package/package.json +1 -1
  107. package/cjs/component/PneButtonGroup.d.ts +0 -3
  108. package/cjs/component/PneButtonGroup.js +0 -20
  109. package/cjs/component/PneButtonGroup.js.map +0 -1
  110. package/esm/component/PneButtonGroup.d.ts +0 -3
  111. package/esm/component/PneButtonGroup.js +0 -15
  112. package/esm/component/PneButtonGroup.js.map +0 -1
package/README.md CHANGED
@@ -49,6 +49,79 @@ major-версии MUI не входят в поддерживаемый peer co
49
49
  Компонент сохраняет polymorphic MUI-контракт для `component` и `href`; типы DOM props, событий и `ref`
50
50
  выводятся из фактического root element. Это поведение рассчитано на React 19 ref-as-prop.
51
51
 
52
+ `PneButtonGroup` удалён из публичного API. Для группировки используйте `ButtonGroup` напрямую из
53
+ `@mui/material`; расстояние между независимыми действиями задавайте на layout-контейнере.
54
+
55
+ ## PneField
56
+
57
+ `PneField` задаёт общий семантический контракт для одного поля: label, helper text, error/disabled/required state и
58
+ их ARIA-связи с единственным логическим control или control group. `PneTextField`, `PneSelect`,
59
+ `PneAutocomplete`, `PneAsyncAutocomplete`, `PneCheckbox` и `PneSwitch` читают этот контракт автоматически.
60
+ Внутри `PneField` должен быть ровно один логический control; для группы передавайте один group component, а не
61
+ несколько соседних controls. `PneField` не принимает ID произвольной layout-обёртки за ID самого control.
62
+
63
+ `id` принадлежит root `FormControl` и служит namespace для сгенерированных ID. `controlId` принадлежит самому
64
+ интерактивному control и используется в `label[for]`; эти ID должны различаться. Указанный на child `id` не
65
+ переопределяет field-owned ID, поэтому при миграции переносите его в `controlId`. Prop `htmlFor` оставлен только
66
+ как deprecated alias `controlId` и не должен использоваться в новом коде. ID обрезаются по краям; пустые ID и
67
+ ID с внутренними пробельными символами считаются невалидными, игнорируются и заменяются сгенерированными.
68
+
69
+ ```tsx
70
+ <PneField
71
+ id="delivery-field"
72
+ controlId="delivery-control"
73
+ label="Delivery server"
74
+ helperText="Select one server"
75
+ slotProps={{
76
+ label: {id: "delivery-label", "data-autotest": "delivery-label"},
77
+ helperText: {id: "delivery-help", "data-autotest": "delivery-help"},
78
+ }}
79
+ >
80
+ <PneSelect options={servers} value={server} onChange={setServer}/>
81
+ </PneField>
82
+ ```
83
+
84
+ Для произвольного control используйте render prop и передайте результат `getControlProps` на фактический
85
+ focusable control или group root. Adapter сохраняет дополнительные props, объединяет consumer
86
+ `aria-labelledby`/`aria-describedby` с ID label/helper text и дедуплицирует ссылки. Явный `aria-label`
87
+ остаётся самостоятельным naming override и не смешивается с `aria-labelledby`. При disabled field adapter
88
+ возвращает одновременно `disabled` и `aria-disabled`; это сохраняет нативную/MUI блокировку и корректно
89
+ описывает composite control с group-role.
90
+
91
+ ```tsx
92
+ <PneField label="Period" helperText="Choose a unit" error={Boolean(error)} required>
93
+ {({getControlProps, fullWidth}) => (
94
+ <ToggleButtonGroup
95
+ {...getControlProps({"aria-describedby": "period-format"})}
96
+ exclusive
97
+ sx={{width: fullWidth ? "100%" : "auto"}}
98
+ value={period}
99
+ onChange={(_event, value) => setPeriod(value)}
100
+ >
101
+ <ToggleButton value="day">Day</ToggleButton>
102
+ <ToggleButton value="week">Week</ToggleButton>
103
+ </ToggleButtonGroup>
104
+ )}
105
+ </PneField>
106
+ ```
107
+
108
+ Если adapter нужен внутри отдельного descendant component, вызовите `usePneFieldControl()` там; вне
109
+ `PneField` hook возвращает `undefined`. Render prop предпочтительнее для прямой композиции, потому что явно
110
+ показывает место применения DOM-контракта.
111
+
112
+ `PneField` владеет ID и связями label/helper text. Значения `true` у field-level `disabled`, `error` и
113
+ `required` нельзя ослабить props дочернего control; его дополнительные ARIA ID при этом не теряются. Явный
114
+ `fullWidth` у встроенного PNE control может переопределить field default. `required` на `PneField` добавляет
115
+ asterisk и `aria-required`, но намеренно не устанавливает нативный `required`: browser constraint validation
116
+ включается только `required` на самом input/select/checkbox/switch.
117
+
118
+ `slotProps.label` и `slotProps.helperText` предназначены для `id`, `className`, `sx`, `ref`, ARIA и `data-*`
119
+ соответствующих slots. Старые `labelSx` и `helperTextSx` deprecated. Split-state props MUI FormControl
120
+ (`color`, `focused`, `hiddenLabel`, `size`, `variant`) не входят в публичный API `PneField`; внешний вид control
121
+ настраивается на самом control, а label/helper — через `slotProps`. Root остаётся polymorphic через `component`,
122
+ и тип `ref` выводится из выбранного root element. `margin` остаётся исключительно layout-prop root
123
+ `FormControl` и не передаётся дочернему control.
124
+
52
125
  ## PneTextField
53
126
 
54
127
  `PneTextField` сохраняет API MUI `TextField` и по умолчанию использует `size="small"`. Его `ref` указывает на
@@ -106,6 +179,59 @@ ID helper text, сохраняет явный `helperTextProps.id` и объед
106
179
  </PneField>
107
180
  ```
108
181
 
182
+ ## PneModal и PneModalActions
183
+
184
+ `PneModal` владеет структурой dialog, focus trap и ARIA-связями. Передайте видимый `title`; для модалок без
185
+ визуального заголовка используйте `ariaLabel`. Если компонент внутри `title` сам возвращает `null`, передайте
186
+ `title={null}` и `ariaLabel` явно: содержимое произвольного React-компонента нельзя определить до его рендера.
187
+ `title` и `subtitle` принимают `ReactNode`. `ref` указывает на
188
+ `HTMLDivElement` с `role="dialog"`. Структурные `role`, `aria-modal`, `aria-labelledby` и `aria-describedby`
189
+ нельзя переопределить через container slot; дополнительное описание подключается через `ariaDescribedBy`.
190
+
191
+ `onClose(event, reason)` различает `closeButtonClick`, `escapeKeyDown` и `backdropClick`. Существующие callbacks
192
+ без аргументов остаются совместимыми. `closeLabel` необязателен и по умолчанию равен `Close`; передавайте перевод
193
+ только там, где он доступен consumer-у. `hideCloseButton` скрывает icon button без дополнительных обязательных
194
+ props.
195
+
196
+ ```tsx
197
+ <PneModal
198
+ actions={<PneModalActions
199
+ secondary={<PneButton pneStyle="outlined">Cancel</PneButton>}
200
+ primary={<PneButton>Save</PneButton>}
201
+ />}
202
+ closeLabel="Close"
203
+ onClose={(_event, reason) => {
204
+ if (reason !== "backdropClick") setOpen(false)
205
+ }}
206
+ open={open}
207
+ title={<span>Edit account</span>}
208
+ slotProps={{
209
+ container: {"data-autotest": "account-dialog"},
210
+ title: {component: "h2"},
211
+ }}
212
+ >
213
+ Account form
214
+ </PneModal>
215
+ ```
216
+
217
+ `blockingOverlay` предназначен для loading-состояния всей модалки. Пока slot присутствует, dialog получает
218
+ `aria-busy`, header/body/footer становятся inert, focus остаётся на границе dialog, а Escape, backdrop и close
219
+ button не вызывают `onClose`. После снятия overlay прежний focused control восстанавливается, если он всё ещё
220
+ существует. Старый `overlay` оставлен как deprecated alias.
221
+
222
+ Внутренние части настраиваются через `slotProps`, но их element type, owned content и dialog semantics остаются
223
+ фиксированными. `modalProps` содержит только безопасные настройки MUI root и не позволяет подменять root/backdrop
224
+ slots. Прежние `containerProps` и `closeButtonProps` оставлены deprecated на период миграции.
225
+
226
+ Частые тестовые маркеры `data-*` передаются прямо в `PneModal` и попадают на семантический dialog container:
227
+ `<PneModal data-testattribute="edit-modal" ... />`. Для них не требуется обёртка `slotProps.container`;
228
+ этот slot остаётся для остальных безопасных атрибутов и `sx` контейнера.
229
+
230
+ `PneModalActions` сохраняет одни и те же keyed action nodes, но синхронизирует DOM/focus order с layout:
231
+ `leading → secondary → primary` на desktop и `primary → secondary → leading` на экране до 480 px. При смене
232
+ breakpoint существующие controls только перемещаются внутри дерева, не перемонтируются и не теряют focus/state.
233
+ Root фиксирован как `div`, поддерживает `ref`, `sx`, обычные HTML/ARIA/data attributes.
234
+
109
235
  ## PneSelect
110
236
 
111
237
  `PneSelect` — controlled single-select для произвольного типа option. `value` имеет тип `T | null`, а `onChange`
@@ -43,7 +43,9 @@ exports.PneCheckbox = (0, react_1.forwardRef)((props, ref) => {
43
43
  }
44
44
  }, [indeterminate]);
45
45
  const inputSlotProps = (0, PneToggleInput_1.composeToggleInputSlotProps)([defaultInputSlotProps, consumerInputSlotProps], {
46
+ controlId: controlProps.id ?? id,
46
47
  describedBy: controlProps.ariaDescribedBy,
48
+ forceDisabled: controlProps.disabled === true || disabled === true,
47
49
  forceInvalid: controlProps.error,
48
50
  forceRequired: controlProps.ariaRequired,
49
51
  inputAriaProps,
@@ -1 +1 @@
1
- {"version":3,"file":"PneCheckbox.js","sourceRoot":"","sources":["../../src/component/PneCheckbox.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PneCheckbox.js","sourceRoot":"","sources":["../../src/component/PneCheckbox.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +1,58 @@
1
- import React, { ReactNode } from 'react';
2
- import { FormControlProps, SxProps } from '@mui/material';
3
- import { Theme } from '@mui/material/styles';
4
- export interface PneFieldProps extends Omit<FormControlProps, 'children' | 'disabled' | 'error' | 'fullWidth' | 'required'> {
5
- children: ReactNode;
1
+ import type { FormControlTypeMap } from '@mui/material/FormControl';
2
+ import type { FormHelperTextProps } from '@mui/material/FormHelperText';
3
+ import type { FormLabelProps } from '@mui/material/FormLabel';
4
+ import type { OverridableComponent, OverrideProps } from '@mui/material/OverridableComponent';
5
+ import type { SxProps, Theme } from '@mui/material/styles';
6
+ import * as React from 'react';
7
+ import { type PneFieldControlAdapter } from './PneFieldContext';
8
+ type PneFieldDataAttributes = {
9
+ [attribute: `data-${string}`]: string | number | boolean | undefined;
10
+ };
11
+ export type PneFieldLabelSlotProps = Omit<FormLabelProps, 'children' | 'component' | 'disabled' | 'error' | 'filled' | 'focused' | 'htmlFor' | 'required'> & {
12
+ ref?: React.Ref<HTMLLabelElement>;
13
+ } & PneFieldDataAttributes;
14
+ export type PneFieldHelperTextSlotProps = Omit<FormHelperTextProps, 'children' | 'component' | 'disabled' | 'error' | 'filled' | 'focused' | 'margin' | 'required' | 'variant'> & {
15
+ ref?: React.Ref<HTMLParagraphElement>;
16
+ } & PneFieldDataAttributes;
17
+ export interface PneFieldSlotProps {
18
+ helperText?: PneFieldHelperTextSlotProps;
19
+ label?: PneFieldLabelSlotProps;
20
+ }
21
+ export type PneFieldChildren = React.ReactElement | ((field: PneFieldControlAdapter) => React.ReactElement);
22
+ type RemovedFormControlProp = 'children' | 'color' | 'disabled' | 'error' | 'focused' | 'fullWidth' | 'hiddenLabel' | 'required' | 'size' | 'variant';
23
+ type PneFieldOwnProps = Omit<FormControlTypeMap['props'], RemovedFormControlProp> & {
24
+ children: PneFieldChildren;
25
+ /** ID owned by the primary control. `PneField` state always wins conflicting child IDs. */
26
+ controlId?: string;
6
27
  disabled?: boolean;
7
28
  error?: boolean;
8
29
  fullWidth?: boolean;
9
- helperText?: ReactNode;
30
+ helperText?: React.ReactNode;
31
+ /** @deprecated Use `slotProps.helperText.sx`. */
10
32
  helperTextSx?: SxProps<Theme>;
33
+ /** @deprecated Use `controlId`; kept as a compatibility alias. */
11
34
  htmlFor?: string;
35
+ /** ID of the field root and namespace for generated label/helper/control IDs. */
12
36
  id?: string;
13
- label?: ReactNode;
37
+ label?: React.ReactNode;
38
+ /** @deprecated Use `slotProps.label.sx`. */
14
39
  labelSx?: SxProps<Theme>;
15
40
  required?: boolean;
16
- }
17
- declare const PneField: React.ForwardRefExoticComponent<Omit<PneFieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
41
+ slotProps?: PneFieldSlotProps;
42
+ /** Split FormControl appearance state is intentionally not part of the field contract. */
43
+ color?: never;
44
+ focused?: never;
45
+ hiddenLabel?: never;
46
+ size?: never;
47
+ variant?: never;
48
+ };
49
+ type PneFieldTypeMap<AdditionalProps = {}, RootComponent extends React.ElementType = 'div'> = {
50
+ props: PneFieldOwnProps & AdditionalProps;
51
+ defaultComponent: RootComponent;
52
+ };
53
+ export type PneFieldProps<RootComponent extends React.ElementType = 'div', AdditionalProps = {}> = OverrideProps<PneFieldTypeMap<AdditionalProps, RootComponent>, RootComponent> & {
54
+ component?: RootComponent;
55
+ };
56
+ type PneFieldComponent = OverridableComponent<PneFieldTypeMap>;
57
+ declare const PneField: PneFieldComponent;
18
58
  export default PneField;
@@ -1,34 +1,75 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
4
  const material_1 = require("@mui/material");
5
+ const React = tslib_1.__importStar(require("react"));
6
6
  const PneFieldContext_1 = require("./PneFieldContext");
7
- const PneField = (0, react_1.forwardRef)((props, ref) => {
8
- const { children, disabled = false, error = false, fullWidth = true, helperText, helperTextSx, htmlFor, id, label, labelSx, required = false, sx, ...rest } = props;
9
- const generatedId = (0, react_1.useId)();
10
- const fieldId = id ?? generatedId;
11
- const childId = getChildId(children);
12
- const controlId = htmlFor ?? childId ?? `${fieldId}-control`;
13
- const helperTextId = helperText ? `${fieldId}-helper-text` : undefined;
14
- const labelId = label ? `${fieldId}-label` : undefined;
15
- const contextValue = {
7
+ const PneFieldImplementation = (props) => {
8
+ const { children, controlId: controlIdProp, disabled = false, error = false, fullWidth = true, helperText, helperTextSx, htmlFor, id, label, labelSx, required = false, slotProps, sx, ...rest } = props;
9
+ const generatedId = React.useId();
10
+ const rootId = normalizeId(id);
11
+ const fieldId = rootId ?? generatedId;
12
+ const explicitControlId = normalizeId(controlIdProp);
13
+ const legacyControlId = normalizeId(htmlFor);
14
+ const controlId = explicitControlId ?? legacyControlId ?? `${fieldId}-control`;
15
+ const hasLabel = hasRenderableContent(label);
16
+ const hasHelperText = hasRenderableContent(helperText);
17
+ const labelSlotId = normalizeId(slotProps?.label?.id);
18
+ const helperTextSlotId = normalizeId(slotProps?.helperText?.id);
19
+ const labelId = hasLabel ? labelSlotId ?? `${fieldId}-label` : undefined;
20
+ const helperTextId = hasHelperText
21
+ ? helperTextSlotId ?? `${fieldId}-helper-text`
22
+ : undefined;
23
+ warnAboutFieldIdConflicts({
24
+ controlId,
25
+ controlIdProp: explicitControlId,
26
+ htmlFor: legacyControlId,
27
+ rootId,
28
+ });
29
+ const adapter = React.useMemo(() => ({
16
30
  controlId,
17
31
  disabled,
18
32
  error,
19
33
  fullWidth,
34
+ getControlProps: (controlProps) => {
35
+ const ownProps = controlProps
36
+ ?? {};
37
+ const ownId = normalizeId(ownProps.id);
38
+ if (process.env.NODE_ENV !== 'production' && ownId && ownId !== controlId) {
39
+ console.warn(`PneField owns control ID "${controlId}" and ignores conflicting child ID "${ownId}". `
40
+ + 'Move the ID to PneField controlId.');
41
+ }
42
+ return {
43
+ ...ownProps,
44
+ 'aria-describedby': (0, PneFieldContext_1.mergeAriaIds)(ownProps['aria-describedby'], helperTextId),
45
+ 'aria-disabled': disabled || ownProps.disabled === true
46
+ ? true
47
+ : ownProps['aria-disabled'],
48
+ 'aria-invalid': error ? true : ownProps['aria-invalid'],
49
+ 'aria-labelledby': hasAriaLabel(ownProps['aria-label'])
50
+ ? undefined
51
+ : (0, PneFieldContext_1.mergeAriaIds)(labelId, ownProps['aria-labelledby']),
52
+ 'aria-required': required ? true : ownProps['aria-required'],
53
+ disabled: disabled || ownProps.disabled === true,
54
+ id: controlId,
55
+ };
56
+ },
20
57
  helperTextId,
21
58
  labelId,
22
59
  required,
23
- };
24
- return react_1.default.createElement(material_1.FormControl, { disabled: disabled, error: error, fullWidth: fullWidth, id: id, required: required, ref: ref, sx: [
60
+ }), [controlId, disabled, error, fullWidth, helperTextId, labelId, required]);
61
+ const resolvedChildren = typeof children === 'function' ? children(adapter) : children;
62
+ validateChildren(resolvedChildren, hasLabel);
63
+ const { id: _labelId, ref: labelRef, sx: labelSlotSx, ...labelSlotProps } = slotProps?.label ?? {};
64
+ const { id: _helperTextId, ref: helperTextRef, sx: helperTextSlotSx, ...helperTextSlotProps } = slotProps?.helperText ?? {};
65
+ return React.createElement(material_1.FormControl, { disabled: disabled, error: error, fullWidth: fullWidth, id: rootId, required: required, sx: [
25
66
  {
26
67
  gap: '4px',
27
68
  },
28
69
  ...(Array.isArray(sx) ? sx : [sx]),
29
70
  ], ...rest },
30
- label
31
- ? react_1.default.createElement(material_1.FormLabel, { htmlFor: controlId, id: labelId, required: required, sx: [
71
+ hasLabel
72
+ ? React.createElement(material_1.FormLabel, { ...labelSlotProps, htmlFor: controlId, id: labelId, ref: labelRef, required: required, sx: [
32
73
  {
33
74
  alignSelf: 'flex-start',
34
75
  color: error ? 'error.main' : 'text.secondary',
@@ -43,25 +84,69 @@ const PneField = (0, react_1.forwardRef)((props, ref) => {
43
84
  },
44
85
  },
45
86
  ...(Array.isArray(labelSx) ? labelSx : [labelSx]),
87
+ ...(Array.isArray(labelSlotSx) ? labelSlotSx : [labelSlotSx]),
46
88
  ] }, label)
47
89
  : null,
48
- react_1.default.createElement(PneFieldContext_1.PneFieldContext.Provider, { value: contextValue }, children),
49
- helperText
50
- ? react_1.default.createElement(material_1.FormHelperText, { id: helperTextId, sx: [
90
+ React.createElement(PneFieldContext_1.PneFieldContext.Provider, { value: adapter }, resolvedChildren),
91
+ hasHelperText
92
+ ? React.createElement(material_1.FormHelperText, { ...helperTextSlotProps, id: helperTextId, ref: helperTextRef, sx: [
51
93
  {
52
94
  mx: '14px',
53
95
  },
54
96
  ...(Array.isArray(helperTextSx) ? helperTextSx : [helperTextSx]),
97
+ ...(Array.isArray(helperTextSlotSx) ? helperTextSlotSx : [helperTextSlotSx]),
55
98
  ] }, helperText)
56
99
  : null);
57
- });
58
- const getChildId = (children) => {
59
- if (!(0, react_1.isValidElement)(children)) {
100
+ };
101
+ const normalizeId = (value) => {
102
+ if (typeof value !== 'string') {
60
103
  return undefined;
61
104
  }
62
- return typeof children.props.id === 'string' && children.props.id !== ''
63
- ? children.props.id
64
- : undefined;
105
+ const normalized = value.trim();
106
+ if (normalized === '') {
107
+ return undefined;
108
+ }
109
+ if (/\s/.test(normalized)) {
110
+ if (process.env.NODE_ENV !== 'production') {
111
+ console.warn(`PneField ignores invalid ID containing whitespace: "${value}".`);
112
+ }
113
+ return undefined;
114
+ }
115
+ return normalized;
116
+ };
117
+ const hasRenderableContent = (value) => value !== undefined && value !== null && typeof value !== 'boolean' && value !== '';
118
+ const hasAriaLabel = (value) => typeof value === 'string' && value.trim() !== '';
119
+ const warnAboutFieldIdConflicts = (options) => {
120
+ if (process.env.NODE_ENV === 'production') {
121
+ return;
122
+ }
123
+ if (options.controlIdProp && options.htmlFor && options.controlIdProp !== options.htmlFor) {
124
+ console.warn(`PneField controlId "${options.controlIdProp}" overrides conflicting deprecated htmlFor `
125
+ + `"${options.htmlFor}".`);
126
+ }
127
+ if (options.rootId && options.rootId === options.controlId) {
128
+ console.warn(`PneField root ID and controlId are both "${options.rootId}". `
129
+ + 'Use distinct IDs to avoid duplicate DOM IDs.');
130
+ }
131
+ };
132
+ const validateChildren = (children, hasLabel) => {
133
+ const directChildren = React.isValidElement(children)
134
+ && children.type === React.Fragment
135
+ ? children.props.children
136
+ : children;
137
+ if (React.Children.count(directChildren) !== 1) {
138
+ throw new Error('PneField expects exactly one logical control or group.');
139
+ }
140
+ if (process.env.NODE_ENV === 'production') {
141
+ return;
142
+ }
143
+ if (hasLabel
144
+ && React.isValidElement(children)
145
+ && hasRenderableContent(children.props.label)) {
146
+ console.warn('PneField and its direct child both provide labels. Use one label owner to avoid an ambiguous accessible name.');
147
+ }
65
148
  };
149
+ PneFieldImplementation.displayName = 'PneField';
150
+ const PneField = PneFieldImplementation;
66
151
  exports.default = PneField;
67
152
  //# sourceMappingURL=PneField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":";;;AAAA,uDAAyE;AACzE,4CAA+F;AAE/F,uDAAuE;AAiBvE,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAgC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACtE,MAAM,EACF,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,IAAI,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,EAAE,EACF,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,EAAE,EACF,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,WAAW,GAAG,IAAA,aAAK,GAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,EAAE,IAAI,WAAW,CAAA;IACjC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,OAAO,IAAI,OAAO,IAAI,GAAG,OAAO,UAAU,CAAA;IAC5D,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;IACtE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IACtD,MAAM,YAAY,GAAyB;QACvC,SAAS;QACT,QAAQ;QACR,KAAK;QACL,SAAS;QACT,YAAY;QACZ,OAAO;QACP,QAAQ;KACX,CAAA;IAED,OAAO,8BAAC,sBAAW,IACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,EAAE,EAAE;YACA;gBACI,GAAG,EAAE,KAAK;aACb;YACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrC,KACG,IAAI;QAEP,KAAK;YACF,CAAC,CAAC,8BAAC,oBAAS,IACR,OAAO,EAAE,SAAS,EAClB,EAAE,EAAE,OAAO,EACX,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE;oBACA;wBACI,SAAS,EAAE,YAAY;wBACvB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;wBAC9C,QAAQ,EAAE,UAAU;wBACpB,UAAU,EAAE,MAAM;wBAClB,QAAQ,EAAE,MAAM;wBAChB,eAAe,EAAE;4BACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;yBACjD;wBACD,0BAA0B,EAAE;4BACxB,KAAK,EAAE,YAAY;yBACtB;qBACJ;oBACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACpD,IAEA,KAAK,CACE;YACZ,CAAC,CAAC,IAAI;QACV,8BAAC,iCAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IACxC,QAAQ,CACc;QAC1B,UAAU;YACP,CAAC,CAAC,8BAAC,yBAAc,IACb,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE;oBACA;wBACI,EAAE,EAAE,MAAM;qBACb;oBACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;iBACnE,IAEA,UAAU,CACE;YACjB,CAAC,CAAC,IAAI,CACA,CAAA;AAClB,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,QAAmB,EAAsB,EAAE;IAC3D,IAAI,CAAC,IAAA,sBAAc,EAAmB,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO,OAAO,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;QACpE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,CAAC,CAAC,SAAS,CAAA;AACnB,CAAC,CAAA;AAED,kBAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":"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"}
@@ -1,14 +1,33 @@
1
- export interface PneFieldContextValue {
2
- controlId?: string;
1
+ import type { AriaAttributes } from 'react';
2
+ export interface PneFieldControlDomProps {
3
+ 'aria-describedby'?: string;
4
+ 'aria-disabled'?: AriaAttributes['aria-disabled'];
5
+ 'aria-invalid'?: AriaAttributes['aria-invalid'];
6
+ 'aria-label'?: AriaAttributes['aria-label'];
7
+ 'aria-labelledby'?: string;
8
+ 'aria-required'?: AriaAttributes['aria-required'];
3
9
  disabled?: boolean;
4
- error?: boolean;
5
- fullWidth?: boolean;
6
- helperTextId?: string;
7
- labelId?: string;
8
- required?: boolean;
10
+ id?: string;
11
+ }
12
+ export interface ResolvedPneFieldControlDomProps extends Omit<PneFieldControlDomProps, 'disabled' | 'id'> {
13
+ disabled: boolean;
14
+ id: string;
15
+ }
16
+ export interface PneFieldControlAdapter {
17
+ readonly controlId: string;
18
+ readonly disabled: boolean;
19
+ readonly error: boolean;
20
+ readonly fullWidth: boolean;
21
+ readonly helperTextId?: string;
22
+ readonly labelId?: string;
23
+ readonly required: boolean;
24
+ getControlProps: <Props extends object = PneFieldControlDomProps>(props?: Props & PneFieldControlDomProps) => Omit<Props, keyof PneFieldControlDomProps> & ResolvedPneFieldControlDomProps;
9
25
  }
10
26
  export interface PneFieldControlProps {
11
27
  ariaDescribedBy?: string;
28
+ ariaInvalid?: AriaAttributes['aria-invalid'];
29
+ ariaLabelledBy?: string;
30
+ ariaRequired?: AriaAttributes['aria-required'];
12
31
  disabled?: boolean;
13
32
  error?: boolean;
14
33
  fullWidth?: boolean;
@@ -19,7 +38,9 @@ export interface ResolvedPneFieldControlProps extends PneFieldControlProps {
19
38
  ariaRequired?: boolean;
20
39
  labelId?: string;
21
40
  }
22
- export declare const PneFieldContext: import("react").Context<PneFieldContextValue | undefined>;
23
- export declare const usePneFieldContext: () => PneFieldContextValue | undefined;
41
+ export declare const PneFieldContext: import("react").Context<PneFieldControlAdapter | undefined>;
42
+ export declare const usePneFieldControl: () => PneFieldControlAdapter | undefined;
24
43
  export declare const usePneFieldControlProps: (props?: PneFieldControlProps) => ResolvedPneFieldControlProps;
44
+ export declare const mergeAriaIds: (...ids: Array<string | undefined>) => string | undefined;
45
+ /** @deprecated Use `mergeAriaIds`; this alias remains for internal source compatibility. */
25
46
  export declare const mergeAriaDescribedBy: (...ids: Array<string | undefined>) => string | undefined;
@@ -1,31 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeAriaDescribedBy = exports.usePneFieldControlProps = exports.usePneFieldContext = exports.PneFieldContext = void 0;
3
+ exports.mergeAriaDescribedBy = exports.mergeAriaIds = exports.usePneFieldControlProps = exports.usePneFieldControl = exports.PneFieldContext = void 0;
4
4
  const react_1 = require("react");
5
5
  exports.PneFieldContext = (0, react_1.createContext)(undefined);
6
- const usePneFieldContext = () => (0, react_1.useContext)(exports.PneFieldContext);
7
- exports.usePneFieldContext = usePneFieldContext;
6
+ const usePneFieldControl = () => (0, react_1.useContext)(exports.PneFieldContext);
7
+ exports.usePneFieldControl = usePneFieldControl;
8
8
  const usePneFieldControlProps = (props = {}) => {
9
- const fieldContext = (0, exports.usePneFieldContext)();
9
+ const field = (0, exports.usePneFieldControl)();
10
+ const ariaInvalid = props.error === undefined
11
+ ? props.ariaInvalid
12
+ : props.error
13
+ ? true
14
+ : props.ariaInvalid ?? false;
15
+ const controlProps = field?.getControlProps({
16
+ 'aria-describedby': props.ariaDescribedBy,
17
+ 'aria-invalid': ariaInvalid,
18
+ 'aria-labelledby': props.ariaLabelledBy,
19
+ 'aria-required': props.ariaRequired,
20
+ disabled: props.disabled,
21
+ id: props.id,
22
+ });
10
23
  return {
11
- ariaDescribedBy: (0, exports.mergeAriaDescribedBy)(props.ariaDescribedBy, fieldContext?.helperTextId),
12
- ariaRequired: props.required !== true && fieldContext?.required
24
+ ariaDescribedBy: controlProps?.['aria-describedby'] ?? props.ariaDescribedBy,
25
+ ariaInvalid: controlProps?.['aria-invalid'] ?? ariaInvalid,
26
+ ariaLabelledBy: controlProps?.['aria-labelledby'] ?? props.ariaLabelledBy,
27
+ ariaRequired: isAriaTrue(controlProps?.['aria-required']) || isAriaTrue(props.ariaRequired)
13
28
  ? true
14
29
  : undefined,
15
- disabled: props.disabled ?? fieldContext?.disabled,
16
- error: props.error ?? fieldContext?.error,
17
- fullWidth: props.fullWidth ?? fieldContext?.fullWidth,
18
- id: props.id ?? fieldContext?.controlId,
19
- labelId: fieldContext?.labelId,
30
+ disabled: controlProps?.disabled ?? props.disabled,
31
+ error: field?.error === true || props.error === true
32
+ ? true
33
+ : props.error ?? field?.error,
34
+ fullWidth: props.fullWidth ?? field?.fullWidth,
35
+ id: controlProps?.id ?? props.id,
36
+ labelId: field?.labelId,
20
37
  required: props.required,
21
38
  };
22
39
  };
23
40
  exports.usePneFieldControlProps = usePneFieldControlProps;
24
- const mergeAriaDescribedBy = (...ids) => {
41
+ const mergeAriaIds = (...ids) => {
25
42
  const mergedIds = ids
26
43
  .flatMap(id => id?.split(/\s+/) ?? [])
27
44
  .filter((id, index, allIds) => id !== '' && allIds.indexOf(id) === index);
28
45
  return mergedIds.length > 0 ? mergedIds.join(' ') : undefined;
29
46
  };
30
- exports.mergeAriaDescribedBy = mergeAriaDescribedBy;
47
+ exports.mergeAriaIds = mergeAriaIds;
48
+ const isAriaTrue = (value) => value === true || value === 'true';
49
+ /** @deprecated Use `mergeAriaIds`; this alias remains for internal source compatibility. */
50
+ exports.mergeAriaDescribedBy = exports.mergeAriaIds;
31
51
  //# sourceMappingURL=PneFieldContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PneFieldContext.js","sourceRoot":"","sources":["../../src/component/PneFieldContext.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AA0BlC,QAAA,eAAe,GAAG,IAAA,qBAAa,EAAmC,SAAS,CAAC,CAAA;AAElF,MAAM,kBAAkB,GAAG,GAAqC,EAAE,CAAC,IAAA,kBAAU,EAAC,uBAAe,CAAC,CAAA;AAAxF,QAAA,kBAAkB,sBAAsE;AAE9F,MAAM,uBAAuB,GAAG,CACnC,QAA8B,EAAE,EACJ,EAAE;IAC9B,MAAM,YAAY,GAAG,IAAA,0BAAkB,GAAE,CAAA;IAEzC,OAAO;QACH,eAAe,EAAE,IAAA,4BAAoB,EAAC,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC;QACxF,YAAY,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,YAAY,EAAE,QAAQ;YAC3D,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS;QACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ;QAClD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,YAAY,EAAE,KAAK;QACzC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,SAAS;QACrD,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,YAAY,EAAE,SAAS;QACvC,OAAO,EAAE,YAAY,EAAE,OAAO;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;KAC3B,CAAA;AACL,CAAC,CAAA;AAjBY,QAAA,uBAAuB,2BAiBnC;AAEM,MAAM,oBAAoB,GAAG,CAChC,GAAG,GAA8B,EACf,EAAE;IACpB,MAAM,SAAS,GAAG,GAAG;SAChB,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAA;IAE7E,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjE,CAAC,CAAA;AARY,QAAA,oBAAoB,wBAQhC"}
1
+ {"version":3,"file":"PneFieldContext.js","sourceRoot":"","sources":["../../src/component/PneFieldContext.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AAoDlC,QAAA,eAAe,GAAG,IAAA,qBAAa,EAAqC,SAAS,CAAC,CAAA;AAEpF,MAAM,kBAAkB,GAAG,GAAuC,EAAE,CAAC,IAAA,kBAAU,EAAC,uBAAe,CAAC,CAAA;AAA1F,QAAA,kBAAkB,sBAAwE;AAEhG,MAAM,uBAAuB,GAAG,CACnC,QAA8B,EAAE,EACJ,EAAE;IAC9B,MAAM,KAAK,GAAG,IAAA,0BAAkB,GAAE,CAAA;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS;QACzC,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,KAAK,CAAC,KAAK;YACT,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAA;IACpC,MAAM,YAAY,GAAG,KAAK,EAAE,eAAe,CAAC;QACxC,kBAAkB,EAAE,KAAK,CAAC,eAAe;QACzC,cAAc,EAAE,WAAW;QAC3B,iBAAiB,EAAE,KAAK,CAAC,cAAc;QACvC,eAAe,EAAE,KAAK,CAAC,YAAY;QACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,EAAE,EAAE,KAAK,CAAC,EAAE;KACf,CAAC,CAAA;IAEF,OAAO;QACH,eAAe,EAAE,YAAY,EAAE,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,eAAe;QAC5E,WAAW,EAAE,YAAY,EAAE,CAAC,cAAc,CAAC,IAAI,WAAW;QAC1D,cAAc,EAAE,YAAY,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,cAAc;QACzE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;YACvF,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS;QACf,QAAQ,EAAE,YAAY,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ;QAClD,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;YAChD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,KAAK;QACjC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,EAAE,SAAS;QAC9C,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,KAAK,CAAC,EAAE;QAChC,OAAO,EAAE,KAAK,EAAE,OAAO;QACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KAC3B,CAAA;AACL,CAAC,CAAA;AAlCY,QAAA,uBAAuB,2BAkCnC;AAEM,MAAM,YAAY,GAAG,CACxB,GAAG,GAA8B,EACf,EAAE;IACpB,MAAM,SAAS,GAAG,GAAG;SAChB,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAA;IAE7E,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjE,CAAC,CAAA;AARY,QAAA,YAAY,gBAQxB;AAED,MAAM,UAAU,GAAG,CAAC,KAAsC,EAAW,EAAE,CACnE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAA;AAEtC,4FAA4F;AAC/E,QAAA,oBAAoB,GAAG,oBAAY,CAAA"}