@strapi/content-type-builder 5.57.0 → 5.59.0

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 (167) hide show
  1. package/dist/admin/components/AIChat/FeedbackModal.js +13 -7
  2. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
  3. package/dist/admin/components/AIChat/FeedbackModal.mjs +14 -8
  4. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/UploadCodeModal.js +12 -6
  6. package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/UploadCodeModal.mjs +13 -7
  8. package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/UploadFigmaModal.js +12 -6
  10. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  11. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +13 -7
  12. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js +6 -3
  14. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -1
  15. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +7 -4
  16. package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/components/Collapsible.js +9 -4
  18. package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
  19. package/dist/admin/components/AIChat/components/Collapsible.mjs +10 -5
  20. package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/components/Dropzone.js +13 -6
  22. package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -1
  23. package/dist/admin/components/AIChat/components/Dropzone.mjs +14 -7
  24. package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/components/FloatingPanel.js +11 -4
  26. package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -1
  27. package/dist/admin/components/AIChat/components/FloatingPanel.mjs +12 -5
  28. package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -1
  29. package/dist/admin/components/AIChat/components/FullScreenImage.js +16 -8
  30. package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
  31. package/dist/admin/components/AIChat/components/FullScreenImage.mjs +17 -9
  32. package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
  33. package/dist/admin/components/AIChat/components/Input.js +6 -3
  34. package/dist/admin/components/AIChat/components/Input.js.map +1 -1
  35. package/dist/admin/components/AIChat/components/Input.mjs +7 -4
  36. package/dist/admin/components/AIChat/components/Input.mjs.map +1 -1
  37. package/dist/admin/components/AIChat/components/Messages/Message.js +88 -12
  38. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  39. package/dist/admin/components/AIChat/components/Messages/Message.mjs +87 -13
  40. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  41. package/dist/admin/components/AIChat/components/StepModal.js +44 -17
  42. package/dist/admin/components/AIChat/components/StepModal.js.map +1 -1
  43. package/dist/admin/components/AIChat/components/StepModal.mjs +45 -18
  44. package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -1
  45. package/dist/admin/components/AIChat/providers/ChatProvider.js +79 -27
  46. package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
  47. package/dist/admin/components/AIChat/providers/ChatProvider.mjs +80 -28
  48. package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
  49. package/dist/admin/components/AIChat/providers/SchemaProvider.js +6 -3
  50. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  51. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +7 -4
  52. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  53. package/dist/admin/components/AttributeOptions/AttributeOption.js +2 -2
  54. package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
  55. package/dist/admin/components/AttributeOptions/AttributeOption.mjs +2 -2
  56. package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
  57. package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js.map +1 -1
  58. package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs.map +1 -1
  59. package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js.map +1 -1
  60. package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs.map +1 -1
  61. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +2 -1
  62. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
  63. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +2 -1
  64. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
  65. package/dist/admin/components/DataManager/DataManagerProvider.js +317 -275
  66. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  67. package/dist/admin/components/DataManager/DataManagerProvider.mjs +319 -277
  68. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  69. package/dist/admin/components/DataManager/RenameMigrationModal.js.map +1 -1
  70. package/dist/admin/components/DataManager/RenameMigrationModal.mjs.map +1 -1
  71. package/dist/admin/components/DataManager/reducer.js +53 -4
  72. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  73. package/dist/admin/components/DataManager/reducer.mjs +53 -4
  74. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  75. package/dist/admin/components/DynamicZoneList.js +2 -1
  76. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  77. package/dist/admin/components/DynamicZoneList.mjs +2 -1
  78. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  79. package/dist/admin/components/FormModal/FormModal.js +36 -62
  80. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  81. package/dist/admin/components/FormModal/FormModal.mjs +36 -62
  82. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  83. package/dist/admin/components/FormModal/attributes/ConditionForm.js +2 -1
  84. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  85. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +2 -1
  86. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  87. package/dist/admin/components/FormModal/attributes/types.js +2 -2
  88. package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
  89. package/dist/admin/components/FormModal/attributes/types.mjs +2 -2
  90. package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
  91. package/dist/admin/components/FormModal/forms/forms.js +1 -1
  92. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  93. package/dist/admin/components/FormModal/forms/forms.mjs +1 -1
  94. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  95. package/dist/admin/components/GenericInputs.js +2 -1
  96. package/dist/admin/components/GenericInputs.js.map +1 -1
  97. package/dist/admin/components/GenericInputs.mjs +2 -1
  98. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  99. package/dist/admin/components/TabForm.js.map +1 -1
  100. package/dist/admin/components/TabForm.mjs.map +1 -1
  101. package/dist/admin/src/components/AIChat/components/FullScreenImage.d.ts +8 -0
  102. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +20 -0
  103. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +8 -8
  104. package/dist/admin/translations/cs.json.js +0 -2
  105. package/dist/admin/translations/cs.json.js.map +1 -1
  106. package/dist/admin/translations/cs.json.mjs +0 -2
  107. package/dist/admin/translations/cs.json.mjs.map +1 -1
  108. package/dist/admin/translations/de.json.js +0 -2
  109. package/dist/admin/translations/de.json.js.map +1 -1
  110. package/dist/admin/translations/de.json.mjs +0 -2
  111. package/dist/admin/translations/de.json.mjs.map +1 -1
  112. package/dist/admin/translations/en.json.js +0 -2
  113. package/dist/admin/translations/en.json.js.map +1 -1
  114. package/dist/admin/translations/en.json.mjs +0 -2
  115. package/dist/admin/translations/en.json.mjs.map +1 -1
  116. package/dist/admin/translations/ja.json.js +0 -2
  117. package/dist/admin/translations/ja.json.js.map +1 -1
  118. package/dist/admin/translations/ja.json.mjs +0 -2
  119. package/dist/admin/translations/ja.json.mjs.map +1 -1
  120. package/dist/admin/translations/ko.json.js +0 -2
  121. package/dist/admin/translations/ko.json.js.map +1 -1
  122. package/dist/admin/translations/ko.json.mjs +0 -2
  123. package/dist/admin/translations/ko.json.mjs.map +1 -1
  124. package/dist/admin/translations/nl.json.js +0 -2
  125. package/dist/admin/translations/nl.json.js.map +1 -1
  126. package/dist/admin/translations/nl.json.mjs +0 -2
  127. package/dist/admin/translations/nl.json.mjs.map +1 -1
  128. package/dist/admin/translations/pl.json.js +0 -2
  129. package/dist/admin/translations/pl.json.js.map +1 -1
  130. package/dist/admin/translations/pl.json.mjs +0 -2
  131. package/dist/admin/translations/pl.json.mjs.map +1 -1
  132. package/dist/admin/translations/ru.json.js +0 -2
  133. package/dist/admin/translations/ru.json.js.map +1 -1
  134. package/dist/admin/translations/ru.json.mjs +0 -2
  135. package/dist/admin/translations/ru.json.mjs.map +1 -1
  136. package/dist/admin/translations/sk.json.js +0 -2
  137. package/dist/admin/translations/sk.json.js.map +1 -1
  138. package/dist/admin/translations/sk.json.mjs +0 -2
  139. package/dist/admin/translations/sk.json.mjs.map +1 -1
  140. package/dist/admin/utils/folderTelemetry.js.map +1 -1
  141. package/dist/admin/utils/folderTelemetry.mjs.map +1 -1
  142. package/dist/admin/utils/formAPI.js.map +1 -1
  143. package/dist/admin/utils/formAPI.mjs.map +1 -1
  144. package/dist/server/controllers/validation/schema.js +3 -2
  145. package/dist/server/controllers/validation/schema.js.map +1 -1
  146. package/dist/server/controllers/validation/schema.mjs +4 -3
  147. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  148. package/dist/server/register.js.map +1 -1
  149. package/dist/server/register.mjs.map +1 -1
  150. package/dist/server/services/migration-builder/index.js.map +1 -1
  151. package/dist/server/services/migration-builder/index.mjs.map +1 -1
  152. package/dist/server/services/schema.js +87 -1
  153. package/dist/server/services/schema.js.map +1 -1
  154. package/dist/server/services/schema.mjs +87 -1
  155. package/dist/server/services/schema.mjs.map +1 -1
  156. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  157. package/dist/server/src/register.d.ts.map +1 -1
  158. package/dist/server/src/services/migration-builder/index.d.ts.map +1 -1
  159. package/dist/server/src/services/schema-builder/types.d.ts.map +1 -1
  160. package/dist/server/src/services/schema.d.ts.map +1 -1
  161. package/dist/server/src/utils/uid-target.d.ts +18 -0
  162. package/dist/server/src/utils/uid-target.d.ts.map +1 -0
  163. package/dist/server/utils/uid-target.js +34 -0
  164. package/dist/server/utils/uid-target.js.map +1 -0
  165. package/dist/server/utils/uid-target.mjs +31 -0
  166. package/dist/server/utils/uid-target.mjs.map +1 -0
  167. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"GenericInputs.mjs","sources":["../../../admin/src/components/GenericInputs.tsx"],"sourcesContent":["/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ntype ConditionField = {\n name: string;\n type: string;\n enum?: string[];\n};\n\ninterface CustomInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n value?: unknown;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: ConditionField[];\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: unknown;\n isNullable?: boolean;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: ConditionField[];\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n onDelete,\n options = [],\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable: _isNullable,\n autoFocus,\n attribute,\n attributeName,\n conditionFields,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs\n ? (customInputs[type] as React.ComponentType<CustomInputProps> | undefined)\n : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n const stringValue =\n typeof value === 'string' || typeof value === 'number' ? value.toString() : '';\n const numberValue = (() => {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value === 'string' && value.trim() !== '') {\n const parsedValue = Number(value);\n\n return Number.isFinite(parsedValue) ? parsedValue : undefined;\n }\n\n return undefined;\n })();\n const selectValue =\n typeof value === 'string' || typeof value === 'number' || value === null ? value : undefined;\n const jsonValue =\n value !== undefined &&\n (typeof value === 'object' || typeof value === 'boolean' || typeof value === 'number')\n ? JSON.stringify(value, null, 2)\n : typeof value === 'string'\n ? value\n : undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n onDelete={onDelete}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n autoFocus={autoFocus}\n attributeName={attributeName}\n conditionFields={conditionFields}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={jsonValue}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : Boolean(defaultValue)}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={numberValue}\n autoFocus={autoFocus}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={stringValue}\n autoFocus={autoFocus}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={stringValue}\n autoFocus={autoFocus}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={stringValue}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={selectValue}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={stringValue}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value: stringValue, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && !['string', 'uid', 'richtext', 'email', 'password', 'text'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n"],"names":["GenericInput","autoComplete","customInputs","description","disabled","intlLabel","labelAction","error","name","onChange","onDelete","options","placeholder","required","step","type","value","defaultValue","isNullable","_isNullable","autoFocus","attribute","attributeName","conditionFields","rest","formatMessage","useIntl","getFieldHintValue","key","hint","useFieldHint","fieldSchema","minLength","maxLength","max","min","showPassword","setShowPassword","React","useState","CustomInput","undefined","stringValue","toString","numberValue","Number","isFinite","trim","parsedValue","selectValue","jsonValue","JSON","stringify","getErrorMessage","id","defaultMessage","values","errorMessage","_jsx","label","formattedPlaceholder","getComponent","JSONInput","json","length","target","minHeight","maxHeight","Toggle","checked","Boolean","offLabel","onLabel","e","Checkbox","onCheckedChange","dateValue","parseDateValue","DateTimePicker","clearLabel","date","formattedDate","toISOString","onClear","DatePicker","formatISO","representation","NumberInput","onValueChange","TextInput","endAction","button","aria-label","onClick","prev","style","border","padding","background","Eye","fill","EyeStriked","SingleSelect","map","metadatas","hidden","SingleSelectOption","Textarea","event","formattedValue","handleTimeChange","TimePicker","time","handleTimeChangeEvent","_jsxs","Field","Root","Label","action","Error","Hint","buildDescription","buildHint","maximum","minimum","getMinMax","units","getFieldUnits","minIsNumber","maxIsNumber","hasMinAndMax","hasMinOrMax","unit","message","divider","br","includes","maxValue","Math","parsedMin","parsedMinLength","isNaN","parsedMax","parsedMaxLength","MemoizedGenericInput","memo","isEqual"],"mappings":";;;;;;;;;;AA0HA,MAAMA,YAAAA,GAAe,CAAC,EACpBC,YAAY,EACZC,YAAY,EACZC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACXC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRC,OAAAA,GAAU,EAAE,EACZC,WAAW,EACXC,QAAQ,EACRC,IAAI,EACJC,IAAI,EACJC,KAAAA,EAAOC,YAAY,EACnBC,YAAYC,WAAW,EACvBC,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,eAAe,EACf,GAAGC,IAAAA,EACe,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;;IAG1B,MAAMC,iBAAAA,GAAoB,CACxBN,SAAAA,EACAO,GAAAA,GAAAA;AAEA,QAAA,IAAI,CAACP,SAAAA,EAAW;QAEhB,IAAIO,GAAAA,KAAQ,WAAA,IAAeA,GAAAA,IAAOP,SAAAA,EAAW;YAC3C,OAAOA,SAAS,CAACO,GAAAA,CAAI;AACvB,QAAA;QAEA,IAAIA,GAAAA,KAAQ,WAAA,IAAeA,GAAAA,IAAOP,SAAAA,EAAW;YAC3C,OAAOA,SAAS,CAACO,GAAAA,CAAI;AACvB,QAAA;QAEA,IAAIA,GAAAA,KAAQ,KAAA,IAASA,GAAAA,IAAOP,SAAAA,EAAW;YACrC,OAAOA,SAAS,CAACO,GAAAA,CAAI;AACvB,QAAA;QAEA,IAAIA,GAAAA,KAAQ,KAAA,IAASA,GAAAA,IAAOP,SAAAA,EAAW;YACrC,OAAOA,SAAS,CAACO,GAAAA,CAAI;AACvB,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAAA,CAAa;AAC5B3B,QAAAA,WAAAA;QACA4B,WAAAA,EAAa;AACXC,YAAAA,SAAAA,EAAWL,kBAAkBN,SAAAA,EAAW,WAAA,CAAA;AACxCY,YAAAA,SAAAA,EAAWN,kBAAkBN,SAAAA,EAAW,WAAA,CAAA;AACxCa,YAAAA,GAAAA,EAAKP,kBAAkBN,SAAAA,EAAW,KAAA,CAAA;AAClCc,YAAAA,GAAAA,EAAKR,kBAAkBN,SAAAA,EAAW,KAAA;AACpC,SAAA;AACAN,QAAAA,IAAAA,EAAMM,WAAWN,IAAAA,IAAQA;AAC3B,KAAA,CAAA;AAEA,IAAA,MAAM,CAACqB,YAAAA,EAAcC,eAAAA,CAAgB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEvD,IAAA,MAAMC,WAAAA,GAActC,YAAAA,GACfA,YAAY,CAACa,KAAK,GACnB,IAAA;;;AAIJ,IAAA,MAAMC,QAAQC,YAAAA,IAAgBwB,SAAAA;IAC9B,MAAMC,WAAAA,GACJ,OAAO1B,KAAAA,KAAU,QAAA,IAAY,OAAOA,KAAAA,KAAU,QAAA,GAAWA,KAAAA,CAAM2B,QAAQ,EAAA,GAAK,EAAA;IAC9E,MAAMC,WAAAA,GAAc,CAAC,IAAA;QACnB,IAAI,OAAO5B,UAAU,QAAA,EAAU;AAC7B,YAAA,OAAO6B,MAAAA,CAAOC,QAAQ,CAAC9B,KAAAA,CAAAA,GAASA,KAAAA,GAAQyB,SAAAA;AAC1C,QAAA;AAEA,QAAA,IAAI,OAAOzB,KAAAA,KAAU,QAAA,IAAYA,KAAAA,CAAM+B,IAAI,OAAO,EAAA,EAAI;AACpD,YAAA,MAAMC,cAAcH,MAAAA,CAAO7B,KAAAA,CAAAA;AAE3B,YAAA,OAAO6B,MAAAA,CAAOC,QAAQ,CAACE,WAAAA,CAAAA,GAAeA,WAAAA,GAAcP,SAAAA;AACtD,QAAA;QAEA,OAAOA,SAAAA;IACT,CAAA,GAAA;IACA,MAAMQ,WAAAA,GACJ,OAAOjC,KAAAA,KAAU,QAAA,IAAY,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,IAAA,GAAOA,KAAAA,GAAQyB,SAAAA;IACrF,MAAMS,SAAAA,GACJlC,UAAUyB,SAAAA,KACT,OAAOzB,KAAAA,KAAU,QAAA,IAAY,OAAOA,KAAAA,KAAU,SAAA,IAAa,OAAOA,UAAU,QAAO,CAAA,GAChFmC,IAAAA,CAAKC,SAAS,CAACpC,KAAAA,EAAO,MAAM,CAAA,CAAA,GAC5B,OAAOA,KAAAA,KAAU,QAAA,GACfA,KAAAA,GACAyB,SAAAA;AAER;;;;;;KAOA,SAASY,gBAAgB9C,KAA8C,EAAA;AACrE,QAAA,IAAI,CAACA,KAAAA,EAAO;YACV,OAAO,IAAA;AACT,QAAA;QAEA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC7B,YAAA,OAAOkB,aAAAA,CAAc;gBAAE6B,EAAAA,EAAI/C,KAAAA;gBAAOgD,cAAAA,EAAgBhD;AAAM,aAAA,CAAA;AAC1D,QAAA;AAEA,QAAA,MAAMiD,MAAAA,GAAS;AACb,YAAA,GAAGjD,MAAMiD;AACX,SAAA;AAEA,QAAA,OAAO/B,aAAAA,CACL;AACE6B,YAAAA,EAAAA,EAAI/C,MAAM+C,EAAE;YACZC,cAAAA,EAAgBhD,KAAAA,EAAOgD,cAAAA,IAAkBhD,KAAAA,CAAM+C;SACjD,EACAE,MAAAA,CAAAA;AAEJ,IAAA;IAEA,MAAMC,YAAAA,GAAeJ,gBAAgB9C,KAAAA,CAAAA,IAAUkC,SAAAA;AAE/C,IAAA,IAAID,WAAAA,EAAa;AACf,QAAA,qBACEkB,GAAA,CAAClB,WAAAA,EAAAA;AACE,YAAA,GAAGhB,IAAI;YACRH,SAAAA,EAAWA,SAAAA;YACXlB,WAAAA,EAAaA,WAAAA;YACb0B,IAAAA,EAAMA,IAAAA;YACNzB,QAAAA,EAAUA,QAAAA;YACVC,SAAAA,EAAWA,SAAAA;YACXC,WAAAA,EAAaA,WAAAA;AACbC,YAAAA,KAAAA,EAAOkD,YAAAA,IAAgB,EAAA;YACvBjD,IAAAA,EAAMA,IAAAA;YACNC,QAAAA,EAAUA,QAAAA;YACVC,QAAAA,EAAUA,QAAAA;YACVC,OAAAA,EAASA,OAAAA;YACTE,QAAAA,EAAUA,QAAAA;YACVD,WAAAA,EAAaA,WAAAA;YACbG,IAAAA,EAAMA,IAAAA;YACNC,KAAAA,EAAOA,KAAAA;YACPI,SAAAA,EAAWA,SAAAA;YACXE,aAAAA,EAAeA,aAAAA;YACfC,eAAAA,EAAiBA;;AAGvB,IAAA;AAEA,IAAA,MAAMoC,KAAAA,GAAQtD,SAAAA,CAAUiD,EAAE,GACtB7B,aAAAA,CACE;AAAE6B,QAAAA,EAAAA,EAAIjD,UAAUiD,EAAE;AAAEC,QAAAA,cAAAA,EAAgBlD,UAAUkD;KAAe,EAC7D;AAAE,QAAA,GAAGlD,UAAUmD;KAAO,CAAA,GAExBhD,IAAAA;IAEJ,MAAMoD,oBAAAA,GAAuBhD,cACzBa,aAAAA,CACE;AAAE6B,QAAAA,EAAAA,EAAI1C,YAAY0C,EAAE;AAAEC,QAAAA,cAAAA,EAAgB3C,YAAY2C;KAAe,EACjE;AAAE,QAAA,GAAG3C,YAAY4C;KAAO,CAAA,GAE1B,EAAA;AAEJ,IAAA,MAAMK,YAAAA,GAAe,IAAA;QACnB,OAAQ9C,IAAAA;YACN,KAAK,MAAA;AAAQ,gBAAA;AACX,oBAAA,qBACE2C,GAAA,CAACI,SAAAA,EAAAA;wBACC9C,KAAAA,EAAOkC,SAAAA;wBACP9C,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACsD,IAAAA,GAAAA;;4BAET,MAAM/C,KAAAA,GACJK,SAAAA,IAAa,UAAA,IAAcA,SAAAA,IAAa,CAACA,SAAAA,EAAWR,QAAAA,IAAY,CAACkD,IAAAA,CAAKC,MAAM,GACxE,IAAA,GACAD,IAAAA;4BACNtD,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;AAAMQ,oCAAAA;AAAM;6BAAE,EAAG,KAAA,CAAA;AACxC,wBAAA,CAAA;wBACAkD,SAAAA,EAAU,SAAA;wBACVC,SAAAA,EAAU;;AAGhB,gBAAA;YACA,KAAK,MAAA;AAAQ,gBAAA;AACX,oBAAA,qBACET,GAAA,CAACU,MAAAA,EAAAA;wBACCC,OAAAA,EAASpD,YAAAA,KAAiB,IAAA,GAAO,IAAA,GAAOqD,OAAAA,CAAQrD,YAAAA,CAAAA;wBAChDb,QAAAA,EAAUA,QAAAA;AACVmE,wBAAAA,QAAAA,EAAU9C,aAAAA,CAAc;4BACtB6B,EAAAA,EAAI,yCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACAiB,wBAAAA,OAAAA,EAAS/C,aAAAA,CAAc;4BACrB6B,EAAAA,EAAI,wCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AACA9C,wBAAAA,QAAAA,EAAU,CAACgE,CAAAA,GAAAA;4BACThE,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAOyD,CAAAA,CAAER,MAAM,CAACI;AAAQ;AAAE,6BAAA,CAAA;AACvD,wBAAA;;AAGN,gBAAA;YACA,KAAK,UAAA;AAAY,gBAAA;AACf,oBAAA,qBACEX,GAAA,CAACgB,QAAAA,EAAAA;wBACCtE,QAAAA,EAAUA,QAAAA;AACVuE,wBAAAA,eAAAA,EAAiB,CAAC3D,KAAAA,GAAAA;4BAChBP,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;AAAMQ,oCAAAA;AAAM;AAAE,6BAAA,CAAA;AACrC,wBAAA,CAAA;AACAqD,wBAAAA,OAAAA,EAASC,OAAAA,CAAQtD,KAAAA,CAAAA;AAEhB2C,wBAAAA,QAAAA,EAAAA;;AAGP,gBAAA;YACA,KAAK,UAAA;AAAY,gBAAA;AACf,oBAAA,MAAMiB,YAAYC,cAAAA,CAAe7D,KAAAA,CAAAA;AACjC,oBAAA,qBACE0C,GAAA,CAACoB,cAAAA,EAAAA;AACCC,wBAAAA,UAAAA,EAAYtD,aAAAA,CAAc;4BAAE6B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA,CAAA;wBACtEnD,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACuE,IAAAA,GAAAA;;AAET,4BAAA,MAAMC,aAAAA,GAAgBD,IAAAA,GAAOA,IAAAA,CAAKE,WAAW,EAAA,GAAK,IAAA;4BAElDzE,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAOiE,aAAAA;AAAelE,oCAAAA;AAAK;AAAE,6BAAA,CAAA;AAC1D,wBAAA,CAAA;AACAoE,wBAAAA,OAAAA,EAAS,IAAM1E,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAO,IAAA;AAAMD,oCAAAA;AAAK;AAAE,6BAAA,CAAA;wBAC9DH,WAAAA,EAAagD,oBAAAA;wBACb5C,KAAAA,EAAO4D;;AAGb,gBAAA;YACA,KAAK,MAAA;AAAQ,gBAAA;AACX,oBAAA,MAAMA,YAAYC,cAAAA,CAAe7D,KAAAA,CAAAA;AACjC,oBAAA,qBACE0C,GAAA,CAAC0B,UAAAA,EAAAA;AACCL,wBAAAA,UAAAA,EAAYtD,aAAAA,CAAc;4BAAE6B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA,CAAA;wBACtEnD,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACuE,IAAAA,GAAAA;4BACTvE,QAAAA,CAAS;gCACPwD,MAAAA,EAAQ;AACNzD,oCAAAA,IAAAA;oCACAQ,KAAAA,EAAOgE,IAAAA,GAAOK,UAAUL,IAAAA,EAAM;wCAAEM,cAAAA,EAAgB;qCAAO,CAAA,GAAK,IAAA;AAC5DvE,oCAAAA;AACF;AACF,6BAAA,CAAA;AACF,wBAAA,CAAA;AACAoE,wBAAAA,OAAAA,EAAS,IAAM1E,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAO,IAAA;AAAMD,oCAAAA;AAAK;AAAE,6BAAA,CAAA;wBAC9DH,WAAAA,EAAagD,oBAAAA;wBACb5C,KAAAA,EAAO4D;;AAGb,gBAAA;YACA,KAAK,QAAA;AAAU,gBAAA;AACb,oBAAA,qBACElB,GAAA,CAAC6B,WAAAA,EAAAA;wBACCnF,QAAAA,EAAUA,QAAAA;AACVoF,wBAAAA,aAAAA,EAAe,CAACxE,KAAAA,GAAAA;4BACdP,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;AAAMQ,oCAAAA,KAAAA;AAAOD,oCAAAA;AAAK;AAAE,6BAAA,CAAA;AAC3C,wBAAA,CAAA;wBACAH,WAAAA,EAAagD,oBAAAA;wBACb9C,IAAAA,EAAMA,IAAAA;wBACNE,KAAAA,EAAO4B,WAAAA;wBACPxB,SAAAA,EAAWA;;AAGjB,gBAAA;YACA,KAAK,OAAA;AAAS,gBAAA;AACZ,oBAAA,qBACEsC,GAAA,CAAC+B,SAAAA,EAAAA;wBACCxF,YAAAA,EAAcA,YAAAA;wBACdG,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACgE,CAAAA,GAAAA;4BACThE,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAOyD,CAAAA,CAAER,MAAM,CAACjD,KAAK;AAAED,oCAAAA;AAAK;AAAE,6BAAA,CAAA;AAC3D,wBAAA,CAAA;wBACAH,WAAAA,EAAagD,oBAAAA;wBACb7C,IAAAA,EAAK,OAAA;wBACLC,KAAAA,EAAO0B,WAAAA;wBACPtB,SAAAA,EAAWA;;AAGjB,gBAAA;YACA,KAAK,WAAA;YACL,KAAK,MAAA;YACL,KAAK,QAAA;AAAU,gBAAA;AACb,oBAAA,qBACEsC,GAAA,CAAC+B,SAAAA,EAAAA;wBACCxF,YAAAA,EAAcA,YAAAA;wBACdG,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACgE,CAAAA,GAAAA;4BACThE,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAOyD,CAAAA,CAAER,MAAM,CAACjD,KAAK;AAAED,oCAAAA;AAAK;AAAE,6BAAA,CAAA;AAC3D,wBAAA,CAAA;wBACAH,WAAAA,EAAagD,oBAAAA;wBACb7C,IAAAA,EAAK,MAAA;wBACLC,KAAAA,EAAO0B,WAAAA;wBACPtB,SAAAA,EAAWA;;AAGjB,gBAAA;YACA,KAAK,UAAA;AAAY,gBAAA;AACf,oBAAA,qBACEsC,GAAA,CAAC+B,SAAAA,EAAAA;wBACCxF,YAAAA,EAAcA,YAAAA;wBACdG,QAAAA,EAAUA,QAAAA;AACVsF,wBAAAA,SAAAA,gBACEhC,GAAA,CAACiC,QAAAA,EAAAA;AACCC,4BAAAA,YAAAA,EAAYnE,aAAAA,CAAc;gCACxB6B,EAAAA,EAAI,kCAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA,CAAA;4BACAsC,OAAAA,EAAS,IAAA;gCACPxD,eAAAA,CAAgB,CAACyD,OAAS,CAACA,IAAAA,CAAAA;AAC7B,4BAAA,CAAA;4BACAC,KAAAA,EAAO;gCACLC,MAAAA,EAAQ,MAAA;gCACRC,OAAAA,EAAS,CAAA;gCACTC,UAAAA,EAAY;AACd,6BAAA;4BACAnF,IAAAA,EAAK,QAAA;AAEJqB,4BAAAA,QAAAA,EAAAA,YAAAA,iBAAesB,GAAA,CAACyC,GAAAA,EAAAA;gCAAIC,IAAAA,EAAK;+CAAkB1C,GAAA,CAAC2C,UAAAA,EAAAA;gCAAWD,IAAAA,EAAK;;;AAGjE3F,wBAAAA,QAAAA,EAAU,CAACgE,CAAAA,GAAAA;4BACThE,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAOyD,CAAAA,CAAER,MAAM,CAACjD,KAAK;AAAED,oCAAAA;AAAK;AAAE,6BAAA,CAAA;AAC3D,wBAAA,CAAA;wBACAH,WAAAA,EAAagD,oBAAAA;AACb7C,wBAAAA,IAAAA,EAAMqB,eAAe,MAAA,GAAS,UAAA;wBAC9BpB,KAAAA,EAAO0B;;AAGb,gBAAA;YACA,KAAK,QAAA;AAAU,gBAAA;AACb,oBAAA,qBACEgB,GAAA,CAAC4C,YAAAA,EAAAA;wBACClG,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACO,KAAAA,GAAAA;4BACTP,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;AAAMQ,oCAAAA,KAAAA;oCAAOD,IAAAA,EAAM;AAAS;AAAE,6BAAA,CAAA;AACrD,wBAAA,CAAA;wBACAH,WAAAA,EAAagD,oBAAAA;wBACb5C,KAAAA,EAAOiC,WAAAA;AAENtC,wBAAAA,QAAAA,EAAAA,OAAAA,CAAQ4F,GAAG,CAAC,CAAC,EAAEC,SAAAA,EAAW,EAAEnG,SAAS,EAAED,QAAQ,EAAEqG,MAAM,EAAE,EAAE7E,GAAG,EAAEZ,KAAK,EAAE,GAAA;AACtE,4BAAA,qBACE0C,GAAA,CAACgD,kBAAAA,EAAAA;gCAA6B1F,KAAAA,EAAOA,KAAAA;gCAAOZ,QAAAA,EAAUA,QAAAA;gCAAUqG,MAAAA,EAAQA,MAAAA;0CACrEhF,aAAAA,CAAcpB,SAAAA;AADQuB,6BAAAA,EAAAA,GAAAA,CAAAA;AAI7B,wBAAA,CAAA;;AAGN,gBAAA;YACA,KAAK,UAAA;AAAY,gBAAA;AACf,oBAAA,qBACE8B,GAAA,CAACiD,QAAAA,EAAAA;wBACCvG,QAAAA,EAAUA,QAAAA;wBACVK,QAAAA,EAAU,CAACmG,QAAUnG,QAAAA,CAAS;gCAAEwD,MAAAA,EAAQ;AAAEzD,oCAAAA,IAAAA;oCAAMQ,KAAAA,EAAO4F,KAAAA,CAAM3C,MAAM,CAACjD,KAAK;AAAED,oCAAAA;AAAK;AAAE,6BAAA,CAAA;wBAClFH,WAAAA,EAAagD,oBAAAA;wBACb5C,KAAAA,EAAO0B;;AAGb,gBAAA;YACA,KAAK,MAAA;AAAQ,gBAAA;AACX,oBAAA,MAAMmE,iBAAiBC,gBAAAA,CAAiB;wBAAE9F,KAAAA,EAAO0B,WAAkC,CAAA,CAAA;AAEnF,oBAAA,qBACEgB,GAAA,CAACqD,UAAAA,EAAAA;AACChC,wBAAAA,UAAAA,EAAYtD,aAAAA,CAAc;4BAAE6B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA,CAAA;wBACtEnD,QAAAA,EAAUA,QAAAA;AACVK,wBAAAA,QAAAA,EAAU,CAACuG,IAAAA,GAASC,qBAAAA,CAAsBxG,QAAAA,EAAUD,MAAMO,IAAAA,EAAMiG,IAAAA,CAAAA;AAChE7B,wBAAAA,OAAAA,EAAS,IAAM8B,qBAAAA,CAAsBxG,QAAAA,EAAUD,IAAAA,EAAMO,IAAAA,EAAM0B,SAAAA,CAAAA;wBAC3DzB,KAAAA,EAAO6F;;AAGb,gBAAA;AACA,YAAA;AAAS,gBAAA;AACP;;;AAGC,YACD,qBAAOnD,GAAA,CAAC+B,SAAAA,EAAAA;wBAAUrF,QAAQ,EAAA,IAAA;wBAACQ,WAAAA,EAAY,eAAA;wBAAgBG,IAAAA,EAAK,MAAA;wBAAOC,KAAAA,EAAM;;AAC3E,gBAAA;AACF;AACF,IAAA,CAAA;IAEA,qBACEkG,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC7G,KAAAA,EAAOkD,YAAAA;QAAcjD,IAAAA,EAAMA,IAAAA;QAAMqB,IAAAA,EAAMA,IAAAA;QAAMhB,QAAAA,EAAUA,QAAAA;;YAChEE,IAAAA,KAAS,UAAA,iBAAa2C,GAAA,CAACyD,KAAAA,CAAME,KAAK,EAAA;gBAACC,MAAAA,EAAQhH,WAAAA;AAAcqD,gBAAAA,QAAAA,EAAAA;AAAuB,aAAA,CAAA,GAAA,IAAA;AAChFE,YAAAA,YAAAA,EAAAA;AACD,0BAAAH,GAAA,CAACyD,MAAMI,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAA7D,GAAA,CAACyD,MAAMK,IAAI,EAAA,EAAA;;;AAGjB,CAAA;AAcA;;;IAIA,MAAM1F,eAAe,CAAC,EAAE3B,WAAW,EAAE4B,WAAW,EAAEhB,IAAI,EAAqB,GAAA;IACzE,MAAM,EAAEU,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAM+F,gBAAAA,GAAmB,IACvBtH,WAAAA,EAAamD,EAAAA,GACT7B,aAAAA,CACE;AAAE6B,YAAAA,EAAAA,EAAInD,YAAYmD,EAAE;AAAEC,YAAAA,cAAAA,EAAgBpD,YAAYoD;SAAe,EACjE;AAAE,YAAA,GAAGpD,YAAYqD;SAAO,CAAA,GAE1B,EAAA;AAEN,IAAA,MAAMkE,SAAAA,GAAY,IAAA;AAChB,QAAA,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGC,SAAAA,CAAU9F,WAAAA,CAAAA;AACvC,QAAA,MAAM+F,QAAQC,aAAAA,CAAc;AAC1BhH,YAAAA,IAAAA;AACA6G,YAAAA,OAAAA;AACAD,YAAAA;AACF,SAAA,CAAA;QAEA,MAAMK,WAAAA,GAAc,OAAOJ,OAAAA,KAAY,QAAA;QACvC,MAAMK,WAAAA,GAAc,OAAON,OAAAA,KAAY,QAAA;AACvC,QAAA,MAAMO,eAAeD,WAAAA,IAAeD,WAAAA;AACpC,QAAA,MAAMG,cAAcF,WAAAA,IAAeD,WAAAA;AAEnC,QAAA,IAAI,CAAC7H,WAAAA,EAAamD,EAAAA,IAAM,CAAC6E,WAAAA,EAAa;YACpC,OAAO,EAAA;AACT,QAAA;AAEA,QAAA,OAAO1G,aAAAA,CACL;YACE6B,EAAAA,EAAI,sCAAA;YACJC,cAAAA,EACE;SACJ,EACA;YACEpB,GAAAA,EAAKyF,OAAAA;YACL1F,GAAAA,EAAKyF,OAAAA;YACLxH,WAAAA,EAAasH,gBAAAA,EAAAA;YACbW,IAAAA,EAAMN,KAAAA,EAAOO,WAAWF,WAAAA,GAAc1G,aAAAA,CAAcqG,MAAMO,OAAO,EAAEP,KAAAA,CAAMtE,MAAM,CAAA,GAAI,IAAA;AACnF8E,YAAAA,OAAAA,EAASJ,eACLzG,aAAAA,CAAc;gBACZ6B,EAAAA,EAAI,+CAAA;gBACJC,cAAAA,EAAgB;aAClB,CAAA,GACA,IAAA;YACJgF,EAAAA,EAAIJ,WAAAA,iBAAczE,IAAC6E,IAAAA,EAAAA,EAAAA,CAAAA,GAAQ;AAC7B,SAAA,CAAA;AAEJ,IAAA,CAAA;IAEA,OAAO;QAAE1G,IAAAA,EAAM6F,SAAAA;AAAY,KAAA;AAC7B,CAAA;AAEA,MAAMK,aAAAA,GAAgB,CAAC,EACrBhH,IAAI,EACJ6G,OAAO,EACPD,OAAO,EAKR,GAAA;AACC,IAAA,IAAI5G,QAAQ,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,KAAA;AAAO,QAAA,UAAA;AAAY,QAAA,OAAA;AAAS,QAAA,UAAA;AAAY,QAAA;KAAO,CAACyH,QAAQ,CAACzH,IAAAA,CAAAA,EAAO;AACtF,QAAA,OAAO,EAAC;AACV,IAAA;AACA,IAAA,MAAM0H,WAAWC,IAAAA,CAAKxG,GAAG,CAAC0F,OAAAA,IAAW,GAAGD,OAAAA,IAAW,CAAA,CAAA;IAEnD,OAAO;QACLU,OAAAA,EAAS;YACP/E,EAAAA,EAAI,gDAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,MAAAA,EAAQ;AACNiF,YAAAA;AACF;AACF,KAAA;AACF,CAAA;AAEA,MAAMZ,YAAY,CAAC9F,WAAAA,GAAAA;AACjB,IAAA,IAAI,CAACA,WAAAA,EAAa;QAChB,OAAO;YAAE4F,OAAAA,EAASlF,SAAAA;YAAWmF,OAAAA,EAASnF;AAAU,SAAA;AAClD,IAAA;IAEA,MAAM,EAAET,SAAS,EAAEC,SAAS,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGJ,WAAAA;IAE3C,IAAI6F,OAAAA;IACJ,IAAID,OAAAA;AAEJ,IAAA,MAAMgB,YAAY9F,MAAAA,CAAOV,GAAAA,CAAAA;AACzB,IAAA,MAAMyG,kBAAkB/F,MAAAA,CAAOb,SAAAA,CAAAA;AAE/B,IAAA,IAAI,CAACa,MAAAA,CAAOgG,KAAK,CAACF,SAAAA,CAAAA,EAAY;QAC5Bf,OAAAA,GAAUe,SAAAA;AACZ,IAAA,CAAA,MAAO,IAAI,CAAC9F,MAAAA,CAAOgG,KAAK,CAACD,eAAAA,CAAAA,EAAkB;QACzChB,OAAAA,GAAUgB,eAAAA;AACZ,IAAA;AAEA,IAAA,MAAME,YAAYjG,MAAAA,CAAOX,GAAAA,CAAAA;AACzB,IAAA,MAAM6G,kBAAkBlG,MAAAA,CAAOZ,SAAAA,CAAAA;AAE/B,IAAA,IAAI,CAACY,MAAAA,CAAOgG,KAAK,CAACC,SAAAA,CAAAA,EAAY;QAC5BnB,OAAAA,GAAUmB,SAAAA;AACZ,IAAA,CAAA,MAAO,IAAI,CAACjG,MAAAA,CAAOgG,KAAK,CAACE,eAAAA,CAAAA,EAAkB;QACzCpB,OAAAA,GAAUoB,eAAAA;AACZ,IAAA;IAEA,OAAO;AAAEpB,QAAAA,OAAAA;AAASC,QAAAA;AAAQ,KAAA;AAC5B,CAAA;AAEA;;;;AAIC,IACD,MAAMoB,oBAAAA,iBAAuB1G,KAAAA,CAAM2G,IAAI,CAACjJ,YAAAA,EAAckJ,OAAAA;;;;"}
1
+ {"version":3,"file":"GenericInputs.mjs","sources":["../../../admin/src/components/GenericInputs.tsx"],"sourcesContent":["/**\n * TODO: we should be using the FormRenderer from the admin to do this,\n * but the CTB has no tests or types, so we can't refactor it safely.\n * So we're just adding this to the tech debt.\n */\n\nimport * as React from 'react';\n\nimport {\n Checkbox,\n DatePicker,\n DateTimePicker,\n Field,\n JSONInput,\n NumberInput,\n SingleSelect,\n SingleSelectOption,\n Textarea,\n TextInput,\n TimePicker,\n Toggle,\n} from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport formatISO from 'date-fns/formatISO';\nimport isEqual from 'lodash/isEqual';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\n\nimport { parseDateValue } from '../utils/parseDateValue';\nimport { handleTimeChange, handleTimeChangeEvent } from '../utils/timeFormat';\n\nimport type { Schema } from '@strapi/types';\n\nconst EMPTY_OPTIONS: NonNullable<GenericInputProps['options']> = [];\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface InputOption {\n metadatas: {\n intlLabel: TranslationMessage;\n disabled: boolean;\n hidden: boolean;\n };\n key: string;\n value: string;\n}\n\ntype ConditionField = {\n name: string;\n type: string;\n enum?: string[];\n};\n\ninterface CustomInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string;\n hint?: string | React.JSX.Element | (string | React.JSX.Element)[];\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n value?: unknown;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: ConditionField[];\n}\n\ninterface GenericInputProps<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n> {\n attribute?: TAttribute;\n autoComplete?: string;\n customInputs?: Record<string, React.ComponentType<CustomInputProps<TAttribute>>>;\n description?: TranslationMessage;\n disabled?: boolean;\n error?: string | TranslationMessage;\n intlLabel: TranslationMessage;\n labelAction?: React.ReactNode;\n name: string;\n onChange: (\n payload: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n },\n shouldSetInitialValue?: boolean\n ) => void;\n onDelete?: () => void;\n options?: InputOption[];\n placeholder?: TranslationMessage;\n required?: boolean;\n step?: number;\n type: string;\n // TODO: The value depends on the input type, too complicated to handle all cases here\n value?: unknown;\n isNullable?: boolean;\n autoFocus?: boolean;\n attributeName?: string;\n conditionFields?: ConditionField[];\n}\n\nconst GenericInput = ({\n autoComplete,\n customInputs,\n description,\n disabled,\n intlLabel,\n labelAction,\n error,\n name,\n onChange,\n onDelete,\n options = EMPTY_OPTIONS,\n placeholder,\n required,\n step,\n type,\n value: defaultValue,\n isNullable: _isNullable,\n autoFocus,\n attribute,\n attributeName,\n conditionFields,\n ...rest\n}: GenericInputProps) => {\n const { formatMessage } = useIntl();\n\n // TODO: Workaround to get the field hint values if they exist on the type\n const getFieldHintValue = (\n attribute?: Schema.Attribute.AnyAttribute,\n key?: keyof FieldSchema\n ) => {\n if (!attribute) return;\n\n if (key === 'minLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'maxLength' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'max' && key in attribute) {\n return attribute[key];\n }\n\n if (key === 'min' && key in attribute) {\n return attribute[key];\n }\n };\n\n const { hint } = useFieldHint({\n description,\n fieldSchema: {\n minLength: getFieldHintValue(attribute, 'minLength'),\n maxLength: getFieldHintValue(attribute, 'maxLength'),\n max: getFieldHintValue(attribute, 'max'),\n min: getFieldHintValue(attribute, 'min'),\n },\n type: attribute?.type || type,\n });\n\n const [showPassword, setShowPassword] = React.useState(false);\n\n const CustomInput = customInputs\n ? (customInputs[type] as React.ComponentType<CustomInputProps> | undefined)\n : null;\n\n // the API always returns null, which throws an error in React,\n // therefore we cast this case to undefined\n const value = defaultValue ?? undefined;\n const stringValue =\n typeof value === 'string' || typeof value === 'number' ? value.toString() : '';\n const numberValue = (() => {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value === 'string' && value.trim() !== '') {\n const parsedValue = Number(value);\n\n return Number.isFinite(parsedValue) ? parsedValue : undefined;\n }\n\n return undefined;\n })();\n const selectValue =\n typeof value === 'string' || typeof value === 'number' || value === null ? value : undefined;\n const jsonValue =\n value !== undefined &&\n (typeof value === 'object' || typeof value === 'boolean' || typeof value === 'number')\n ? JSON.stringify(value, null, 2)\n : typeof value === 'string'\n ? value\n : undefined;\n\n /*\n TODO: ideally we should pass in `defaultValue` and `value` for\n inputs, in order to make them controlled components. This variable\n acts as a fallback for now, to prevent React errors in devopment mode\n\n See: https://github.com/strapi/strapi/pull/12861\n */\n function getErrorMessage(error: string | TranslationMessage | undefined) {\n if (!error) {\n return null;\n }\n\n if (typeof error === 'string') {\n return formatMessage({ id: error, defaultMessage: error });\n }\n\n const values = {\n ...error.values,\n };\n\n return formatMessage(\n {\n id: error.id,\n defaultMessage: error?.defaultMessage ?? error.id,\n },\n values\n );\n }\n\n const errorMessage = getErrorMessage(error) ?? undefined;\n\n if (CustomInput) {\n return (\n <CustomInput\n {...rest}\n attribute={attribute}\n description={description}\n hint={hint}\n disabled={disabled}\n intlLabel={intlLabel}\n labelAction={labelAction}\n error={errorMessage || ''}\n name={name}\n onChange={onChange}\n onDelete={onDelete}\n options={options}\n required={required}\n placeholder={placeholder}\n type={type}\n value={value}\n autoFocus={autoFocus}\n attributeName={attributeName}\n conditionFields={conditionFields}\n />\n );\n }\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const getComponent = () => {\n switch (type) {\n case 'json': {\n return (\n <JSONInput\n value={jsonValue}\n disabled={disabled}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value =\n attribute && 'required' in attribute && !attribute?.required && !json.length\n ? null\n : json;\n onChange({ target: { name, value } }, false);\n }}\n minHeight=\"25.2rem\"\n maxHeight=\"50.4rem\"\n />\n );\n }\n case 'bool': {\n return (\n <Toggle\n checked={defaultValue === null ? null : Boolean(defaultValue)}\n disabled={disabled}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n case 'checkbox': {\n return (\n <Checkbox\n disabled={disabled}\n onCheckedChange={(value) => {\n onChange({ target: { name, value } });\n }}\n checked={Boolean(value)}\n >\n {label}\n </Checkbox>\n );\n }\n case 'datetime': {\n const dateValue = parseDateValue(value);\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n // check if date is not null or undefined\n const formattedDate = date ? date.toISOString() : null;\n\n onChange({ target: { name, value: formattedDate, type } });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'date': {\n const dateValue = parseDateValue(value);\n return (\n <DatePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(date) => {\n onChange({\n target: {\n name,\n value: date ? formatISO(date, { representation: 'date' }) : null,\n type,\n },\n });\n }}\n onClear={() => onChange({ target: { name, value: null, type } })}\n placeholder={formattedPlaceholder}\n value={dateValue}\n />\n );\n }\n case 'number': {\n return (\n <NumberInput\n disabled={disabled}\n onValueChange={(value) => {\n onChange({ target: { name, value, type } });\n }}\n placeholder={formattedPlaceholder}\n step={step}\n value={numberValue}\n autoFocus={autoFocus}\n />\n );\n }\n case 'email': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"email\"\n value={stringValue}\n autoFocus={autoFocus}\n />\n );\n }\n case 'timestamp':\n case 'text':\n case 'string': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type=\"text\"\n value={stringValue}\n autoFocus={autoFocus}\n />\n );\n }\n case 'password': {\n return (\n <TextInput\n autoComplete={autoComplete}\n disabled={disabled}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? <Eye fill=\"neutral500\" /> : <EyeStriked fill=\"neutral500\" />}\n </button>\n }\n onChange={(e) => {\n onChange({ target: { name, value: e.target.value, type } });\n }}\n placeholder={formattedPlaceholder}\n type={showPassword ? 'text' : 'password'}\n value={stringValue}\n />\n );\n }\n case 'select': {\n return (\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange({ target: { name, value, type: 'select' } });\n }}\n placeholder={formattedPlaceholder}\n value={selectValue}\n >\n {options.map(({ metadatas: { intlLabel, disabled, hidden }, key, value }) => {\n return (\n <SingleSelectOption key={key} value={value} disabled={disabled} hidden={hidden}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n case 'textarea': {\n return (\n <Textarea\n disabled={disabled}\n onChange={(event) => onChange({ target: { name, value: event.target.value, type } })}\n placeholder={formattedPlaceholder}\n value={stringValue}\n />\n );\n }\n case 'time': {\n const formattedValue = handleTimeChange({ value: stringValue, onChange, name, type });\n\n return (\n <TimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n disabled={disabled}\n onChange={(time) => handleTimeChangeEvent(onChange, name, type, time)}\n onClear={() => handleTimeChangeEvent(onChange, name, type, undefined)}\n value={formattedValue}\n />\n );\n }\n default: {\n /**\n * If there's no component for the given type, we return a disabled text input\n * showing a \"Not supported\" title to illustrate the issue.\n */\n return <TextInput disabled placeholder=\"Not supported\" type=\"text\" value=\"\" />;\n }\n }\n };\n\n return (\n <Field.Root error={errorMessage} name={name} hint={hint} required={required}>\n {type !== 'checkbox' ? <Field.Label action={labelAction}>{label}</Field.Label> : null}\n {getComponent()}\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n\ntype FieldSchema = {\n minLength?: number | string;\n maxLength?: number | string;\n max?: number | string;\n min?: number | string;\n};\ninterface UseFieldHintProps {\n description?: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n fieldSchema?: FieldSchema;\n type?: string;\n}\n\n/**\n * @description\n * A hook for generating the hint for a field\n */\nconst useFieldHint = ({ description, fieldSchema, type }: UseFieldHintProps) => {\n const { formatMessage } = useIntl();\n\n const buildDescription = () =>\n description?.id\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n const buildHint = () => {\n const { maximum, minimum } = getMinMax(fieldSchema);\n const units = getFieldUnits({\n type,\n minimum,\n maximum,\n });\n\n const minIsNumber = typeof minimum === 'number';\n const maxIsNumber = typeof maximum === 'number';\n const hasMinAndMax = maxIsNumber && minIsNumber;\n const hasMinOrMax = maxIsNumber || minIsNumber;\n\n if (!description?.id && !hasMinOrMax) {\n return '';\n }\n\n return formatMessage(\n {\n id: 'content-manager.form.Input.hint.text',\n defaultMessage:\n '{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}',\n },\n {\n min: minimum,\n max: maximum,\n description: buildDescription(),\n unit: units?.message && hasMinOrMax ? formatMessage(units.message, units.values) : null,\n divider: hasMinAndMax\n ? formatMessage({\n id: 'content-manager.form.Input.hint.minMaxDivider',\n defaultMessage: ' / ',\n })\n : null,\n br: hasMinOrMax ? <br /> : null,\n }\n );\n };\n\n return { hint: buildHint() };\n};\n\nconst getFieldUnits = ({\n type,\n minimum,\n maximum,\n}: {\n type?: string;\n minimum?: number;\n maximum?: number;\n}) => {\n if (type && !['string', 'uid', 'richtext', 'email', 'password', 'text'].includes(type)) {\n return {};\n }\n const maxValue = Math.max(minimum || 0, maximum || 0);\n\n return {\n message: {\n id: 'content-manager.form.Input.hint.character.unit',\n defaultMessage: '{maxValue, plural, one { character} other { characters}}',\n },\n values: {\n maxValue,\n },\n };\n};\n\nconst getMinMax = (fieldSchema?: FieldSchema) => {\n if (!fieldSchema) {\n return { maximum: undefined, minimum: undefined };\n }\n\n const { minLength, maxLength, max, min } = fieldSchema;\n\n let minimum;\n let maximum;\n\n const parsedMin = Number(min);\n const parsedMinLength = Number(minLength);\n\n if (!Number.isNaN(parsedMin)) {\n minimum = parsedMin;\n } else if (!Number.isNaN(parsedMinLength)) {\n minimum = parsedMinLength;\n }\n\n const parsedMax = Number(max);\n const parsedMaxLength = Number(maxLength);\n\n if (!Number.isNaN(parsedMax)) {\n maximum = parsedMax;\n } else if (!Number.isNaN(parsedMaxLength)) {\n maximum = parsedMaxLength;\n }\n\n return { maximum, minimum };\n};\n\n/**\n * we've memoized this component because we use a context to store all the data in our form in the content-manager.\n * This then causes _every_ component to re-render because there are no selects incurring performance issues\n * in content-types as the content-type gets more complicated.\n */\nconst MemoizedGenericInput = React.memo(GenericInput, isEqual);\n\nexport type { GenericInputProps, CustomInputProps };\nexport { MemoizedGenericInput as GenericInput };\n"],"names":["EMPTY_OPTIONS","GenericInput","autoComplete","customInputs","description","disabled","intlLabel","labelAction","error","name","onChange","onDelete","options","placeholder","required","step","type","value","defaultValue","isNullable","_isNullable","autoFocus","attribute","attributeName","conditionFields","rest","formatMessage","useIntl","getFieldHintValue","key","hint","useFieldHint","fieldSchema","minLength","maxLength","max","min","showPassword","setShowPassword","React","useState","CustomInput","undefined","stringValue","toString","numberValue","Number","isFinite","trim","parsedValue","selectValue","jsonValue","JSON","stringify","getErrorMessage","id","defaultMessage","values","errorMessage","_jsx","label","formattedPlaceholder","getComponent","JSONInput","json","length","target","minHeight","maxHeight","Toggle","checked","Boolean","offLabel","onLabel","e","Checkbox","onCheckedChange","dateValue","parseDateValue","DateTimePicker","clearLabel","date","formattedDate","toISOString","onClear","DatePicker","formatISO","representation","NumberInput","onValueChange","TextInput","endAction","button","aria-label","onClick","prev","style","border","padding","background","Eye","fill","EyeStriked","SingleSelect","map","metadatas","hidden","SingleSelectOption","Textarea","event","formattedValue","handleTimeChange","TimePicker","time","handleTimeChangeEvent","_jsxs","Field","Root","Label","action","Error","Hint","buildDescription","buildHint","maximum","minimum","getMinMax","units","getFieldUnits","minIsNumber","maxIsNumber","hasMinAndMax","hasMinOrMax","unit","message","divider","br","includes","maxValue","Math","parsedMin","parsedMinLength","isNaN","parsedMax","parsedMaxLength","MemoizedGenericInput","memo","isEqual"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\nimport type { AnyAttribute, AttributeConditions, IntlLabel } from '../types';\n\ntype FormInput = Partial<React.ComponentProps<typeof GenericInput>> & {\n name: string;\n type: string;\n size?: number;\n};\n\ntype FormSection = {\n sectionTitle?: IntlLabel | null;\n intlLabel?: IntlLabel;\n items: FormInput[];\n};\n\ntype FormError = {\n id?: string;\n};\n\ntype GenericInputProps = Record<string, unknown> & {\n attributeName?: string;\n contentTypeSchema?: {\n attributes?: AnyAttribute[];\n };\n};\n\ntype ModifiedData = Record<string, unknown> & {\n name?: string;\n};\n\ntype TabFormChangeHandler = (value: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n}) => void;\n\ntype TabFormProps = {\n form: FormSection[];\n formErrors: Record<string, FormError>;\n genericInputProps: GenericInputProps;\n modifiedData: ModifiedData;\n onChange: TabFormChangeHandler;\n};\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n const sharedInputProps = genericInputProps as Partial<React.ComponentProps<typeof GenericInput>> &\n GenericInputProps;\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input, i) => {\n const key = `${sectionIndex}.${i}`;\n const intlLabel = input.intlLabel ?? {\n id: input.name,\n defaultMessage: input.name,\n };\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError]?.id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name) as\n | AttributeConditions\n | null\n | undefined;\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n sharedInputProps.contentTypeSchema?.attributes ?? [];\n\n if (!sharedInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name ?? ''\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size ?? 12}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {currentCondition === null ||\n currentCondition === undefined ||\n Object.keys(currentCondition).length === 0 ? (\n <Box>\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={4}\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","sharedInputProps","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","id","name","defaultMessage","value","get","undefined","pluginOptionError","Object","keys","find","errorId","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","attributeName","conditionFields","onDelete"],"mappings":"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"}
1
+ {"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\nimport type { AnyAttribute, AttributeConditions, IntlLabel } from '../types';\n\ntype FormInput = Partial<React.ComponentProps<typeof GenericInput>> & {\n name: string;\n type: string;\n size?: number;\n};\n\ntype FormSection = {\n sectionTitle?: IntlLabel | null;\n intlLabel?: IntlLabel;\n items: FormInput[];\n};\n\ntype FormError = {\n id?: string;\n};\n\ntype GenericInputProps = Record<string, unknown> & {\n attributeName?: string;\n contentTypeSchema?: {\n attributes?: AnyAttribute[];\n };\n};\n\ntype ModifiedData = Record<string, unknown> & {\n name?: string;\n};\n\ntype TabFormChangeHandler = (value: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n}) => void;\n\ntype TabFormProps = {\n form: FormSection[];\n formErrors: Record<string, FormError>;\n genericInputProps: GenericInputProps;\n modifiedData: ModifiedData;\n onChange: TabFormChangeHandler;\n};\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n const sharedInputProps = genericInputProps as Partial<React.ComponentProps<typeof GenericInput>> &\n GenericInputProps;\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input, i) => {\n const key = `${sectionIndex}.${i}`;\n const intlLabel = input.intlLabel ?? {\n id: input.name,\n defaultMessage: input.name,\n };\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError]?.id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name) as\n AttributeConditions | null | undefined;\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n sharedInputProps.contentTypeSchema?.attributes ?? [];\n\n if (!sharedInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name ?? ''\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size ?? 12}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {currentCondition === null ||\n currentCondition === undefined ||\n Object.keys(currentCondition).length === 0 ? (\n <Box>\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={4}\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","sharedInputProps","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","id","name","defaultMessage","value","get","undefined","pluginOptionError","Object","keys","find","errorId","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","attributeName","conditionFields","onDelete"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabForm.mjs","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\nimport type { AnyAttribute, AttributeConditions, IntlLabel } from '../types';\n\ntype FormInput = Partial<React.ComponentProps<typeof GenericInput>> & {\n name: string;\n type: string;\n size?: number;\n};\n\ntype FormSection = {\n sectionTitle?: IntlLabel | null;\n intlLabel?: IntlLabel;\n items: FormInput[];\n};\n\ntype FormError = {\n id?: string;\n};\n\ntype GenericInputProps = Record<string, unknown> & {\n attributeName?: string;\n contentTypeSchema?: {\n attributes?: AnyAttribute[];\n };\n};\n\ntype ModifiedData = Record<string, unknown> & {\n name?: string;\n};\n\ntype TabFormChangeHandler = (value: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n}) => void;\n\ntype TabFormProps = {\n form: FormSection[];\n formErrors: Record<string, FormError>;\n genericInputProps: GenericInputProps;\n modifiedData: ModifiedData;\n onChange: TabFormChangeHandler;\n};\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n const sharedInputProps = genericInputProps as Partial<React.ComponentProps<typeof GenericInput>> &\n GenericInputProps;\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input, i) => {\n const key = `${sectionIndex}.${i}`;\n const intlLabel = input.intlLabel ?? {\n id: input.name,\n defaultMessage: input.name,\n };\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError]?.id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name) as\n | AttributeConditions\n | null\n | undefined;\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n sharedInputProps.contentTypeSchema?.attributes ?? [];\n\n if (!sharedInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name ?? ''\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size ?? 12}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {currentCondition === null ||\n currentCondition === undefined ||\n Object.keys(currentCondition).length === 0 ? (\n <Box>\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={4}\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","sharedInputProps","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","id","name","defaultMessage","value","get","undefined","pluginOptionError","Object","keys","find","errorId","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","attributeName","conditionFields","onDelete"],"mappings":"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"}
1
+ {"version":3,"file":"TabForm.mjs","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\nimport type { AnyAttribute, AttributeConditions, IntlLabel } from '../types';\n\ntype FormInput = Partial<React.ComponentProps<typeof GenericInput>> & {\n name: string;\n type: string;\n size?: number;\n};\n\ntype FormSection = {\n sectionTitle?: IntlLabel | null;\n intlLabel?: IntlLabel;\n items: FormInput[];\n};\n\ntype FormError = {\n id?: string;\n};\n\ntype GenericInputProps = Record<string, unknown> & {\n attributeName?: string;\n contentTypeSchema?: {\n attributes?: AnyAttribute[];\n };\n};\n\ntype ModifiedData = Record<string, unknown> & {\n name?: string;\n};\n\ntype TabFormChangeHandler = (value: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n}) => void;\n\ntype TabFormProps = {\n form: FormSection[];\n formErrors: Record<string, FormError>;\n genericInputProps: GenericInputProps;\n modifiedData: ModifiedData;\n onChange: TabFormChangeHandler;\n};\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n const sharedInputProps = genericInputProps as Partial<React.ComponentProps<typeof GenericInput>> &\n GenericInputProps;\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input, i) => {\n const key = `${sectionIndex}.${i}`;\n const intlLabel = input.intlLabel ?? {\n id: input.name,\n defaultMessage: input.name,\n };\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError]?.id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name) as\n AttributeConditions | null | undefined;\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n sharedInputProps.contentTypeSchema?.attributes ?? [];\n\n if (!sharedInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name ?? ''\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size ?? 12}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {currentCondition === null ||\n currentCondition === undefined ||\n Object.keys(currentCondition).length === 0 ? (\n <Box>\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={4}\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","sharedInputProps","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","id","name","defaultMessage","value","get","undefined","pluginOptionError","Object","keys","find","errorId","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","attributeName","conditionFields","onDelete"],"mappings":"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"}
@@ -1,4 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
+ interface FullScreenImageContextType {
3
+ isOpen: boolean;
4
+ open: () => void;
5
+ close: () => void;
6
+ src: string;
7
+ alt: string;
8
+ }
2
9
  interface FullScreenImageProps {
3
10
  src: string;
4
11
  alt: string;
@@ -16,5 +23,6 @@ export declare const setOpacity: (hex: string, alpha: number) => string;
16
23
  export declare const FullScreenImage: {
17
24
  Root: ({ children, src, alt, onClose, defaultOpen }: FullScreenImageRootProps) => import("react/jsx-runtime").JSX.Element;
18
25
  Trigger: ({ children, asChild }: FullScreenImageTriggerProps) => import("react/jsx-runtime").JSX.Element;
26
+ useFullScreenImage: () => FullScreenImageContextType;
19
27
  };
20
28
  export {};
@@ -1,4 +1,24 @@
1
1
  import { AIMessage } from '../../lib/types/messages';
2
+ /**
3
+ * Exported for unit tests only. The AI chat needs a live AI backend, so no E2E
4
+ * run can reach this logic.
5
+ */
6
+ export declare const getPartFingerprint: (part: AIMessage["parts"][number]) => string;
7
+ /**
8
+ * Gives each part a key that survives across renders. A key derived from the
9
+ * part content alone cannot work: a streaming text part changes on every chunk,
10
+ * so its fingerprint would change on every tick and remount the node mid
11
+ * stream. Hence the fallback chain below: exact fingerprint match first, then
12
+ * object identity, then same slot and same type for the streaming case.
13
+ *
14
+ * Exported for unit tests only. The AI chat needs a live AI backend, so no E2E
15
+ * run can reach this logic.
16
+ */
17
+ export declare const usePartsWithKeys: (parts: AIMessage["parts"]) => {
18
+ fingerprint: string;
19
+ key: string;
20
+ part: import("ai").UIMessagePart<import("ai").UIDataTypes, import("ai").UITools>;
21
+ }[];
2
22
  export declare const ChatMessage: ({ message }: {
3
23
  message: AIMessage;
4
24
  }) => import("react/jsx-runtime").JSX.Element;
@@ -47,6 +47,8 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
47
47
  };
48
48
  })[];
49
49
  renames?: import("../../../types").RenameHop[];
50
+ singularName: string;
51
+ pluralName: string;
50
52
  displayName: string;
51
53
  description?: string;
52
54
  icon?: string;
@@ -82,8 +84,6 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
82
84
  };
83
85
  })[];
84
86
  renames?: import("../../../types").RenameHop[];
85
- singularName: string;
86
- pluralName: string;
87
87
  displayName: string;
88
88
  description?: string;
89
89
  icon?: string;
@@ -119,6 +119,8 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
119
119
  };
120
120
  })[];
121
121
  renames?: import("../../../types").RenameHop[];
122
+ singularName: string;
123
+ pluralName: string;
122
124
  displayName: string;
123
125
  description?: string;
124
126
  icon?: string;
@@ -159,8 +161,6 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
159
161
  };
160
162
  })[];
161
163
  renames?: import("../../../types").RenameHop[];
162
- singularName: string;
163
- pluralName: string;
164
164
  displayName: string;
165
165
  description?: string;
166
166
  icon?: string;
@@ -205,6 +205,8 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
205
205
  };
206
206
  })[];
207
207
  renames?: import("../../../types").RenameHop[];
208
+ singularName: string;
209
+ pluralName: string;
208
210
  displayName: string;
209
211
  description?: string;
210
212
  icon?: string;
@@ -240,8 +242,6 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
240
242
  };
241
243
  })[];
242
244
  renames?: import("../../../types").RenameHop[];
243
- singularName: string;
244
- pluralName: string;
245
245
  displayName: string;
246
246
  description?: string;
247
247
  icon?: string;
@@ -277,6 +277,8 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
277
277
  };
278
278
  })[];
279
279
  renames?: import("../../../types").RenameHop[];
280
+ singularName: string;
281
+ pluralName: string;
280
282
  displayName: string;
281
283
  description?: string;
282
284
  icon?: string;
@@ -317,8 +319,6 @@ declare const stateToRequestData: ({ components, contentTypes, contentStructure,
317
319
  };
318
320
  })[];
319
321
  renames?: import("../../../types").RenameHop[];
320
- singularName: string;
321
- pluralName: string;
322
322
  displayName: string;
323
323
  description?: string;
324
324
  icon?: string;
@@ -147,8 +147,6 @@ var cs = {
147
147
  "form.attribute.condition.enum-change-warning": "Následující pole mají podmínky, které závisí na tomto poli: {fieldNames}. Změna nebo odstranění enum hodnot {values} tyto podmínky poruší. Chcete pokračovat?",
148
148
  "form.attribute.condition.enum-change-warning-values": ". Změna nebo odstranění enum hodnot ",
149
149
  "form.attribute.condition.enum-change-warning-end": " poruší tyto podmínky. Chcete pokračovat?",
150
- "form.attribute.condition.field-change-warning": "Následující pole mají podmínky, které závisí na tomto poli: {fieldNames}. Přejmenování tohoto pole tyto podmínky poruší. Chcete pokračovat?",
151
- "form.attribute.condition.field-change-warning-end": ". Přejmenování tohoto pole tyto podmínky poruší. Chcete pokračovat?",
152
150
  "form.button.add-components-to-dynamiczone": "Přidat komponenty do zóny",
153
151
  "form.button.add-field": "Přidat další pole",
154
152
  "form.button.add-first-field-to-created-component": "Přidat první pole do komponentu",
@@ -1 +1 @@
1
- {"version":3,"file":"cs.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"cs.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -143,8 +143,6 @@ var cs = {
143
143
  "form.attribute.condition.enum-change-warning": "Následující pole mají podmínky, které závisí na tomto poli: {fieldNames}. Změna nebo odstranění enum hodnot {values} tyto podmínky poruší. Chcete pokračovat?",
144
144
  "form.attribute.condition.enum-change-warning-values": ". Změna nebo odstranění enum hodnot ",
145
145
  "form.attribute.condition.enum-change-warning-end": " poruší tyto podmínky. Chcete pokračovat?",
146
- "form.attribute.condition.field-change-warning": "Následující pole mají podmínky, které závisí na tomto poli: {fieldNames}. Přejmenování tohoto pole tyto podmínky poruší. Chcete pokračovat?",
147
- "form.attribute.condition.field-change-warning-end": ". Přejmenování tohoto pole tyto podmínky poruší. Chcete pokračovat?",
148
146
  "form.button.add-components-to-dynamiczone": "Přidat komponenty do zóny",
149
147
  "form.button.add-field": "Přidat další pole",
150
148
  "form.button.add-first-field-to-created-component": "Přidat první pole do komponentu",
@@ -1 +1 @@
1
- {"version":3,"file":"cs.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"cs.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -147,8 +147,6 @@ var de = {
147
147
  "form.attribute.condition.enum-change-warning": "Die folgenden Felder haben Bedingungen, die von diesem Feld abhängen: {fieldNames}. Das Ändern oder Entfernen der Aufzählungswerte {values} wird diese Bedingungen brechen. Möchtest du fortfahren?",
148
148
  "form.attribute.condition.enum-change-warning-values": ". Das Ändern oder Entfernen der Aufzählungswerte ",
149
149
  "form.attribute.condition.enum-change-warning-end": " wird diese Bedingungen brechen. Möchtest du fortfahren?",
150
- "form.attribute.condition.field-change-warning": "Die folgenden Felder haben Bedingungen, die von diesem Feld abhängen: {fieldNames}. Das Umbenennen wird diese Bedingungen brechen. Möchtest du fortfahren?",
151
- "form.attribute.condition.field-change-warning-end": ". Das Umbenennen wird diese Bedingungen brechen. Möchtest du fortfahren?",
152
150
  "form.button.add-components-to-dynamiczone": "Komponenten zur Zone hinzufügen",
153
151
  "form.button.add-field": "Weiteres Feld hinzufügen",
154
152
  "form.button.add-first-field-to-created-component": "Erstes Feld zur Komponente hinzufügen",
@@ -1 +1 @@
1
- {"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -143,8 +143,6 @@ var de = {
143
143
  "form.attribute.condition.enum-change-warning": "Die folgenden Felder haben Bedingungen, die von diesem Feld abhängen: {fieldNames}. Das Ändern oder Entfernen der Aufzählungswerte {values} wird diese Bedingungen brechen. Möchtest du fortfahren?",
144
144
  "form.attribute.condition.enum-change-warning-values": ". Das Ändern oder Entfernen der Aufzählungswerte ",
145
145
  "form.attribute.condition.enum-change-warning-end": " wird diese Bedingungen brechen. Möchtest du fortfahren?",
146
- "form.attribute.condition.field-change-warning": "Die folgenden Felder haben Bedingungen, die von diesem Feld abhängen: {fieldNames}. Das Umbenennen wird diese Bedingungen brechen. Möchtest du fortfahren?",
147
- "form.attribute.condition.field-change-warning-end": ". Das Umbenennen wird diese Bedingungen brechen. Möchtest du fortfahren?",
148
146
  "form.button.add-components-to-dynamiczone": "Komponenten zur Zone hinzufügen",
149
147
  "form.button.add-field": "Weiteres Feld hinzufügen",
150
148
  "form.button.add-first-field-to-created-component": "Erstes Feld zur Komponente hinzufügen",
@@ -1 +1 @@
1
- {"version":3,"file":"de.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"de.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -151,8 +151,6 @@ var en = {
151
151
  "form.attribute.condition.enum-change-warning": "The following fields have conditions that depend on this field: {fieldNames}. Changing or removing the enum values {values} will break these conditions. Do you want to proceed?",
152
152
  "form.attribute.condition.enum-change-warning-values": ". Changing or removing the enum values ",
153
153
  "form.attribute.condition.enum-change-warning-end": " will break these conditions. Do you want to proceed?",
154
- "form.attribute.condition.field-change-warning": "The following fields have conditions that depend on this field: {fieldNames}. Renaming it will break these conditions. Do you want to proceed?",
155
- "form.attribute.condition.field-change-warning-end": ". Renaming it will break these conditions. Do you want to proceed?",
156
154
  "form.attribute.rename-type-change-warning.title": "Existing data will be lost",
157
155
  "form.attribute.rename-type-change-warning.body": "You are renaming {oldName} to {newName} and changing it from {oldType} to {newType}. Strapi cannot preserve the existing data of this field when both change at once. The field will be recreated empty when you save.",
158
156
  "form.attribute.rename-type-change-warning.confirm": "Continue",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -147,8 +147,6 @@ var en = {
147
147
  "form.attribute.condition.enum-change-warning": "The following fields have conditions that depend on this field: {fieldNames}. Changing or removing the enum values {values} will break these conditions. Do you want to proceed?",
148
148
  "form.attribute.condition.enum-change-warning-values": ". Changing or removing the enum values ",
149
149
  "form.attribute.condition.enum-change-warning-end": " will break these conditions. Do you want to proceed?",
150
- "form.attribute.condition.field-change-warning": "The following fields have conditions that depend on this field: {fieldNames}. Renaming it will break these conditions. Do you want to proceed?",
151
- "form.attribute.condition.field-change-warning-end": ". Renaming it will break these conditions. Do you want to proceed?",
152
150
  "form.attribute.rename-type-change-warning.title": "Existing data will be lost",
153
151
  "form.attribute.rename-type-change-warning.body": "You are renaming {oldName} to {newName} and changing it from {oldType} to {newType}. Strapi cannot preserve the existing data of this field when both change at once. The field will be recreated empty when you save.",
154
152
  "form.attribute.rename-type-change-warning.confirm": "Continue",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -137,8 +137,6 @@ var ja = {
137
137
  "form.attribute.condition.enum-change-warning-end": " を変更または削除すると、これらの条件が壊れます。続行しますか?",
138
138
  "form.attribute.condition.enum-change-warning-values": "。列挙値 ",
139
139
  "form.attribute.condition.field": "フィールド",
140
- "form.attribute.condition.field-change-warning": "次のフィールドがこのフィールドに依存する条件を持っています: {fieldNames}。名前を変更すると、これらの条件が壊れます。続行しますか?",
141
- "form.attribute.condition.field-change-warning-end": "。名前を変更すると、これらの条件が壊れます。続行しますか?",
142
140
  "form.attribute.condition.label": "条件",
143
141
  "form.attribute.condition.no-fields": "条件を設定できるブールまたは列挙型フィールドがありません。",
144
142
  "form.attribute.condition.operator": "演算子",
@@ -1 +1 @@
1
- {"version":3,"file":"ja.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ja.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -133,8 +133,6 @@ var ja = {
133
133
  "form.attribute.condition.enum-change-warning-end": " を変更または削除すると、これらの条件が壊れます。続行しますか?",
134
134
  "form.attribute.condition.enum-change-warning-values": "。列挙値 ",
135
135
  "form.attribute.condition.field": "フィールド",
136
- "form.attribute.condition.field-change-warning": "次のフィールドがこのフィールドに依存する条件を持っています: {fieldNames}。名前を変更すると、これらの条件が壊れます。続行しますか?",
137
- "form.attribute.condition.field-change-warning-end": "。名前を変更すると、これらの条件が壊れます。続行しますか?",
138
136
  "form.attribute.condition.label": "条件",
139
137
  "form.attribute.condition.no-fields": "条件を設定できるブールまたは列挙型フィールドがありません。",
140
138
  "form.attribute.condition.operator": "演算子",
@@ -1 +1 @@
1
- {"version":3,"file":"ja.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ja.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -255,8 +255,6 @@ var ko = {
255
255
  "form.attribute.condition.enum-change-warning": "다음 필드에 이 필드에 의존하는 조건이 있습니다: {fieldNames}. 열거형 값 {values}을(를) 변경하거나 삭제하면 이 조건들이 깨집니다. 계속하시겠습니까?",
256
256
  "form.attribute.condition.enum-change-warning-values": ". 열거형 값 ",
257
257
  "form.attribute.condition.enum-change-warning-end": "을(를) 변경하거나 삭제하면 이 조건들이 깨집니다. 계속하시겠습니까?",
258
- "form.attribute.condition.field-change-warning": "다음 필드에 이 필드에 의존하는 조건이 있습니다: {fieldNames}. 이름을 변경하면 이 조건들이 깨집니다. 계속하시겠습니까?",
259
- "form.attribute.condition.field-change-warning-end": ". 이름을 변경하면 이 조건들이 깨집니다. 계속하시겠습니까?",
260
258
  "form.button.submit": "제출",
261
259
  "modalForm.header.categories": "카테고리",
262
260
  "modalForm.header.back": "뒤로",