@lmb-it/kitsconcerto-native 0.1.274 → 0.1.276

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 (214) hide show
  1. package/components/Avatar/index.cjs +1 -0
  2. package/components/Avatar/index.cjs.map +1 -1
  3. package/components/Avatar/index.js +1 -0
  4. package/components/Avatar/index.js.map +1 -1
  5. package/components/Banner/banner.cjs +1 -0
  6. package/components/Banner/banner.cjs.map +1 -1
  7. package/components/Banner/banner.js +1 -0
  8. package/components/Banner/banner.js.map +1 -1
  9. package/components/BottomTabBar/index.cjs +1 -0
  10. package/components/BottomTabBar/index.cjs.map +1 -1
  11. package/components/BottomTabBar/index.js +1 -0
  12. package/components/BottomTabBar/index.js.map +1 -1
  13. package/components/Button/Button.cjs +1 -0
  14. package/components/Button/Button.cjs.map +1 -1
  15. package/components/Button/Button.js +1 -0
  16. package/components/Button/Button.js.map +1 -1
  17. package/components/Carousel/index.cjs +1 -0
  18. package/components/Carousel/index.cjs.map +1 -1
  19. package/components/Carousel/index.js +1 -0
  20. package/components/Carousel/index.js.map +1 -1
  21. package/components/ChatBubble/index.cjs +1 -0
  22. package/components/ChatBubble/index.cjs.map +1 -1
  23. package/components/ChatBubble/index.js +1 -0
  24. package/components/ChatBubble/index.js.map +1 -1
  25. package/components/Chip/index.cjs +1 -0
  26. package/components/Chip/index.cjs.map +1 -1
  27. package/components/Chip/index.js +1 -0
  28. package/components/Chip/index.js.map +1 -1
  29. package/components/DateSeparator/index.cjs +1 -0
  30. package/components/DateSeparator/index.cjs.map +1 -1
  31. package/components/DateSeparator/index.js +1 -0
  32. package/components/DateSeparator/index.js.map +1 -1
  33. package/components/DetailsList/index.cjs +1 -0
  34. package/components/DetailsList/index.cjs.map +1 -1
  35. package/components/DetailsList/index.js +1 -0
  36. package/components/DetailsList/index.js.map +1 -1
  37. package/components/EmptyState/index.cjs +1 -0
  38. package/components/EmptyState/index.cjs.map +1 -1
  39. package/components/EmptyState/index.js +1 -0
  40. package/components/EmptyState/index.js.map +1 -1
  41. package/components/Gallery/index.cjs +1 -0
  42. package/components/Gallery/index.cjs.map +1 -1
  43. package/components/Gallery/index.js +1 -0
  44. package/components/Gallery/index.js.map +1 -1
  45. package/components/MessageComposer/index.cjs +1 -0
  46. package/components/MessageComposer/index.cjs.map +1 -1
  47. package/components/MessageComposer/index.js +1 -0
  48. package/components/MessageComposer/index.js.map +1 -1
  49. package/components/MessageReceipt/index.cjs +1 -0
  50. package/components/MessageReceipt/index.cjs.map +1 -1
  51. package/components/MessageReceipt/index.js +1 -0
  52. package/components/MessageReceipt/index.js.map +1 -1
  53. package/components/ProgressBar/index.cjs +1 -0
  54. package/components/ProgressBar/index.cjs.map +1 -1
  55. package/components/ProgressBar/index.js +1 -0
  56. package/components/ProgressBar/index.js.map +1 -1
  57. package/components/SegmentedControl/index.cjs +1 -0
  58. package/components/SegmentedControl/index.cjs.map +1 -1
  59. package/components/SegmentedControl/index.js +1 -0
  60. package/components/SegmentedControl/index.js.map +1 -1
  61. package/components/StatCard/index.cjs +1 -0
  62. package/components/StatCard/index.cjs.map +1 -1
  63. package/components/StatCard/index.js +1 -0
  64. package/components/StatCard/index.js.map +1 -1
  65. package/components/Stepper/index.cjs +1 -0
  66. package/components/Stepper/index.cjs.map +1 -1
  67. package/components/Stepper/index.js +1 -0
  68. package/components/Stepper/index.js.map +1 -1
  69. package/components/Tabs/index.cjs +1 -0
  70. package/components/Tabs/index.cjs.map +1 -1
  71. package/components/Tabs/index.js +1 -0
  72. package/components/Tabs/index.js.map +1 -1
  73. package/components/Timeline/index.cjs +1 -0
  74. package/components/Timeline/index.cjs.map +1 -1
  75. package/components/Timeline/index.js +1 -0
  76. package/components/Timeline/index.js.map +1 -1
  77. package/components/Translate/index.cjs +1 -0
  78. package/components/Translate/index.cjs.map +1 -1
  79. package/components/Translate/index.js +1 -0
  80. package/components/Translate/index.js.map +1 -1
  81. package/components/TypingIndicator/index.cjs +1 -0
  82. package/components/TypingIndicator/index.cjs.map +1 -1
  83. package/components/TypingIndicator/index.js +1 -0
  84. package/components/TypingIndicator/index.js.map +1 -1
  85. package/components/overlay/ConfirmDialog/index.cjs +1 -0
  86. package/components/overlay/ConfirmDialog/index.cjs.map +1 -1
  87. package/components/overlay/ConfirmDialog/index.js +1 -0
  88. package/components/overlay/ConfirmDialog/index.js.map +1 -1
  89. package/components/overlay/Dialog/index.cjs +1 -0
  90. package/components/overlay/Dialog/index.cjs.map +1 -1
  91. package/components/overlay/Dialog/index.js +1 -0
  92. package/components/overlay/Dialog/index.js.map +1 -1
  93. package/contexts/PermissionsContext.cjs +2 -0
  94. package/contexts/PermissionsContext.cjs.map +1 -1
  95. package/contexts/PermissionsContext.js +3 -2
  96. package/contexts/PermissionsContext.js.map +1 -1
  97. package/form/controls/Checkbox/index.cjs +1 -0
  98. package/form/controls/Checkbox/index.cjs.map +1 -1
  99. package/form/controls/Checkbox/index.js +1 -0
  100. package/form/controls/Checkbox/index.js.map +1 -1
  101. package/form/controls/RadioButton/radio.cjs +1 -0
  102. package/form/controls/RadioButton/radio.cjs.map +1 -1
  103. package/form/controls/RadioButton/radio.js +1 -0
  104. package/form/controls/RadioButton/radio.js.map +1 -1
  105. package/form/controls/TriStateCheckbox/index.cjs +1 -0
  106. package/form/controls/TriStateCheckbox/index.cjs.map +1 -1
  107. package/form/controls/TriStateCheckbox/index.js +1 -0
  108. package/form/controls/TriStateCheckbox/index.js.map +1 -1
  109. package/form/file-pickers/index.cjs +1 -0
  110. package/form/file-pickers/index.cjs.map +1 -1
  111. package/form/file-pickers/index.js +1 -0
  112. package/form/file-pickers/index.js.map +1 -1
  113. package/form/helpers/FormContainer/index.cjs +1 -0
  114. package/form/helpers/FormContainer/index.cjs.map +1 -1
  115. package/form/helpers/FormContainer/index.js +1 -0
  116. package/form/helpers/FormContainer/index.js.map +1 -1
  117. package/form/inputs/ColorPicker/index.cjs +1 -0
  118. package/form/inputs/ColorPicker/index.cjs.map +1 -1
  119. package/form/inputs/ColorPicker/index.js +1 -0
  120. package/form/inputs/ColorPicker/index.js.map +1 -1
  121. package/form/inputs/Datepicker/index.cjs +1 -0
  122. package/form/inputs/Datepicker/index.cjs.map +1 -1
  123. package/form/inputs/Datepicker/index.js +1 -0
  124. package/form/inputs/Datepicker/index.js.map +1 -1
  125. package/form/inputs/InputLocation/index.cjs +1 -0
  126. package/form/inputs/InputLocation/index.cjs.map +1 -1
  127. package/form/inputs/InputLocation/index.js +1 -0
  128. package/form/inputs/InputLocation/index.js.map +1 -1
  129. package/form/inputs/InputMask/index.cjs +1 -0
  130. package/form/inputs/InputMask/index.cjs.map +1 -1
  131. package/form/inputs/InputMask/index.js +1 -0
  132. package/form/inputs/InputMask/index.js.map +1 -1
  133. package/form/inputs/InputNumber/index.cjs +1 -0
  134. package/form/inputs/InputNumber/index.cjs.map +1 -1
  135. package/form/inputs/InputNumber/index.js +1 -0
  136. package/form/inputs/InputNumber/index.js.map +1 -1
  137. package/form/inputs/InputPassword/index.cjs +1 -0
  138. package/form/inputs/InputPassword/index.cjs.map +1 -1
  139. package/form/inputs/InputPassword/index.js +1 -0
  140. package/form/inputs/InputPassword/index.js.map +1 -1
  141. package/form/inputs/InputSwitch/index.cjs +1 -0
  142. package/form/inputs/InputSwitch/index.cjs.map +1 -1
  143. package/form/inputs/InputSwitch/index.js +1 -0
  144. package/form/inputs/InputSwitch/index.js.map +1 -1
  145. package/form/inputs/InputText/index.cjs +1 -0
  146. package/form/inputs/InputText/index.cjs.map +1 -1
  147. package/form/inputs/InputText/index.js +1 -0
  148. package/form/inputs/InputText/index.js.map +1 -1
  149. package/form/inputs/InputTextarea/index.cjs +1 -0
  150. package/form/inputs/InputTextarea/index.cjs.map +1 -1
  151. package/form/inputs/InputTextarea/index.js +1 -0
  152. package/form/inputs/InputTextarea/index.js.map +1 -1
  153. package/form/inputs/PhoneInput/index.cjs +1 -0
  154. package/form/inputs/PhoneInput/index.cjs.map +1 -1
  155. package/form/inputs/PhoneInput/index.js +1 -0
  156. package/form/inputs/PhoneInput/index.js.map +1 -1
  157. package/form/selects/AutoComplete/index.cjs +1 -0
  158. package/form/selects/AutoComplete/index.cjs.map +1 -1
  159. package/form/selects/AutoComplete/index.js +1 -0
  160. package/form/selects/AutoComplete/index.js.map +1 -1
  161. package/form/selects/CascadeSelect/index.cjs +1 -0
  162. package/form/selects/CascadeSelect/index.cjs.map +1 -1
  163. package/form/selects/CascadeSelect/index.js +1 -0
  164. package/form/selects/CascadeSelect/index.js.map +1 -1
  165. package/form/selects/Dropdown/index.cjs +1 -0
  166. package/form/selects/Dropdown/index.cjs.map +1 -1
  167. package/form/selects/Dropdown/index.js +1 -0
  168. package/form/selects/Dropdown/index.js.map +1 -1
  169. package/form/selects/ListBox/index.cjs +1 -0
  170. package/form/selects/ListBox/index.cjs.map +1 -1
  171. package/form/selects/ListBox/index.js +1 -0
  172. package/form/selects/ListBox/index.js.map +1 -1
  173. package/form/selects/MultiSelect/index.cjs +1 -0
  174. package/form/selects/MultiSelect/index.cjs.map +1 -1
  175. package/form/selects/MultiSelect/index.js +1 -0
  176. package/form/selects/MultiSelect/index.js.map +1 -1
  177. package/form/selects/TreeSelect/index.cjs +1 -0
  178. package/form/selects/TreeSelect/index.cjs.map +1 -1
  179. package/form/selects/TreeSelect/index.js +1 -0
  180. package/form/selects/TreeSelect/index.js.map +1 -1
  181. package/form/selects/helpers/SelectPopupOverlay.cjs +1 -0
  182. package/form/selects/helpers/SelectPopupOverlay.cjs.map +1 -1
  183. package/form/selects/helpers/SelectPopupOverlay.js +1 -0
  184. package/form/selects/helpers/SelectPopupOverlay.js.map +1 -1
  185. package/form-renderer/components/fields/FileUploader/index.cjs +1 -0
  186. package/form-renderer/components/fields/FileUploader/index.cjs.map +1 -1
  187. package/form-renderer/components/fields/FileUploader/index.js +1 -0
  188. package/form-renderer/components/fields/FileUploader/index.js.map +1 -1
  189. package/form-renderer/components/fields/Group/index.cjs +1 -0
  190. package/form-renderer/components/fields/Group/index.cjs.map +1 -1
  191. package/form-renderer/components/fields/Group/index.js +1 -0
  192. package/form-renderer/components/fields/Group/index.js.map +1 -1
  193. package/form-renderer/components/fields/Radios/index.cjs +1 -0
  194. package/form-renderer/components/fields/Radios/index.cjs.map +1 -1
  195. package/form-renderer/components/fields/Radios/index.js +1 -0
  196. package/form-renderer/components/fields/Radios/index.js.map +1 -1
  197. package/form-renderer/components/fields/Select/index.cjs +1 -0
  198. package/form-renderer/components/fields/Select/index.cjs.map +1 -1
  199. package/form-renderer/components/fields/Select/index.js +1 -0
  200. package/form-renderer/components/fields/Select/index.js.map +1 -1
  201. package/hooks/main.cjs +1 -0
  202. package/hooks/main.cjs.map +1 -1
  203. package/hooks/main.js +1 -0
  204. package/hooks/main.js.map +1 -1
  205. package/index.cjs +3 -0
  206. package/index.cjs.map +1 -1
  207. package/index.d.ts +14 -2
  208. package/index.js +1 -0
  209. package/index.js.map +1 -1
  210. package/package.json +1 -1
  211. package/primitives/Card/index.cjs +1 -0
  212. package/primitives/Card/index.cjs.map +1 -1
  213. package/primitives/Card/index.js +1 -0
  214. package/primitives/Card/index.js.map +1 -1
@@ -8,6 +8,7 @@ var reactHookForm = require('react-hook-form');
8
8
  var index_native = require('../../../../form/helpers/FormContainer/index.cjs');
9
9
  var index_native$1 = require('../../FormRenderer/index.cjs');
10
10
  require('../../../../contexts/DialogContext.cjs');
11
+ require('../../../../contexts/PermissionsContext.cjs');
11
12
  var useComponentDefaults = require('../../../../hooks/useComponentDefaults.cjs');
12
13
  var useResolvedElementStyles = require('../../../../hooks/useResolvedElementStyles.cjs');
13
14
  var helpers = require('../../../utils/helpers.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../src/form-renderer/components/fields/Group/index.native.tsx"],"sourcesContent":["// components/fields/Group.tsx\n\nimport React, {useCallback, useEffect, useImperativeHandle, useMemo, useState} from 'react';\nimport {type FieldArrayWithId, type FieldValues, useFieldArray} from 'react-hook-form';\nimport type {IFormElement, IGroup, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Flex} from \"../../../../_compat\";\nimport KitsContainer from \"../../../../form/helpers/FormContainer\";\nimport {FormRenderer} from \"../../FormRenderer\";\nimport {useComponentDefaults, useResolvedElementStyles} from \"../../../../hooks\";\nimport {flattenSlotStyles} from \"../../../utils\";\n\n/**\n * Renders a repeatable group of fields (a field array), preserving all the logic\n * for default values, min/max repeats, and custom action buttons.\n */\nexport const Group = <T extends FieldValues>({\n element,\n control,\n getValues,\n groupField,\n focusedField,\n setFocusedField,\n fieldLogic,\n rowGap,\n }: UseFieldLogicElementProps<T>) => { // Ensure UseFieldLogicProps is updated to pass focus props\n // 1. Get the group's own dynamic state (visibility, layout, label) from the logic hook.\n const {isShown, label, elements, helperText: groupHelperText, fieldState, hideError, isRequired, slots} = fieldLogic;\n\n // Fallback focus state, used only when the parent form doesn't supply\n // focusedField/setFocusedField — web passes the props straight through.\n const [_focusedField, _setFocusedField] = useState<string>('');\n\n const groupElement = element as IGroup<T>;\n const {groupsSettings} = groupElement;\n\n // Resolve groupSlots (dynamic or static) and merge with theme Group defaults\n const resolvedGroupSlots = useMemo(() => {\n const gs = groupElement.groupSlots;\n if (!gs) return undefined;\n if (typeof gs === 'function') {\n return (gs as any)(fieldLogic.watchedValues, fieldLogic.formContext.getValues(), fieldLogic.formContext, groupField);\n }\n return gs;\n }, [groupElement.groupSlots, fieldLogic.watchedValues, fieldLogic.formContext, groupField]);\n\n const {elementStyles: groupStyles} = useComponentDefaults('Group', {\n slots: resolvedGroupSlots,\n } as any);\n const elStyles = useResolvedElementStyles(groupStyles);\n\n // Element-level `slots` (the outer KitsContainer's container/label/helperText/\n // error) arrive in the nested IElementSlotConfig shape; flatten to the flat\n // { [slot]: styleRecord } map KitsContainer expects. (groupSlots above drive\n // the inner repeatable list — root/body/row — and are already flattened.)\n const containerSlots = useMemo(() => flattenSlotStyles(slots), [slots]);\n\n // 2. Initialize react-hook-form's field array management.\n const fieldArray = useFieldArray({\n control,\n name: element.id as any,\n });\n const {fields, append, remove} = fieldArray;\n\n // console.log('hitted', element, {fields}, element.id)\n // 3. Process group settings with defaults, exactly like the original component.\n const settings = useMemo(() => ({\n grid: groupsSettings?.grid,\n repeatable: {\n minRepeats: groupsSettings?.repeatable?.minRepeats || 0,\n maxRepeats: groupsSettings?.repeatable?.maxRepeats || Infinity,\n plusButton: groupsSettings?.repeatable?.plusButton,\n minusButton: groupsSettings?.repeatable?.minusButton,\n },\n removeButtonRow: groupsSettings?.removeButtonRow,\n }), [groupsSettings]);\n\n // 4. Replicate the logic to build a default item object for new rows.\n const createDefaultItem = (): FieldValues => {\n const item: FieldValues = {};\n elements?.forEach(el => {\n if (\"displayOnly\" in el && el.displayOnly) return;\n\n if (\"initialUri\" in el) {\n item[el.id as string] = (el as any).initialUri;\n } else if (\"initialValue\" in el && el.initialValue !== undefined) {\n item[el.id as string] = el.initialValue;\n }\n });\n return item;\n };\n\n const handleAppend = (count = 1) => {\n const max = settings.repeatable.maxRepeats;\n\n if (max && fields.length >= max) {\n return;\n }\n const itemsToAdd = Array(count).fill(0).map(() => createDefaultItem());\n append(itemsToAdd as any, {shouldFocus: true});\n };\n\n const handleRemove = (index: number) => {\n if (fields.length > (settings.repeatable.minRepeats || 0)) {\n remove(index);\n }\n };\n useEffect(() => {\n const generateGroupElements = () => {\n const min = settings.repeatable.minRepeats || 0;\n if (fields.length < min) {\n const itemsToAppend = min - fields.length;\n // console.log({itemsToAppend, current: fields.length})\n\n handleAppend(itemsToAppend);\n }\n };\n\n // This pattern correctly avoids the infinite loop by not depending on `append` or `fields`.\n // The timeout gives react-hook-form time to initialize before we check the length.\n const timer = setTimeout(generateGroupElements, 100);\n return () => clearTimeout(timer);\n\n }, [element.id, settings.repeatable.minRepeats]); // Stable dependencies\n\n // 6. Replicate the `useImperativeHandle` logic to expose the ref.\n useImperativeHandle(groupsSettings?.ref, () => fieldArray, [fieldArray]);\n\n\n const reBuildElements = useCallback((field: FieldArrayWithId, index: number) => {\n return elements?.map((childElement) => {\n const toArray = Object.entries(field);\n\n const findField = toArray.find(([name]) => name == childElement.id);\n\n return {\n ...childElement,\n initialValue: findField ? findField[1] : undefined,\n };\n }) as IFormElement<any>[];\n }, [element, elements]);\n\n\n if (!isShown) {\n return null;\n }\n\n return (\n <KitsContainer\n id={element.id.toString()}\n label={label}\n helperText={groupHelperText}\n errors={fieldState?.error?.message}\n invalid={fieldState?.invalid}\n hideError={hideError}\n required={isRequired}\n bare\n elementStyles={containerSlots}\n >\n <Flex w=\"full\" flexDirection=\"column\" gap={6} mb={4}\n style={elStyles.root || undefined}>\n\n <Box style={elStyles.body || undefined}>\n {fields.map((field, index) => (\n <Flex key={field.id} w=\"full\" position=\"relative\" flexDirection=\"column\"\n rowGap={6}\n columnGap={8}\n style={elStyles.row || undefined}>\n\n <FormRenderer\n /* ⛔ THE SAME REASON AS `Object`: a repeated item's\n fields go through this nested renderer, so without\n this the form's `rowGap` never reaches the rows\n inside a repeatable card. The `rowGap={6}` on the\n Flex above is NOT this — it separates the item's\n fields from its remove button, and is deliberately\n left alone. */\n rowGap={rowGap}\n elements={reBuildElements(field, index)}\n control={control}\n groupField={{\n index,\n name: element.id.toString(),\n // Use the path-arg form of getValues so a Group nested inside\n // an Object resolves correctly: the FormRenderer rewrites this\n // Group's id to a dotted path (e.g. \"addressGroup.addresses\"),\n // and getValues()[dottedKey] would be undefined (→ crash on\n // [index]). getValues(path) traverses the nesting instead.\n values: (getValues(element.id as any) as any)?.[index],\n append: handleAppend,\n remove: () => handleRemove(index),\n }}\n getValues={getValues}\n parentPath={`${element.id.toString()}.${index}.`}\n focusedField={(focusedField ?? _focusedField)!}\n setFocusedField={(setFocusedField ?? _setFocusedField)!}\n grid={groupsSettings?.grid}\n />\n\n {settings.removeButtonRow && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.removeButtonRow(fields.length, () => handleRemove(index), index)}\n </Box>\n )}\n\n\n {settings.repeatable.minusButton && fields.length > settings.repeatable.minRepeats && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.repeatable.minusButton(fields.length, () => handleRemove(index))}\n </Box>\n )}\n </Flex>\n ))}\n </Box>\n\n {settings.repeatable.plusButton && (\n <Flex justifyContent=\"flex-start\" w=\"full\" mt={8}\n style={elStyles.addButton || undefined}>\n {settings.repeatable.plusButton(fields.length, handleAppend)}\n </Flex>\n )}\n </Flex>\n </KitsContainer>\n );\n};\n\nexport default Group;\n"],"names":["useState","useMemo","useComponentDefaults","useResolvedElementStyles","flattenSlotStyles","useFieldArray","useEffect","useImperativeHandle","useCallback","jsx","KitsContainer","jsxs","Flex","Box","index","FormRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../../src/form-renderer/components/fields/Group/index.native.tsx"],"sourcesContent":["// components/fields/Group.tsx\n\nimport React, {useCallback, useEffect, useImperativeHandle, useMemo, useState} from 'react';\nimport {type FieldArrayWithId, type FieldValues, useFieldArray} from 'react-hook-form';\nimport type {IFormElement, IGroup, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Flex} from \"../../../../_compat\";\nimport KitsContainer from \"../../../../form/helpers/FormContainer\";\nimport {FormRenderer} from \"../../FormRenderer\";\nimport {useComponentDefaults, useResolvedElementStyles} from \"../../../../hooks\";\nimport {flattenSlotStyles} from \"../../../utils\";\n\n/**\n * Renders a repeatable group of fields (a field array), preserving all the logic\n * for default values, min/max repeats, and custom action buttons.\n */\nexport const Group = <T extends FieldValues>({\n element,\n control,\n getValues,\n groupField,\n focusedField,\n setFocusedField,\n fieldLogic,\n rowGap,\n }: UseFieldLogicElementProps<T>) => { // Ensure UseFieldLogicProps is updated to pass focus props\n // 1. Get the group's own dynamic state (visibility, layout, label) from the logic hook.\n const {isShown, label, elements, helperText: groupHelperText, fieldState, hideError, isRequired, slots} = fieldLogic;\n\n // Fallback focus state, used only when the parent form doesn't supply\n // focusedField/setFocusedField — web passes the props straight through.\n const [_focusedField, _setFocusedField] = useState<string>('');\n\n const groupElement = element as IGroup<T>;\n const {groupsSettings} = groupElement;\n\n // Resolve groupSlots (dynamic or static) and merge with theme Group defaults\n const resolvedGroupSlots = useMemo(() => {\n const gs = groupElement.groupSlots;\n if (!gs) return undefined;\n if (typeof gs === 'function') {\n return (gs as any)(fieldLogic.watchedValues, fieldLogic.formContext.getValues(), fieldLogic.formContext, groupField);\n }\n return gs;\n }, [groupElement.groupSlots, fieldLogic.watchedValues, fieldLogic.formContext, groupField]);\n\n const {elementStyles: groupStyles} = useComponentDefaults('Group', {\n slots: resolvedGroupSlots,\n } as any);\n const elStyles = useResolvedElementStyles(groupStyles);\n\n // Element-level `slots` (the outer KitsContainer's container/label/helperText/\n // error) arrive in the nested IElementSlotConfig shape; flatten to the flat\n // { [slot]: styleRecord } map KitsContainer expects. (groupSlots above drive\n // the inner repeatable list — root/body/row — and are already flattened.)\n const containerSlots = useMemo(() => flattenSlotStyles(slots), [slots]);\n\n // 2. Initialize react-hook-form's field array management.\n const fieldArray = useFieldArray({\n control,\n name: element.id as any,\n });\n const {fields, append, remove} = fieldArray;\n\n // console.log('hitted', element, {fields}, element.id)\n // 3. Process group settings with defaults, exactly like the original component.\n const settings = useMemo(() => ({\n grid: groupsSettings?.grid,\n repeatable: {\n minRepeats: groupsSettings?.repeatable?.minRepeats || 0,\n maxRepeats: groupsSettings?.repeatable?.maxRepeats || Infinity,\n plusButton: groupsSettings?.repeatable?.plusButton,\n minusButton: groupsSettings?.repeatable?.minusButton,\n },\n removeButtonRow: groupsSettings?.removeButtonRow,\n }), [groupsSettings]);\n\n // 4. Replicate the logic to build a default item object for new rows.\n const createDefaultItem = (): FieldValues => {\n const item: FieldValues = {};\n elements?.forEach(el => {\n if (\"displayOnly\" in el && el.displayOnly) return;\n\n if (\"initialUri\" in el) {\n item[el.id as string] = (el as any).initialUri;\n } else if (\"initialValue\" in el && el.initialValue !== undefined) {\n item[el.id as string] = el.initialValue;\n }\n });\n return item;\n };\n\n const handleAppend = (count = 1) => {\n const max = settings.repeatable.maxRepeats;\n\n if (max && fields.length >= max) {\n return;\n }\n const itemsToAdd = Array(count).fill(0).map(() => createDefaultItem());\n append(itemsToAdd as any, {shouldFocus: true});\n };\n\n const handleRemove = (index: number) => {\n if (fields.length > (settings.repeatable.minRepeats || 0)) {\n remove(index);\n }\n };\n useEffect(() => {\n const generateGroupElements = () => {\n const min = settings.repeatable.minRepeats || 0;\n if (fields.length < min) {\n const itemsToAppend = min - fields.length;\n // console.log({itemsToAppend, current: fields.length})\n\n handleAppend(itemsToAppend);\n }\n };\n\n // This pattern correctly avoids the infinite loop by not depending on `append` or `fields`.\n // The timeout gives react-hook-form time to initialize before we check the length.\n const timer = setTimeout(generateGroupElements, 100);\n return () => clearTimeout(timer);\n\n }, [element.id, settings.repeatable.minRepeats]); // Stable dependencies\n\n // 6. Replicate the `useImperativeHandle` logic to expose the ref.\n useImperativeHandle(groupsSettings?.ref, () => fieldArray, [fieldArray]);\n\n\n const reBuildElements = useCallback((field: FieldArrayWithId, index: number) => {\n return elements?.map((childElement) => {\n const toArray = Object.entries(field);\n\n const findField = toArray.find(([name]) => name == childElement.id);\n\n return {\n ...childElement,\n initialValue: findField ? findField[1] : undefined,\n };\n }) as IFormElement<any>[];\n }, [element, elements]);\n\n\n if (!isShown) {\n return null;\n }\n\n return (\n <KitsContainer\n id={element.id.toString()}\n label={label}\n helperText={groupHelperText}\n errors={fieldState?.error?.message}\n invalid={fieldState?.invalid}\n hideError={hideError}\n required={isRequired}\n bare\n elementStyles={containerSlots}\n >\n <Flex w=\"full\" flexDirection=\"column\" gap={6} mb={4}\n style={elStyles.root || undefined}>\n\n <Box style={elStyles.body || undefined}>\n {fields.map((field, index) => (\n <Flex key={field.id} w=\"full\" position=\"relative\" flexDirection=\"column\"\n rowGap={6}\n columnGap={8}\n style={elStyles.row || undefined}>\n\n <FormRenderer\n /* ⛔ THE SAME REASON AS `Object`: a repeated item's\n fields go through this nested renderer, so without\n this the form's `rowGap` never reaches the rows\n inside a repeatable card. The `rowGap={6}` on the\n Flex above is NOT this — it separates the item's\n fields from its remove button, and is deliberately\n left alone. */\n rowGap={rowGap}\n elements={reBuildElements(field, index)}\n control={control}\n groupField={{\n index,\n name: element.id.toString(),\n // Use the path-arg form of getValues so a Group nested inside\n // an Object resolves correctly: the FormRenderer rewrites this\n // Group's id to a dotted path (e.g. \"addressGroup.addresses\"),\n // and getValues()[dottedKey] would be undefined (→ crash on\n // [index]). getValues(path) traverses the nesting instead.\n values: (getValues(element.id as any) as any)?.[index],\n append: handleAppend,\n remove: () => handleRemove(index),\n }}\n getValues={getValues}\n parentPath={`${element.id.toString()}.${index}.`}\n focusedField={(focusedField ?? _focusedField)!}\n setFocusedField={(setFocusedField ?? _setFocusedField)!}\n grid={groupsSettings?.grid}\n />\n\n {settings.removeButtonRow && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.removeButtonRow(fields.length, () => handleRemove(index), index)}\n </Box>\n )}\n\n\n {settings.repeatable.minusButton && fields.length > settings.repeatable.minRepeats && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.repeatable.minusButton(fields.length, () => handleRemove(index))}\n </Box>\n )}\n </Flex>\n ))}\n </Box>\n\n {settings.repeatable.plusButton && (\n <Flex justifyContent=\"flex-start\" w=\"full\" mt={8}\n style={elStyles.addButton || undefined}>\n {settings.repeatable.plusButton(fields.length, handleAppend)}\n </Flex>\n )}\n </Flex>\n </KitsContainer>\n );\n};\n\nexport default Group;\n"],"names":["useState","useMemo","useComponentDefaults","useResolvedElementStyles","flattenSlotStyles","useFieldArray","useEffect","useImperativeHandle","useCallback","jsx","KitsContainer","jsxs","Flex","Box","index","FormRenderer"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { useFieldArray } from 'react-hook-form';
4
4
  import KitsContainer from '../../../../form/helpers/FormContainer/index.js';
5
5
  import { FormRenderer } from '../../FormRenderer/index.js';
6
6
  import '../../../../contexts/DialogContext.js';
7
+ import '../../../../contexts/PermissionsContext.js';
7
8
  import useComponentDefaults from '../../../../hooks/useComponentDefaults.js';
8
9
  import useResolvedElementStyles from '../../../../hooks/useResolvedElementStyles.js';
9
10
  import { flattenSlotStyles } from '../../../utils/helpers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/form-renderer/components/fields/Group/index.native.tsx"],"sourcesContent":["// components/fields/Group.tsx\n\nimport React, {useCallback, useEffect, useImperativeHandle, useMemo, useState} from 'react';\nimport {type FieldArrayWithId, type FieldValues, useFieldArray} from 'react-hook-form';\nimport type {IFormElement, IGroup, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Flex} from \"../../../../_compat\";\nimport KitsContainer from \"../../../../form/helpers/FormContainer\";\nimport {FormRenderer} from \"../../FormRenderer\";\nimport {useComponentDefaults, useResolvedElementStyles} from \"../../../../hooks\";\nimport {flattenSlotStyles} from \"../../../utils\";\n\n/**\n * Renders a repeatable group of fields (a field array), preserving all the logic\n * for default values, min/max repeats, and custom action buttons.\n */\nexport const Group = <T extends FieldValues>({\n element,\n control,\n getValues,\n groupField,\n focusedField,\n setFocusedField,\n fieldLogic,\n rowGap,\n }: UseFieldLogicElementProps<T>) => { // Ensure UseFieldLogicProps is updated to pass focus props\n // 1. Get the group's own dynamic state (visibility, layout, label) from the logic hook.\n const {isShown, label, elements, helperText: groupHelperText, fieldState, hideError, isRequired, slots} = fieldLogic;\n\n // Fallback focus state, used only when the parent form doesn't supply\n // focusedField/setFocusedField — web passes the props straight through.\n const [_focusedField, _setFocusedField] = useState<string>('');\n\n const groupElement = element as IGroup<T>;\n const {groupsSettings} = groupElement;\n\n // Resolve groupSlots (dynamic or static) and merge with theme Group defaults\n const resolvedGroupSlots = useMemo(() => {\n const gs = groupElement.groupSlots;\n if (!gs) return undefined;\n if (typeof gs === 'function') {\n return (gs as any)(fieldLogic.watchedValues, fieldLogic.formContext.getValues(), fieldLogic.formContext, groupField);\n }\n return gs;\n }, [groupElement.groupSlots, fieldLogic.watchedValues, fieldLogic.formContext, groupField]);\n\n const {elementStyles: groupStyles} = useComponentDefaults('Group', {\n slots: resolvedGroupSlots,\n } as any);\n const elStyles = useResolvedElementStyles(groupStyles);\n\n // Element-level `slots` (the outer KitsContainer's container/label/helperText/\n // error) arrive in the nested IElementSlotConfig shape; flatten to the flat\n // { [slot]: styleRecord } map KitsContainer expects. (groupSlots above drive\n // the inner repeatable list — root/body/row — and are already flattened.)\n const containerSlots = useMemo(() => flattenSlotStyles(slots), [slots]);\n\n // 2. Initialize react-hook-form's field array management.\n const fieldArray = useFieldArray({\n control,\n name: element.id as any,\n });\n const {fields, append, remove} = fieldArray;\n\n // console.log('hitted', element, {fields}, element.id)\n // 3. Process group settings with defaults, exactly like the original component.\n const settings = useMemo(() => ({\n grid: groupsSettings?.grid,\n repeatable: {\n minRepeats: groupsSettings?.repeatable?.minRepeats || 0,\n maxRepeats: groupsSettings?.repeatable?.maxRepeats || Infinity,\n plusButton: groupsSettings?.repeatable?.plusButton,\n minusButton: groupsSettings?.repeatable?.minusButton,\n },\n removeButtonRow: groupsSettings?.removeButtonRow,\n }), [groupsSettings]);\n\n // 4. Replicate the logic to build a default item object for new rows.\n const createDefaultItem = (): FieldValues => {\n const item: FieldValues = {};\n elements?.forEach(el => {\n if (\"displayOnly\" in el && el.displayOnly) return;\n\n if (\"initialUri\" in el) {\n item[el.id as string] = (el as any).initialUri;\n } else if (\"initialValue\" in el && el.initialValue !== undefined) {\n item[el.id as string] = el.initialValue;\n }\n });\n return item;\n };\n\n const handleAppend = (count = 1) => {\n const max = settings.repeatable.maxRepeats;\n\n if (max && fields.length >= max) {\n return;\n }\n const itemsToAdd = Array(count).fill(0).map(() => createDefaultItem());\n append(itemsToAdd as any, {shouldFocus: true});\n };\n\n const handleRemove = (index: number) => {\n if (fields.length > (settings.repeatable.minRepeats || 0)) {\n remove(index);\n }\n };\n useEffect(() => {\n const generateGroupElements = () => {\n const min = settings.repeatable.minRepeats || 0;\n if (fields.length < min) {\n const itemsToAppend = min - fields.length;\n // console.log({itemsToAppend, current: fields.length})\n\n handleAppend(itemsToAppend);\n }\n };\n\n // This pattern correctly avoids the infinite loop by not depending on `append` or `fields`.\n // The timeout gives react-hook-form time to initialize before we check the length.\n const timer = setTimeout(generateGroupElements, 100);\n return () => clearTimeout(timer);\n\n }, [element.id, settings.repeatable.minRepeats]); // Stable dependencies\n\n // 6. Replicate the `useImperativeHandle` logic to expose the ref.\n useImperativeHandle(groupsSettings?.ref, () => fieldArray, [fieldArray]);\n\n\n const reBuildElements = useCallback((field: FieldArrayWithId, index: number) => {\n return elements?.map((childElement) => {\n const toArray = Object.entries(field);\n\n const findField = toArray.find(([name]) => name == childElement.id);\n\n return {\n ...childElement,\n initialValue: findField ? findField[1] : undefined,\n };\n }) as IFormElement<any>[];\n }, [element, elements]);\n\n\n if (!isShown) {\n return null;\n }\n\n return (\n <KitsContainer\n id={element.id.toString()}\n label={label}\n helperText={groupHelperText}\n errors={fieldState?.error?.message}\n invalid={fieldState?.invalid}\n hideError={hideError}\n required={isRequired}\n bare\n elementStyles={containerSlots}\n >\n <Flex w=\"full\" flexDirection=\"column\" gap={6} mb={4}\n style={elStyles.root || undefined}>\n\n <Box style={elStyles.body || undefined}>\n {fields.map((field, index) => (\n <Flex key={field.id} w=\"full\" position=\"relative\" flexDirection=\"column\"\n rowGap={6}\n columnGap={8}\n style={elStyles.row || undefined}>\n\n <FormRenderer\n /* ⛔ THE SAME REASON AS `Object`: a repeated item's\n fields go through this nested renderer, so without\n this the form's `rowGap` never reaches the rows\n inside a repeatable card. The `rowGap={6}` on the\n Flex above is NOT this — it separates the item's\n fields from its remove button, and is deliberately\n left alone. */\n rowGap={rowGap}\n elements={reBuildElements(field, index)}\n control={control}\n groupField={{\n index,\n name: element.id.toString(),\n // Use the path-arg form of getValues so a Group nested inside\n // an Object resolves correctly: the FormRenderer rewrites this\n // Group's id to a dotted path (e.g. \"addressGroup.addresses\"),\n // and getValues()[dottedKey] would be undefined (→ crash on\n // [index]). getValues(path) traverses the nesting instead.\n values: (getValues(element.id as any) as any)?.[index],\n append: handleAppend,\n remove: () => handleRemove(index),\n }}\n getValues={getValues}\n parentPath={`${element.id.toString()}.${index}.`}\n focusedField={(focusedField ?? _focusedField)!}\n setFocusedField={(setFocusedField ?? _setFocusedField)!}\n grid={groupsSettings?.grid}\n />\n\n {settings.removeButtonRow && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.removeButtonRow(fields.length, () => handleRemove(index), index)}\n </Box>\n )}\n\n\n {settings.repeatable.minusButton && fields.length > settings.repeatable.minRepeats && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.repeatable.minusButton(fields.length, () => handleRemove(index))}\n </Box>\n )}\n </Flex>\n ))}\n </Box>\n\n {settings.repeatable.plusButton && (\n <Flex justifyContent=\"flex-start\" w=\"full\" mt={8}\n style={elStyles.addButton || undefined}>\n {settings.repeatable.plusButton(fields.length, handleAppend)}\n </Flex>\n )}\n </Flex>\n </KitsContainer>\n );\n};\n\nexport default Group;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/form-renderer/components/fields/Group/index.native.tsx"],"sourcesContent":["// components/fields/Group.tsx\n\nimport React, {useCallback, useEffect, useImperativeHandle, useMemo, useState} from 'react';\nimport {type FieldArrayWithId, type FieldValues, useFieldArray} from 'react-hook-form';\nimport type {IFormElement, IGroup, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Flex} from \"../../../../_compat\";\nimport KitsContainer from \"../../../../form/helpers/FormContainer\";\nimport {FormRenderer} from \"../../FormRenderer\";\nimport {useComponentDefaults, useResolvedElementStyles} from \"../../../../hooks\";\nimport {flattenSlotStyles} from \"../../../utils\";\n\n/**\n * Renders a repeatable group of fields (a field array), preserving all the logic\n * for default values, min/max repeats, and custom action buttons.\n */\nexport const Group = <T extends FieldValues>({\n element,\n control,\n getValues,\n groupField,\n focusedField,\n setFocusedField,\n fieldLogic,\n rowGap,\n }: UseFieldLogicElementProps<T>) => { // Ensure UseFieldLogicProps is updated to pass focus props\n // 1. Get the group's own dynamic state (visibility, layout, label) from the logic hook.\n const {isShown, label, elements, helperText: groupHelperText, fieldState, hideError, isRequired, slots} = fieldLogic;\n\n // Fallback focus state, used only when the parent form doesn't supply\n // focusedField/setFocusedField — web passes the props straight through.\n const [_focusedField, _setFocusedField] = useState<string>('');\n\n const groupElement = element as IGroup<T>;\n const {groupsSettings} = groupElement;\n\n // Resolve groupSlots (dynamic or static) and merge with theme Group defaults\n const resolvedGroupSlots = useMemo(() => {\n const gs = groupElement.groupSlots;\n if (!gs) return undefined;\n if (typeof gs === 'function') {\n return (gs as any)(fieldLogic.watchedValues, fieldLogic.formContext.getValues(), fieldLogic.formContext, groupField);\n }\n return gs;\n }, [groupElement.groupSlots, fieldLogic.watchedValues, fieldLogic.formContext, groupField]);\n\n const {elementStyles: groupStyles} = useComponentDefaults('Group', {\n slots: resolvedGroupSlots,\n } as any);\n const elStyles = useResolvedElementStyles(groupStyles);\n\n // Element-level `slots` (the outer KitsContainer's container/label/helperText/\n // error) arrive in the nested IElementSlotConfig shape; flatten to the flat\n // { [slot]: styleRecord } map KitsContainer expects. (groupSlots above drive\n // the inner repeatable list — root/body/row — and are already flattened.)\n const containerSlots = useMemo(() => flattenSlotStyles(slots), [slots]);\n\n // 2. Initialize react-hook-form's field array management.\n const fieldArray = useFieldArray({\n control,\n name: element.id as any,\n });\n const {fields, append, remove} = fieldArray;\n\n // console.log('hitted', element, {fields}, element.id)\n // 3. Process group settings with defaults, exactly like the original component.\n const settings = useMemo(() => ({\n grid: groupsSettings?.grid,\n repeatable: {\n minRepeats: groupsSettings?.repeatable?.minRepeats || 0,\n maxRepeats: groupsSettings?.repeatable?.maxRepeats || Infinity,\n plusButton: groupsSettings?.repeatable?.plusButton,\n minusButton: groupsSettings?.repeatable?.minusButton,\n },\n removeButtonRow: groupsSettings?.removeButtonRow,\n }), [groupsSettings]);\n\n // 4. Replicate the logic to build a default item object for new rows.\n const createDefaultItem = (): FieldValues => {\n const item: FieldValues = {};\n elements?.forEach(el => {\n if (\"displayOnly\" in el && el.displayOnly) return;\n\n if (\"initialUri\" in el) {\n item[el.id as string] = (el as any).initialUri;\n } else if (\"initialValue\" in el && el.initialValue !== undefined) {\n item[el.id as string] = el.initialValue;\n }\n });\n return item;\n };\n\n const handleAppend = (count = 1) => {\n const max = settings.repeatable.maxRepeats;\n\n if (max && fields.length >= max) {\n return;\n }\n const itemsToAdd = Array(count).fill(0).map(() => createDefaultItem());\n append(itemsToAdd as any, {shouldFocus: true});\n };\n\n const handleRemove = (index: number) => {\n if (fields.length > (settings.repeatable.minRepeats || 0)) {\n remove(index);\n }\n };\n useEffect(() => {\n const generateGroupElements = () => {\n const min = settings.repeatable.minRepeats || 0;\n if (fields.length < min) {\n const itemsToAppend = min - fields.length;\n // console.log({itemsToAppend, current: fields.length})\n\n handleAppend(itemsToAppend);\n }\n };\n\n // This pattern correctly avoids the infinite loop by not depending on `append` or `fields`.\n // The timeout gives react-hook-form time to initialize before we check the length.\n const timer = setTimeout(generateGroupElements, 100);\n return () => clearTimeout(timer);\n\n }, [element.id, settings.repeatable.minRepeats]); // Stable dependencies\n\n // 6. Replicate the `useImperativeHandle` logic to expose the ref.\n useImperativeHandle(groupsSettings?.ref, () => fieldArray, [fieldArray]);\n\n\n const reBuildElements = useCallback((field: FieldArrayWithId, index: number) => {\n return elements?.map((childElement) => {\n const toArray = Object.entries(field);\n\n const findField = toArray.find(([name]) => name == childElement.id);\n\n return {\n ...childElement,\n initialValue: findField ? findField[1] : undefined,\n };\n }) as IFormElement<any>[];\n }, [element, elements]);\n\n\n if (!isShown) {\n return null;\n }\n\n return (\n <KitsContainer\n id={element.id.toString()}\n label={label}\n helperText={groupHelperText}\n errors={fieldState?.error?.message}\n invalid={fieldState?.invalid}\n hideError={hideError}\n required={isRequired}\n bare\n elementStyles={containerSlots}\n >\n <Flex w=\"full\" flexDirection=\"column\" gap={6} mb={4}\n style={elStyles.root || undefined}>\n\n <Box style={elStyles.body || undefined}>\n {fields.map((field, index) => (\n <Flex key={field.id} w=\"full\" position=\"relative\" flexDirection=\"column\"\n rowGap={6}\n columnGap={8}\n style={elStyles.row || undefined}>\n\n <FormRenderer\n /* ⛔ THE SAME REASON AS `Object`: a repeated item's\n fields go through this nested renderer, so without\n this the form's `rowGap` never reaches the rows\n inside a repeatable card. The `rowGap={6}` on the\n Flex above is NOT this — it separates the item's\n fields from its remove button, and is deliberately\n left alone. */\n rowGap={rowGap}\n elements={reBuildElements(field, index)}\n control={control}\n groupField={{\n index,\n name: element.id.toString(),\n // Use the path-arg form of getValues so a Group nested inside\n // an Object resolves correctly: the FormRenderer rewrites this\n // Group's id to a dotted path (e.g. \"addressGroup.addresses\"),\n // and getValues()[dottedKey] would be undefined (→ crash on\n // [index]). getValues(path) traverses the nesting instead.\n values: (getValues(element.id as any) as any)?.[index],\n append: handleAppend,\n remove: () => handleRemove(index),\n }}\n getValues={getValues}\n parentPath={`${element.id.toString()}.${index}.`}\n focusedField={(focusedField ?? _focusedField)!}\n setFocusedField={(setFocusedField ?? _setFocusedField)!}\n grid={groupsSettings?.grid}\n />\n\n {settings.removeButtonRow && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.removeButtonRow(fields.length, () => handleRemove(index), index)}\n </Box>\n )}\n\n\n {settings.repeatable.minusButton && fields.length > settings.repeatable.minRepeats && (\n <Box style={{zIndex: 1, ...(elStyles.removeButton || {})}}>\n {settings.repeatable.minusButton(fields.length, () => handleRemove(index))}\n </Box>\n )}\n </Flex>\n ))}\n </Box>\n\n {settings.repeatable.plusButton && (\n <Flex justifyContent=\"flex-start\" w=\"full\" mt={8}\n style={elStyles.addButton || undefined}>\n {settings.repeatable.plusButton(fields.length, handleAppend)}\n </Flex>\n )}\n </Flex>\n </KitsContainer>\n );\n};\n\nexport default Group;\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  var radio_native = require('../../../../form/controls/RadioButton/radio.cjs');
7
7
  require('react');
8
8
  require('../../../../contexts/DialogContext.cjs');
9
+ require('../../../../contexts/PermissionsContext.cjs');
9
10
 
10
11
  const Radios = ({
11
12
  element,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../src/form-renderer/components/fields/Radios/index.tsx"],"sourcesContent":["// components/fields/Checkboxes.tsx\n\nimport React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {ICheckbox, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Flex, KitsRadios} from \"../../../../_compat\";\nimport type {IRadioCheckboxListItem} from \"@lmb-it/kitsconcerto-types\";\n\n/**\n * Renders a group of checkboxes.\n\n */\nexport const Radios = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n // 1. The central hook provides all the necessary state and resolved props.\n const {\n field,\n fieldState,\n label,\n isDisabled,\n isRequired,\n helperText,\n hideError,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic\n\n\n\n // 2. Cast the element to its specific type to access unique properties.\n const checkboxElement = element as ICheckbox<T>;\n const {vertical} = checkboxElement;\n\n // 3. The component is now only responsible for rendering the UI.\n return (\n <KitsRadios<T>\n // --- Core react-hook-form props ---\n {...field} // Spreads `onChange`, `onBlur`, `value`, `ref`\n\n onChange={(checked, event)=>{\n field.onChange({\n target:{\n value:event.value\n }\n });\n }}\n // --- Resolved props from useFieldLogic ---\n id={field.name}\n label={label}\n hideError={hideError}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n item={list as IRadioCheckboxListItem[]}\n attached={attached}\n appearanceMode={vertical ? 'vertical' : 'horizontal'}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n />\n );\n};\n\nexport default Radios;\n"],"names":["jsx","KitsRadios"],"mappings":";;;;;;;;;AAYO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAG9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAKJ,EAAA,MAAM,eAAA,GAAkB,OAAA;AACxB,EAAA,MAAM,EAAC,UAAQ,GAAI,eAAA;AAGnB,EAAA,uBACIA,cAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MAEI,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAU,CAAC,OAAA,EAAS,KAAA,KAAQ;AACxB,QAAA,KAAA,CAAM,QAAA,CAAS;AAAA,UACX,MAAA,EAAO;AAAA,YACH,OAAM,KAAA,CAAM;AAAA;AAChB,SACH,CAAA;AAAA,MACL,CAAA;AAAA,MAEA,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,QAAA;AAAA,MACA,cAAA,EAAgB,WAAW,UAAA,GAAa,YAAA;AAAA,MACxC,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B;AAAA;AAAA,GACJ;AAER;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../../src/form-renderer/components/fields/Radios/index.tsx"],"sourcesContent":["// components/fields/Checkboxes.tsx\n\nimport React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {ICheckbox, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Flex, KitsRadios} from \"../../../../_compat\";\nimport type {IRadioCheckboxListItem} from \"@lmb-it/kitsconcerto-types\";\n\n/**\n * Renders a group of checkboxes.\n\n */\nexport const Radios = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n // 1. The central hook provides all the necessary state and resolved props.\n const {\n field,\n fieldState,\n label,\n isDisabled,\n isRequired,\n helperText,\n hideError,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic\n\n\n\n // 2. Cast the element to its specific type to access unique properties.\n const checkboxElement = element as ICheckbox<T>;\n const {vertical} = checkboxElement;\n\n // 3. The component is now only responsible for rendering the UI.\n return (\n <KitsRadios<T>\n // --- Core react-hook-form props ---\n {...field} // Spreads `onChange`, `onBlur`, `value`, `ref`\n\n onChange={(checked, event)=>{\n field.onChange({\n target:{\n value:event.value\n }\n });\n }}\n // --- Resolved props from useFieldLogic ---\n id={field.name}\n label={label}\n hideError={hideError}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n item={list as IRadioCheckboxListItem[]}\n attached={attached}\n appearanceMode={vertical ? 'vertical' : 'horizontal'}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n />\n );\n};\n\nexport default Radios;\n"],"names":["jsx","KitsRadios"],"mappings":";;;;;;;;;;AAYO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAG9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAKJ,EAAA,MAAM,eAAA,GAAkB,OAAA;AACxB,EAAA,MAAM,EAAC,UAAQ,GAAI,eAAA;AAGnB,EAAA,uBACIA,cAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MAEI,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAU,CAAC,OAAA,EAAS,KAAA,KAAQ;AACxB,QAAA,KAAA,CAAM,QAAA,CAAS;AAAA,UACX,MAAA,EAAO;AAAA,YACH,OAAM,KAAA,CAAM;AAAA;AAChB,SACH,CAAA;AAAA,MACL,CAAA;AAAA,MAEA,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,QAAA;AAAA,MACA,cAAA,EAAgB,WAAW,UAAA,GAAa,YAAA;AAAA,MACxC,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B;AAAA;AAAA,GACJ;AAER;;;;;"}
@@ -2,6 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import KitsRadio from '../../../../form/controls/RadioButton/radio.js';
3
3
  import 'react';
4
4
  import '../../../../contexts/DialogContext.js';
5
+ import '../../../../contexts/PermissionsContext.js';
5
6
 
6
7
  const Radios = ({
7
8
  element,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/form-renderer/components/fields/Radios/index.tsx"],"sourcesContent":["// components/fields/Checkboxes.tsx\n\nimport React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {ICheckbox, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Flex, KitsRadios} from \"../../../../_compat\";\nimport type {IRadioCheckboxListItem} from \"@lmb-it/kitsconcerto-types\";\n\n/**\n * Renders a group of checkboxes.\n\n */\nexport const Radios = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n // 1. The central hook provides all the necessary state and resolved props.\n const {\n field,\n fieldState,\n label,\n isDisabled,\n isRequired,\n helperText,\n hideError,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic\n\n\n\n // 2. Cast the element to its specific type to access unique properties.\n const checkboxElement = element as ICheckbox<T>;\n const {vertical} = checkboxElement;\n\n // 3. The component is now only responsible for rendering the UI.\n return (\n <KitsRadios<T>\n // --- Core react-hook-form props ---\n {...field} // Spreads `onChange`, `onBlur`, `value`, `ref`\n\n onChange={(checked, event)=>{\n field.onChange({\n target:{\n value:event.value\n }\n });\n }}\n // --- Resolved props from useFieldLogic ---\n id={field.name}\n label={label}\n hideError={hideError}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n item={list as IRadioCheckboxListItem[]}\n attached={attached}\n appearanceMode={vertical ? 'vertical' : 'horizontal'}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n />\n );\n};\n\nexport default Radios;\n"],"names":["KitsRadios"],"mappings":";;;;;AAYO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAG9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAKJ,EAAA,MAAM,eAAA,GAAkB,OAAA;AACxB,EAAA,MAAM,EAAC,UAAQ,GAAI,eAAA;AAGnB,EAAA,uBACI,GAAA;AAAA,IAACA,SAAA;AAAA,IAAA;AAAA,MAEI,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAU,CAAC,OAAA,EAAS,KAAA,KAAQ;AACxB,QAAA,KAAA,CAAM,QAAA,CAAS;AAAA,UACX,MAAA,EAAO;AAAA,YACH,OAAM,KAAA,CAAM;AAAA;AAChB,SACH,CAAA;AAAA,MACL,CAAA;AAAA,MAEA,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,QAAA;AAAA,MACA,cAAA,EAAgB,WAAW,UAAA,GAAa,YAAA;AAAA,MACxC,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B;AAAA;AAAA,GACJ;AAER;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/form-renderer/components/fields/Radios/index.tsx"],"sourcesContent":["// components/fields/Checkboxes.tsx\n\nimport React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {ICheckbox, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Flex, KitsRadios} from \"../../../../_compat\";\nimport type {IRadioCheckboxListItem} from \"@lmb-it/kitsconcerto-types\";\n\n/**\n * Renders a group of checkboxes.\n\n */\nexport const Radios = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n // 1. The central hook provides all the necessary state and resolved props.\n const {\n field,\n fieldState,\n label,\n isDisabled,\n isRequired,\n helperText,\n hideError,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic\n\n\n\n // 2. Cast the element to its specific type to access unique properties.\n const checkboxElement = element as ICheckbox<T>;\n const {vertical} = checkboxElement;\n\n // 3. The component is now only responsible for rendering the UI.\n return (\n <KitsRadios<T>\n // --- Core react-hook-form props ---\n {...field} // Spreads `onChange`, `onBlur`, `value`, `ref`\n\n onChange={(checked, event)=>{\n field.onChange({\n target:{\n value:event.value\n }\n });\n }}\n // --- Resolved props from useFieldLogic ---\n id={field.name}\n label={label}\n hideError={hideError}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n item={list as IRadioCheckboxListItem[]}\n attached={attached}\n appearanceMode={vertical ? 'vertical' : 'horizontal'}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n />\n );\n};\n\nexport default Radios;\n"],"names":["KitsRadios"],"mappings":";;;;;;AAYO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAG9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAKJ,EAAA,MAAM,eAAA,GAAkB,OAAA;AACxB,EAAA,MAAM,EAAC,UAAQ,GAAI,eAAA;AAGnB,EAAA,uBACI,GAAA;AAAA,IAACA,SAAA;AAAA,IAAA;AAAA,MAEI,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAU,CAAC,OAAA,EAAS,KAAA,KAAQ;AACxB,QAAA,KAAA,CAAM,QAAA,CAAS;AAAA,UACX,MAAA,EAAO;AAAA,YACH,OAAM,KAAA,CAAM;AAAA;AAChB,SACH,CAAA;AAAA,MACL,CAAA;AAAA,MAEA,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,QAAA;AAAA,MACA,cAAA,EAAgB,WAAW,UAAA,GAAa,YAAA;AAAA,MACxC,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B;AAAA;AAAA,GACJ;AAER;;;;"}
@@ -7,6 +7,7 @@ var SelectContext = require('../../../../form/selects/SelectContext.cjs');
7
7
  require('react');
8
8
  require('axios');
9
9
  require('../../../../contexts/DialogContext.cjs');
10
+ require('../../../../contexts/PermissionsContext.cjs');
10
11
 
11
12
  const Select = ({
12
13
  element,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../src/form-renderer/components/fields/Select/index.tsx"],"sourcesContent":["import React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {Shapes, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {FormSelect} from \"../../../../_compat\";\nimport type {IListItem} from \"@lmb-it/kitsconcerto-types\";\n\nexport const Select = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n const {\n field,\n fieldState,\n label,\n placeholder,\n isDisabled,\n isRequired,\n helperText,\n watchedValues,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic;\n\n // Map form element type → FormSelect shape\n const shapeMap: Record<string, Shapes> = {\n Select: 'dropdown',\n Multiselect: 'multiselect',\n Tags: 'autocomplete',\n ListBox: 'listBox',\n TreeSelect: 'treeSelect',\n };\n\n const shape: Shapes = shapeMap[element.type as keyof typeof shapeMap] || 'dropdown';\n\n const {\n // Common\n labelKey,\n valueKey,\n outputValueKey,\n childrenKey,\n withFilter,\n filterBy,\n virtualScroll,\n showClear,\n popup,\n // Specific\n withArrow,\n isMultiple,\n forceSelection,\n completeMethod,\n valueMode,\n selectionLimit,\n hideError,\n // TreeSelect specific\n onlyParentsWithChildren,\n isStructured,\n } = element as any;\n\n // No key regeneration needed here.\n // SelectContext already handles list changes reactively via its own useEffect([list]).\n // All underlying components (Dropdown, AutoComplete, etc.) react to prop changes natively.\n // A key change would force a full remount — destroying focus state and any user interaction.\n\n return (\n <FormSelect\n {...field}\n id={field.name}\n shape={shape}\n label={label}\n placeholder={placeholder}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n list={list as IListItem[]}\n hideError={hideError}\n attached={attached}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n labelKey={labelKey}\n valueKey={valueKey}\n outputValueKey={outputValueKey}\n childrenKey={childrenKey}\n withFilter={withFilter}\n filterBy={filterBy}\n virtualScroll={virtualScroll}\n showClear={showClear}\n /* ⛔ A PROP IS ONLY AS GOOD AS ITS NARROWEST GATE. This renderer\n forwards a NAMED list, not a spread, so a select prop that is not\n listed here never reaches the component however correct the rest\n of the chain is. `popup` was added to the type, the wrapper and\n the native component and still did nothing, because of this line's\n absence. */\n popup={popup}\n withArrow={withArrow}\n isMultiple={isMultiple}\n forceSelection={forceSelection}\n completeMethod={completeMethod}\n valueMode={valueMode}\n selectionLimit={selectionLimit}\n onlyParentsWithChildren={onlyParentsWithChildren}\n isStructured={isStructured}\n />\n );\n};\n\nexport default Select;\n"],"names":["jsx","FormSelect"],"mappings":";;;;;;;;;;AAMO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAE9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAGJ,EAAA,MAAM,QAAA,GAAmC;AAAA,IACrC,MAAA,EAAQ,UAAA;AAAA,IACR,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,UAAA,EAAY;AAAA,GAChB;AAEA,EAAA,MAAM,KAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,IAA6B,CAAA,IAAK,UAAA;AAEzE,EAAA,MAAM;AAAA;AAAA,IAEF,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA;AAAA,IAEA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA;AAAA,IAEA,uBAAA;AAAA,IACA;AAAA,GACJ,GAAI,OAAA;AAOJ,EAAA,uBACIA,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACI,GAAG,KAAA;AAAA,MACJ,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MAOA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,uBAAA;AAAA,MACA;AAAA;AAAA,GACJ;AAER;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../../src/form-renderer/components/fields/Select/index.tsx"],"sourcesContent":["import React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {Shapes, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {FormSelect} from \"../../../../_compat\";\nimport type {IListItem} from \"@lmb-it/kitsconcerto-types\";\n\nexport const Select = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n const {\n field,\n fieldState,\n label,\n placeholder,\n isDisabled,\n isRequired,\n helperText,\n watchedValues,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic;\n\n // Map form element type → FormSelect shape\n const shapeMap: Record<string, Shapes> = {\n Select: 'dropdown',\n Multiselect: 'multiselect',\n Tags: 'autocomplete',\n ListBox: 'listBox',\n TreeSelect: 'treeSelect',\n };\n\n const shape: Shapes = shapeMap[element.type as keyof typeof shapeMap] || 'dropdown';\n\n const {\n // Common\n labelKey,\n valueKey,\n outputValueKey,\n childrenKey,\n withFilter,\n filterBy,\n virtualScroll,\n showClear,\n popup,\n // Specific\n withArrow,\n isMultiple,\n forceSelection,\n completeMethod,\n valueMode,\n selectionLimit,\n hideError,\n // TreeSelect specific\n onlyParentsWithChildren,\n isStructured,\n } = element as any;\n\n // No key regeneration needed here.\n // SelectContext already handles list changes reactively via its own useEffect([list]).\n // All underlying components (Dropdown, AutoComplete, etc.) react to prop changes natively.\n // A key change would force a full remount — destroying focus state and any user interaction.\n\n return (\n <FormSelect\n {...field}\n id={field.name}\n shape={shape}\n label={label}\n placeholder={placeholder}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n list={list as IListItem[]}\n hideError={hideError}\n attached={attached}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n labelKey={labelKey}\n valueKey={valueKey}\n outputValueKey={outputValueKey}\n childrenKey={childrenKey}\n withFilter={withFilter}\n filterBy={filterBy}\n virtualScroll={virtualScroll}\n showClear={showClear}\n /* ⛔ A PROP IS ONLY AS GOOD AS ITS NARROWEST GATE. This renderer\n forwards a NAMED list, not a spread, so a select prop that is not\n listed here never reaches the component however correct the rest\n of the chain is. `popup` was added to the type, the wrapper and\n the native component and still did nothing, because of this line's\n absence. */\n popup={popup}\n withArrow={withArrow}\n isMultiple={isMultiple}\n forceSelection={forceSelection}\n completeMethod={completeMethod}\n valueMode={valueMode}\n selectionLimit={selectionLimit}\n onlyParentsWithChildren={onlyParentsWithChildren}\n isStructured={isStructured}\n />\n );\n};\n\nexport default Select;\n"],"names":["jsx","FormSelect"],"mappings":";;;;;;;;;;;AAMO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAE9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAGJ,EAAA,MAAM,QAAA,GAAmC;AAAA,IACrC,MAAA,EAAQ,UAAA;AAAA,IACR,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,UAAA,EAAY;AAAA,GAChB;AAEA,EAAA,MAAM,KAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,IAA6B,CAAA,IAAK,UAAA;AAEzE,EAAA,MAAM;AAAA;AAAA,IAEF,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA;AAAA,IAEA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA;AAAA,IAEA,uBAAA;AAAA,IACA;AAAA,GACJ,GAAI,OAAA;AAOJ,EAAA,uBACIA,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACI,GAAG,KAAA;AAAA,MACJ,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MAOA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,uBAAA;AAAA,MACA;AAAA;AAAA,GACJ;AAER;;;;;"}
@@ -3,6 +3,7 @@ import FormSelect from '../../../../form/selects/SelectContext.js';
3
3
  import 'react';
4
4
  import 'axios';
5
5
  import '../../../../contexts/DialogContext.js';
6
+ import '../../../../contexts/PermissionsContext.js';
6
7
 
7
8
  const Select = ({
8
9
  element,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/form-renderer/components/fields/Select/index.tsx"],"sourcesContent":["import React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {Shapes, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {FormSelect} from \"../../../../_compat\";\nimport type {IListItem} from \"@lmb-it/kitsconcerto-types\";\n\nexport const Select = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n const {\n field,\n fieldState,\n label,\n placeholder,\n isDisabled,\n isRequired,\n helperText,\n watchedValues,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic;\n\n // Map form element type → FormSelect shape\n const shapeMap: Record<string, Shapes> = {\n Select: 'dropdown',\n Multiselect: 'multiselect',\n Tags: 'autocomplete',\n ListBox: 'listBox',\n TreeSelect: 'treeSelect',\n };\n\n const shape: Shapes = shapeMap[element.type as keyof typeof shapeMap] || 'dropdown';\n\n const {\n // Common\n labelKey,\n valueKey,\n outputValueKey,\n childrenKey,\n withFilter,\n filterBy,\n virtualScroll,\n showClear,\n popup,\n // Specific\n withArrow,\n isMultiple,\n forceSelection,\n completeMethod,\n valueMode,\n selectionLimit,\n hideError,\n // TreeSelect specific\n onlyParentsWithChildren,\n isStructured,\n } = element as any;\n\n // No key regeneration needed here.\n // SelectContext already handles list changes reactively via its own useEffect([list]).\n // All underlying components (Dropdown, AutoComplete, etc.) react to prop changes natively.\n // A key change would force a full remount — destroying focus state and any user interaction.\n\n return (\n <FormSelect\n {...field}\n id={field.name}\n shape={shape}\n label={label}\n placeholder={placeholder}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n list={list as IListItem[]}\n hideError={hideError}\n attached={attached}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n labelKey={labelKey}\n valueKey={valueKey}\n outputValueKey={outputValueKey}\n childrenKey={childrenKey}\n withFilter={withFilter}\n filterBy={filterBy}\n virtualScroll={virtualScroll}\n showClear={showClear}\n /* ⛔ A PROP IS ONLY AS GOOD AS ITS NARROWEST GATE. This renderer\n forwards a NAMED list, not a spread, so a select prop that is not\n listed here never reaches the component however correct the rest\n of the chain is. `popup` was added to the type, the wrapper and\n the native component and still did nothing, because of this line's\n absence. */\n popup={popup}\n withArrow={withArrow}\n isMultiple={isMultiple}\n forceSelection={forceSelection}\n completeMethod={completeMethod}\n valueMode={valueMode}\n selectionLimit={selectionLimit}\n onlyParentsWithChildren={onlyParentsWithChildren}\n isStructured={isStructured}\n />\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAE9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAGJ,EAAA,MAAM,QAAA,GAAmC;AAAA,IACrC,MAAA,EAAQ,UAAA;AAAA,IACR,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,UAAA,EAAY;AAAA,GAChB;AAEA,EAAA,MAAM,KAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,IAA6B,CAAA,IAAK,UAAA;AAEzE,EAAA,MAAM;AAAA;AAAA,IAEF,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA;AAAA,IAEA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA;AAAA,IAEA,uBAAA;AAAA,IACA;AAAA,GACJ,GAAI,OAAA;AAOJ,EAAA,uBACI,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACI,GAAG,KAAA;AAAA,MACJ,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MAOA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,uBAAA;AAAA,MACA;AAAA;AAAA,GACJ;AAER;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/form-renderer/components/fields/Select/index.tsx"],"sourcesContent":["import React from 'react';\nimport type {FieldValues} from 'react-hook-form';\nimport type {Shapes, UseFieldLogicElementProps} from \"@lmb-it/kitsconcerto-types\";\nimport {FormSelect} from \"../../../../_compat\";\nimport type {IListItem} from \"@lmb-it/kitsconcerto-types\";\n\nexport const Select = <T extends FieldValues>({\n element,\n control,\n getValues,\n fieldLogic,\n }: UseFieldLogicElementProps<T>) => {\n\n const {\n field,\n fieldState,\n label,\n placeholder,\n isDisabled,\n isRequired,\n helperText,\n watchedValues,\n list,\n attached,\n style: elementStyle,\n slots,\n } = fieldLogic;\n\n // Map form element type → FormSelect shape\n const shapeMap: Record<string, Shapes> = {\n Select: 'dropdown',\n Multiselect: 'multiselect',\n Tags: 'autocomplete',\n ListBox: 'listBox',\n TreeSelect: 'treeSelect',\n };\n\n const shape: Shapes = shapeMap[element.type as keyof typeof shapeMap] || 'dropdown';\n\n const {\n // Common\n labelKey,\n valueKey,\n outputValueKey,\n childrenKey,\n withFilter,\n filterBy,\n virtualScroll,\n showClear,\n popup,\n // Specific\n withArrow,\n isMultiple,\n forceSelection,\n completeMethod,\n valueMode,\n selectionLimit,\n hideError,\n // TreeSelect specific\n onlyParentsWithChildren,\n isStructured,\n } = element as any;\n\n // No key regeneration needed here.\n // SelectContext already handles list changes reactively via its own useEffect([list]).\n // All underlying components (Dropdown, AutoComplete, etc.) react to prop changes natively.\n // A key change would force a full remount — destroying focus state and any user interaction.\n\n return (\n <FormSelect\n {...field}\n id={field.name}\n shape={shape}\n label={label}\n placeholder={placeholder}\n disabled={isDisabled}\n required={isRequired}\n invalid={fieldState.invalid}\n errors={fieldState.error?.message}\n helperText={helperText}\n list={list as IListItem[]}\n hideError={hideError}\n attached={attached}\n style={elementStyle?.input}\n containerStyle={elementStyle?.container}\n slots={slots}\n labelKey={labelKey}\n valueKey={valueKey}\n outputValueKey={outputValueKey}\n childrenKey={childrenKey}\n withFilter={withFilter}\n filterBy={filterBy}\n virtualScroll={virtualScroll}\n showClear={showClear}\n /* ⛔ A PROP IS ONLY AS GOOD AS ITS NARROWEST GATE. This renderer\n forwards a NAMED list, not a spread, so a select prop that is not\n listed here never reaches the component however correct the rest\n of the chain is. `popup` was added to the type, the wrapper and\n the native component and still did nothing, because of this line's\n absence. */\n popup={popup}\n withArrow={withArrow}\n isMultiple={isMultiple}\n forceSelection={forceSelection}\n completeMethod={completeMethod}\n valueMode={valueMode}\n selectionLimit={selectionLimit}\n onlyParentsWithChildren={onlyParentsWithChildren}\n isStructured={isStructured}\n />\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":";;;;;;;AAMO,MAAM,SAAS,CAAwB;AAAA,EACI,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoC;AAE9E,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,YAAA;AAAA,IACP;AAAA,GACJ,GAAI,UAAA;AAGJ,EAAA,MAAM,QAAA,GAAmC;AAAA,IACrC,MAAA,EAAQ,UAAA;AAAA,IACR,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,UAAA,EAAY;AAAA,GAChB;AAEA,EAAA,MAAM,KAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,IAA6B,CAAA,IAAK,UAAA;AAEzE,EAAA,MAAM;AAAA;AAAA,IAEF,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA;AAAA,IAEA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA;AAAA,IAEA,uBAAA;AAAA,IACA;AAAA,GACJ,GAAI,OAAA;AAOJ,EAAA,uBACI,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACI,GAAG,KAAA;AAAA,MACJ,IAAI,KAAA,CAAM,IAAA;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAS,UAAA,CAAW,OAAA;AAAA,MACpB,MAAA,EAAQ,WAAW,KAAA,EAAO,OAAA;AAAA,MAC1B,UAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAO,YAAA,EAAc,KAAA;AAAA,MACrB,gBAAgB,YAAA,EAAc,SAAA;AAAA,MAC9B,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MAOA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,uBAAA;AAAA,MACA;AAAA;AAAA,GACJ;AAER;;;;"}
package/hooks/main.cjs CHANGED
@@ -3,6 +3,7 @@
3
3
  var React = require('react');
4
4
  var index_native = require('../contexts/Main/index.cjs');
5
5
  require('../contexts/DialogContext.cjs');
6
+ require('../contexts/PermissionsContext.cjs');
6
7
 
7
8
  const useKitsConcerto = () => React.useContext(index_native.MainContext);
8
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"main.cjs","sources":["../../../src/hooks/main.ts"],"sourcesContent":["import {useContext} from \"react\";\nimport {MainContext} from \"../contexts\";\n\nexport const useKitsConcerto = () => useContext(MainContext);\n"],"names":["useContext","MainContext"],"mappings":";;;;;;AAGO,MAAM,eAAA,GAAkB,MAAMA,gBAAA,CAAWC,wBAAW;;;;"}
1
+ {"version":3,"file":"main.cjs","sources":["../../../src/hooks/main.ts"],"sourcesContent":["import {useContext} from \"react\";\nimport {MainContext} from \"../contexts\";\n\nexport const useKitsConcerto = () => useContext(MainContext);\n"],"names":["useContext","MainContext"],"mappings":";;;;;;;AAGO,MAAM,eAAA,GAAkB,MAAMA,gBAAA,CAAWC,wBAAW;;;;"}
package/hooks/main.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { useContext } from 'react';
2
2
  import { MainContext } from '../contexts/Main/index.js';
3
3
  import '../contexts/DialogContext.js';
4
+ import '../contexts/PermissionsContext.js';
4
5
 
5
6
  const useKitsConcerto = () => useContext(MainContext);
6
7
 
package/hooks/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../../../src/hooks/main.ts"],"sourcesContent":["import {useContext} from \"react\";\nimport {MainContext} from \"../contexts\";\n\nexport const useKitsConcerto = () => useContext(MainContext);\n"],"names":[],"mappings":";;;;AAGO,MAAM,eAAA,GAAkB,MAAM,UAAA,CAAW,WAAW;;;;"}
1
+ {"version":3,"file":"main.js","sources":["../../../src/hooks/main.ts"],"sourcesContent":["import {useContext} from \"react\";\nimport {MainContext} from \"../contexts\";\n\nexport const useKitsConcerto = () => useContext(MainContext);\n"],"names":[],"mappings":";;;;;AAGO,MAAM,eAAA,GAAkB,MAAM,UAAA,CAAW,WAAW;;;;"}
package/index.cjs CHANGED
@@ -98,6 +98,7 @@ var index_native$O = require('./contexts/Locale/index.cjs');
98
98
  var index_native$P = require('./contexts/Main/index.cjs');
99
99
  var index_native$15 = require('./contexts/Theme/index.cjs');
100
100
  var DialogContext = require('./contexts/DialogContext.cjs');
101
+ var PermissionsContext = require('./contexts/PermissionsContext.cjs');
101
102
  var useSelectionController = require('./hooks/useSelectionController.cjs');
102
103
  var useDisclosure = require('./hooks/useDisclosure.cjs');
103
104
  var index_native$1g = require('./hooks/useScrollState/index.cjs');
@@ -286,6 +287,8 @@ exports.ThemeContextProvider = index_native$15.default;
286
287
  exports.useTheme = index_native$15.useTheme;
287
288
  exports.useDialog = DialogContext.useDialog;
288
289
  exports.usePopup = DialogContext.usePopup;
290
+ exports.PermissionsProvider = PermissionsContext.default;
291
+ exports.usePermissions = PermissionsContext.usePermissions;
289
292
  exports.useSelectionController = useSelectionController.default;
290
293
  exports.useDisclosure = useDisclosure.default;
291
294
  exports.useScrollState = index_native$1g.default;
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/index.d.ts CHANGED
@@ -3929,7 +3929,7 @@ export interface ISkeletonText {
3929
3929
  style: IStyleClasses;
3930
3930
  }
3931
3931
 
3932
- export interface ISkeleton {
3932
+ export interface ISkeleton extends IStyleClasses {
3933
3933
  variant?: 'rounded' | 'sharp' | 'circular';
3934
3934
  startColor?: string;
3935
3935
  isLoaded?: boolean;
@@ -5493,6 +5493,7 @@ export interface TreeChangeProps {
5493
5493
  }, clear: clearFunction) => void;
5494
5494
  }
5495
5495
  export interface TextLabels {
5496
+ searchPlaceholder?: string;
5496
5497
  addNode?: string;
5497
5498
  addItem?: string;
5498
5499
  deleteNode?: string;
@@ -5531,6 +5532,8 @@ export interface ITreeViewProps<T = any> extends CallbackProps<T>, ValidationPro
5531
5532
  sortable?: boolean;
5532
5533
  text?: TextLabels;
5533
5534
  hideToolbar?: boolean;
5535
+ /** Keep selection semantics while leaving the row surface neutral. */
5536
+ highlightSelectedNode?: boolean;
5534
5537
  }
5535
5538
 
5536
5539
  export interface IRef {
@@ -9089,6 +9092,15 @@ export interface Ctx {
9089
9092
  declare const usePopup: () => Ctx;
9090
9093
  declare const useDialog: () => Ctx;
9091
9094
 
9095
+ export type IPermissionsContextValues = {
9096
+ check: (permissions: string | string[] | Permissions | null) => boolean;
9097
+ };
9098
+ declare const PermissionsProvider: FC<PropsWithChildren<{
9099
+ roles?: string[] | null;
9100
+ }>>;
9101
+
9102
+ declare const usePermissions: () => IPermissionsContextValues;
9103
+
9092
9104
  export type BooleanParams = {
9093
9105
  mode: "boolean";
9094
9106
  value?: boolean;
@@ -15031,5 +15043,5 @@ declare const localeFiles: {
15031
15043
  };
15032
15044
  };
15033
15045
 
15034
- export { ALPHA_COLOR_VARS, ALPHA_STEPS, ALPHA_TOKEN_NAMES, AccentEdge, CustomAccordion as Accordion, ActionCard, Alert, AlertDescription, AlertIcon, AlertTitle, KitsAnimatePresence as AnimatePresence, AnyFile, Avatar, AvatarStack, Badge, Banner, BottomTabBar, Box, BreadCrumb, Button, Card, Carousel, Center, ChatBubble, Chip, CircularProgress, Collapse, CommandPalette, Container, CustomPopover, DEFAULT_NATIVE_SHADOWS, DataView, DataViewContext, DateSeparator, Delta, DetailList as DetailsList, Divider, Donut, DotGrid, EDateFormat, EKeyFilter, Editable, EmptyState, FIELD_LABEL_MARGIN, FIELD_MARGIN, Flex, Form, FormSelect, GUTTER, Gallery, Gauge, Form as GoForm, Datatable as GoTable, KitsGrid as Grid, KitsGridItem as GridItem, GroupedBars, HELPER_TEXT_MARGIN, HStack, Heading, Icon, IconMap, Image, KitsInputSwitch as InputSwitch, KeyboardNavContext, KitsAutoComplete, KitsBarChart, KitsCascadeSelect, KitsCheckbox as KitsCheckboxes, KitsConfirm, KitsConfirmPopup, KitsContainer, KitsInputCalendar as KitsDatepicker, KitsDialogControlled as KitsDialog, KitsDropdown, FilePicker as KitsFilePicker, KitsInputColorPicker, KitsInputLocation, KitsInputMask, KitsInputNumber, KitsInputPassword, KitsInputText, KitsInputTextarea, KitsLineChart, KitsListBox, KitsMultiSelect, KitsPhoneComponent, KitsRadar, KitsRadio as KitsRadios, RadiusPicker as KitsRadiusPicker, KitsSliders, KitsThemeProvider, KitsToast, KitsTreeSelect, Label, Legend, Link, List, ListItem, Loader, LocaleContext, LocaleContextProvider, MainContext, MainContextProvider, MapTile, MessageComposer, MessageReceipt, MetricCard, KitsMultiSelect as MultiSelect, PersonCard, ProgressBar, RadiusPicker, RankedList, ReducedMotionProvider, Rise, SHADOW_PRESET_KEYS, SPACER, KitsScrollView as ScrollView, SegmentedControl, FormSelect as Select, SelectButton, Skeleton$1 as Skeleton, SkeletonRows, Skeleton as SkeletonText, Sparkline, StackedBars, StatCard, StatGroup, StatePill, StatusCard, Stepper, Striped, Svg, TableContext, Tabs, Text, ThemeContextProvider, Timeline, Tip, Tooltip, Translate, KitsTreeSelect as TreeSelect, TreeView, TriStateCheckbox, TypingIndicator, VStack, Wash, WidgetPanel, borderProperties, breakpoints, capitalizeFirstLetter, checkExtAgainstAccepted, checkNameDuplication, colorWithAlpha, dateTimeFormat, deepMerge, defaultSeverityTheme, defaultTheme, downloadCanvas, dynamicList, expandShadowNative, extendTheme, fileTypeIcon, fileValidation, filesExt, filesMemes, filesTypes, flattenSlotStyles, fontSizeMapping, formFileValidation, formatNumber, getActiveNativeShadows, getCombinedChildIds, getCustomDateTime, getDateElements, getDefaultValues, getMeme, getParams, getPropertyByPath, getType, getTypes, getURLParams, imagesExt, imagesMemes, imagesTypes, isAlphaToken, isNumber, isSemanticToken, isShadowPreset, isThemeToken, isToday, isValidURL, kitsMotion, listingProperties, localeFiles, allProperties as mapCssProperties, mergeRefs, nonPxProperties, propertiesWithoutCssEquivalent, pxProperties, resolveStyleRecord, resolveTokenValue, schemaBuilder, setActiveNativeShadows, shadowNative, shadowWeb, sizeMapping, sizingProperties, timeAgo, timeSince, toMemes, useAllSeverityColors, useComponentDefaults, useCountUp, useDataView, useDialog, useDisclosure, useEnter, useFieldLogic, useFocusStyles, useFormFieldKeyboardNav, useFormManager, useKeyboardNav, useKeyboardNavProvider, useKitsColorScheme, useKitsConcerto, useKitsTheme, useLanguage, useMeasuredWidth, useNativeColorMap, usePopup, useReducedMotion, useResolvedElementStyles, useResolvedStyle, useRtlLineHeight, useScrollState, useSelectionController, useSeverityColors, useTable, useTheme, useThemedFont, useToast };
15046
+ export { ALPHA_COLOR_VARS, ALPHA_STEPS, ALPHA_TOKEN_NAMES, AccentEdge, CustomAccordion as Accordion, ActionCard, Alert, AlertDescription, AlertIcon, AlertTitle, KitsAnimatePresence as AnimatePresence, AnyFile, Avatar, AvatarStack, Badge, Banner, BottomTabBar, Box, BreadCrumb, Button, Card, Carousel, Center, ChatBubble, Chip, CircularProgress, Collapse, CommandPalette, Container, CustomPopover, DEFAULT_NATIVE_SHADOWS, DataView, DataViewContext, DateSeparator, Delta, DetailList as DetailsList, Divider, Donut, DotGrid, EDateFormat, EKeyFilter, Editable, EmptyState, FIELD_LABEL_MARGIN, FIELD_MARGIN, Flex, Form, FormSelect, GUTTER, Gallery, Gauge, Form as GoForm, Datatable as GoTable, KitsGrid as Grid, KitsGridItem as GridItem, GroupedBars, HELPER_TEXT_MARGIN, HStack, Heading, Icon, IconMap, Image, KitsInputSwitch as InputSwitch, KeyboardNavContext, KitsAutoComplete, KitsBarChart, KitsCascadeSelect, KitsCheckbox as KitsCheckboxes, KitsConfirm, KitsConfirmPopup, KitsContainer, KitsInputCalendar as KitsDatepicker, KitsDialogControlled as KitsDialog, KitsDropdown, FilePicker as KitsFilePicker, KitsInputColorPicker, KitsInputLocation, KitsInputMask, KitsInputNumber, KitsInputPassword, KitsInputText, KitsInputTextarea, KitsLineChart, KitsListBox, KitsMultiSelect, KitsPhoneComponent, KitsRadar, KitsRadio as KitsRadios, RadiusPicker as KitsRadiusPicker, KitsSliders, KitsThemeProvider, KitsToast, KitsTreeSelect, Label, Legend, Link, List, ListItem, Loader, LocaleContext, LocaleContextProvider, MainContext, MainContextProvider, MapTile, MessageComposer, MessageReceipt, MetricCard, KitsMultiSelect as MultiSelect, PermissionsProvider, PersonCard, ProgressBar, RadiusPicker, RankedList, ReducedMotionProvider, Rise, SHADOW_PRESET_KEYS, SPACER, KitsScrollView as ScrollView, SegmentedControl, FormSelect as Select, SelectButton, Skeleton$1 as Skeleton, SkeletonRows, Skeleton as SkeletonText, Sparkline, StackedBars, StatCard, StatGroup, StatePill, StatusCard, Stepper, Striped, Svg, TableContext, Tabs, Text, ThemeContextProvider, Timeline, Tip, Tooltip, Translate, KitsTreeSelect as TreeSelect, TreeView, TriStateCheckbox, TypingIndicator, VStack, Wash, WidgetPanel, borderProperties, breakpoints, capitalizeFirstLetter, checkExtAgainstAccepted, checkNameDuplication, colorWithAlpha, dateTimeFormat, deepMerge, defaultSeverityTheme, defaultTheme, downloadCanvas, dynamicList, expandShadowNative, extendTheme, fileTypeIcon, fileValidation, filesExt, filesMemes, filesTypes, flattenSlotStyles, fontSizeMapping, formFileValidation, formatNumber, getActiveNativeShadows, getCombinedChildIds, getCustomDateTime, getDateElements, getDefaultValues, getMeme, getParams, getPropertyByPath, getType, getTypes, getURLParams, imagesExt, imagesMemes, imagesTypes, isAlphaToken, isNumber, isSemanticToken, isShadowPreset, isThemeToken, isToday, isValidURL, kitsMotion, listingProperties, localeFiles, allProperties as mapCssProperties, mergeRefs, nonPxProperties, propertiesWithoutCssEquivalent, pxProperties, resolveStyleRecord, resolveTokenValue, schemaBuilder, setActiveNativeShadows, shadowNative, shadowWeb, sizeMapping, sizingProperties, timeAgo, timeSince, toMemes, useAllSeverityColors, useComponentDefaults, useCountUp, useDataView, useDialog, useDisclosure, useEnter, useFieldLogic, useFocusStyles, useFormFieldKeyboardNav, useFormManager, useKeyboardNav, useKeyboardNavProvider, useKitsColorScheme, useKitsConcerto, useKitsTheme, useLanguage, useMeasuredWidth, useNativeColorMap, usePermissions, usePopup, useReducedMotion, useResolvedElementStyles, useResolvedStyle, useRtlLineHeight, useScrollState, useSelectionController, useSeverityColors, useTable, useTheme, useThemedFont, useToast };
15035
15047
  export type { AlignmentsValues, AllSlotKeys, AnimationsValues, AvatarShape, AvatarSize, AvatarStatus, BannerAction, BannerStatus, BaseFieldProps, Booleanish, Breakpoint, CallbackProps, ChatBubbleTone, ChatBubbleVariant, ChipSeverity, ChipSize, ColorMode, ColorScale, ColorValue, Colors, ColorsType, ComponentSize, CustomSubmitButtonProps, DataTableFilterMeta, DataTableFilterMetaData, DataTableOperatorFilterMetaData, DataTableSelectionSingleChangeEvent, DataTableSortMeta, DeepPartial, DetailItemInputType, DynamicValue, ElementProps, EnteringAnimation, ExitingAnimation, ExpandedKeys, FetchError, FetchSuccess, FetchTableDataRes, FetchTablePaginationData, FieldWrapperProps, File$1 as File, FileUploaderTemplate, FileUploaderTemplateParams, FlexAlignmentsValues, FlexValues, FormBooleanEvent, FormBooleanTarget, FormEvent, FormTarget, GroupFieldConfigs, HighSizingValue, IAccentEdgeProps, IAccordionElementSlots, IAccordionProps, IActionCardProps, IAddressComponentValue, IAddressExperianFormat, IAddressFormat, IAddressFormatResults, IAddressSearchResults, IAlertComponent, IAlertProps, IAlignment, IAnimation, IAutoCompleteCore, IAutoCompleteElement, IAvatarElementSlots, IAvatarProps, IAvatarStackElementSlots, IAvatarStackProps, IBadgeProps, IBannerProps, IBarChartProps, IBaseValidation, IBasicSectionProps, IBg, IBodyTemplate, IBodyTemplateIcon, IBorder, IBottomTabBarElementSlots, IBottomTabBarProps, IBoxComponent, IBuilderAddressField, IBuilderCheckboxField, IBuilderContainerField, IBuilderDateField, IBuilderField, IBuilderFieldBase, IBuilderFieldExport, IBuilderFileField, IBuilderGroupField, IBuilderMultiselectField, IBuilderNumberField, IBuilderPhoneField, IBuilderRadiosField, IBuilderRadiusPickerField, IBuilderSectionField, IBuilderSelectField, IBuilderSwitchField, IBuilderTagsField, IBuilderTextField, IBuilderTextareaField, IButton, IButtonElementSlots, IButtonParams, IButtonProps, IButtonState, IButtonsFilter, ICanvasProps, ICardComponent, ICardElementSlots, ICarouselElementSlots, ICarouselProps, ICascadeSelect, ICascadeSelectCore, IChatBubbleElementSlots, IChatBubbleProps, ICheckbox, ICheckboxFilter, ICheckboxSlots, IChildren, IChildrenParams, IChipProps, ICircularProgressProps, ICollapseProps, IColorPicker, IColumn, IColumnBase, ICombined, ICommandPaletteGroup, ICommandPaletteItem, ICommandPaletteProps, IComponentThemeConfig, IConditionGroupProps, IConditionRowProps, IConditionRule, IConditionsSectionProps, IConfirmDialogProps, IConfirmPopupProps, IContainer, IContainerCardProps, IContainerProps, IContextValues, ICountrySearchResults, ICssStyling, IDVButtonsFilter, IDVCheckboxFilter, IDVDateFilter, IDVDropdownFilter, IDVFilters, IDVMessages, IDVMultiselectFilter, IDVNumberFilter, IDVPaginationRequest, IDVPaginationResponse, IDVPaginationState, IDVPhoneFilter, IDVRangeFilter, IDVTextFilter, IDVTriStateFilter, IDataTableContextValues, IDataTableProps, IDataViewContextValues, IDataViewProps, IDataViewRefValues, IDatatableRefValues, IDate, IDateFilter, IDateProps, IDateSeparatorElementSlots, IDateSeparatorProps, IDateValidation, IDatepickerSlots, IDeltaProps, IDetailItem, IDetailListProps, IDialogButton, IDialogProps, IDialogRef, IDialogState, IDisplay, IDividerComponent, IDonutProps, IDonutSegment, IDotGridProps, IDoughnutChartProps, IDropdownCore, IDropdownFilter, IDropdownSelect, IEditableProps, IEditors, IEffects, IElementBase, IElementSlotConfig, IElementStyle, IEmail, IEmailSearchResults, IEmptyStateElementSlots, IEmptyStateProps, IFieldCardProps, IFieldCondition, IFieldPreviewProps, IFile, IFileUploader, IFileUploaderElement, IFileUploaderTypes, IFileValidation, IFilesExtTypeKeys, IFilters, IFlexAlignment, IFlexComponent, IFormAddon, IFormBuilderInternalState, IFormBuilderMeta, IFormBuilderPayload, IFormBuilderProps, IFormComponent, IFormElement, IFormElementBaseSlots, IFormElementSlots, IFormGrid, IFormListsElements, IFormSelect, IFormSelectElements, IFormSingleElement, IGalleryElementSlots, IGalleryItem, IGalleryProps, IGaugeProps, IGrid, IGridCellStyle, IGridComponent, IGridItem, IGridItemComponent, IGroup, IGroupCardProps, IGroupElementSlots, IGroupSettings, IGroupedBarsDatum, IGroupedBarsProps, IHeaderElementSlots, IHeadingComponent, IIconProps, IImageComponent, IImagesExtTypeKeys, IInteractivity, IKeyedColumn, IKitsAnimation, IKitsBarChartDatum, IKitsBarChartProps, IKitsCheckboxProps, IKitsComponentDefaults, IKitsContainer, IKitsDialogControlled, IKitsInputCalendar, IKitsInputColorPicker, IKitsInputLocation, IKitsInputMask, IKitsInputNumber, IKitsInputPassword, IKitsInputRating, IKitsInputSwitch, IKitsInputText, IKitsInputTextarea, IKitsLineChartProps, IKitsLineChartSeries, IKitsPhoneInput, IKitsRadioProps, IKitsTheme, IKitsThemeColors, IKitsThemeConfig, IKitsThemeContextValues, IKitsThemeFontSizes, IKitsThemeFontWeights, IKitsThemeFonts, IKitsThemeLineHeights, IKitsThemeRadii, IKitsThemeShadows, IKitsThemeSpacing, IKitsToastRef, ILabelElement, ILabelProps, ILanguage, ILayout, ILegendItem, ILegendProps, ILineChartProps, ILinkComponent, ILinkOverrides, IList, IListBoxCore, IListBoxElement, IListBoxSelect, IListItem, IListing, ILoaderProps, ILoadingIndicatorContext, ILocaleContextProps, ILocaleContextValues, ILocation, ILocationDetailsResponse, ILocationResponse, IMainContextProps, IMainContextValues, IMapTilePoint, IMapTileProps, IMemes, IMenuItem, IMessageComposerElementSlots, IMessageComposerProps, IMessageReceiptElementSlots, IMessageReceiptProps, IMessages, IMetricCardProps, IMinusButton, IModalComponent, IModalFormProps, IMultiSelect, IMultiSelectCore, IMultiSelectSlots, IMultiselect, IMultiselectFilter, INativeShadow, INonCrossPlatformTypes, INumberFilter, INumberInput, INumberProps, INumberValidation, IObjectGroup, IOneOfTypes, IOptionItem, IOptionsEditorProps, IOptionsSource, IPageISection, IPaginationRequest, IPaginationResponse, IPaginatorLabels, IPaletteItemProps, IPaletteProps, IPanelCustomSlot, IPassword, IPasswordProps, IPersonCardProps, IPhone, IPhoneFilter, IPhoneObjectValue, IPhoneValidationResults, IPhoneValue, IPieChartProps, IPlusButton, IPolarAreaChartProps, IPopoverProps, IProgressBarElementSlots, IProgressBarProps, IPropertiesPanelProps, IRTLDetection, IRadarChartProps, IRadarProps, IRadarSeries, IRadioCheckboxListItem, IRadioGroup, IRadioSlots, IRadiusPickerEvents, IRadiusPickerField, IRadiusPickerI18n, IRadiusPickerProps, IRangeFilter, IRankedListProps, IRankedListRow, IRef, IRepeatableSettings, IResponsiveElement, IRiseProps, ISVGComponent, IScrollViewComponent, ISegmentedControlOption, ISegmentedControlProps, ISelect, ISelectBase, ISelectCore, ISelectElement, ISelectSlots, ISelectType, ISelectedFile, ISelectedFileType, ISelectionValidation, ISeverityColorSlots, ISeverityThemeMap, IShadowDefinition, IShadowValue, ISidebarElementSlots, ISizing, ISkeleton, ISkeletonRowsProps, ISkeletonText, ISliderProps, ISpacing, ISparklineProps, IStackProps, IStackedBarsDatum, IStackedBarsProps, IStatCardElementSlots, IStatCardProps, IStatGroupElementSlots, IStatGroupProps, IStatePillProps, IStatisticsProps, IStats, IStatusCardProps, IStepperElementSlots, IStepperProps, IStripedProps, IStyleClasses, ISwitch, ISwitchSlots, ITabBarItem, ITabItem, ITableElementSlots, ITableFlatConfig, ITabsElementSlots, ITabsProps, ITags, IText, ITextComponent, ITextFieldProps, ITextFilter, ITextInput, ITextInputProps, ITextInputSlots, ITextValidation, ITextarea, IThemeContextProps, IThemeContextValues, ITimelineElementSlots, ITimelineItem, ITimelineProps, ITipProps, IToastAction, IToastFunction, IToastOptions, IToastParams, IToolbarProps, ITransforms, ITransition, ITranslatableInputProps, ITranslatableText, ITranslateComponent, ITreeItem, ITreeSelect, ITreeSelectCore, ITreeSelectElement, ITreeSelectNode, ITreeViewProps, ITriStateFilter, ITypingIndicatorElementSlots, ITypingIndicatorProps, IUnkeyedColumn, IUseCountUpOptions, IUseFormReturn, IUserAvatar, IValidationSectionProps, IWashProps, IWidgetBarIncomingProp, IWidgetChartContextProps, IWidgetChartProp, IWidgetData, IWidgetDoughnutIncomingProp, IWidgetLineIncomingProp, IWidgetPanelProps, IWidgetPieIncomingProp, IWidgetPolarAreaIncomingProp, IWidgetRadarIncomingProp, IconName, IconType, InputTextFieldProps, KitsBreakpoint, KitsConditionalObject, KitsDevice, KitsMotion, KitsOrientation, KitsPlatform, KitsResponsiveObject, KitsResponsiveValue, KitsThemeOverride, LabelVariant, LatLng, LoadMode, LoadingIndicatorRenderer, LogicFunction, MapInteraction, MeasurementValues, MessageReceiptState, Nullable, Numbering0_12, Numbering0_32, Numberish, OnCenterChange, OnLocationError, OnLocationFound, OnRadiusChange, OnRadiusValueChange, OnSubmitHandler, OnUnitChange, Orientation, PaginationState, PaginatorPageChangeEvent$1 as PaginatorPageChangeEvent, Permissions, PlatformKey, RadiusPickerDisplay, RadiusPickerLayout, RadiusPickerSize, RadiusUnit, RadiusValue, RenderLocationButtonProps, RenderMapProps, RenderSearchBoxProps, SelectFieldProps, SemanticColorTokens, ServerMethod, ServerResponse, ServerSideProps, SetManyOpts, Severity, Shades, ShadowPreset, Shapes, SidesValues, SizingNumbering, SizingValue, StatePillState, StepperVariant, TAcceptedFileType, TBuilderFieldType, TCheckboxRadioMode, TCheckboxRadioSize, TConditionAction, TConditionMatch, TConditionOperator, TDateBoundary, TDynamicFlag, TExternalFilterLabelMode, TFiltersLayout, TIsoFormat, TItemsPerRow, TKeyFilter, TLocationProvider, TPaginatorAlign, TextLabels, TextProps, ThemedFontKind, TimelineItemStatus, Timeout, TimingNumbering, ToastPosition, ToastSeverity, ToastSize, TooltipDataAttributes, TooltipProps, TreeChangeProps, TreeCheckboxSelectionKeyType, TreeCheckboxSelectionKeys, TreeNode, TreeNodeClickEvent, TreeNodeTemplateOptions, TreeProps, TreeRef, TreeSelectionEvent, Types, UseComponentDefaultsResult, UseDisclosureReturnType, UseFieldLogicElementProps, UseFieldLogicProps, UseFieldLogicReturn, UseFormManagerEvents, UseFormManagerReturn, UseToastApi, ValidationProps, children, clearFunction, downloadableFileResponse, settings1, settings2 };
package/index.js CHANGED
@@ -96,6 +96,7 @@ export { LocaleContext, default as LocaleContextProvider } from './contexts/Loca
96
96
  export { MainContext, default as MainContextProvider } from './contexts/Main/index.js';
97
97
  export { default as ThemeContextProvider, useTheme } from './contexts/Theme/index.js';
98
98
  export { useDialog, usePopup } from './contexts/DialogContext.js';
99
+ export { default as PermissionsProvider, usePermissions } from './contexts/PermissionsContext.js';
99
100
  export { default as useSelectionController } from './hooks/useSelectionController.js';
100
101
  export { default as useDisclosure } from './hooks/useDisclosure.js';
101
102
  export { default as useScrollState } from './hooks/useScrollState/index.js';
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lmb-it/kitsconcerto-native",
3
- "version": "0.1.274",
3
+ "version": "0.1.276",
4
4
  "description": "KitsConcerto — Native (React Native) UI components",
5
5
  "main": "index.cjs",
6
6
  "module": "index.js",
@@ -86,6 +86,7 @@ require('../../apps/mobile/src/Core/Input/index.cjs');
86
86
  require('../../apps/mobile/src/Core/Input/Field.cjs');
87
87
  require('../../apps/mobile/src/Core/Input/Slot.cjs');
88
88
  require('../../contexts/DialogContext.cjs');
89
+ require('../../contexts/PermissionsContext.cjs');
89
90
  var useComponentDefaults = require('../../hooks/useComponentDefaults.cjs');
90
91
 
91
92
  const Card = (rawProps) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/primitives/Card/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable} from \"react-native\";\nimport {Heading, Text, type ICardProps} from \"@lmb-it/kitsconcertomobile\";\nimport {ResponsiveElement, useSeparator} from \"../../factory\";\nimport type {ICardComponent} from \"@lmb-it/kitsconcerto-types\";\nimport {useComponentDefaults} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst Card = (rawProps: ICardComponent<Omit<ICardProps, 'title'>>) => {\n const {mergedProps: cardProps, themeStyle, elementStyles} = useComponentDefaults('Card', rawProps);\n const {\n title,\n subTitle,\n header,\n footer,\n className,\n variant = 'elevated',\n size = 'md',\n ref,\n children: CardChildren,\n localProps,\n onPress,\n ...props\n } = cardProps;\n const {cssProps, nativeProps} = useSeparator<any>({\n variant,\n size,\n ...props\n });\n\n const children = useMemo(() => {\n const ret:any[] = [];\n\n if (header) {\n ret.push(React.isValidElement(header)\n ? React.cloneElement(header, { key: 'header' })\n : <React.Fragment key=\"header\">\n {typeof header == 'function' ? localProps ? header(localProps) : \"\" : header}\n </React.Fragment>);\n }\n\n if (title) {\n ret.push(\n <Heading key=\"title\" size=\"md\" className=\"mb-1\">\n {typeof title == 'function' ? localProps ? title(localProps) : \"\" : title}\n </Heading>\n );\n }\n\n if (subTitle) {\n ret.push(<Text key=\"subTitle\">\n {typeof subTitle == 'function' ? localProps ? subTitle(localProps) : \"\" : subTitle}\n </Text>);\n }\n\n if (CardChildren) {\n ret.push(React.isValidElement(CardChildren)\n ? React.cloneElement(CardChildren, { key: 'CardChildren' })\n : <React.Fragment key=\"CardChildren\">{CardChildren}</React.Fragment>);\n }\n\n if (footer) {\n ret.push(React.isValidElement(footer)\n ? React.cloneElement(footer, { key: 'footer' })\n : <React.Fragment key=\"footer\">\n {typeof footer == 'function' ? localProps ? footer(localProps) : \"\" : footer}\n </React.Fragment>);\n }\n return <>{ret}</>;\n }, [header, title, subTitle, CardChildren]);\n\n\n const classes = useMemo(() => {\n const classes: string[] = [];\n classes.push('shadow-hard-1')\n\n if(className){\n classes.push(className)\n }\n\n return classes.join(\" \");\n }, [className]);\n\n const { entering, exiting, ...restNativeProps } = nativeProps;\n\n const cardElement = (\n <ResponsiveElement\n ref={ref}\n entering={entering}\n exiting={exiting}\n additionalStyles={{\n display: \"flex\",\n width:'auto'\n }}\n additionalClasses={classes}\n cssProps={{...themeStyle, ...(elementStyles.root || {}), ...cssProps}}\n nativeProps={restNativeProps}\n as={'Card'}\n children={children}\n />\n );\n\n if (onPress) {\n return (\n <Pressable onPress={onPress} accessibilityRole=\"button\">\n {cardElement}\n </Pressable>\n );\n }\n\n return cardElement;\n}\n\nexport default Card;\n"],"names":["useComponentDefaults","useSeparator","useMemo","jsx","Heading","Text","classes","ResponsiveElement","Pressable"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/primitives/Card/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable} from \"react-native\";\nimport {Heading, Text, type ICardProps} from \"@lmb-it/kitsconcertomobile\";\nimport {ResponsiveElement, useSeparator} from \"../../factory\";\nimport type {ICardComponent} from \"@lmb-it/kitsconcerto-types\";\nimport {useComponentDefaults} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst Card = (rawProps: ICardComponent<Omit<ICardProps, 'title'>>) => {\n const {mergedProps: cardProps, themeStyle, elementStyles} = useComponentDefaults('Card', rawProps);\n const {\n title,\n subTitle,\n header,\n footer,\n className,\n variant = 'elevated',\n size = 'md',\n ref,\n children: CardChildren,\n localProps,\n onPress,\n ...props\n } = cardProps;\n const {cssProps, nativeProps} = useSeparator<any>({\n variant,\n size,\n ...props\n });\n\n const children = useMemo(() => {\n const ret:any[] = [];\n\n if (header) {\n ret.push(React.isValidElement(header)\n ? React.cloneElement(header, { key: 'header' })\n : <React.Fragment key=\"header\">\n {typeof header == 'function' ? localProps ? header(localProps) : \"\" : header}\n </React.Fragment>);\n }\n\n if (title) {\n ret.push(\n <Heading key=\"title\" size=\"md\" className=\"mb-1\">\n {typeof title == 'function' ? localProps ? title(localProps) : \"\" : title}\n </Heading>\n );\n }\n\n if (subTitle) {\n ret.push(<Text key=\"subTitle\">\n {typeof subTitle == 'function' ? localProps ? subTitle(localProps) : \"\" : subTitle}\n </Text>);\n }\n\n if (CardChildren) {\n ret.push(React.isValidElement(CardChildren)\n ? React.cloneElement(CardChildren, { key: 'CardChildren' })\n : <React.Fragment key=\"CardChildren\">{CardChildren}</React.Fragment>);\n }\n\n if (footer) {\n ret.push(React.isValidElement(footer)\n ? React.cloneElement(footer, { key: 'footer' })\n : <React.Fragment key=\"footer\">\n {typeof footer == 'function' ? localProps ? footer(localProps) : \"\" : footer}\n </React.Fragment>);\n }\n return <>{ret}</>;\n }, [header, title, subTitle, CardChildren]);\n\n\n const classes = useMemo(() => {\n const classes: string[] = [];\n classes.push('shadow-hard-1')\n\n if(className){\n classes.push(className)\n }\n\n return classes.join(\" \");\n }, [className]);\n\n const { entering, exiting, ...restNativeProps } = nativeProps;\n\n const cardElement = (\n <ResponsiveElement\n ref={ref}\n entering={entering}\n exiting={exiting}\n additionalStyles={{\n display: \"flex\",\n width:'auto'\n }}\n additionalClasses={classes}\n cssProps={{...themeStyle, ...(elementStyles.root || {}), ...cssProps}}\n nativeProps={restNativeProps}\n as={'Card'}\n children={children}\n />\n );\n\n if (onPress) {\n return (\n <Pressable onPress={onPress} accessibilityRole=\"button\">\n {cardElement}\n </Pressable>\n );\n }\n\n return cardElement;\n}\n\nexport default Card;\n"],"names":["useComponentDefaults","useSeparator","useMemo","jsx","Heading","Text","classes","ResponsiveElement","Pressable"],"mappings":"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"}
@@ -82,6 +82,7 @@ import '../../apps/mobile/src/Core/Input/index.js';
82
82
  import '../../apps/mobile/src/Core/Input/Field.js';
83
83
  import '../../apps/mobile/src/Core/Input/Slot.js';
84
84
  import '../../contexts/DialogContext.js';
85
+ import '../../contexts/PermissionsContext.js';
85
86
  import useComponentDefaults from '../../hooks/useComponentDefaults.js';
86
87
 
87
88
  const Card = (rawProps) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/primitives/Card/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable} from \"react-native\";\nimport {Heading, Text, type ICardProps} from \"@lmb-it/kitsconcertomobile\";\nimport {ResponsiveElement, useSeparator} from \"../../factory\";\nimport type {ICardComponent} from \"@lmb-it/kitsconcerto-types\";\nimport {useComponentDefaults} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst Card = (rawProps: ICardComponent<Omit<ICardProps, 'title'>>) => {\n const {mergedProps: cardProps, themeStyle, elementStyles} = useComponentDefaults('Card', rawProps);\n const {\n title,\n subTitle,\n header,\n footer,\n className,\n variant = 'elevated',\n size = 'md',\n ref,\n children: CardChildren,\n localProps,\n onPress,\n ...props\n } = cardProps;\n const {cssProps, nativeProps} = useSeparator<any>({\n variant,\n size,\n ...props\n });\n\n const children = useMemo(() => {\n const ret:any[] = [];\n\n if (header) {\n ret.push(React.isValidElement(header)\n ? React.cloneElement(header, { key: 'header' })\n : <React.Fragment key=\"header\">\n {typeof header == 'function' ? localProps ? header(localProps) : \"\" : header}\n </React.Fragment>);\n }\n\n if (title) {\n ret.push(\n <Heading key=\"title\" size=\"md\" className=\"mb-1\">\n {typeof title == 'function' ? localProps ? title(localProps) : \"\" : title}\n </Heading>\n );\n }\n\n if (subTitle) {\n ret.push(<Text key=\"subTitle\">\n {typeof subTitle == 'function' ? localProps ? subTitle(localProps) : \"\" : subTitle}\n </Text>);\n }\n\n if (CardChildren) {\n ret.push(React.isValidElement(CardChildren)\n ? React.cloneElement(CardChildren, { key: 'CardChildren' })\n : <React.Fragment key=\"CardChildren\">{CardChildren}</React.Fragment>);\n }\n\n if (footer) {\n ret.push(React.isValidElement(footer)\n ? React.cloneElement(footer, { key: 'footer' })\n : <React.Fragment key=\"footer\">\n {typeof footer == 'function' ? localProps ? footer(localProps) : \"\" : footer}\n </React.Fragment>);\n }\n return <>{ret}</>;\n }, [header, title, subTitle, CardChildren]);\n\n\n const classes = useMemo(() => {\n const classes: string[] = [];\n classes.push('shadow-hard-1')\n\n if(className){\n classes.push(className)\n }\n\n return classes.join(\" \");\n }, [className]);\n\n const { entering, exiting, ...restNativeProps } = nativeProps;\n\n const cardElement = (\n <ResponsiveElement\n ref={ref}\n entering={entering}\n exiting={exiting}\n additionalStyles={{\n display: \"flex\",\n width:'auto'\n }}\n additionalClasses={classes}\n cssProps={{...themeStyle, ...(elementStyles.root || {}), ...cssProps}}\n nativeProps={restNativeProps}\n as={'Card'}\n children={children}\n />\n );\n\n if (onPress) {\n return (\n <Pressable onPress={onPress} accessibilityRole=\"button\">\n {cardElement}\n </Pressable>\n );\n }\n\n return cardElement;\n}\n\nexport default Card;\n"],"names":["classes"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/primitives/Card/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable} from \"react-native\";\nimport {Heading, Text, type ICardProps} from \"@lmb-it/kitsconcertomobile\";\nimport {ResponsiveElement, useSeparator} from \"../../factory\";\nimport type {ICardComponent} from \"@lmb-it/kitsconcerto-types\";\nimport {useComponentDefaults} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst Card = (rawProps: ICardComponent<Omit<ICardProps, 'title'>>) => {\n const {mergedProps: cardProps, themeStyle, elementStyles} = useComponentDefaults('Card', rawProps);\n const {\n title,\n subTitle,\n header,\n footer,\n className,\n variant = 'elevated',\n size = 'md',\n ref,\n children: CardChildren,\n localProps,\n onPress,\n ...props\n } = cardProps;\n const {cssProps, nativeProps} = useSeparator<any>({\n variant,\n size,\n ...props\n });\n\n const children = useMemo(() => {\n const ret:any[] = [];\n\n if (header) {\n ret.push(React.isValidElement(header)\n ? React.cloneElement(header, { key: 'header' })\n : <React.Fragment key=\"header\">\n {typeof header == 'function' ? localProps ? header(localProps) : \"\" : header}\n </React.Fragment>);\n }\n\n if (title) {\n ret.push(\n <Heading key=\"title\" size=\"md\" className=\"mb-1\">\n {typeof title == 'function' ? localProps ? title(localProps) : \"\" : title}\n </Heading>\n );\n }\n\n if (subTitle) {\n ret.push(<Text key=\"subTitle\">\n {typeof subTitle == 'function' ? localProps ? subTitle(localProps) : \"\" : subTitle}\n </Text>);\n }\n\n if (CardChildren) {\n ret.push(React.isValidElement(CardChildren)\n ? React.cloneElement(CardChildren, { key: 'CardChildren' })\n : <React.Fragment key=\"CardChildren\">{CardChildren}</React.Fragment>);\n }\n\n if (footer) {\n ret.push(React.isValidElement(footer)\n ? React.cloneElement(footer, { key: 'footer' })\n : <React.Fragment key=\"footer\">\n {typeof footer == 'function' ? localProps ? footer(localProps) : \"\" : footer}\n </React.Fragment>);\n }\n return <>{ret}</>;\n }, [header, title, subTitle, CardChildren]);\n\n\n const classes = useMemo(() => {\n const classes: string[] = [];\n classes.push('shadow-hard-1')\n\n if(className){\n classes.push(className)\n }\n\n return classes.join(\" \");\n }, [className]);\n\n const { entering, exiting, ...restNativeProps } = nativeProps;\n\n const cardElement = (\n <ResponsiveElement\n ref={ref}\n entering={entering}\n exiting={exiting}\n additionalStyles={{\n display: \"flex\",\n width:'auto'\n }}\n additionalClasses={classes}\n cssProps={{...themeStyle, ...(elementStyles.root || {}), ...cssProps}}\n nativeProps={restNativeProps}\n as={'Card'}\n children={children}\n />\n );\n\n if (onPress) {\n return (\n <Pressable onPress={onPress} accessibilityRole=\"button\">\n {cardElement}\n </Pressable>\n );\n }\n\n return cardElement;\n}\n\nexport default Card;\n"],"names":["classes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,IAAA,GAAO,CAAC,QAAA,KAAwD;AAClE,EAAA,MAAM,EAAC,aAAa,SAAA,EAAW,UAAA,EAAY,eAAa,GAAI,oBAAA,CAAqB,QAAQ,QAAQ,CAAA;AACjG,EAAA,MAAM;AAAA,IACF,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA,GAAU,UAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,GAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,UAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,GACP,GAAI,SAAA;AACJ,EAAA,MAAM,EAAC,QAAA,EAAU,WAAA,EAAW,GAAI,YAAA,CAAkB;AAAA,IAC9C,OAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAG;AAAA,GACN,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM;AAC3B,IAAA,MAAM,MAAY,EAAC;AAEnB,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,MAAM,CAAA,GAC9B,KAAA,CAAM,YAAA,CAAa,MAAA,EAAQ,EAAE,GAAA,EAAK,QAAA,EAAU,CAAA,mBAC5C,GAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACE,QAAA,EAAA,OAAO,MAAA,IAAU,UAAA,GAAa,UAAA,GAAa,MAAA,CAAO,UAAU,CAAA,GAAI,EAAA,GAAK,MAAA,EAAA,EADpD,QAEtB,CAAiB,CAAA;AAAA,IACzB;AAEA,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,GAAA,CAAI,IAAA;AAAA,wBACA,GAAA,CAAC,OAAA,EAAA,EAAoB,IAAA,EAAK,IAAA,EAAK,WAAU,MAAA,EACpC,QAAA,EAAA,OAAO,KAAA,IAAS,UAAA,GAAa,aAAa,KAAA,CAAM,UAAU,CAAA,GAAI,EAAA,GAAK,SAD3D,OAEb;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,IAAI,QAAA,EAAU;AACV,MAAA,GAAA,CAAI,IAAA,iBAAK,GAAA,CAAC,IAAA,EAAA,EACL,QAAA,EAAA,OAAO,QAAA,IAAY,UAAA,GAAa,UAAA,GAAa,QAAA,CAAS,UAAU,CAAA,GAAI,EAAA,GAAK,QAAA,EAAA,EAD3D,UAEnB,CAAO,CAAA;AAAA,IACX;AAEA,IAAA,IAAI,YAAA,EAAc;AACd,MAAA,GAAA,CAAI,KAAK,KAAA,CAAM,cAAA,CAAe,YAAY,CAAA,GACpC,KAAA,CAAM,aAAa,YAAA,EAAc,EAAE,KAAK,cAAA,EAAgB,oBACxD,GAAA,CAAC,KAAA,CAAM,UAAN,EAAmC,QAAA,EAAA,YAAA,EAAA,EAAhB,cAA6B,CAAiB,CAAA;AAAA,IAC5E;AAEA,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,MAAM,CAAA,GAC9B,KAAA,CAAM,YAAA,CAAa,MAAA,EAAQ,EAAE,GAAA,EAAK,QAAA,EAAU,CAAA,mBAC5C,GAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACE,QAAA,EAAA,OAAO,MAAA,IAAU,UAAA,GAAa,UAAA,GAAa,MAAA,CAAO,UAAU,CAAA,GAAI,EAAA,GAAK,MAAA,EAAA,EADpD,QAE1B,CAAiB,CAAA;AAAA,IACrB;AACA,IAAA,uCAAU,QAAA,EAAA,GAAA,EAAI,CAAA;AAAA,EAClB,GAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU,YAAY,CAAC,CAAA;AAG1C,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC1B,IAAA,MAAMA,WAAoB,EAAC;AAC3B,IAAAA,QAAAA,CAAQ,KAAK,eAAe,CAAA;AAE5B,IAAA,IAAG,SAAA,EAAU;AACT,MAAAA,QAAAA,CAAQ,KAAK,SAAS,CAAA;AAAA,IAC1B;AAEA,IAAA,OAAOA,QAAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,GAAG,iBAAgB,GAAI,WAAA;AAElD,EAAA,MAAM,WAAA,mBACF,GAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACG,GAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA,EAAkB;AAAA,QACd,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAM;AAAA,OACV;AAAA,MACA,iBAAA,EAAmB,OAAA;AAAA,MACnB,QAAA,EAAU,EAAC,GAAG,UAAA,EAAY,GAAI,cAAc,IAAA,IAAQ,EAAC,EAAI,GAAG,QAAA,EAAQ;AAAA,MACpE,WAAA,EAAa,eAAA;AAAA,MACb,EAAA,EAAI,MAAA;AAAA,MACJ;AAAA;AAAA,GACJ;AAGJ,EAAA,IAAI,OAAA,EAAS;AACT,IAAA,uBACI,GAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,iBAAA,EAAkB,UAC1C,QAAA,EAAA,WAAA,EACL,CAAA;AAAA,EAER;AAEA,EAAA,OAAO,WAAA;AACX;;;;"}