{"version":3,"file":"Fields.mjs","sources":["../../../../admin/src/components/ConfigurationForm/Fields.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useDroppable, DndContext, UniqueIdentifier, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useField, useForm } from '@strapi/admin/strapi-admin';\nimport {\n  Modal,\n  Box,\n  Flex,\n  Grid,\n  IconButton,\n  IconButtonComponent,\n  Typography,\n  Link,\n  Menu,\n} from '@strapi/design-system';\nimport { Cog, Cross, Drag, Pencil, Plus } from '@strapi/icons';\nimport { generateNKeysBetween as generateNKeysBetweenImpl } from 'fractional-indexing';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../../utils/translations';\nimport { ComponentIcon } from '../ComponentIcon';\n\nimport { EditFieldForm, EditFieldFormProps } from './EditFieldForm';\n\nimport type { ConfigurationFormData, EditFieldSpacerLayout } from './Form';\nimport type { EditLayout } from '../../hooks/useDocumentLayout';\n\ntype FormField = ConfigurationFormData['layout'][number]['children'][number];\ntype Field = Omit<ConfigurationFormData['layout'][number]['children'][number], '__temp_key__'>;\n\nconst GRID_COLUMNS = 12;\n\n/* -------------------------------------------------------------------------------------------------\n * Drag and Drop\n * -----------------------------------------------------------------------------------------------*/\n\nconst DroppableContainer = ({\n  id,\n  children,\n}: {\n  id: string;\n  children: (props: ReturnType<typeof useDroppable>) => React.ReactNode;\n}) => {\n  const droppable = useDroppable({\n    id,\n  });\n\n  return children(droppable);\n};\n\nexport const SortableItem = ({ id, children }: { id: string; children: React.ReactNode }) => {\n  const { attributes, setNodeRef, transform, transition } = useSortable({\n    id,\n  });\n\n  const style = {\n    transform: CSS.Transform.toString(transform),\n    transition,\n    height: '100%',\n  };\n\n  return (\n    <div ref={setNodeRef} style={style} {...attributes}>\n      {children}\n    </div>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Fields\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {\n  attributes: {\n    [key: string]: FieldProps['attribute'];\n  };\n  fieldSizes: Record<string, number>;\n  components: EditLayout['components'];\n}\n\n/**\n * Compute uids and formName for drag and drop items for the incoming layout\n */\nconst createDragAndDropContainersFromLayout = (layout: ConfigurationFormData['layout']) => {\n  return layout.map((row, containerIndex) => ({\n    ...row,\n    // Use unique ids for drag and drop items\n    dndId: `container-${containerIndex}`,\n    children: row.children.map((child, childIndex) => ({\n      ...child,\n      dndId: `container-${containerIndex}-child-${childIndex}`,\n\n      // The formName must be recomputed each time an item is moved\n      formName: `layout.${containerIndex}.children.${childIndex}`,\n    })),\n  }));\n};\n\nconst Fields = ({ attributes, fieldSizes, components, metadatas = {} }: FieldsProps) => {\n  const { formatMessage } = useIntl();\n\n  const layout = useForm<ConfigurationFormData['layout']>(\n    'Fields',\n    (state) => state.values.layout ?? []\n  );\n\n  const onChange = useForm('Fields', (state) => state.onChange);\n  const addFieldRow = useForm('Fields', (state) => state.addFieldRow);\n  const removeFieldRow = useForm('Fields', (state) => state.removeFieldRow);\n\n  const existingFields = layout.map((row) => row.children.map((field) => field.name)).flat();\n\n  /**\n   * Get the fields that are not already in the layout\n   * But also check that they are visible before we give users\n   * the option to display them. e.g. `id` is not visible.\n   */\n  const remainingFields = Object.entries(metadatas).reduce<Field[]>((acc, current) => {\n    const [name, { visible, ...field }] = current;\n\n    if (!existingFields.includes(name) && visible === true) {\n      const type = attributes[name]?.type;\n      const size = type ? fieldSizes[type] : GRID_COLUMNS;\n\n      acc.push({\n        ...field,\n        label: field.label ?? name,\n        name,\n        size,\n      });\n    }\n\n    return acc;\n  }, []);\n\n  const handleRemoveField =\n    (rowIndex: number, fieldIndex: number): FieldProps['onRemoveField'] =>\n    () => {\n      if (layout[rowIndex].children.length === 1) {\n        removeFieldRow(`layout`, rowIndex);\n      } else {\n        onChange(`layout.${rowIndex}.children`, [\n          ...layout[rowIndex].children.slice(0, fieldIndex),\n          ...layout[rowIndex].children.slice(fieldIndex + 1),\n        ]);\n      }\n    };\n\n  const handleAddField = (field: Field) => () => {\n    addFieldRow('layout', { children: [field] });\n  };\n\n  const [containers, setContainers] = React.useState(() =>\n    createDragAndDropContainersFromLayout(layout)\n  );\n  type Container = (typeof containers)[number];\n  const [activeDragItem, setActiveDragItem] = React.useState<Container['children'][number] | null>(\n    null\n  );\n\n  /**\n   * Finds either the parent container id or the child id within a container\n   */\n  function findContainer(id: UniqueIdentifier, containersAsDictionary: Record<string, Container>) {\n    // If the id is a key, then it is the parent container\n    if (id in containersAsDictionary) {\n      return id;\n    }\n\n    // Otherwise, it is a child inside a container\n    return Object.keys(containersAsDictionary).find((key) =>\n      containersAsDictionary[key].children.find((child) => child.dndId === id)\n    );\n  }\n\n  /**\n   * Gets an item from a container based on its id\n   */\n  const getItemFromContainer = (id: UniqueIdentifier, container: Container) => {\n    return container.children.find((item) => id === item.dndId);\n  };\n\n  /**\n   * Gets the containers as dictionary for quick lookup\n   */\n  const getContainersAsDictionary = () => {\n    return Object.fromEntries(containers.map((container) => [container.dndId, container]));\n  };\n\n  /**\n   * Recomputes the empty space in the grid\n   */\n  const createContainersWithSpacers = (layout: typeof containers) => {\n    return layout\n      .map((row) => ({\n        ...row,\n        children: row.children.filter((field) => field.name !== TEMP_FIELD_NAME),\n      }))\n      .filter((row) => row.children.length > 0)\n      .map((row) => {\n        const totalSpaceTaken = row.children.reduce((acc, curr) => acc + curr.size, 0);\n\n        if (totalSpaceTaken < GRID_COLUMNS) {\n          const [spacerKey] = generateNKeysBetweenImpl(\n            row.children.at(-1)?.__temp_key__,\n            undefined,\n            1\n          );\n\n          return {\n            ...row,\n            children: [\n              ...row.children,\n              {\n                name: TEMP_FIELD_NAME,\n                size: GRID_COLUMNS - totalSpaceTaken,\n                __temp_key__: spacerKey,\n              } satisfies EditFieldSpacerLayout,\n            ],\n          };\n        }\n\n        return row;\n      });\n  };\n\n  /**\n   * When layout changes (e.g. when a field size is changed or the containers are reordered)\n   * we need to update the ids and form names\n   */\n  React.useEffect(() => {\n    const containers = createDragAndDropContainersFromLayout(layout);\n    setContainers(containers);\n  }, [layout, setContainers]);\n\n  return (\n    <DndContext\n      onDragStart={(event) => {\n        const containersAsDictionary = getContainersAsDictionary();\n\n        const activeContainer = findContainer(event.active.id, containersAsDictionary);\n\n        if (!activeContainer) return;\n\n        const activeItem = getItemFromContainer(\n          event.active.id,\n          containersAsDictionary[activeContainer]\n        );\n\n        if (activeItem) {\n          setActiveDragItem(activeItem);\n        }\n      }}\n      onDragOver={({ active, over }) => {\n        const containersAsDictionary = getContainersAsDictionary();\n        const activeContainer = findContainer(active.id, containersAsDictionary);\n        const overContainer = findContainer(over?.id ?? '', containersAsDictionary);\n        const activeContainerIndex = containers.findIndex(\n          (container) => container.dndId === activeContainer\n        );\n        const overContainerIndex = containers.findIndex(\n          (container) => container.dndId === overContainer\n        );\n\n        if (!activeContainer || !overContainer) {\n          return;\n        }\n\n        const draggedItem = getItemFromContainer(\n          active.id,\n          containersAsDictionary[activeContainer]\n        );\n        const overItem = getItemFromContainer(\n          over?.id ?? '',\n          containersAsDictionary[overContainer]\n        );\n        const overIndex = containersAsDictionary[overContainer].children.findIndex(\n          (item) => item.dndId === over?.id\n        );\n\n        if (!draggedItem) return;\n\n        // Handle a full width field being dragged\n        if (draggedItem?.size === GRID_COLUMNS) {\n          // Swap the items in the containers\n          const update = produce(containers, (draft) => {\n            draft[activeContainerIndex].children = containers[overContainerIndex].children;\n            draft[overContainerIndex].children = containers[activeContainerIndex].children;\n          });\n          setContainers(update);\n          return;\n        }\n\n        /**\n         * Handle an item being dragged from one container to another,\n         * the item is removed from its current container, and then added to its new container\n         * An item can only be added in a container if there is enough space.\n         */\n        const update = produce(containers, (draft) => {\n          draft[activeContainerIndex].children = draft[activeContainerIndex].children.filter(\n            (item) => item.dndId !== active.id\n          );\n          const spaceTaken = draft[overContainerIndex].children.reduce((acc, curr) => {\n            if (curr.name === TEMP_FIELD_NAME) {\n              return acc;\n            }\n\n            return acc + curr.size;\n          }, 0);\n\n          // Check the sizes of the children, if there is no room, exit\n          if (spaceTaken + draggedItem.size > GRID_COLUMNS) {\n            // Leave the item where it started\n            draft[activeContainerIndex].children = containers[activeContainerIndex].children;\n            return;\n          }\n\n          if (overItem?.name === TEMP_FIELD_NAME) {\n            // We are over an invisible spacer, replace it with the dragged item\n            draft[overContainerIndex].children.splice(overIndex, 1, draggedItem);\n            return;\n          }\n\n          // There is room for the item in the container, drop it\n          draft[overContainerIndex].children.splice(overIndex, 0, draggedItem);\n        });\n\n        setContainers(update);\n      }}\n      onDragEnd={(event) => {\n        const { active, over } = event;\n        const { id } = active;\n        const overId = over?.id;\n        const containersAsDictionary = getContainersAsDictionary();\n        const activeContainer = findContainer(id, containersAsDictionary);\n        const overContainer = findContainer(overId!, containersAsDictionary);\n\n        if (!activeContainer || !overContainer) {\n          return;\n        }\n\n        const activeIndex = containersAsDictionary[activeContainer].children.findIndex(\n          (children) => children.dndId === id\n        );\n        const overIndex = containersAsDictionary[overContainer].children.findIndex(\n          (children) => children.dndId === overId\n        );\n\n        const movedContainerItems = produce(containersAsDictionary, (draft) => {\n          if (activeIndex !== overIndex && activeContainer === overContainer) {\n            // Move items around inside their own container\n            draft[activeContainer].children = arrayMove(\n              draft[activeContainer].children,\n              activeIndex,\n              overIndex\n            );\n          }\n        });\n\n        // Remove properties the server does not expect before updating the form\n        const updatedContainers = Object.values(movedContainerItems);\n        const updatedContainersWithSpacers = createContainersWithSpacers(\n          updatedContainers\n        ) as typeof containers;\n        const updatedLayout = updatedContainersWithSpacers.map(\n          ({ dndId: _dndId, children, ...container }) => ({\n            ...container,\n            children: children.map(({ dndId: _dndId, formName: _formName, ...child }) => child),\n          })\n        );\n\n        // Update the layout\n        onChange('layout', updatedLayout);\n        setActiveDragItem(null);\n      }}\n    >\n      <Flex paddingTop={6} direction=\"column\" alignItems=\"stretch\" gap={4}>\n        <Flex alignItems=\"flex-start\" direction=\"column\" justifyContent=\"space-between\">\n          <Typography fontWeight=\"bold\">\n            {formatMessage({\n              id: getTranslation('containers.list.displayedFields'),\n              defaultMessage: 'Displayed fields',\n            })}\n          </Typography>\n          <Typography variant=\"pi\" textColor=\"neutral600\">\n            {formatMessage({\n              id: 'containers.SettingPage.editSettings.description',\n              defaultMessage: 'Drag & drop the fields to build the layout',\n            })}\n          </Typography>\n        </Flex>\n        <Box padding={4} hasRadius borderStyle=\"dashed\" borderWidth=\"1px\" borderColor=\"neutral300\">\n          <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n            {containers.map((container, containerIndex) => (\n              <SortableContext\n                key={container.dndId}\n                id={container.dndId}\n                items={container.children.map((child) => ({ id: child.dndId }))}\n              >\n                <DroppableContainer id={container.dndId}>\n                  {({ setNodeRef }) => (\n                    <Grid.Root key={container.dndId} ref={setNodeRef} gap={2}>\n                      {container.children.map((child, childIndex) => (\n                        <Grid.Item\n                          col={child.size}\n                          key={child.dndId}\n                          direction=\"column\"\n                          alignItems=\"stretch\"\n                        >\n                          <SortableItem id={child.dndId}>\n                            <Field\n                              attribute={attributes[child.name]}\n                              components={components}\n                              name={child.formName}\n                              onRemoveField={handleRemoveField(containerIndex, childIndex)}\n                              dndId={child.dndId}\n                            />\n                          </SortableItem>\n                        </Grid.Item>\n                      ))}\n                    </Grid.Root>\n                  )}\n                </DroppableContainer>\n              </SortableContext>\n            ))}\n            <DragOverlay>\n              {activeDragItem ? (\n                <Field\n                  attribute={attributes[activeDragItem.name]}\n                  components={components}\n                  name={activeDragItem.formName}\n                  dndId={activeDragItem.dndId}\n                />\n              ) : null}\n            </DragOverlay>\n            <Menu.Root>\n              <Menu.Trigger\n                startIcon={<Plus />}\n                endIcon={null}\n                disabled={remainingFields.length === 0}\n                fullWidth\n                variant=\"secondary\"\n              >\n                {formatMessage({\n                  id: getTranslation('containers.SettingPage.add.field'),\n                  defaultMessage: 'Insert another field',\n                })}\n              </Menu.Trigger>\n              <Menu.Content>\n                {remainingFields.map((field) => (\n                  <Menu.Item key={field.name} onSelect={handleAddField(field)}>\n                    {field.label}\n                  </Menu.Item>\n                ))}\n              </Menu.Content>\n            </Menu.Root>\n          </Flex>\n        </Box>\n      </Flex>\n    </DndContext>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n  components: EditLayout['components'];\n  dndId: string;\n  onRemoveField?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst TEMP_FIELD_NAME = '_TEMP_';\n\n/**\n * Displays a field in the layout with drag options, also\n * opens a modal  to edit the details of said field.\n */\nconst Field = ({ attribute, components, name, onRemoveField, dndId }: FieldProps) => {\n  const [isModalOpen, setIsModalOpen] = React.useState(false);\n  const { formatMessage } = useIntl();\n  const { value } = useField<FormField>(name);\n  const { listeners, setActivatorNodeRef } = useSortable({\n    id: dndId,\n  });\n\n  const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    if (onRemoveField) {\n      onRemoveField?.(e);\n    }\n  };\n\n  const onEditFieldMeta: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    setIsModalOpen(true);\n  };\n\n  if (!value) {\n    return null;\n  }\n\n  if (value.name === TEMP_FIELD_NAME) {\n    return <Flex tag=\"span\" height=\"100%\" style={{ opacity: 0 }} />;\n  }\n\n  if (!attribute) {\n    return null;\n  }\n\n  return (\n    <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n      <Flex\n        borderColor=\"neutral150\"\n        background=\"neutral100\"\n        hasRadius\n        gap={3}\n        cursor=\"pointer\"\n        onClick={() => {\n          setIsModalOpen(true);\n        }}\n      >\n        <DragButton\n          ref={setActivatorNodeRef}\n          tag=\"span\"\n          withTooltip={false}\n          label={formatMessage(\n            {\n              id: getTranslation('components.DraggableCard.move.field'),\n              defaultMessage: 'Move {item}',\n            },\n            { item: value.label }\n          )}\n          {...listeners}\n        >\n          <Drag />\n        </DragButton>\n        <Flex direction=\"column\" alignItems=\"flex-start\" grow={1} overflow=\"hidden\">\n          <Flex gap={3} justifyContent=\"space-between\" width=\"100%\">\n            <Typography ellipsis fontWeight=\"bold\">\n              {value.label}\n            </Typography>\n            <Flex>\n              <IconButton\n                type=\"button\"\n                variant=\"ghost\"\n                background=\"transparent\"\n                onClick={onEditFieldMeta}\n                withTooltip={false}\n                label={formatMessage(\n                  {\n                    id: getTranslation('components.DraggableCard.edit.field'),\n                    defaultMessage: 'Edit {item}',\n                  },\n                  { item: value.label }\n                )}\n              >\n                <Pencil />\n              </IconButton>\n              <IconButton\n                type=\"button\"\n                variant=\"ghost\"\n                onClick={handleRemoveField}\n                background=\"transparent\"\n                withTooltip={false}\n                label={formatMessage(\n                  {\n                    id: getTranslation('components.DraggableCard.delete.field'),\n                    defaultMessage: 'Delete {item}',\n                  },\n                  { item: value.label }\n                )}\n              >\n                <Cross />\n              </IconButton>\n            </Flex>\n          </Flex>\n          {attribute?.type === 'component' ? (\n            <Flex\n              paddingTop={3}\n              paddingRight={3}\n              paddingBottom={3}\n              paddingLeft={0}\n              alignItems=\"flex-start\"\n              direction=\"column\"\n              gap={2}\n              width=\"100%\"\n            >\n              <Grid.Root gap={4} width=\"100%\">\n                {components[attribute.component].layout.map((row) =>\n                  row.map(({ size, ...field }) => (\n                    <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n                      <Flex\n                        alignItems=\"center\"\n                        background=\"neutral0\"\n                        paddingTop={2}\n                        paddingBottom={2}\n                        paddingLeft={3}\n                        paddingRight={3}\n                        hasRadius\n                        borderColor=\"neutral200\"\n                      >\n                        <Typography textColor=\"neutral800\">{field.name}</Typography>\n                      </Flex>\n                    </Grid.Item>\n                  ))\n                )}\n              </Grid.Root>\n              <Link\n                // used to stop the edit form from appearing when we click here.\n                onClick={(e) => e.stopPropagation()}\n                startIcon={<Cog />}\n                tag={NavLink}\n                to={`../components/${attribute.component}/configurations/edit`}\n              >\n                {formatMessage({\n                  id: getTranslation('components.FieldItem.linkToComponentLayout'),\n                  defaultMessage: \"Set the component's layout\",\n                })}\n              </Link>\n            </Flex>\n          ) : null}\n          {attribute?.type === 'dynamiczone' ? (\n            <Flex\n              paddingTop={3}\n              paddingRight={3}\n              paddingBottom={3}\n              paddingLeft={0}\n              alignItems=\"flex-start\"\n              gap={2}\n              width=\"100%\"\n              wrap=\"wrap\"\n            >\n              {attribute?.components.map((uid) => (\n                <ComponentLink\n                  // used to stop the edit form from appearing when we click here.\n                  onClick={(e) => e.stopPropagation()}\n                  key={uid}\n                  to={`../components/${uid}/configurations/edit`}\n                >\n                  <ComponentIcon icon={components[uid].settings.icon} />\n                  <Typography fontSize={1} textColor=\"neutral600\" fontWeight=\"bold\">\n                    {components[uid].settings.displayName}\n                  </Typography>\n                </ComponentLink>\n              ))}\n            </Flex>\n          ) : null}\n        </Flex>\n      </Flex>\n      {value.name !== TEMP_FIELD_NAME && (\n        <EditFieldForm attribute={attribute} name={name} onClose={() => setIsModalOpen(false)} />\n      )}\n    </Modal.Root>\n  );\n};\n\nconst DragButton = styled<IconButtonComponent<'span'>>(IconButton)`\n  height: unset;\n  align-self: stretch;\n  display: flex;\n  align-items: center;\n  padding: 0;\n  border: none;\n  background-color: transparent;\n  border-radius: 0px;\n  border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n  cursor: all-scroll;\n\n  svg {\n    width: 1.2rem;\n    height: 1.2rem;\n  }\n`;\n\nconst ComponentLink = styled(NavLink)`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: ${({ theme }) => theme.spaces[1]};\n  padding: ${(props) => props.theme.spaces[2]};\n  border: 1px solid ${({ theme }) => theme.colors.neutral200};\n  background: ${({ theme }) => theme.colors.neutral0};\n  width: 14rem;\n  border-radius: ${({ theme }) => theme.borderRadius};\n  text-decoration: none;\n\n  &:focus,\n  &:hover {\n    ${({ theme }) => `\n      background-color: ${theme.colors.primary100};\n      border-color: ${theme.colors.primary200};\n\n      ${Typography} {\n          color: ${theme.colors.primary600};\n      }\n    `}\n\n    /* > ComponentIcon */\n    > div:first-child {\n      background: ${({ theme }) => theme.colors.primary200};\n      color: ${({ theme }) => theme.colors.primary600};\n\n      svg {\n        path {\n          fill: ${({ theme }) => theme.colors.primary600};\n        }\n      }\n    }\n  }\n`;\n\nexport { Fields, TEMP_FIELD_NAME };\nexport type { FieldsProps };\n"],"names":["GRID_COLUMNS","DroppableContainer","id","children","droppable","useDroppable","SortableItem","attributes","setNodeRef","transform","transition","useSortable","style","CSS","Transform","toString","height","_jsx","div","ref","createDragAndDropContainersFromLayout","layout","map","row","containerIndex","dndId","child","childIndex","formName","Fields","fieldSizes","components","metadatas","formatMessage","useIntl","useForm","state","values","onChange","addFieldRow","removeFieldRow","existingFields","field","name","flat","remainingFields","Object","entries","reduce","acc","current","visible","includes","type","size","push","label","handleRemoveField","rowIndex","fieldIndex","length","slice","handleAddField","containers","setContainers","React","useState","activeDragItem","setActiveDragItem","findContainer","containersAsDictionary","keys","find","key","getItemFromContainer","container","item","getContainersAsDictionary","fromEntries","createContainersWithSpacers","filter","TEMP_FIELD_NAME","totalSpaceTaken","curr","spacerKey","generateNKeysBetweenImpl","at","__temp_key__","undefined","useEffect","DndContext","onDragStart","event","activeContainer","active","activeItem","onDragOver","over","overContainer","activeContainerIndex","findIndex","overContainerIndex","draggedItem","overItem","overIndex","update","produce","draft","spaceTaken","splice","onDragEnd","overId","activeIndex","movedContainerItems","arrayMove","updatedContainers","updatedContainersWithSpacers","updatedLayout","_dndId","_formName","_jsxs","Flex","paddingTop","direction","alignItems","gap","justifyContent","Typography","fontWeight","getTranslation","defaultMessage","variant","textColor","Box","padding","hasRadius","borderStyle","borderWidth","borderColor","SortableContext","items","Grid","Root","Item","col","Field","attribute","onRemoveField","DragOverlay","Menu","Trigger","startIcon","Plus","endIcon","disabled","fullWidth","Content","onSelect","isModalOpen","setIsModalOpen","value","useField","listeners","setActivatorNodeRef","e","preventDefault","stopPropagation","onEditFieldMeta","tag","opacity","Modal","open","onOpenChange","background","cursor","onClick","DragButton","withTooltip","Drag","grow","overflow","width","ellipsis","IconButton","Pencil","Cross","paddingRight","paddingBottom","paddingLeft","component","Link","Cog","NavLink","to","wrap","uid","ComponentLink","ComponentIcon","icon","settings","fontSize","displayName","EditFieldForm","onClose","styled","theme","colors","neutral150","spaces","props","neutral200","neutral0","borderRadius","primary100","primary200","primary600"],"mappings":"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"}