{"version":3,"sources":["jsdelivr-header.js","/npm/antd-react-form-builder-ctf@1.0.0/node_modules/style-inject/dist/style-inject.es.js","/npm/antd-react-form-builder-ctf@1.0.0/src/FormBuilder.js","/npm/antd-react-form-builder-ctf@1.0.0/src/defineAntdWidgets.js"],"names":[],"mappings":"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","file":"/npm/antd-react-form-builder-ctf@1.0.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/antd-react-form-builder-ctf@1.0.0/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","/* eslint react/no-multi-comp: 0 */\r\nimport React, { Component, forwardRef } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { memoize, find, isArray, has, pick, get, capitalize } from 'lodash'\r\nimport { Col, Form, Icon, Row, Tooltip, Input } from 'antd'\r\nimport './FormBuilder.css'\r\n\r\nconst FormItem = Form.Item\r\nconst widgetMap = {}\r\n\r\nconst getWrappedComponentWithForwardRef = memoize(Comp =>\r\n  forwardRef((props, ref) => {\r\n    return (\r\n      <span ref={ref}>\r\n        <Comp {...props} />\r\n      </span>\r\n    )\r\n  }),\r\n)\r\n\r\nfunction getWidget(widget) {\r\n  if (typeof widget === 'string') {\r\n    if (!widgetMap[widget] || !widgetMap[widget].widget) {\r\n      throw new Error(\r\n        `Widget '${widget}' not found, did you defined it by FormBuilder.defineComponent?`,\r\n      )\r\n    }\r\n    return widgetMap[widget].widget\r\n  }\r\n  return widget\r\n}\r\n\r\nfunction convertMeta(field) {\r\n  const widget = getWidget(field.widget)\r\n  const item = find(\r\n    Object.values(widgetMap),\r\n    entry => entry.widget === widget && entry.metaConvertor,\r\n  )\r\n  if (item) {\r\n    const newField = item.metaConvertor(field)\r\n    if (!newField) {\r\n      throw new Error(`metaConvertor of '${String(field.widget)}' must return a field`)\r\n    }\r\n    return newField\r\n  }\r\n  return field\r\n}\r\n\r\nclass FormBuilder extends Component {\r\n  static propTypes = {\r\n    meta: PropTypes.any.isRequired,\r\n    initialValues: PropTypes.object,\r\n    form: PropTypes.object,\r\n    disabled: PropTypes.bool,\r\n    viewMode: PropTypes.bool, // if viewMode, labels are left aligned\r\n  }\r\n\r\n  static defaultProps = {\r\n    disabled: false,\r\n    form: null,\r\n    viewMode: false,\r\n    values: {},\r\n  }\r\n\r\n  getMeta() {\r\n    // To support single field form builder\r\n    const { meta } = this.props\r\n    if (isArray(meta)) {\r\n      return { fields: meta }\r\n    } else if (meta.elements) {\r\n      // Compatible with old version of form builder.\r\n      return { ...meta, fields: meta.elements }\r\n    } else if (!meta.fields) {\r\n      return { fields: [meta] }\r\n    }\r\n    return meta\r\n  }\r\n\r\n  renderField = field => {\r\n    const meta = this.getMeta()\r\n    field = convertMeta(field)\r\n    // Handle form item props\r\n    const label = field.tooltip ? (\r\n      <span>\r\n        {field.label}\r\n        <Tooltip title={field.tooltip}>\r\n          {' '}\r\n          <Icon type=\"question-circle-o\" />\r\n        </Tooltip>\r\n      </span>\r\n    ) : (\r\n      field.label\r\n    )\r\n\r\n    let formItemLayout =\r\n      field.formItemLayout || (field.label ? has(meta, 'formItemLayout') || [8, 16] : null)\r\n    if (isArray(formItemLayout) && formItemLayout.length >= 2) {\r\n      formItemLayout = {\r\n        labelCol: { span: formItemLayout[0] },\r\n        wrapperCol: { span: formItemLayout[1] },\r\n      }\r\n    }\r\n    const formItemProps = {\r\n      key: field.key,\r\n      colon: meta.colon,\r\n      ...formItemLayout,\r\n      label,\r\n      ...pick(field, [\r\n        'help',\r\n        'extra',\r\n        'labelCol',\r\n        'wrapperCol',\r\n        'colon',\r\n        'htmlFor',\r\n        'validateStatus',\r\n        'hasFeedback',\r\n      ]),\r\n      ...field.formItemProps,\r\n      className: `${this.props.viewMode ? 'ant-form-item-view-mode' : ''} ${(\r\n        field.formItemProps || {}\r\n      ).className || ''}`,\r\n    }\r\n\r\n    if (field.colSpan && formItemProps.labelCol && !field.formItemLayout) {\r\n      const labelCol = Math.round(formItemProps.labelCol.span / field.colSpan)\r\n\r\n      Object.assign(formItemProps, {\r\n        labelCol: { span: labelCol },\r\n        wrapperCol: { span: 24 - labelCol },\r\n      })\r\n    }\r\n\r\n    if (field.render) {\r\n      return field.render.call(this, {\r\n        formItemProps,\r\n        field,\r\n        ...pick(this.props, ['form', 'disabled', 'viewMode', 'initialValues']),\r\n      })\r\n    }\r\n\r\n    let initialValue\r\n    const initialValues = meta.initialValues || this.props.initialValues || {}\r\n    if (has(field, 'initialValue')) {\r\n      initialValue = field.initialValue\r\n    } else if (field.getInitialValue) {\r\n      initialValue = field.getInitialValue(field, initialValues, this.props.form)\r\n    } else {\r\n      initialValue = get(initialValues, field.key) || undefined\r\n    }\r\n\r\n    if (this.props.viewMode || field.viewMode) {\r\n      let viewEle = null\r\n      const formValues = this.props.form ? this.props.form.getFieldsValue() : {}\r\n      let viewValue = has(formValues, field.key) ? get(formValues, field.key) : initialValue\r\n      if (field.renderView) {\r\n        viewEle = field.renderView(viewValue, this.props.form)\r\n      } else if (field.viewWidget) {\r\n        const ViewWidget =\r\n          typeof field.viewWidget === 'string' ? getWidget(field.viewWidget) : field.viewWidget\r\n        viewEle = (\r\n          <ViewWidget\r\n            value={viewValue}\r\n            form={this.props.form}\r\n            field={field}\r\n            {...field.viewWidgetProps}\r\n          />\r\n        )\r\n      } else if (field.link) {\r\n        const href = typeof field.link === 'string' ? field.link : viewValue\r\n        viewEle = (\r\n          <a href={href} target={field.linkTarget || '_self'}>\r\n            {viewValue}\r\n          </a>\r\n        )\r\n      } else if (field.options) {\r\n        // a little hacky here, if a field is select/options like, auto use label for value\r\n        const found = find(field.options, opt => opt[0] === viewValue)\r\n        if (found) {\r\n          viewValue = found[1]\r\n        }\r\n      }\r\n      if (!viewEle) {\r\n        if (typeof viewValue === 'boolean') viewEle = capitalize(String(viewValue))\r\n        else if (viewValue === undefined) viewEle = 'N/A'\r\n        else viewEle = String(viewValue) || ''\r\n      }\r\n\r\n      return <FormItem {...formItemProps}>{viewEle}</FormItem>\r\n    }\r\n\r\n    // Handle field props\r\n    const rules = [...(field.rules || [])]\r\n    if (field.required) {\r\n      rules.unshift({\r\n        required: true,\r\n        message: field.message || `${field.label || field.key} is required.`, // default to English, if needs localization, define it in fieldProps.rules.\r\n      })\r\n    }\r\n    const fieldProps = {\r\n      validateFirst: true,\r\n      initialValue,\r\n      preserve: true, // by default, preserve the value\r\n      ...pick(field, [\r\n        'getValueFromEvent',\r\n        'getValueProps',\r\n        'normalize',\r\n        'trigger',\r\n        'preserve',\r\n        'valuePropName',\r\n        'validateTrigger',\r\n        'validateFirst',\r\n      ]),\r\n      rules,\r\n      ...field.fieldProps,\r\n    }\r\n\r\n    // Handle widget props\r\n    const wp = field.widgetProps || {}\r\n    const widgetProps = {\r\n      ...pick(field, ['placeholder', 'type', 'className', 'class', 'onChange']),\r\n      disabled: field.disabled || meta.disabled || this.props.disabled,\r\n      ...wp,\r\n    }\r\n    const { getFieldDecorator } = this.props.form\r\n    let FieldWidget = getWidget(field.widget) || Input\r\n\r\n    if (field.forwardRef) {\r\n      FieldWidget = getWrappedComponentWithForwardRef(FieldWidget)\r\n    }\r\n    if (field.noFormItem) {\r\n      return getFieldDecorator(\r\n        field.id || field.key,\r\n        fieldProps,\r\n      )(<FieldWidget {...widgetProps}>{field.children || null}</FieldWidget>)\r\n    }\r\n\r\n    return (\r\n      <FormItem {...formItemProps}>\r\n        {getFieldDecorator(\r\n          field.id || field.key,\r\n          fieldProps,\r\n        )(<FieldWidget {...widgetProps}>{field.children || null}</FieldWidget>)}\r\n      </FormItem>\r\n    )\r\n  }\r\n\r\n  renderLayout(elements, fields) {\r\n    // Layout the form in columns\r\n    const columns = this.props.meta.columns || 1\r\n    if (columns === 1) {\r\n      return elements\r\n    }\r\n    // const rowClassName = `antd-form-builder-row ${\r\n    //   this.props.viewMode ? 'antd-form-builder-row-view-mode' : ''\r\n    // }`\r\n\r\n    const meta = this.getMeta()\r\n    const gutter = has(meta, 'gutter') ? meta.gutter : 10\r\n    const rows = []\r\n    // for each column , how many grid cols\r\n    const spanUnit = 24 / columns\r\n    // eslint-disable-next-line\r\n    for (let i = 0; i < elements.length; ) {\r\n      const cols = []\r\n      for (\r\n        let j = 0;\r\n        (j < columns || j === 0) && // total col span is less than columns\r\n        i < elements.length && // element exist\r\n        (!['left', 'both'].includes(fields[i].clear) || j === 0); // field doesn't need to start a new row\r\n\r\n      ) {\r\n        const fieldSpan = fields[i].colSpan || 1\r\n        cols.push(\r\n          <Col key={j} span={Math.min(24, spanUnit * fieldSpan)}>\r\n            {elements[i]}\r\n          </Col>,\r\n        )\r\n        j += fieldSpan\r\n        if (['both', 'right'].includes(fields[i].clear)) {\r\n          i += 1\r\n          break\r\n        }\r\n        i += 1\r\n      }\r\n      rows.push(\r\n        <Row key={i} gutter={gutter}>\r\n          {cols}\r\n        </Row>,\r\n      )\r\n    }\r\n    return rows\r\n  }\r\n\r\n  render() {\r\n    const meta = this.getMeta()\r\n    return this.renderLayout(meta.fields.map(this.renderField), meta.fields)\r\n  }\r\n}\r\n\r\nFormBuilder.defineWidget = (name, widget, metaConvertor = null) => {\r\n  if (widgetMap[name]) throw new Error(`Widget \"${name}\" already defined.`)\r\n  widgetMap[name] = {\r\n    widget,\r\n    metaConvertor,\r\n  }\r\n}\r\n\r\nexport default FormBuilder\r\n","import React from 'react'\r\nimport FormBuilder from './FormBuilder'\r\nimport { Input, Checkbox, Switch, Button, Select, InputNumber, Radio, DatePicker } from 'antd'\r\nimport isArray from 'lodash/isArray'\r\n\r\nconst mapOptions = options => {\r\n  if (!isArray(options)) {\r\n    throw new Error('Options should be array in form builder meta.')\r\n  }\r\n  return options.map(opt => {\r\n    let value\r\n    let label\r\n    if (isArray(opt)) {\r\n      value = opt[0]\r\n      label = opt[1]\r\n    } else {\r\n      value = opt\r\n      label = opt\r\n    }\r\n    return { value, label }\r\n  })\r\n}\r\n\r\nFormBuilder.defineWidget('checkbox', Checkbox, field => {\r\n  return { ...field, valuePropName: 'checked' }\r\n})\r\n\r\nFormBuilder.defineWidget('switch', Switch, field => {\r\n  return { ...field, valuePropName: 'checked' }\r\n})\r\n\r\nFormBuilder.defineWidget('button', Button)\r\nFormBuilder.defineWidget('input', Input)\r\nFormBuilder.defineWidget('password', Input.Password)\r\nFormBuilder.defineWidget('textarea', Input.TextArea)\r\nFormBuilder.defineWidget('number', InputNumber)\r\nFormBuilder.defineWidget('date-picker', DatePicker)\r\nFormBuilder.defineWidget('radio', Radio)\r\nFormBuilder.defineWidget('radio-group', Radio.Group, field => {\r\n  const RadioComp = field.buttonGroup ? Radio.Button : Radio\r\n  if (field.options && !field.children) {\r\n    return {\r\n      ...field,\r\n      widgetProps: {\r\n        ...field.widgetProps,\r\n        name: field.key,\r\n      },\r\n      children: mapOptions(field.options).map(opt => (\r\n        <RadioComp value={opt.value} key={opt.value}>\r\n          {opt.label}\r\n        </RadioComp>\r\n      )),\r\n    }\r\n  }\r\n  return field\r\n})\r\n\r\nFormBuilder.defineWidget('checkbox-group', Checkbox.Group, field => {\r\n  if (field.options && !field.children) {\r\n    return {\r\n      ...field,\r\n      children: mapOptions(field.options).map(opt => (\r\n        <Checkbox value={opt.value} key={opt.value}>\r\n          {opt.label}\r\n        </Checkbox>\r\n      )),\r\n    }\r\n  }\r\n  return field\r\n})\r\nFormBuilder.defineWidget('select', Select, field => {\r\n  if (field.options && !field.children) {\r\n    return {\r\n      ...field,\r\n      children: mapOptions(field.options).map(opt => (\r\n        <Select.Option value={opt.value} key={opt.value}>\r\n          {opt.label}\r\n        </Select.Option>\r\n      )),\r\n    }\r\n  }\r\n  return field\r\n})\r\n"]}