{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/array-items/src/index.ts"],"sourcesContent":["import { defineComponent, h } from \"vue\";\nimport { ArrayField } from \"@formily/core\";\nimport { useField, useFieldSchema, RecursionField } from \"@formily/vue\";\nimport { observer } from \"@formily/reactive-vue\";\nimport { ISchema } from \"@formily/json-schema\";\nimport Draggable from \"vuedraggable\";\n\nimport { stylePrefix } from \"../../__builtins__/configs\";\nimport { ArrayBase } from \"../../array-base/src\";\nimport { composeExport } from \"../../__builtins__/shared\";\n\nconst isAdditionComponent = (schema: ISchema) => {\n  if (typeof schema[\"x-component\"] !== \"string\") return false;\n  return schema[\"x-component\"]?.indexOf(\"Addition\") > -1;\n};\n\nexport interface IArrayItemsItemProps {\n  type?: \"card\" | \"divide\";\n}\n\nconst ArrayItemsInner = observer(\n  defineComponent({\n    name: \"FArrayItems\",\n    inheritAttrs: false,\n    setup() {\n      const fieldRef = useField<ArrayField>();\n      const schemaRef = useFieldSchema();\n\n      const prefixCls = `${stylePrefix}-array-items`;\n      const { getKey, keyMap } = ArrayBase.useKey(schemaRef.value);\n\n      return () => {\n        const field = fieldRef.value;\n        const schema = schemaRef.value;\n        const dataSource = Array.isArray(field.value) ? field.value.slice() : [];\n\n        const renderItems = () => {\n          const itemSlot = ({ element, index }: { element: any; index: number }) => {\n            const items = Array.isArray(schema.items)\n              ? schema.items[index] || schema.items[0]\n              : schema.items;\n            const key = getKey(element, index);\n            return h(\n              \"div\",\n              {},\n              h(\n                ArrayBase.Item,\n                {\n                  key,\n                  index,\n                  record: element\n                },\n                {\n                  default: () =>\n                    h(\n                      \"div\",\n                      {\n                        class: [`${prefixCls}-item-inner`],\n                        index,\n                        key\n                      },\n                      h(RecursionField, {\n                        schema: items,\n                        name: index\n                      })\n                    )\n                }\n              )\n            );\n          };\n\n          return h(\n            Draggable,\n            {\n              class: [`${prefixCls}-list`],\n              value: [],\n              list: dataSource,\n              animation: 150,\n              handle: `.${stylePrefix}-array-base-sort-handle`,\n              itemKey: (item: any, index: number) => getKey(item, index),\n              onChange(evt: any) {\n                if (evt.moved) {\n                  const { oldIndex, newIndex } = evt.moved;\n                  if (Array.isArray(keyMap)) {\n                    keyMap.splice(newIndex, 0, keyMap.splice(oldIndex, 1)[0]);\n                  }\n                  field.move(oldIndex, newIndex);\n                }\n              }\n            },\n            { item: itemSlot }\n          );\n        };\n        const renderAddition = () => {\n          return schema.reduceProperties((addition, schema) => {\n            if (isAdditionComponent(schema)) {\n              return h(RecursionField, {\n                schema,\n                name: \"addition\"\n              });\n            }\n            return addition;\n          }, null);\n        };\n\n        return h(\n          ArrayBase,\n          {\n            keyMap\n          },\n          {\n            default: () =>\n              h(\n                \"div\",\n                {\n                  class: [prefixCls],\n                  onChange: () => {\n                    return;\n                  }\n                },\n                {\n                  default: () => [renderItems(), renderAddition()]\n                }\n              )\n          }\n        );\n      };\n    }\n  })\n);\n\nconst ArrayItemsItem = defineComponent({\n  name: \"FArrayItemsItem\",\n  props: [\"type\"],\n  setup(props, { attrs, slots }) {\n    const prefixCls = `${stylePrefix}-array-items`;\n\n    return () =>\n      h(\n        \"div\",\n        {\n          class: [`${prefixCls}-${props.type || \"card\"}`],\n          ...attrs,\n          onChange: () => {\n            return;\n          }\n        },\n        slots\n      );\n  }\n});\n\nexport const ArrayItems = composeExport(ArrayItemsInner, {\n  Item: ArrayItemsItem,\n  Index: ArrayBase.Index,\n  SortHandle: ArrayBase.SortHandle,\n  Addition: ArrayBase.Addition,\n  Remove: ArrayBase.Remove,\n  MoveDown: ArrayBase.MoveDown,\n  MoveUp: ArrayBase.MoveUp,\n  useArray: ArrayBase.useArray,\n  useIndex: ArrayBase.useIndex,\n  useRecord: ArrayBase.useRecord\n});\n\nexport default ArrayItems;\n"],"names":["schema"],"mappings":"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"}