{"version":3,"sources":["src/luis_app.ts","src/apollo/tests/apollo_mutation.test.tsx","src/semantic/tests/common.tsx","src/editor/properties/property_panel.handlers.tsx","src/helpers.ts","src/context.ts","src/form_view.tsx","src/common.tsx","src/editor/themes/common.ts","src/wrapper.tsx","src/vanilla/error_boundary.tsx","src/semantic/error_view.tsx","src/catalogue_editor.ts","src/vanilla/catalogue_editor.ts","src/vanilla/formula_editor.tsx","src/vanilla/formula_view.tsx","src/vanilla/repeater_editor.tsx","src/vanilla/repeater_view.tsx","src/editor/editor_common.tsx","src/editor/common_schemas.ts","src/vanilla/template_editor.tsx","src/editor/layouts_common_editor.tsx","src/editor/form/cell_highlighter.ts","src/editor/editor_context.ts","src/editor/editor_state.ts","src/editor/project_manager.ts","src/editor/form_store.tsx","src/editor/themes/white.ts","src/editor/themes/black.ts","src/editor/form/editor_cell.tsx","src/editor/editor_helpers.ts","src/layouts/drag_drop.ts","src/editor/layouts_styles.ts","src/editor/create_control.ts","src/vanilla/text_editor.tsx","src/vanilla/text_view.tsx","src/layouts/grid_editor.tsx","src/layouts/grid_view.tsx","src/layouts/layouts_common.tsx","src/editor/drag_drop_boundary.ts","src/layouts/stack_editor.tsx","src/layouts/stack_view.tsx","src/editor/droppable_editor.tsx","src/editor/drag_drop_form_control.ts","src/form_editor.tsx","src/vanilla/auth_item_editor.tsx","src/vanilla/auth_item_view.tsx","src/layouts/flex_editor.tsx","src/layouts/flex_view.tsx","src/semantic/catalogue_editor.ts","src/semantic/checkbox_editor.tsx","src/semantic/checkbox_view.tsx","src/semantic/input_editor.tsx","src/semantic/input_view.tsx","src/semantic/enums.ts","src/semantic/radio_editor.tsx","src/semantic/radio_view.tsx","src/semantic/table_editor.tsx","src/semantic/table_view.tsx","src/semantic/signature_editor.tsx","src/semantic/signature_view.tsx","src/semantic/signature/signature_signed.tsx","src/semantic/signature/images.ts","src/semantic/signature/signature_rejected.tsx","src/semantic/signature/signature.tsx","src/semantic/signature/signature_sign.tsx","src/semantic/signature/signature_reject.tsx","src/semantic/textarea_editor.tsx","src/semantic/textarea_view.tsx","src/semantic/comment_editor.tsx","src/semantic/comment_view.tsx","src/semantic/dropdown_editor.tsx","src/semantic/dropdown_view.tsx","src/semantic/date_time_editor.tsx","src/semantic/date_time_view.tsx","src/semantic/buttons_editor.tsx","src/semantic/buttons_view.tsx","src/semantic/menu_editor.tsx","src/semantic/menu_view.tsx","src/semantic/icon_editor.tsx","src/semantic/icon_view.tsx","src/semantic/segment_editor.tsx","src/semantic/segment_view.tsx","src/semantic/tab_editor.tsx","src/semantic/tab_view.tsx","src/semantic/header_editor.tsx","src/semantic/header_view.tsx","src/vanilla/if_editor.tsx","src/vanilla/if_view.tsx","src/semantic/search_editor.tsx","src/semantic/search_view.tsx","src/apollo/catalogue_editor.tsx","src/apollo/apollo_provider_editor.tsx","src/apollo/apollo_provider_view.tsx","src/apollo/apollo_query.editor.tsx","src/apollo/apollo_query_view.tsx","src/apollo/apollo_mutation_editor.tsx","src/apollo/apollo_mutation_view.tsx","src/react-router/catalogue_editor.ts","src/react-router/react_router_editor.tsx","src/react-router/react_router_view.tsx","src/react-alert/catalogue_editor.ts","src/react-alert/react_alert_provider_editor.tsx","src/react-alert/react_alert_provider_view.tsx","src/semantic/auth-graphql-react-router/catalogue_editor.ts","src/semantic/auth-graphql-react-router/auth_editor.tsx","src/semantic/auth-graphql-react-router/auth_view.tsx","src/semantic/auth-graphql-react-router/gql.tsx","src/semantic/auth-graphql-react-router/login.tsx","src/editor/toolbox/tool_box.tsx","src/editor/editor_styles.tsx","src/editor/styled_component.tsx","src/editor/toolbox/tool_item.tsx","src/editor/toolbox/tool_icon.tsx","src/semantic/form_view.tsx","src/catalogue.ts","src/vanilla/catalogue.tsx","src/semantic/catalogue.tsx","src/apollo/catalogue.tsx","src/react-router/catalogue.ts","src/react-alert/catalogue.ts","src/semantic/auth-graphql-react-router/catalogue.tsx","src/editor/properties/property_view.tsx","src/properties/control_factory_helpers.tsx","src/properties/control_factory.tsx","src/properties/group.tsx","src/properties/input.tsx","src/properties/properties_common.ts","src/properties/properties_styles.ts","src/properties/select.tsx","src/properties/textbox.tsx","src/properties/checkbox.tsx","src/properties/map.tsx","src/properties/value.tsx","src/properties/table.tsx","src/properties/binding.tsx","src/properties/tuple.tsx","src/properties/code.tsx","src/properties/help_view.tsx","src/editor/schema/schema_panel.tsx","src/editor/schema/schema_panel.handlers.tsx","src/editor/schema/faker_options.ts","src/editor/properties/property_styles.ts","src/editor/properties/property_panel.tsx","src/editor/dataset/dataset_modals.tsx","src/editor/catalogue.ts","src/editor/dataset/dataset_editor.tsx","src/editor/dataset/dataset_elements.tsx","src/editor/dataset/dataset_layer.tsx","src/editor/dataset/dataset_item.tsx","src/editor/dataset/dataset_value.tsx","src/editor/dataset/dataset_drag.ts","src/editor/dataset/dataset_folder.tsx","src/editor/dataset/dataset_types.tsx","src/editor/form_editor_editor.tsx","src/editor/form_editor.tsx","src/editor/side_bar.tsx","src/editor/form_editor_form_view.tsx","src/editor/form_editor_left_panel.tsx","src/editor/pages/pages_view.tsx","src/editor/outline/outline_view.tsx","src/editor/outline/outline_folder.tsx","src/editor/editor_top.menu.tsx","src/editor/modal_preview.tsx","src/editor/modal_create.tsx","src/semantic/editor.styles.ts","src/editor/modal_load.tsx","src/editor/modal_duplicate.tsx","src/editor/catalogue_editor.ts","src/editor/dataset/dataset_editor_editor.tsx","src/semantic/tests/form_query_data.ts","src/apollo/tests/apollo_view.test.tsx","src/editor/tests/dataset_editor.test.tsx","src/editor/tests/form_editor.test.tsx","src/editor/tests/form_store.test.tsx","src/layouts/tests/flex_view.test.tsx","src/layouts/tests/grid_view.test.tsx","src/layouts/tests/stack_view.test.tsx","src/react-router/tests/react_router.test.tsx","src/semantic/tests/buttons.view.test.tsx","src/semantic/tests/checkbox_view.test.tsx","src/semantic/tests/comment_view.test.tsx","src/semantic/tests/date_view.test.tsx","src/semantic/tests/dropdown_view.test.tsx","src/semantic/tests/input_view.test.tsx","src/semantic/tests/menu_view.test.tsx","src/semantic/tests/radio_view.test.tsx","src/semantic/tests/search_view.test.tsx","src/semantic/tests/segment.test.tsx","src/semantic/tests/signature_view.test.tsx","src/semantic/tests/tab_view.test.tsx","src/semantic/tests/table_view.test.tsx","src/semantic/tests/text_area_view.test.tsx","src/vanilla/tests/auth.test.tsx","src/vanilla/tests/if.test.tsx","src/vanilla/tests/local_storage.test.tsx","src/vanilla/tests/repeater_view.test.tsx","src/vanilla/tests/texts.test.tsx"],"names":[],"mappings":"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","file":"","sourcesContent":["import { renderLuis } from 'luis';\n\nif (!global.process) {\n  (global as any).process = { env: { NODE_ENV: 'development' } };\n}\n\nimport 'semantic-ui-css/semantic.css';\n\nimport { createRouterProxy } from 'luis/proxies/react-router';\nimport { createApolloProxy } from 'luis/proxies/apollo';\n\nimport { ProxyStore } from 'luis/client/models/proxy_store';\n\nexport const ApolloProxy = createApolloProxy({\n  endpoint: 'http://localhost:4000/graphql'\n});\n\nconst RouterProxy = { proxy: createRouterProxy(), key: 'router' };\n\nProxyStore.init([ApolloProxy, RouterProxy]);\n\nrenderLuis({\n  // ...require('./summary'),\n  // loadTests: () => require('**.test')\n  loadTests: () => {\n    require('**.test');\n  }\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\nimport { create } from '../../semantic/tests/form_query_data';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    people: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          name: { type: 'string' },\n          sex: { type: 'string' }\n        }\n      }\n    }\n  }\n};\n\nconst withFakeData = (data: string): FormElement[] => [\n  {\n    control: 'Stack',\n    props: {\n      layout: 'column',\n      gap: '3px'\n    },\n    elements: [\n      {\n        control: 'ApolloMutation',\n        props: {\n          fakeData: data,\n          clickHandler: 'mutate',\n          mutation: `mutation Mutate {\n          mutate {\n            name\n            sex\n          }\n        }`,\n          target: 'people',\n          loadingText: 'Loading ...'\n        },\n        elements: [\n          {\n            control: 'Button',\n            props: {\n              content: 'Mutate',\n              onClick: 'mutate'\n            }\n          },\n          {\n            control: 'Repeater',\n            props: { value: { source: 'people' } },\n            elements: [\n              {\n                // edit template\n                control: 'Stack',\n                elements: [\n                  {\n                    control: 'Text',\n                    props: { value: { source: 'name' } }\n                  },\n                  {\n                    control: 'Text',\n                    props: { value: ':\\xa0' }\n                  },\n                  {\n                    control: 'Text',\n                    props: { value: { source: 'sex' } }\n                  }\n                ]\n              },\n              null,\n              null\n            ]\n          }\n        ]\n      }\n    ]\n  }\n];\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'Text',\n      props: {\n        value: 'Empty'\n      }\n    },\n    {\n      control: 'ApolloProvider',\n      props: {\n        server: 'http://localhost:4000/graphql',\n        auth: false\n      },\n      elements: []\n    },\n    {\n      control: 'Text',\n      props: {\n        value: 'Real Data'\n      }\n    },\n    {\n      control: 'ApolloProvider',\n      props: {\n        server: 'http://localhost:4000/graphql',\n        auth: false,\n        disable: false\n      },\n      elements: withFakeData(null)\n    },\n    {\n      control: 'Text',\n      props: {\n        value: 'Fake Data'\n      }\n    },\n    {\n      control: 'ApolloProvider',\n      props: {\n        server: 'http://localhost:4000/graphql',\n        auth: false,\n        disable: false\n      },\n      elements: withFakeData(\n        JSON.stringify({\n          mutate: [\n            { __typename: 'Person', name: 'Tomas', sex: 'Male' },\n            { __typename: 'Person', name: 'Valeria', sex: 'Female' }\n          ]\n        })\n      )\n    }\n  ]\n});\n\nconst formData = {};\n\ndescribe('Apollo', () => {\n  describe('Mutation', () => {\n    return {\n      component: prepareComponent(formDefinition, schema, formData, { addEditor: true })\n    };\n  });\n});\n","import React from 'react';\nimport renderer from 'react-test-renderer';\n\nimport * as propertyHandlers from '../../editor/properties/property_panel.handlers';\n\nimport { Header, Segment } from 'semantic-ui-react';\nimport { FormModel, DataSet, FormElement, JSONSchema } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\n// import { expect } from 'chai';\n\nimport 'prismjs/themes/prism.css';\nimport 'prismjs/themes/prism-dark.css';\n\nimport { FormView } from '../../form_view';\nimport { catalogueEditor } from '../../catalogue_editor';\nimport { ToolBox } from '../../editor/toolbox/tool_box';\nimport { SemanticFormView } from '../form_view';\nimport { catalogue } from '../../catalogue';\nimport { PropertyEditor } from '../../editor/properties/property_view';\nimport { ErrorBoundary } from '../../vanilla/error_boundary';\nimport { Context } from '../../context';\nimport { EditorContext, EditorContextType } from '../../editor/editor_context';\nimport { EditorState } from '../../editor/editor_state';\n\nimport { catalogue as editorCatalogue } from '../../editor/catalogue';\nimport { catalogueEditor as editorCatalogueEditor } from '../../editor/catalogue_editor';\nimport { merge } from '../../helpers';\nimport { observable } from 'mobx';\nimport { OutlineView } from '../../editor/outline/outline_view';\nimport { List } from '../../editor/editor_styles';\n\ntype Props = {\n  form: FormModel;\n  editComponent?: DataSet;\n  context?: EditorContextType;\n  showStandard?: boolean;\n  showReadonly?: boolean;\n  showToolbox?: boolean;\n  showProperties?: boolean;\n  showOutline?: boolean;\n  validate?: boolean;\n  handlers?: any;\n};\n\ntype Options = {\n  addEditor?: boolean;\n  showToolBox?: boolean;\n  showReadOnly?: boolean;\n  showStandard?: boolean;\n  showProperties?: boolean;\n  showOutline?: boolean;\n  validate?: boolean;\n  handlers?: any;\n};\n\nconst componentCatalogue = merge(catalogue, editorCatalogue);\nconst editorComponentCatalogue = merge(catalogueEditor, editorCatalogueEditor);\n\nexport const d = 2;\n\nexport function testStandard(formDefinition: FormElement, schema: JSONSchema, formData: any) {\n  const component = prepareComponent(formDefinition, schema, formData, {\n    addEditor: false,\n    showReadOnly: false\n  });\n  const wrapper = renderer.create(component());\n  require('chai')\n    .expect(wrapper)\n    .toMatchSnapshot();\n}\nexport function testReadonly(formDefinition: FormElement, schema: JSONSchema, formData: any) {\n  const component = prepareComponent(formDefinition, schema, formData, {\n    addEditor: false,\n    showReadOnly: true,\n    showStandard: false\n  });\n  const wrapper = renderer.create(component());\n  require('chai')\n    .expect(wrapper)\n    .toMatchSnapshot();\n}\nexport function testEditor(formDefinition: FormElement, schema: JSONSchema, formData: any) {\n  const component = prepareComponent(formDefinition, schema, formData, {\n    addEditor: true,\n    showReadOnly: false,\n    showStandard: false,\n    showProperties: false,\n    showToolBox: false\n  });\n  const wrapper = renderer.create(component());\n  require('chai')\n    .expect(wrapper)\n    .toMatchSnapshot();\n}\n\nexport function prepareComponent(\n  formDefinition: FormElement,\n  schema: JSONSchema,\n  data: any,\n  {\n    addEditor = false,\n    showToolBox = true,\n    showReadOnly = false,\n    showStandard = true,\n    showProperties = true,\n    showOutline = false,\n    validate = false,\n    handlers = {}\n  }: Options = {}\n) {\n  return function component() {\n    const form = new FormModel(formDefinition, schema, data);\n    let context: EditorContextType = null;\n    if (addEditor) {\n      context = new EditorState(componentCatalogue, editorComponentCatalogue, handlers);\n      context.load(\n        {\n          form: form.formDefinition,\n          schema\n        },\n        false\n      );\n\n      if (validate) {\n        form.validateWithReport();\n      }\n    }\n\n    // just another notation\n    return (\n      <TestComponent\n        form={form}\n        context={context}\n        handlers={handlers}\n        showToolbox={showToolBox}\n        showOutline={showOutline}\n        showStandard={showStandard}\n        showReadOnly={showReadOnly}\n        showProperties={showProperties}\n      />\n    );\n  };\n}\n\n// @DragDropContext(HTML5Backend)\n@observer\nexport class TestComponent extends React.Component<Props> {\n  render() {\n    const { form, context, handlers } = this.props;\n\n    return (\n      <ErrorBoundary>\n        <Context.Provider\n          value={{\n            auth: observable({ user: null }),\n            alert: null,\n            app: {},\n            authToken: null\n          }}\n        >\n          <Segment>\n            {this.props.showStandard && (\n              <>\n                <Header content=\"Standard\" dividing />\n                <SemanticFormView\n                  formElement={form}\n                  owner={form.dataSet}\n                  readOnly={false}\n                  handlers={handlers}\n                  catalogue={componentCatalogue}\n                />\n              </>\n            )}\n            {this.props.showReadonly && (\n              <>\n                <Header content=\"Readonly\" dividing />\n                <SemanticFormView\n                  formElement={form}\n                  owner={form.dataSet}\n                  readOnly={true}\n                  handlers={handlers}\n                  catalogue={componentCatalogue}\n                />\n              </>\n            )}\n            {context && (\n              <EditorContext.Provider value={context}>\n                <Header content=\"Editor\" dividing />\n                <div style={{ display: 'flex' }}>\n                  {this.props.showToolbox && (\n                    <div style={{ position: 'relative', flexBasis: '200px', paddingRight: '12px' }}>\n                      <ToolBox catalogue={catalogueEditor} />\n                    </div>\n                  )}\n\n                  {this.props.showOutline && (\n                    <div style={{ position: 'relative', flexBasis: '200px', paddingRight: '12px' }}>\n                      <List>\n                        <OutlineView catalogue={catalogueEditor} />\n                      </List>\n                    </div>\n                  )}\n\n                  <div style={{ flex: '1' }}>\n                    <FormView\n                      formElement={context.form}\n                      owner={form.dataSet}\n                      readOnly={false}\n                      handlers={handlers}\n                      catalogue={editorComponentCatalogue}\n                    />\n                  </div>\n\n                  {context && this.props.showProperties && (\n                    <div\n                      style={{\n                        padding: '12px',\n                        flexBasis: '350px',\n                        minHeight: '600px',\n                        position: 'relative'\n                      }}\n                    >\n                      <PropertyEditor handlers={propertyHandlers} />\n                    </div>\n                  )}\n                </div>\n              </EditorContext.Provider>\n            )}\n          </Segment>\n        </Context.Provider>\n      </ErrorBoundary>\n    );\n  }\n}\n\n// export function prepareComponent() {\n//   return () => <div>werwerwer</div>;\n// }\n","import { Handler, JSONSchema } from '@tomino/dynamic-form';\n// import { findConflict } from '../editor_helpers';\nimport { FormDataSet } from '../form_store';\n// import { GridChildProps } from '../../layouts/grid_view';\nimport { EditorContextType } from '../editor_context';\nimport { schemaDatasetToJS } from '../../helpers';\nimport { HandlerArgs } from '@tomino/dynamic-form';\n\ntype FormHandler = Handler<FormDataSet, EditorContextType>;\n// type FormParseHandler = ParseHandler<FormDataSet, EditorContextType>;\n\nconst controlVisibility = (controls: string[]) => ({ owner }: HandlerArgs) => {\n  return controls.indexOf(owner.control) >= 0;\n};\n\nconst controlInvisibility = (controls: string[]) => ({ owner }: HandlerArgs) => {\n  return controls.indexOf(owner.control) === -1;\n};\n\nconst parentControlVisibility = (controls: string[]) => ({ owner }: HandlerArgs) => {\n  return controls.indexOf(owner.parent.control) >= 0;\n};\n\nexport const elementWithSource: FormHandler = ({ owner, context }) => {\n  const editorElement = context.editorCatalogue.components[owner.control];\n  return editorElement ? editorElement.bound : false;\n};\n\nexport const readonlyElements: FormHandler = controlInvisibility(['Text', 'Image', 'Value']);\n\nexport const textVisibleHandler: FormHandler = controlVisibility(['Text', 'Link']);\n\nexport const gridVisibleHandler: FormHandler = controlVisibility(['Grid']);\n\nexport const verticalVisibleHandler: FormHandler = controlVisibility(['Radio', 'Checkbox']);\n\nexport const parentGridVisibleHandler: FormHandler = parentControlVisibility(['Grid']);\n\nexport const parentStackVisibleHandler: FormHandler = parentControlVisibility(['Stack']);\n\n// export const gridParseWidthHandler: FormParseHandler = (\n//   _owner,\n//   _props,\n//   editorState,\n//   { current, previous }\n// ) => {\n//   let newWidth = parseInt(current, 10);\n//   if (newWidth < 1) {\n//     newWidth = 1;\n//   }\n//   if (newWidth > 15) {\n//     newWidth = 15;\n//   }\n//   const element: FormDataSet<GridChildProps> = editorState.project.state.selectedElement;\n//   const currentColumn = element.props.column;\n\n//   if (element.props.column + newWidth - 1 > 15) {\n//     element.setValue('column', 15 - newWidth + 1);\n//   }\n//   const conflict = findConflict(\n//     element.parent.elements.filter(s => s.props.row === element.props.row && s !== element),\n//     element.props.column,\n//     element.props.column + newWidth - 1\n//   );\n//   if (conflict) {\n//     element.setValue('column', currentColumn);\n//   }\n//   return conflict ? previous : newWidth;\n// };\n\n// export const gridParseColumnHandler: FormParseHandler = (\n//   _owner,\n//   _props,\n//   editorState,\n//   { current, previous }\n// ) => {\n//   let value = parseInt(current, 10);\n//   if (value < 0) {\n//     value = 0;\n//   }\n//   if (value > 15) {\n//     value = 15;\n//   }\n//   const element: FormDataSet<GridChildProps, GridChildProps> =\n//     editorState.project.state.selectedElement;\n//   if (value + element.props.width - 1 > 15) {\n//     value = 15 - element.props.width + 1;\n//   }\n//   const conflict = findConflict(\n//     editorState.selectedParent.elements.filter(\n//       s => s.props.row === element.props.row && s !== element\n//     ),\n//     value,\n//     value + element.props.width - 1\n//   );\n//   return conflict ? previous : value;\n// };\n\nexport function clickApproveHandler() {\n  // do somerthing\n}\n\nfunction buildDatasetPaths(element: JSONSchema, parent: string = '', parentPaths = ''): string[] {\n  let result = [];\n  let adjustedPath = parentPaths + '.';\n\n  for (let key of Object.keys(element.properties || {})) {\n    let current = element.properties[key];\n    let parentPath = (parent ? parent + '.' : '') + key;\n\n    if (parentPaths) {\n      if (parentPath.substring(0, adjustedPath.length) === adjustedPath) {\n        result.push(parentPath.replace(adjustedPath, ''));\n      }\n    } else {\n      result.push(parentPath);\n    }\n\n    if (current.type === 'object') {\n      result.push(...buildDatasetPaths(current, parentPath, parentPaths));\n    } else if (\n      parentPaths &&\n      current.type === 'array' &&\n      current.items &&\n      current.items.type === 'object'\n    ) {\n      result.push(...buildDatasetPaths(current.items, parentPath, parentPaths));\n    }\n  }\n  return result;\n}\n\nexport const datasetSource: FormHandler = ({ owner, context }) => {\n  // find parent path\n  let parent = owner.parent;\n  let parentPath = '';\n\n  // console.log(formDatasetToJS(owner.parent.parent.parent.parent));\n\n  while (parent.parent != null) {\n    parent = parent.parent;\n\n    const control = context.editorCatalogue.components[parent.control];\n\n    if (\n      control &&\n      control.valueProvider &&\n      parent.props &&\n      parent.props.value &&\n      parent.props.value.source\n    ) {\n      parentPath = parent.props.value.source + (parentPath ? '.' : '') + parentPath;\n    }\n  }\n\n  // console.log(parentPath);\n\n  let schema = schemaDatasetToJS(context.schema);\n  let paths = buildDatasetPaths(schema, '', parentPath);\n  let all = buildDatasetPaths(schema);\n\n  let array: any[] = [{ text: 'Item', value: '__item', disabled: false }];\n  // if (owner.getSchema().type === 'array') {\n  //   array = [{ text: 'Item', value: 'item', disabled: false }];\n  // }\n\n  const values = [{ text: 'None', value: '', disabled: false }]\n    .concat(array)\n    .concat(paths.sort().map(p => ({ text: p, value: p, disabled: false })))\n    .concat(\n      parentPath !== ''\n        ? [{ text: 'GLOBAL', value: '__global', disabled: true }].concat(\n          all.sort().map(p => ({ text: p, value: '/' + p, disabled: false }))\n        )\n        : []\n    );\n\n  // console.log(values);\n  return values;\n};\n\nexport const optionsHandlers: FormHandler = ({ context }) => {\n  return [{ text: 'None', value: '' }].concat(\n    context.projectHandlers.filter(h => h !== '__esModule').map(h => ({ value: h, text: h }))\n  );\n};\n","import {\n  FormComponentCatalogue,\n  EditorComponentCatalogue,\n  JSONSchema,\n  FormElement,\n  DataSet,\n  FormComponentProps,\n  Handlers\n} from '@tomino/dynamic-form';\nimport React from 'react';\nimport { toJS } from 'mobx';\nimport { BoundProp, CommonPropNames } from '@tomino/dynamic-form';\nimport { ContextType, Context } from './context';\n\nexport function merge(...catalogues: EditorComponentCatalogue[]): EditorComponentCatalogue;\nexport function merge(...catalogues: FormComponentCatalogue[]): FormComponentCatalogue;\nexport function merge(...catalogues: any[]): any {\n  if (!catalogues.some(c => c.createComponent)) {\n    throw new Error('The catalogue needs to define a createComponent function!');\n  }\n  return {\n    createComponent: catalogues.find(c => c.createComponent).createComponent,\n    cssClass: catalogues.map(c => (c.cssClass ? c.cssClass + ' ' : '')).join(''),\n    components: Object.assign({}, ...catalogues.map(c => c.components)) as any\n  };\n}\n\nconst composites = ['definitions', 'properties', 'items'];\n\nexport function schemaDatasetToJS(schema: any, faker = true): JSONSchema {\n  let result = cleanSchemaDataset(toJS(schema), faker);\n  if (!result) {\n    return null;\n  }\n  if (result.type === 'object' && !result.properties) {\n    result.properties = {};\n  }\n  return result;\n}\n\nexport function formDatasetToJS(form: FormElement) {\n  return cleanForm(toJS(form));\n}\n\nfunction cleanForm(form: any) {\n  if (!form) {\n    return null;\n  }\n  let result: any = {};\n  for (let key of Object.getOwnPropertyNames(form)) {\n    if (key === 'parent' || key === 'isSelected') {\n      continue;\n    }\n    let value = form[key];\n\n    if (Array.isArray(value)) {\n      if (value.length > 0) {\n        result[key] = value.map(v => (typeof v === 'object' ? cleanForm(v) : v));\n      }\n    } else if (value != null && typeof value === 'object') {\n      if (Object.getOwnPropertyNames(value).length > 0) {\n        result[key] = cleanForm(value);\n      }\n    } else if (value) {\n      result[key] = value;\n    }\n  }\n  if (Object.keys(result).length === 0) {\n    return undefined;\n  }\n  return result;\n}\n\nfunction cleanSchemaDataset(schema: any, faker: boolean): JSONSchema {\n  const cleaned: any = {};\n\n  if (schema == null) {\n    return;\n  }\n\n  let keys = Object.getOwnPropertyNames(schema || {});\n  for (let key of keys) {\n    let value = schema[key];\n    // match\n    if (value == null || value === '') {\n      continue;\n    }\n\n    if (key === 'errors' || key === 'imports' || typeof schema[key] === 'function') {\n      // do nothing\n    } else if (key === 'reference') {\n      if (faker) {\n        cleaned.properties = cleanSchemaDataset(schema.reference.properties, faker);\n      }\n      // else {\n      //   cleaned.reference = schema.$ref.split('/').pop();\n      // }\n    } else if (composites.indexOf(key) >= 0) {\n      if ((faker || !schema.$ref) && value && Object.getOwnPropertyNames(value).length > 0) {\n        cleaned[key] = cleanSchemaDataset(schema[key], faker);\n      }\n    } else if (key === '$enum') {\n      if (schema.$enum.length > 0) {\n        cleaned.enum = schema.$enum.map((e: any) => e.value);\n        cleaned.$enum = schema.$enum.map((e: any) => ({\n          text: e.text,\n          value: e.value,\n          icon: e.icon\n        }));\n      }\n    } else if (Array.isArray(value)) {\n      if (value.length > 0) {\n        cleaned[key] = value.map(v => (typeof v === 'object' ? cleanSchemaDataset(v, faker) : v));\n      }\n    } else if (typeof value === 'object') {\n      if (Object.getOwnPropertyNames(value).length > 0) {\n        cleaned[key] = cleanSchemaDataset(value, faker);\n      }\n    } else {\n      cleaned[key] = value;\n    }\n  }\n\n  if (faker) {\n    if (schema.properties) {\n      cleaned.required = Object.getOwnPropertyNames(schema.properties);\n    }\n  }\n  return cleaned;\n}\n\nexport function simpleHandle<T>(\n  props: FormComponentProps,\n  handleName: string,\n  context: T,\n  args?: any\n) {\n  return handle(props.handlers, handleName, props.owner, props, props.formElement, context, args);\n}\n\nexport function handle<T, U>(\n  handlers: Handlers<DataSet<T>, U>,\n  handle: string | number | symbol,\n  owner: DataSet<T>,\n  props: FormComponentProps<T>,\n  formElement: FormElement<T>,\n  context: U,\n  args?: any\n) {\n  if (!handlers[handle as string]) {\n    console.error('Handler does not exist: ' + (handle as string));\n    return;\n  }\n  return handle && handlers[handle as string]\n    ? handlers[handle as string]({ owner, props, formElement, context, args })\n    : null;\n}\n\n// type ValueType<C> = {\n//   formElement: FormElement<C>;\n//   handlers: any;\n//   owner: DataSet;\n// };\n\nexport function bindGetValue(props: FormComponentProps, context: ContextType) {\n  return function<C>(\n    element: FormElement<C>,\n    propName?: keyof C | CommonPropNames,\n    defaultValue?: any\n  ) {\n    return getPropValue(props, element, context, propName, defaultValue);\n  };\n}\n\nexport function getValues<C>(\n  props: FormComponentProps<C>,\n  ...propNames: (keyof C | CommonPropNames)[]\n): any[] {\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const context = React.useContext(Context);\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  // return React.useMemo(\n  //   () => propNames.map(p => getPropValue(props, props.formElement, context, p)),\n  //   // eslint-disable-next-line react-hooks/exhaustive-deps\n  //   [context, props.formElement]\n  // );\n  return propNames.map(p => getPropValue(props, props.formElement, context, p));\n}\n\nexport function getValue<C>(\n  props: FormComponentProps<C>,\n  context: ContextType,\n  propName?: keyof C | CommonPropNames,\n  defaultValue?: any,\n  path: string = ''\n): any {\n  return getPropValue(props, props.formElement, context, propName, defaultValue, path);\n}\nexport function getPropValue<C>(\n  props: FormComponentProps<C>,\n  formElement: FormElement<C>,\n  context: ContextType,\n  propName: keyof C | CommonPropNames = undefined,\n  defaultValue: any = undefined,\n  path = ''\n) {\n  if (!propName) {\n    propName = 'value' as any;\n  }\n  let prop: BoundProp = formElement.props ? (formElement.props as any)[propName] : null;\n  if (prop == null) {\n    return defaultValue;\n  }\n  if (typeof prop !== 'object' || Array.isArray(prop)) {\n    return prop; // props.owner.getValue(prop);\n  }\n  if (prop.value != null) {\n    return prop.value;\n  } else if (prop.handler) {\n    return handle(props.handlers, prop.handler, props.owner, props, props.formElement, context);\n  } else if (prop.source) {\n    return props.owner.getValue\n      ? props.owner.getValue(prop.source + path)\n      : props.owner[prop.source];\n  }\n  return defaultValue === null ? '' : defaultValue;\n}\n\nexport function safeGetValue<C>(\n  props: FormComponentProps<C>,\n  context: any,\n  propName: keyof C = null,\n  defaultValue: any = null\n) {\n  let value = getValue(props, context, propName, defaultValue);\n  if (value == null) {\n    return value;\n  }\n  return value.toString();\n}\n\nexport function setValue<C>(\n  props: FormComponentProps<C>,\n  context: any,\n  value: any,\n  propName: keyof C = undefined,\n  path = ''\n) {\n  setPropValue(props, props.owner, context, value, propName, path);\n}\n\nexport function setPropValue<C>(\n  props: FormComponentProps<C>,\n  owner: DataSet<C>,\n  context: any,\n  value: any,\n  propName: keyof C = undefined,\n  path = ''\n) {\n  if (!propName) {\n    propName = 'value' as any;\n  }\n  let prop: BoundProp = props.formElement.props[propName];\n  if (prop == null) {\n    return;\n  }\n  if (typeof prop !== 'object') {\n    owner.setValue(propName as string, value);\n  }\n\n  if (prop.parse) {\n    handle(props.handlers, prop.parse, props.owner, props, props.formElement, context, {\n      current: value,\n      previous: getValue(props, context, propName)\n    });\n    return;\n  }\n\n  // if (prop.validate) {\n  //   let error = handle(props.handlers, prop.validate, props.owner, props, context, value);\n  //   if (error) {\n  //     return error;\n  //   }\n  // }\n\n  if (prop.source) {\n    owner.setValue(\n      prop.source,\n      path ? { [path.substring(1)]: value } : value,\n      prop.validate ? (props.handlers[prop.validate] as any) : undefined\n    );\n  } else if (prop.handler) {\n    handle(props.handlers, prop.handler, props.owner, props, context, value);\n  }\n}\n\nexport function prop<C>(\n  formElement: FormElement<C>,\n  propName: keyof C = 'value' as any,\n  type: 'source' | 'value' | 'handler' = 'source'\n) {\n  return formElement && formElement.props && formElement.props[propName]\n    ? (formElement.props as any)[propName][type]\n    : null;\n}\n\nexport function isNullOrEmpty(val: any) {\n  return val == null || val == '';\n}\n\nexport function valueSource<C extends { value: BoundProp }>(formElement: FormElement<C>) {\n  return prop(formElement, 'value', 'source');\n}\n\nexport function valueHandler<C extends { value: BoundProp }>(formElement: FormElement<C>) {\n  return prop(formElement, 'value', 'handler');\n}\n\nexport function value<C extends { value: BoundProp }>(formElement: FormElement<C>) {\n  return prop(formElement, 'value', 'value');\n}\n\nfunction stripUid(obj: any) {\n  if (obj.uid) {\n    delete obj.uid;\n  }\n\n  for (let key of Object.keys(obj)) {\n    let property = obj[key];\n    if (property.uid) {\n      delete property.uid;\n    }\n    if (Array.isArray(property)) {\n      for (let e of property) {\n        stripUid(e);\n      }\n    } else if (typeof property === 'object') {\n      stripUid(property);\n    }\n  }\n  return obj;\n}\n\nexport function clone(dataset: DataSet) {\n  return stripUid(formDatasetToJS(dataset));\n}\n\nexport function parseProps(props: FormComponentProps, context: ContextType) {\n  const value = getValue(props, context, undefined, undefined) || '';\n\n  const controlSource = valueSource(props.formElement);\n\n  let error = '';\n  let disabled = false;\n\n  const label = getValue(props, context, 'label');\n\n  // we will only process the values if the schma exists\n  if (controlSource !== '' && props.owner.getSchema(controlSource, false) != null) {\n    error = controlSource ? props.owner.getError(controlSource) : null;\n    disabled = props.readOnly || (controlSource && props.owner.getSchema(controlSource).readOnly);\n  }\n\n  return { value, label, error, disabled };\n}\n\nexport function processControl(props: FormComponentProps, createCallback: boolean = true) {\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const context = React.useContext(Context);\n  const { formElement, owner } = props;\n  let handleChange: any;\n  if (createCallback) {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    handleChange = React.useCallback(\n      (e: React.SyntheticEvent<any>, uiProps: any) => {\n        const source = valueSource(formElement);\n        if (!source) {\n          return;\n        }\n        setValue(\n          props,\n          context,\n          uiProps.checked != null\n            ? uiProps.checked\n            : uiProps.value != null\n              ? uiProps.value\n              : e.currentTarget.checked !== undefined\n                ? e.currentTarget.checked\n                : e.currentTarget.value\n        );\n\n        const changeHandler = props.formElement.props.onChange;\n        if (changeHandler) {\n          simpleHandle(props, changeHandler, context);\n        }\n      },\n      [context, formElement, props]\n    );\n  }\n\n  const { error, value, disabled } = parseProps(props, context);\n  const source = valueSource(formElement);\n\n  return {\n    context,\n    owner,\n    formElement,\n    error,\n    value,\n    disabled,\n    source,\n    handleChange,\n    controlProps: formElement.props\n  };\n}\n","import React from 'react';\nimport { AlertManager } from 'react-alert';\nimport { observable } from 'mobx';\n\ntype User = {\n  name?: string;\n  id?: string;\n  roles?: string[];\n};\n\nexport type ContextType = {\n  alert?: AlertManager;\n  authToken?: string;\n  auth: { user?: User; logout?: Function };\n  app: any;\n};\n\nexport const context: ContextType = {\n  alert: null,\n  authToken: null,\n  auth: observable({ user: null }),\n  app: {}\n};\n\nexport const Context = React.createContext(context);\n","import * as React from 'react';\n\nimport { FormViewProps, FormElement } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\nimport { handle, css, names, createComponents } from './common';\nimport { Context } from './context';\nimport { DynamicComponent } from './wrapper';\n\nconst form = css`\n  background: white;\n  label: form;\n`;\n\nexport interface IFieldOwner {\n  elements?: FormElement[];\n}\n\ntype Props = {\n  className?: string;\n  onCreate?: string;\n};\n\nconst FormViewComponent: React.FC<FormViewProps & Props> = props => {\n  // processExtensions() {\n  //   if (this.props.extensions) {\n  //     for (let extension of this.props.extensions) {\n  //       extension(this.props);\n  //     }\n  //   }\n  // }\n\n  // componentWillMount() {\n  //   this.processExtensions();\n  // }\n\n  // componentWillUpdate() {\n  //   this.processExtensions();\n  // }\n\n  const context = React.useContext(Context);\n\n  const controlProps = props.formElement.props || {};\n  const { formElement, owner, extra } = controlProps.onCreate\n    ? handle(props.handlers, controlProps.onCreate, props.owner, props, props.formElement, context)\n    : props;\n\n  // if (this.props.formElement.parseHandler) {\n  //   let parsed = handle(\n  //     props.handlers,\n  //     formElement.parseHandler,\n  //     props.owner,\n  //     props.formElement\n  //   );\n\n  //   formElement = parsed.formElement;\n  //   // owner = parsed.owner;\n  // }\n\n  if (!formElement.elements) {\n    return <div>Form is empty ¯\\_(ツ)_/¯</div>;\n  }\n\n  // const css = this.props.renderCss && <style>{renderCss()}</style>;\n  return (\n    <DynamicComponent {...props} styleName={names(props.className, props.catalogue.cssClass, form)}>\n      {createComponents({ ...props, formElement, owner, extra })}\n    </DynamicComponent>\n  );\n};\n\nexport const FormView = observer(FormViewComponent);\n","import React from 'react';\nimport names from 'classnames';\n\nimport { DataSet, FormElement, FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { css } from 'emotion';\nimport { toJS as mobxToJs } from 'mobx';\nimport { interpolate } from '@tomino/toolbelt';\nimport { BoundProp, BoundType } from '@tomino/dynamic-form';\n\nimport { getPropValue } from './helpers';\nimport { ContextType } from './context';\n\nexport { css } from 'emotion';\nexport { Theme } from './editor/themes/common';\nexport { default as names } from 'classnames';\nexport { Context } from './context';\nexport { handle, getValue, isNullOrEmpty, prop, processControl, valueSource } from './helpers';\nexport { DynamicComponent as DynamicControl, paintProps } from './wrapper';\n\nexport const select = css`\n  .react-select__control {\n    border: 0px;\n    border-radius: 0 !important;\n    min-height: 23px;\n  }\n\n  .react-select__indicators {\n    height: 23px;\n  }\n\n  .react-select__indicator {\n    padding: 2px;\n  }\n\n  .react-select__value-container {\n    height: 23px;\n\n    > div {\n      /* position: absolute; */\n      margin: 0px;\n      padding: 0px;\n    }\n  }\n\n  .react-select__single-value {\n    margin-top: 0px;\n  }\n\n  .react-select__menu {\n    border-radius: 0px;\n    margin-top: 2px;\n  }\n\n  label: select;\n`;\n\nexport const fieldSet = css`\n  /* name: fieldset */\n  border: solid 1px #ddd;\n  border-radius: 5px;\n  background-color: #fafafa;\n\n  legend {\n    padding: 0px 6px;\n    font-weight: bold;\n  }\n`;\n\nexport const breakingLabel = css`\n  display: block;\n  font-weight: bold;\n  margin-top: 3px;\n  margin-bottom: 3px;\n`;\n\nexport const nonBreakingLabel = css`\n  display: inline-block;\n  font-weight: bold;\n  padding-right: 6px;\n  margin-top: 3px;\n  margin-bottom: 3px;\n`;\n\nexport const fullWidth = css`\n  width: 100%;\n`;\n\nexport const noPadding = css`\n  padding: 0px !important;\n`;\n\nexport const marginLess = css`\n  margin: 0px !important;\n`;\n\nexport const pointer = css`\n  cursor: pointer !important;\n  label: pointer;\n`;\n\nconst missing = css`\n  background: red;\n  padding: 3px;\n  border-radius: 3px;\n  font-weight: bold;\n  color: white;\n`;\n\nexport type SignatureType = {\n  comment: string;\n  signature: string;\n  verifiedState: 'Pending' | 'Verified' | 'Rejected';\n  rejected?: boolean;\n  uid: string;\n  name: string;\n  date: Date;\n  setValue?(name: string, value: any): any;\n};\n\nexport type SignatureHandlers = {\n  validateForm(): boolean;\n  verifySignature(owner: any, args: { uid: string; signature: string }): Promise<string>;\n  sign(\n    owner: DataSet,\n    args: {\n      source: string;\n      reject: boolean;\n      password: string;\n      reason: string;\n      submit: boolean;\n    }\n  ): Promise<SignatureType>;\n  signatureFont(): string;\n};\n\nexport type FormEditorProps = {\n  formElement: DynamicForm.FormDataSet;\n  formData: DataSet;\n  handlers?: { [index: string]: any };\n  readOnly: boolean;\n};\n\nexport function parseFromOwner(str: string, owner: DataSet) {\n  try {\n    return interpolate(str, owner);\n  } catch (ex) {\n    return 'Error parsing string: ' + ex.message;\n  }\n}\n\nexport function sourceValue(prop: BoundProp) {\n  return prop ? (prop as BoundType).source : null;\n}\n\nexport function handlerValue(prop: BoundProp) {\n  return prop ? (prop as BoundType).handler : null;\n}\n\n// let onClick: (props: FormComponentProps) => Function;\n// export function registerOnClick(onClickHandler: typeof onClick) {\n//   onClick = onClickHandler;\n// }\n\nexport function root(formElement: FormElement) {\n  let root = formElement;\n  while (root.parent != null && (!root.pages || root.pages.length === 0)) {\n    root = root.parent;\n  }\n  return root;\n}\n\nconst extraProps = ['editorLabel'];\n\nexport function cleanProps(props: any) {\n  const result: any = {};\n  const js = toJS(props);\n  for (let key of Object.keys(js)) {\n    if (js[key] === '' || js[key] == null || js[key].length === 0 || extraProps.indexOf(key) >= 0) {\n      continue;\n    }\n    result[key] = js[key];\n  }\n  return result;\n}\n\nexport function tryInterpolate(text: string, owner: DataSet) {\n  try {\n    return interpolate(text, owner);\n  } catch (ex) {\n    return 'Error: ' + ex.message;\n  }\n}\n\nexport function useMergeState<T>(initialState: T): [T, (t: Partial<T>) => void] {\n  const [state, setState] = React.useState(initialState);\n  const setMergedState = (newState: any) =>\n    setState((prevState: any) => Object.assign({}, prevState, newState));\n  return [state, setMergedState];\n}\n\nexport function createComponents(props: FormComponentProps, className: string = null) {\n  if (!props.formElement.elements || props.formElement.elements.length === 0) {\n    return undefined;\n  }\n  return props.formElement.elements.map((e, i) => (\n    <React.Fragment key={i}>\n      {props.catalogue.createComponent(\n        { ...props, className: '' },\n        e,\n        className\n        // extraProps\n        // null,\n        // onClick ? onClick(props) : undefined\n      )}\n    </React.Fragment>\n  ));\n}\n\n// type Options = {\n//   drawLabel?: boolean;\n//   className?: string;\n//   onClick?: any\n// }\n\nexport function createComponent1(\n  props: FormComponentProps,\n  formElement: FormElement,\n  context: ContextType,\n  className?: string,\n  extraProps?: any\n) {\n  if (!formElement || formElement.control === 'EditorCell') {\n    return null;\n  }\n\n  if (props.catalogue.components[formElement.control] === undefined) {\n    return <div className={names(className, missing)}>{formElement.control}</div>;\n  }\n\n  const hide = getPropValue(props, formElement, context, 'hidden', false);\n  if (hide) {\n    return null;\n  }\n\n  const controlDefinition = props.catalogue.components[formElement.control];\n  const Control =\n    (controlDefinition as FormComponent).Component ||\n    (controlDefinition as React.ComponentType<any>);\n\n  Control.displayName = 'CreateComponentWrapper';\n\n  // TODO: Make this type safe by creating a render method in catalogue\n  let renderedControl = (\n    <Control\n      owner={props.owner}\n      className={className}\n      handlers={props.handlers}\n      catalogue={props.catalogue}\n      formElement={formElement}\n      extra={{ ...props.extra, ...extraProps }}\n      dataProps={props.dataProps}\n    />\n  );\n\n  return renderedControl;\n}\n\nexport function toJS<T>(obj: T): T {\n  return mobxToJs(obj);\n}\n\nexport function addProviders(mainForm: FormElement, form: FormElement) {\n  let formElement = form;\n\n  // add all root providers from the man form\n  if (form !== mainForm) {\n    let model = toJS(mainForm);\n    let provider = model;\n\n    while (\n      provider.elements &&\n      provider.elements.length &&\n      provider.elements[0].control.indexOf('Provider') >= 0\n    ) {\n      provider = provider.elements[0];\n    }\n\n    if (provider != model) {\n      provider.elements = [form];\n      formElement = model;\n    }\n  }\n\n  return formElement;\n}\n\n// export function props<T>(props: T, defaultProps?: Partial<T>): T {\n//   return controlProps || (defaultProps as any) || {};\n// }\n","export type Theme = {\n  dark: boolean;\n  sideMenuColor: string;\n  menuColor: string;\n  selectedColor: string;\n  selectedBackground: string;\n  dragBackground: string;\n  dragBorder: string;\n  pane: string;\n  headerBackground: string;\n  textColor: string;\n  meta: string;\n  headerText: string;\n  inverted: boolean;\n  inputBackground: string;\n  buttonBackground: string;\n  headerColor: string;\n  inputColor: string;\n  inputLabel: string;\n  borderColor: string;\n  invalidColor: string;\n  invalidBackground: string;\n  label: string;\n  inputBorder: string;\n};\n","import React from 'react';\nimport names from 'classnames';\n\nimport { Context } from './context';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { css } from 'emotion';\nimport { handle, getValue, isNullOrEmpty, valueSource } from './helpers';\nimport { ErrorBoundary } from './vanilla/error_boundary';\nimport { createComponents } from './common';\nimport { observer } from 'mobx-react';\nimport { ErrorView } from './semantic/error_view';\n\nexport const breakingLabel = css`\n  display: block;\n  font-weight: bold;\n  margin-top: 3px;\n  margin-bottom: 3px;\n`;\n\nexport const nonBreakingLabel = css`\n  display: inline-block;\n  font-weight: bold;\n  padding-right: 6px;\n  margin-top: 3px;\n  margin-bottom: 3px;\n`;\n\nconst defaultMouseEvents = ['onClick', 'onMouseOver', 'onMouseOut', 'onMouseDown', 'onMouseUp'];\nconst defaultFormEvents = ['onChange', 'onInput'];\nconst defaultKeyEvents = ['onKeyDown', 'onKeyUp'];\nconst defaultEvents = [...defaultMouseEvents, ...defaultFormEvents, ...defaultKeyEvents];\n\nconst omitKeys = [\n  'styleName',\n  'catalogue',\n  'children',\n  'extra',\n  'formElement',\n  'handlers',\n  'owner',\n  'className',\n  'readOnly',\n  'controlProps',\n  'control',\n  'ownAddCell',\n  'EmptyCell',\n  'Component',\n  'showError',\n  'staticContext',\n  'routerProps',\n  'dataProps',\n  'hideLabel'\n];\n\nfunction omit(obj: any, keys: string[]) {\n  var target: any = {};\n\n  for (var i of Object.keys(obj)) {\n    if (keys.indexOf(i) >= 0) continue;\n    target[i] = obj[i];\n  }\n\n  return Object.keys(target).length > 0 ? target : null;\n}\n\nconst eventCache: any[] = [];\nfunction getCachedEvent(\n  formElement: any,\n  event: string,\n  props: FormComponentProps,\n  context: any,\n  extra: any = null,\n  events: any = null\n) {\n  // TODO: Find a better way to cache events\n  let current = eventCache.find(c => c.props === props);\n  if (!current) {\n    current = { props };\n    eventCache.push(current);\n  }\n  if (!current[event]) {\n    // TODO: check whether the caching does not lead to\n    // incorrect parameters in the long run - [context, prop, props]\n    current[event] = (e: React.SyntheticEvent, ui: any) => {\n      // execute extra event (usually done by editor)\n      if (extra && extra[event]) {\n        extra[event](e, ui);\n      }\n\n      if (events && events[event]) {\n        events[event](e, ui);\n      }\n\n      if (formElement.props[event]) {\n        handle(props.handlers, formElement.props[event], props.owner, props, context, {\n          e,\n          ui\n        });\n      }\n    };\n  } else {\n    console.log('Using cached ...');\n  }\n  return current[event];\n}\n\nexport function paintProps<C>(\n  props: FormComponentProps<C>,\n  context: any,\n  className?: string,\n  allowedProperties?: string[],\n  componentProps?: any\n) {\n  let result: any = {\n    id: props.formElement.uid,\n    'data-control': props.formElement.control\n  };\n\n  if (props.formElement.props) {\n    for (let prop of Object.keys(props.formElement.props)) {\n      // events\n      if (defaultEvents.indexOf(prop) >= 0) {\n        result[prop] = getCachedEvent(\n          props.formElement,\n          prop,\n          props,\n          context,\n          props.extra,\n          componentProps\n        );\n      } else if (allowedProperties && allowedProperties.indexOf(prop) >= 0) {\n        result[prop] = getValue(props, context, prop as keyof C, undefined);\n        result[prop] = isNullOrEmpty(result[prop]) ? undefined : result[prop];\n      }\n    }\n  }\n\n  // classnames\n  const controlCss = getValue(props, context, 'css');\n\n  if (props.className || controlCss || className || (props.extra && props.extra.className)) {\n    result.className = names(\n      result[className],\n      className,\n      props.className,\n      props.extra ? props.extra.className : undefined,\n      controlCss ? css([controlCss]) : undefined\n    );\n  }\n\n  // add extra events, these may be passed from parent components\n  // this is often used by editor to inject its props or events\n  if (props.extra) {\n    for (let prop of Object.keys(props.extra)) {\n      if (!result[prop]) {\n        result[prop] = props.extra[prop];\n      }\n    }\n    // result['extra'] = props.extra;\n  }\n\n  // if (props.dataProps) {\n  //   result['dataProps'] = props.dataProps;\n  // }\n\n  // these events are usually passed from the control itself\n  if (componentProps) {\n    for (let prop of Object.keys(componentProps)) {\n      result[prop] = componentProps[prop];\n    }\n  }\n\n  return result;\n}\n\ntype WrapperProps = FormComponentProps & {\n  control?: any;\n  controlProps?: string[];\n  styleName?: string;\n  preserveProps?: boolean;\n  showError?: boolean;\n  hideLabel?: boolean;\n  [index: string]: any;\n};\n\nexport function renderEmptyCell(\n  props: FormComponentProps & { EmptyCell: any },\n  className?: string\n) {\n  return (\n    props.formElement.elements.length === 0 &&\n    props.EmptyCell && <props.EmptyCell {...props} className={className} />\n  );\n}\n\nexport const DynamicComponent: React.FC<WrapperProps> = observer(props => {\n  const context = React.useContext(Context);\n\n  // remove the cached properties\n  React.useEffect(() => () => {\n    eventCache.splice(eventCache.findIndex(c => c.props == props), 1);\n  });\n  let formElement = props.formElement;\n  let currentProps = paintProps(\n    props,\n    context,\n    props.styleName,\n    props.controlProps,\n    omit(props, omitKeys)\n  );\n  if (props.preserveProps) {\n    currentProps = { ...currentProps, ...props };\n  }\n  currentProps.key = formElement.uid;\n\n  // we wither display labeled component\n  // or no label at all\n  const label = getValue(props, context, 'label');\n  if (label) {\n    const { onMouseOver, onMouseOut, className, ...rest } = currentProps;\n    return (\n      <ErrorBoundary>\n        <div\n          onMouseOver={onMouseOver}\n          onMouseOut={onMouseOut}\n          className={className}\n          data-control={currentProps['data-control'] + 'Wrapper'}\n        >\n          {!props.hideLabel && (label || formElement.props.formAlign) && (\n            <label\n              className={formElement.props.inline ? nonBreakingLabel : breakingLabel}\n              htmlFor={formElement.uid}\n            >\n              {label || '\\xa0'}\n            </label>\n          )}\n          {React.createElement(props.control || 'div', rest, props.children)}\n        </div>\n        {props.showError && (\n          <ErrorView\n            inline={!!formElement.props.inline}\n            owner={props.owner}\n            source={valueSource(formElement)}\n          />\n        )}\n      </ErrorBoundary>\n    );\n  }\n\n  return (\n    <ErrorBoundary>\n      {React.createElement(\n        props.control || 'div',\n        currentProps,\n        props.children || createComponents(props)\n      )}\n      {props.showError && (\n        <ErrorView\n          inline={!!formElement.props.inline}\n          owner={props.owner}\n          source={valueSource(formElement)}\n        />\n      )}\n    </ErrorBoundary>\n  );\n});\n\nDynamicComponent.displayName = 'DynamicControl';\n","import * as React from 'react';\nimport { Segment } from 'semantic-ui-react';\n\nimport { css } from '../common';\n\nconst segment = css`\n  margin: 12px !important;\n`;\n\nconst error = css`\n  overflow: auto;\n`;\n\nexport type State = { hasError: boolean; error?: Error; info?: React.ErrorInfo };\n\nexport class ErrorBoundary extends React.Component<any, State> {\n  static displayName = 'ErrorBoundary';\n\n  constructor(props: any) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  componentDidCatch(error: Error, info: React.ErrorInfo) {\n    // Display fallback UI\n    this.setState({ hasError: true, error, info });\n\n    console.group('REACT ERROR');\n    console.error(error);\n    console.error(info);\n    console.groupEnd();\n    // You can also log the error to an error reporting service\n  }\n\n  render() {\n    if (this.state.hasError) {\n      // You can render any custom fallback UI\n      return (\n        <div className={segment}>\n          <Segment inverted attached=\"top\" color=\"red\">\n            😢 {this.state.error.message}\n          </Segment>\n          <Segment attached=\"bottom\" className={error}>\n            <pre>{this.state.error.stack}</pre>\n            <pre>{this.state.info.componentStack}</pre>\n          </Segment>\n        </div>\n      );\n    }\n    return this.props.children;\n  }\n}\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Label } from 'semantic-ui-react';\nimport { DataSet, FormElement } from '@tomino/dynamic-form';\n\ntype PointingProps = boolean | 'above' | 'left' | 'right' | 'below';\n\ntype ErrorProps = {\n  owner: DataSet;\n  control?: FormElement;\n  source: string;\n  pointing?: PointingProps;\n  newLine?: boolean;\n  inline?: boolean;\n};\n\nexport function renderError(error: string, pointing: PointingProps) {\n  return (\n    <Label pointing={pointing} color=\"red\">\n      {error}\n    </Label>\n  );\n}\n\nconst ErrorViewComponent = ({ owner, source, newLine, inline, pointing = true }: ErrorProps) => {\n  if (!owner.getError) {\n    return null;\n  }\n  pointing = inline ? 'left' : pointing;\n\n  let error: string = source && owner.getError(source);\n\n  if (!error) {\n    return null;\n  }\n\n  if (newLine) {\n    return <div>{renderError(error, pointing)}</div>;\n  }\n\n  return renderError(error, pointing);\n};\nErrorViewComponent.displayName = 'ErrorView';\n\nexport const ErrorView = observer(ErrorViewComponent);\n\ntype ErrorLabelProps = { error: string; pointing?: PointingProps };\n\nconst ErrorLabelComponent = ({ error, pointing = true }: ErrorLabelProps) => {\n  if (!error) {\n    return null;\n  }\n  return (\n    <Label color=\"red\" pointing={pointing}>\n      {error}\n    </Label>\n  );\n};\nErrorLabelComponent.displayName = 'ErrorLabel';\n\nexport const ErrorLabel = observer(ErrorLabelComponent);\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\n\nimport { catalogueEditor as vanilla } from './vanilla/catalogue_editor';\nimport { catalogueEditor as semantic } from './semantic/catalogue_editor';\nimport { catalogueEditor as apollo } from './apollo/catalogue_editor';\nimport { catalogueEditor as router } from './react-router/catalogue_editor';\nimport { catalogueEditor as alert } from './react-alert/catalogue_editor';\nimport { catalogueEditor as auth } from './semantic/auth-graphql-react-router/catalogue_editor';\n\nimport { merge } from './helpers';\n\nexport const catalogueEditor: EditorComponentCatalogue = merge(\n  vanilla,\n  semantic,\n  apollo,\n  router,\n  alert,\n  auth\n);\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\n\nimport { FormulaEditor } from './formula_editor';\nimport { RepeaterEditor } from './repeater_editor';\n\nimport { TextEditor, ImageEditor, LinkSelectorEditor, LinkEditor } from './text_editor';\nimport { GridEditor } from '../layouts/grid_editor';\nimport { StackEditor } from '../layouts/stack_editor';\nimport { FormEditor } from '../form_editor';\nimport { AuthItemEditor } from './auth_item_editor';\nimport { FlexEditor } from '../layouts/flex_editor';\nimport { createComponent } from '../editor/layouts_common_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  createComponent: createComponent,\n  cssClass: '',\n  components: {\n    AuthItem: AuthItemEditor,\n    Flex: FlexEditor,\n    Form: FormEditor,\n    Formula: FormulaEditor,\n    Grid: GridEditor,\n    Image: ImageEditor,\n    Repeater: RepeaterEditor,\n    Link: LinkEditor,\n    LinkSelector: LinkSelectorEditor,\n    Stack: StackEditor,\n    Text: TextEditor\n  }\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\n\nimport { FormulaComponent } from './formula_view';\n\nexport const FormulaEditor: EditorComponent = {\n  Component: FormulaComponent,\n  title: 'Formula',\n  control: 'Formula',\n  icon: 'code'\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { css } from '../common';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { getValue } from '../helpers';\nimport { Context } from '../context';\n\nconst formula = css`\n  padding: 9px 0px;\n`;\n\nexport const FormulaComponent: React.FC<FormComponentProps> = props => {\n  const context = React.useContext(Context);\n  const value = getValue(props, context);\n\n  return (\n    <div className=\"ui input\">\n      <div className={formula}>{value == null ? '#Formula' : value}</div>\n    </div>\n  );\n};\n\nexport const FormulaView: FormComponent = {\n  Component: observer(FormulaComponent),\n  toString: (_owner, props, context) => getValue(props, context)\n};\n","import * as React from 'react';\n\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\nimport { RepeaterView, RepeaterProps } from './repeater_view';\nimport { observer } from 'mobx-react';\nimport { prop, propGroup, boundProp } from '../editor/editor_common';\nimport { DynamicComponent } from '../wrapper';\nimport { TemplateEditor } from './template_editor';\n\nconst templates = [\n  { text: 'Component View', value: 'component' },\n  { text: 'View Template', value: 'view' },\n  { text: 'Edit Template', value: 'edit' },\n  { text: 'Add Template', value: 'add' }\n];\nconst RepeaterComponent = (props: FormComponentProps<RepeaterProps>) => {\n  return (\n    <DynamicComponent {...props}>\n      <TemplateEditor\n        {...props}\n        extra={props.extra}\n        Component={RepeaterView.Component}\n        options={templates}\n      />\n    </DynamicComponent>\n  );\n};\n\nexport const RepeaterEditor: EditorComponent = {\n  Component: observer(RepeaterComponent),\n  title: 'Repeater',\n  control: 'Repeater',\n  icon: 'code',\n  bound: true,\n  valueProvider: 'value',\n  props: propGroup('Repeater', {\n    allowAdd: prop({ type: 'boolean' }),\n    allowEdit: prop({ type: 'boolean' }),\n    value: boundProp(),\n    template: prop({\n      control: 'Select',\n      default: 'component',\n      props: {\n        options: templates\n      }\n    })\n  })\n  // handlers: {\n  //   onAdd: {}\n  // }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport {\n  DataSet,\n  FormComponentProps,\n  FormComponent,\n  FormElement,\n  buildDataSet,\n  BoundProp\n} from '@tomino/dynamic-form';\n\nimport { ErrorView } from '../semantic/error_view';\nimport { css, prop, valueSource, handlerValue, sourceValue } from '../common';\nimport { toJS } from 'mobx';\nimport { handle, getValue, simpleHandle } from '../helpers';\nimport { Context } from '../context';\n\nconst noItems = css`\n  margin: 6px 0px 12px 0px;\n`;\n\nexport const repeaterAddButton = css`\n  margin-top: 12px !important;\n`;\n\ntype RowProps = FormComponentProps<RepeaterProps> & {\n  data: DataSet;\n  index: number;\n  selectedIndex: number;\n  select: (index: number) => void;\n  editorTemplate: FormElement;\n  viewTemplate: FormElement;\n};\n\nclass RepeaterRow extends React.PureComponent<RowProps> {\n  static contextType = Context;\n\n  handlers = {\n    ...this.props.handlers,\n    deleteRow: () => {\n      if (handlerValue(this.props.formElement.props.value)) {\n        handle(\n          this.props.handlers,\n          this.props.formElement.props.onDelete,\n          this.props.owner,\n          this.props,\n          this.context,\n          this.props.data\n        );\n      } else {\n        this.props.owner.removeRowData(\n          sourceValue(this.props.formElement.props.value),\n          this.props.data\n        );\n      }\n    },\n    editRow: () => {\n      this.props.select(this.props.index);\n    }\n  };\n  render() {\n    let template =\n      this.props.index === this.props.selectedIndex\n        ? this.props.editorTemplate\n        : this.props.viewTemplate;\n\n    // we only make clickable props if the view template differs from edit template\n    return this.props.catalogue.createComponent(\n      {\n        ...this.props,\n        handlers: this.handlers,\n        owner: this.props.data\n      },\n      template,\n      this.context\n      // '',\n      // this.props.extra\n    );\n  }\n}\n\ntype AddRowProps = {\n  addTemplate: FormElement;\n  props: FormComponentProps;\n};\n\nconst AddRow = observer(({ addTemplate, props }: AddRowProps) => {\n  const context = React.useContext(Context);\n  const boundSource = valueSource(props.formElement);\n\n  const addDataset = React.useMemo(() => {\n    let schema = props.owner.getSchema(boundSource).originalSchema.items;\n    if (!schema.properties) {\n      schema = { type: 'object', properties: { value: { type: schema.type } } };\n    }\n    return buildDataSet(schema, {});\n  }, [boundSource, props.owner]);\n\n  const handlers = React.useMemo(\n    () => ({\n      ...props.handlers,\n      addRow: () => {\n        const { formElement, owner } = props;\n        if (formElement.props.onAdd) {\n          simpleHandle(props, props.formElement.props.onAdd, context);\n        }\n        if (prop(formElement)) {\n          owner.addRow(valueSource(formElement), toJS(addDataset));\n        }\n      }\n    }),\n    [addDataset, context, props]\n  );\n  return (\n    <div className={repeaterAddButton}>\n      {addTemplate &&\n        props.catalogue.createComponent(\n          { ...props, owner: addDataset, handlers },\n          addTemplate,\n          context\n        )}\n    </div>\n  );\n});\n\nexport type RepeaterProps = {\n  allowEdit: boolean;\n  allowAdd: boolean;\n  value: BoundProp;\n  onDelete: string;\n  onAdd: string;\n};\n\nexport type State = {\n  selectedIndex: number;\n};\n\nclass RepeaterComponent extends React.Component<FormComponentProps<RepeaterProps>, State> {\n  state = { selectedIndex: -1 };\n  addDataset: DataSet;\n\n  handleToggleChange = (_e: React.ChangeEvent<HTMLInputElement>, control: HTMLInputElement) => {\n    // find value\n    this.props.owner.parseValue(prop(this.props.formElement), control.checked);\n  };\n\n  render(): JSX.Element {\n    const { formElement, owner } = this.props;\n    const { allowAdd } = formElement.props;\n    const boundSource = valueSource(formElement);\n    const list: DataSet[] = owner.getValue(boundSource);\n\n    let viewTemplate = formElement.elements.length > 0 && formElement.elements[0];\n    let editorTemplate = formElement.elements.length > 1 && formElement.elements[1];\n    let addTemplate = formElement.elements.length > 2 && formElement.elements[2];\n\n    if (!boundSource) {\n      return <div>Please bind the repeater to an array source</div>;\n    }\n\n    return (\n      <>\n        {list == null || list.length === 0 ? (\n          <div className={noItems}>{`This collection contains no items ...`}</div>\n        ) : (\n          list.map((listItemDataSet: DataSet, i) => (\n            <RepeaterRow\n              index={i}\n              key={i + Date.now()}\n              owner={owner}\n              formElement={formElement}\n              data={listItemDataSet}\n              extra={this.props.extra}\n              handlers={this.props.handlers}\n              readOnly={this.props.readOnly}\n              catalogue={this.props.catalogue}\n              editorTemplate={editorTemplate}\n              viewTemplate={viewTemplate || editorTemplate}\n              selectedIndex={this.state.selectedIndex}\n              select={index => this.setState({ selectedIndex: index })}\n            />\n          ))\n        )}\n        {allowAdd && !this.props.readOnly && (\n          <AddRow addTemplate={addTemplate} addDataset={this.addDataset} props={this.props} />\n        )}\n        <ErrorView owner={owner} source={boundSource} pointing=\"left\" />\n      </>\n    );\n  }\n}\n\nexport const RepeaterView: FormComponent = {\n  Component: observer(RepeaterComponent),\n  toString: (_owner, props, context, catalogue) => {\n    const repeaterList: DataSet[] = getValue(props, context);\n    return repeaterList\n      .map(\n        (l, i) =>\n          `[${i + 1}] ${props.formElement.elements\n            .map(el =>\n              catalogue.components[el.control].toString(\n                l,\n                { ...props, formElement: el },\n                context,\n                catalogue\n              )\n            )\n            .join('\\n    ')}`\n      )\n      .join('\\n\\n');\n  }\n};\n","// import * as jsf from 'json-schema-faker';\nimport { JSONSchema, FormElement, PropMap } from '@tomino/dynamic-form';\n\nimport { JSONSchema7TypeName } from '@tomino/dynamic-form';\nimport { Processor } from '../layouts/drag_drop';\nimport { boundSchema } from './common_schemas';\nimport { Prop } from '@tomino/dynamic-form';\nimport { EditorContextType } from './editor_context';\n// import { formDatasetToJS, schemaDatasetToJS } from '../helpers';\n\n// jsf.extend('faker', () => require('faker'));\n\nexport { Theme } from './themes/common';\n\nexport function randomData(_editorState: DynamicForm.EditorContextType) {\n  // const form = formDatasetToJS(editorState.project.state.selectedForm);\n  // let cleaned = schemaDatasetToJS(editorState.schema, true);\n\n  // const data = jsf.generate(cleaned);\n  // return new FormModel(form, cleaned, data);\n  return {};\n}\n\nfunction assignControl(control: FormElement, schema: JSONSchema) {\n  if (!control.control) {\n    if (schema.type === 'boolean') {\n      control.control = 'Checkbox';\n    } else if (schema.$enum) {\n      control.control = 'Select';\n    }\n  }\n}\n\nexport function root(schema: DynamicForm.SchemaDataSet) {\n  let parent = schema;\n  while (parent.parent != null) {\n    parent = parent.parent as DynamicForm.SchemaDataSet;\n  }\n  return ((parent as unknown) as DynamicForm.ProjectDataSet).schema;\n}\n\nfunction makeLabel(key: string) {\n  let label = key[0].toUpperCase() + key.substring(1);\n  for (let i = label.length - 1; i > 0; i--) {\n    if (label[i].match(/[A-Z]/)) {\n      label = label.substring(0, i) + ' ' + label.substring(i);\n    }\n  }\n  return label;\n}\n\nexport function propGroup(groupName: string, props: PropMap) {\n  for (let key of Object.keys(props)) {\n    props[key].control.group = groupName;\n\n    if (!props[key].control.props) {\n      props[key].control.props = {};\n    }\n    if (props[key].control.props.label == null) {\n      props[key].control.props.label = makeLabel(key);\n    }\n  }\n  return props;\n}\n\ntype PropDefintion = FormElement &\nJSONSchema & { label?: string; display?: 'inline' | 'fullWidth' | 'group' };\n\nexport function tableProp(props: PropDefintion, text: string, extraColumns: FormElement[] = []) {\n  return prop({\n    control: 'Table',\n    props: { text, label: props.label },\n    display: 'group',\n    elements: [\n      {\n        control: 'Input',\n        props: { placeholder: 'Value', value: { source: 'value' }, label: 'Value' }\n      },\n      {\n        control: 'Input',\n        props: { placeholder: 'Text', value: { source: 'text' }, label: 'Text' }\n      },\n      ...extraColumns\n    ],\n    type: 'array',\n    items: {\n      type: 'object',\n      properties: {\n        text: { type: 'string' },\n        value: { type: 'string' },\n        icon: { type: 'string' }\n      }\n    },\n    ...props\n  });\n}\n\nexport function gapProp(propDefinition: PropDefintion) {\n  return prop({\n    control: 'Select',\n    documentation: 'Spacing between cells',\n    group: 'Basic',\n    props: { label: 'Gap' },\n    $enum: [\n      {\n        text: 'None',\n        value: '0px'\n      },\n      {\n        text: 'Tiny',\n        value: '3px'\n      },\n      {\n        text: 'Small',\n        value: '6px'\n      },\n      {\n        text: 'Normal',\n        value: '12px'\n      },\n      {\n        text: 'Big',\n        value: '18px'\n      },\n      {\n        text: 'Huge',\n        value: '24px'\n      }\n    ],\n    type: 'string',\n    ...propDefinition\n  });\n}\n\nexport function boundProp(\n  prop: PropDefintion = {},\n  bindingType: 'ValueSourceHandler' | 'SourceHandler' | 'Handler' = 'ValueSourceHandler',\n  valueType: JSONSchema7TypeName = 'string'\n): { control: FormElement; schema: JSONSchema } {\n  const { items, properties, $enum, ...control } = prop;\n\n  assignControl(control, prop);\n\n  return {\n    control: {\n      ...control,\n      bound: true,\n      control: control.control || 'Input', // type !== 'Handler' ? 'Binding' : 'Select',\n      props: {\n        label: prop.label,\n        ...prop.props,\n        type: bindingType,\n        options: (prop.props && prop.props.options) || { handler: 'datasetSource' }\n      }\n    },\n    schema: { items, $enum, ...boundSchema(valueType, properties) }\n  };\n}\n\nexport function handlerProp(\n  prop: PropDefintion = {}\n): { control: FormElement; schema: JSONSchema } {\n  const { type = 'string', items, properties, $enum, ...control } = prop;\n  return {\n    control: {\n      ...control,\n      control: 'Select',\n      props: { ...control.props, options: { handler: 'optionsHandlers' } }\n    },\n    schema: { type, items, properties, $enum }\n  };\n}\n\nexport function dataProp(prop: PropDefintion = {}): { control: FormElement; schema: JSONSchema } {\n  const { type = 'string', items, properties, $enum, ...control } = prop;\n  return {\n    control: {\n      ...control,\n      control: 'Select',\n      props: { ...control.props, options: { handler: 'datasetSource' } }\n    },\n    schema: { type, items, properties, $enum }\n  };\n}\n\nexport function prop(prop: PropDefintion = {}): Prop {\n  const { type = 'string', items, properties, $enum, ...control } = prop;\n\n  assignControl(control, prop);\n\n  if (prop.label) {\n    control.props = { ...control.props, label: prop.label };\n  }\n\n  return {\n    control,\n    schema: { type, items, properties, $enum }\n  };\n}\n\nexport function arrayProp(\n  label: string,\n  properties: { [index: string]: any } = null,\n  itemType: JSONSchema7TypeName = null\n): { control: FormElement; schema: JSONSchema } {\n  let elements = [];\n  for (let key of Object.keys(properties)) {\n    properties[key] = { type: properties[key] };\n    elements.push({\n      control: 'Input',\n      props: { placeholder: makeLabel(key), value: { source: key }, label: makeLabel(key) }\n    });\n  }\n  return {\n    control: { control: 'Table', elements, props: { text: label, label: '' } },\n    schema: { type: 'array', items: itemType ? { type: itemType } : { type: 'object', properties } }\n  };\n}\n\nlet id = 0;\nexport function generateId() {\n  return (id++).toString();\n}\n\nexport function generateUid() {\n  return Date.now().toString();\n}\n\nexport const processor: Processor<DynamicForm.FormDataSet> = {\n  children: owner => owner.elements,\n  name: owner => {\n    return (owner.props.label && owner.props.label.value) || owner.control;\n  },\n  id: owner => (owner ? owner.uid : '')\n};\n\nexport function calculatePosition(layout: string, e: React.DragEvent) {\n  return layout === 'row' ? calculateVerticalPosition(e) : calculateHorizontalPosition(e);\n}\n\nexport function calculateHorizontalPosition(e: React.DragEvent) {\n  let element = e.currentTarget;\n  let elementLeft = window.scrollX + element.getBoundingClientRect().left;\n  let elementWidth = element.clientWidth;\n\n  return e.pageX - elementLeft < elementWidth / 2 ? 'left' : 'right';\n}\n\nexport function calculateVerticalPosition(e: React.DragEvent) {\n  let element = e.currentTarget;\n  let elementTop = window.scrollX + element.getBoundingClientRect().top;\n  let elementHeight = element.clientHeight;\n  let dragStart = e.pageY;\n\n  // console.log(`${id} ${dragStart} - ${elementTop} < ${elementHeight} | ${dragStart - elementTop}`);\n\n  return dragStart - elementTop < elementHeight / 2 ? 'top' : 'bottom';\n}\n\nexport function createPath(element: FormElement, context: EditorContextType) {\n  let stringPath = element.props.value ? element.props.value.source : null;\n  let control = context.editorCatalogue.components[element.control];\n  let parent = element.parent;\n  while (parent != null && parent.props) {\n    if (\n      control &&\n      control.valueProvider &&\n      parent.props.value &&\n      parent.props.value.source != null\n    ) {\n      stringPath = parent.props.value.source + '.' + stringPath;\n    }\n    parent = parent.parent;\n  }\n  return stringPath.split('.');\n}\n\nfunction findSchemaByPath(path: string[], schema: DynamicForm.SchemaDataSet) {\n  for (let i = 0; i < path.length; i++) {\n    schema =\n      schema.type === 'array'\n        ? schema.items.reference\n          ? schema.items.reference.properties.get(path[i])\n          : schema.items.properties.get(path[i])\n        : schema.reference\n          ? schema.reference.properties.get(path[i])\n          : schema.properties\n            ? schema.properties.get(path[i])\n            : null;\n  }\n  return schema;\n}\n\nexport function findSchema(\n  element: FormElement,\n  schema: DynamicForm.SchemaDataSet,\n  context: EditorContextType\n) {\n  // build the path to the current element and find the active schema\n  if (element && element.props.value && element.props.value.source) {\n    if (element.props.value.source[0] === '/') {\n      return findSchemaByPath(element.props.value.source.substring(1).split('.'), schema);\n    }\n    return findSchemaByPath(createPath(element, context), schema);\n  }\n  return null;\n}\n\nexport function findParentSchema(\n  element: FormElement,\n  schema: DynamicForm.SchemaDataSet,\n  context: EditorContextType\n) {\n  // build the path to the current element and find the active schema\n  if (element && element.props.value && element.props.value.source) {\n    let path = createPath(element, context);\n    path.pop();\n    return findSchemaByPath(path, schema);\n  }\n  return null;\n}\n","import { JSONSchema } from '@tomino/dynamic-form';\nimport { JSONSchema7TypeName } from '@tomino/dynamic-form';\n\nexport const boundSchema = (\n  type: JSONSchema7TypeName = 'string',\n  properties: any = {}\n): JSONSchema => ({\n  type: 'object',\n  properties: {\n    value: { type },\n    handler: { type: 'string' },\n    source: { type: 'string' },\n    validate: { type: 'string' },\n    parse: { type: 'string' },\n    ...properties\n  }\n});\n\nexport const elementSchema: JSONSchema = {\n  type: 'object',\n  properties: {\n    control: { type: 'string' },\n    // css: boundSchema(),\n    // className: boundSchema(),\n    documentation: { type: 'string' },\n    elements: { type: 'array', items: { $ref: '#' } },\n    pages: { type: 'array', items: { $ref: '#' } },\n    forms: { type: 'array', items: { $ref: '#' } },\n    isSelected: { type: 'boolean' },\n    // info: { type: 'string' },\n    // inline: { type: 'boolean' },\n    // label: boundSchema(),\n    props: { type: 'object' },\n    // readOnly: boundSchema(),\n    // renderer: { type: 'string' },\n    // source: { type: 'string' },\n    sourceRef: { type: 'string' }\n    // target: { type: 'string' },\n    // text: { type: 'string' },\n    // type: { type: 'string' },\n    // vertical: { type: 'boolean' },\n\n    // validateHandler: { type: 'string' },\n    // visibleHandler: { type: 'string' },\n    // parseHandler: { type: 'string' },\n    // valueHandler: { type: 'string' },\n    // optionsHandler: { type: 'string' }\n  }\n};\n\nexport const schemaSchema: JSONSchema = {\n  type: 'object',\n  properties: {\n    reference: { type: 'string' },\n    required: { type: 'array', items: { type: 'string' } },\n    expression: { type: 'string' },\n    validationExpression: { type: 'string' },\n    validationGroup: { type: 'string' },\n    share: { type: 'boolean' },\n    type: { type: 'string' },\n    const: { type: 'string' },\n    enum: {\n      type: 'array',\n      items: { type: 'string' }\n    },\n    $id: { type: 'string' },\n    $ref: { type: 'string' },\n    // $schema: { type: 'string'},\n    // $comment: { type: 'string' },\n    $import: { type: 'string' },\n    $enum: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          text: { type: 'string' },\n          value: { type: 'string' },\n          icon: { type: 'string' }\n        }\n      }\n    },\n    faker: { type: 'string' },\n    multipleOf: { type: 'number' },\n    maximum: { type: 'number' },\n    exclusiveMaximum: { type: 'number' },\n    minimum: { type: 'number' },\n    exclusiveMinimum: { type: 'number' },\n    maxLength: { type: 'integer' },\n    minLength: { type: 'integer' },\n    pattern: { type: 'string' },\n    // additionalItems: JSONSchema;\n    items: { type: 'object' },\n    maxItems: { type: 'integer' },\n    minItems: { type: 'integer' },\n    uniqueItems: { type: 'boolean' },\n    // contains: JSONSchema;\n    maxProperties: { type: 'integer' },\n    minProperties: { type: 'integer' },\n    patternProperties: { type: 'string' },\n    properties: { type: 'object' },\n    additionalProperties: { type: 'boolean' },\n    // dependencies: {\n    //     [key: string]: JSONSchema | string[];\n    // };\n    // propertyNames: JSONSchema;\n    errorMessage: { type: 'object' },\n    // if: JSONSchema;\n    // then: JSONSchema;\n    // else: JSONSchema;\n\n    allOf: {\n      type: 'array',\n      items: { $ref: '#' }\n    },\n    anyOf: {\n      type: 'array',\n      items: { $ref: '#' }\n    },\n    oneOf: {\n      type: 'array',\n      items: { $ref: '#' }\n    },\n    not: { $ref: '#' },\n    format: { type: 'string' },\n    // contentMediaType: { type: 'string' },\n    // contentEncoding: { type: 'string' },\n    title: { type: 'string' },\n    description: { type: 'string' },\n    default: { type: 'string' },\n    readOnly: { type: 'boolean' },\n    writeOnly: { type: 'boolean' },\n    definitions: { type: 'object' },\n    imports: { type: 'object' }\n    //examples: JSONSchema7Type;\n  }\n};\n","import React from 'react';\nimport { FormComponentProps, Option } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\nimport { EditorControl, SingleDropCell } from '../editor/layouts_common_editor';\nimport { EditorContext } from '../editor/editor_context';\n\ntype EditorProps = {\n  EmptyCell?: any;\n};\n\ntype Props = FormComponentProps & {\n  Component: React.ComponentType<FormComponentProps & EditorProps>;\n  Template?: React.ComponentType<FormComponentProps & { templateIndex: number }>;\n  options: Option[];\n};\n\nexport const TemplateEditor = observer((props: Props) => {\n  const { Component, Template, options, formElement, catalogue, owner, handlers } = props;\n  const context = React.useContext(EditorContext);\n  const template = formElement.props.template;\n  const index = template ? options.findIndex(o => o.value === template) : 0;\n  return (\n    <>\n      {index === 0 && (\n        <Component\n          formElement={formElement}\n          catalogue={catalogue}\n          owner={owner}\n          handlers={handlers}\n          extra={props.extra}\n          EmptyCell={(props: FormComponentProps) => (\n            <SingleDropCell id=\"0\" {...props} editorState={context} />\n          )}\n        />\n      )}\n      {index > 0 &&\n        (Template ? (\n          <Template {...props} templateIndex={index - 1} />\n        ) : (\n          <EditorControl\n            formElement={\n              formElement.elements.length > index - 1 ? formElement.elements[index - 1] : undefined\n            }\n            editorState={context}\n            props={props}\n            EmptyCell={(props: FormComponentProps) => (\n              <SingleDropCell id=\"0\" {...props} editorState={context} elementIndex={index - 1} />\n            )}\n          />\n        ))}\n    </>\n  );\n});\n","import * as React from 'react';\n\nimport { FormComponentProps, FormElement } from '@tomino/dynamic-form';\n\nimport { createComponents, createComponent1, names } from '../common';\nimport { CellHighlighter } from './form/cell_highlighter';\nimport { GridChildProps, GridProps } from '../layouts/grid_view';\nimport { observer } from 'mobx-react';\nimport { EditorContext, EditorContextType } from './editor_context';\nimport { FormDataSet } from './form_store';\nimport { DropCell } from './form/editor_cell';\nimport { selected } from './layouts_styles';\nimport { editorProps } from './create_control';\nimport { getPropValue } from '../helpers';\nimport { ContextType } from '../context';\n\nexport type LayoutProps = {\n  emptyCell?: string;\n  hideLabel?: boolean;\n  labelOnly?: boolean;\n  highlighter?: CellHighlighter;\n};\n\nconst cell = { control: 'EditorCell', props: { row: 1, column: 1 } };\n\nexport const cellElement: FormElement<GridChildProps> = { props: { width: 1 } };\n\ntype EditorControlProps = {\n  props: FormComponentProps;\n  formElement: FormElement;\n  editorState?: EditorContextType;\n  className?: string;\n  allowInsert?: boolean;\n  EmptyCell?: any;\n};\n\nexport function createComponent(\n  props: FormComponentProps,\n  formElement: FormElement,\n  _context: any,\n  className?: string,\n  allowInsert?: boolean\n): JSX.Element {\n  return (\n    <EditorControl\n      props={props}\n      formElement={formElement}\n      className={className}\n      allowInsert={allowInsert}\n    />\n  );\n}\n\nexport const EditorControl = observer(\n  ({ formElement, props, EmptyCell, className = '' }: EditorControlProps) => {\n    let editorState = React.useContext(EditorContext);\n    let controlProps = editorProps(formElement as FormDataSet, props);\n\n    if (!formElement) {\n      return <EmptyCell {...props} />;\n    }\n\n    return createComponent1(\n      props,\n      formElement,\n      editorState,\n      names(className, { [selected]: (formElement as DynamicForm.FormDataSet).isSelected }),\n      { ...controlProps }\n    );\n  }\n);\n\nEditorControl.displayName = 'EditorControl';\n\ntype FirstDropCellProps = {\n  elementIndex?: number;\n  className?: string;\n  id?: string;\n};\n\nexport const EditorDropCell: React.FC<any> = props => (\n  <div onClick={props.onClick} onMouseOver={props.onMouseOver} onMouseOut={props.onMouseOut}>\n    <SingleDropCell id=\"0\" {...props} />\n  </div>\n);\n\nexport class SingleDropCell extends React.Component<FormComponentProps & FirstDropCellProps> {\n  static contextType = EditorContext;\n\n  context: EditorContextType;\n  highlighter = new CellHighlighter(1, 1);\n\n  drop = () => {\n    const item = this.context.dragItem;\n    const element = this.props.formElement as FormDataSet;\n\n    if (this.props.elementIndex == null) {\n      element.addRow('elements', {\n        label: item.label || '',\n        control: item.name,\n        source: item.source,\n        props: { ...item.props, control: item.name },\n        width: 1,\n        elements: item.defaultChildren\n      });\n    } else {\n      element.replaceRow('elements', this.props.elementIndex, {\n        label: item.label || '',\n        control: item.name,\n        source: item.source,\n        props: { ...item.props, control: item.name },\n        width: 1,\n        elements: item.defaultChildren\n      });\n    }\n\n    this.forceUpdate();\n\n    return false;\n  };\n\n  render() {\n    return (\n      <DropCell\n        className={this.props.className}\n        editorState={this.context}\n        owner={this.props.owner}\n        catalogue={this.props.catalogue}\n        formElement={cell as FormDataSet}\n        parentFormElement={this.props.formElement as FormDataSet}\n        id={this.props.id || '0'}\n        highlighter={this.highlighter}\n        drop={this.drop}\n      />\n    );\n  }\n}\n\nexport function generateEmptyCells(\n  context: ContextType,\n  props: FormComponentProps,\n  element: FormElement<GridProps, GridChildProps>,\n  emptyCell: string\n) {\n  const grid: boolean[][] = [];\n  const rows = getPropValue(props, element, context, 'rows', 1);\n  const columns = getPropValue(props, element, context, 'columns', 1);\n  const elements = element.elements;\n\n  // populate the grid that monitor empty fields\n  for (let e of elements) {\n    const width = getPropValue(props, e, context, 'width', 1);\n    const height = getPropValue(props, e, context, 'height', 1);\n    const row = getPropValue(props, e, context, 'row');\n    const column = getPropValue(props, e, context, 'column');\n\n    for (let i = 1; i <= width; i++) {\n      for (let j = 1; j <= height; j++) {\n        if (!grid[row + j - 1]) {\n          grid[row + j - 1] = [];\n        }\n        grid[row + j - 1][column + i - 1] = true;\n      }\n    }\n  }\n\n  let newElements = [...elements];\n\n  // now add missing elements\n  // each gap is populated by the editor cell\n  for (let row = 1; row <= rows; row++) {\n    for (let column = 1; column <= columns; column++) {\n      if (!grid[row] || !grid[row][column]) {\n        newElements.push({\n          control: emptyCell,\n          props: {\n            row,\n            column\n          }\n        } as any); // TODO: Maybe solve?\n      }\n    }\n  }\n\n  return newElements;\n}\n\nexport const CreateComponents = (props: FormComponentProps) => createComponents(props);\n","import { observable, action } from 'mobx';\n\nexport class CellHighlighter {\n  grid: string[][];\n\n  lastHightLight: number[][] = [];\n\n  constructor(rows: number = 1, columns: number = 1) {\n    this.grid = [];\n    this.lastHightLight = [];\n\n    for (let i = 1; i <= rows; i++) {\n      let row: any = {};\n      for (let j = 1; j <= columns; j++) {\n        row[j] = '';\n      }\n      this.grid[i] = observable(row);\n    }\n  }\n\n  clearHighlight() {\n    for (let cell of this.lastHightLight) {\n      this.grid[cell[0]][cell[1]] = '';\n    }\n    this.lastHightLight = [];\n  }\n\n  highlight(row: number = 1, column: number = 1, className: string = '', width: number = 1) {\n    if ((row as any) === '' || (column as any) === '') {\n      return;\n    }\n    for (let i = 0; i < width; i++) {\n      this.grid[row][column + i] = className;\n      // console.log(`S ${row} ${column} ${className}`);\n      this.lastHightLight.push([row, column + i]);\n    }\n\n    // console.log(`H ${row} ${column} ${className}`);\n    // console.log(toJS(this.grid[1]));\n  }\n\n  highlightMultiple = action((cells: { row: number; column: number; className: string }[]) => {\n    for (let cell of cells) {\n      this.grid[cell.row][cell.column] = cell.className;\n      // console.log(`S ${cell.row} ${cell.column} ${cell.className}`);\n      this.lastHightLight.push([cell.row, cell.column]);\n    }\n\n    // console.log(`H ${row} ${column} ${className}`);\n    // console.log(toJS(this.grid[1]));\n  });\n\n  find(row = 1, column = 1) {\n    return this.grid[row][column];\n  }\n}\n","import React from 'react';\nimport { EditorState } from './editor_state';\n\ndeclare global {\n  namespace DynamicForm {\n    type EditorContextType = EditorState;\n  }\n}\n\nexport type EditorContextType = EditorState;\nexport const EditorContext = React.createContext(new EditorState(null, null));\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n  FormElement,\n  FormComponentCatalogue,\n  EditorComponentCatalogue,\n  EditorComponent,\n  JSONSchema\n} from '@tomino/dynamic-form';\nimport { CellHighlighter } from './form/cell_highlighter';\nimport { observable, computed, action } from 'mobx';\nimport { toJS } from '../common';\nimport { buildDataSet } from '@tomino/dynamic-form';\nimport { debounce } from '@tomino/toolbelt';\nimport { ProjectManager } from './project_manager';\nimport { SchemaRecord } from './editor_types';\nimport { prepareStores } from './form_store';\nimport { schemaSchema } from './common_schemas';\nimport { schemaDatasetToJS } from '../helpers';\nimport { IStorage, IProject } from '../storage/common_storage';\nimport { Theme } from './themes/common';\nimport { white } from './themes/white';\nimport { black } from './themes/black';\n\ntype Builder = (form: FormElement, schema: JSONSchema) => DynamicForm.ProjectDataSet;\n\nlet id = 0;\n\nexport class EditorState {\n  static LAST = 'CORPIX_LAST_PROJECT';\n\n  __id = id++;\n  _dragItem: any;\n\n  get dragItem() {\n    return this._dragItem;\n  }\n  set dragItem(v) {\n    this._dragItem = v;\n  }\n\n  buildProject: Builder;\n  componentCatalogue: FormComponentCatalogue;\n  dataSource: any;\n  editorCatalogue: EditorComponentCatalogue;\n  form: DynamicForm.FormDataSet;\n  handlers: any;\n  highlighter: CellHighlighter;\n  hoverParent: FormElement;\n  leftPanelConfig = [true, true];\n  manager: ProjectManager;\n\n  schema: DynamicForm.SchemaDataSet;\n  state: DynamicForm.StateDataSet;\n  selectedDataSetTab = 'dataset';\n  selectedParent: DynamicForm.FormDataSet;\n  selectedParentSchema: DynamicForm.SchemaDataSet;\n  selectedSourcePath: string = null;\n  tabSelection: { [index: string]: any } = {};\n  types: SchemaRecord[];\n  theme: Theme;\n\n  @observable projectHandlers: string[];\n  @observable help: string = '';\n  @observable dataVersion = 0;\n  @observable dataPreview = '';\n  @observable previewOpen = false;\n  @observable.shallow project: DynamicForm.ProjectDataSet;\n\n  // standard app context\n\n  alert: any = null;\n  authToken: string = null;\n  auth = observable({ user: null });\n  app = {};\n\n  private _cachedProps: { [index: string]: FormElement[] } = {};\n  private _cachedChildProps: { [index: string]: FormElement[] } = {};\n\n  constructor(\n    componentCatalogue: FormComponentCatalogue = null,\n    editorCatalogue: EditorComponentCatalogue = null,\n    handlers: any = {},\n    types: SchemaRecord[] = [],\n    storage: IStorage = null,\n    theme: string = 'dark'\n  ) {\n    this.componentCatalogue = componentCatalogue;\n    this.editorCatalogue = editorCatalogue;\n    this.handlers = handlers;\n    this.types = types;\n    this.theme = theme === 'light' ? white : black;\n\n    this.types = (types || []).concat(\n      {\n        id: 'schema',\n        name: 'Schema',\n        description: 'Schema of the schema definition',\n        schema: schemaSchema\n      }\n      // {\n      //   id: 'form',\n      //   name: 'Form',\n      //   description: 'Schema of the form definition',\n      //   schema: elementSchema(true)\n      // }\n    );\n\n    this.buildProject = prepareStores(this);\n    this.manager = new ProjectManager(storage, this.buildProject);\n\n    if (handlers) {\n      this.projectHandlers = Object.getOwnPropertyNames(handlers).sort();\n    }\n  }\n\n  async loadLastProject() {\n    if (this.manager.storage) {\n      this.project = await this.manager.loadLastProject();\n    }\n    return this.project;\n  }\n\n  @computed get data() {\n    if (!this.dataSource) {\n      this.recomputeData();\n    }\n    // subscribe\n    this.dataVersion;\n\n    return this.dataSource;\n  }\n\n  @action recomputeData() {\n    const data = toJS(this.dataSource);\n    const dataSet = schemaDatasetToJS(this.schema, false);\n\n    try {\n      this.dataSource = this.project ? buildDataSet(dataSet, data, false) : null;\n    } catch (ex) {\n      alert('Data is no longer valid, needed to remove temporary data');\n      this.dataSource = this.project ? buildDataSet(dataSet, {}, false) : null;\n    }\n    this.dataVersion++;\n  }\n\n  recomputeDataBounce = debounce(() => this.recomputeData(), 500);\n\n  highlight(\n    highlighter: CellHighlighter,\n    row: number,\n    column: number,\n    className: string,\n    width: number = 1,\n    clear = true\n  ) {\n    if (clear && this.highlighter) {\n      this.highlighter.clearHighlight();\n    }\n    this.highlighter = highlighter;\n    this.highlighter.highlight(row, column, className, width);\n  }\n\n  highlightMultiple(\n    highlighter: CellHighlighter,\n    cells: { row: number; column: number; className: string }[]\n  ) {\n    if (this.highlighter) {\n      this.highlighter.clearHighlight();\n    }\n    this.highlighter = highlighter;\n    this.highlighter.highlightMultiple(cells);\n  }\n\n  changeTab(from: string, to: string) {\n    this.tabSelection[from] = {\n      schema: this.project.state.selectedSchema,\n      name: this.project.state.selectedSchemaName\n    };\n    if (this.tabSelection[to]) {\n      this.project.state.setSchema(this.tabSelection[to].schema, this.tabSelection[to].name);\n    }\n    this.selectedDataSetTab = to;\n  }\n\n  cachedProps(element: EditorComponent) {\n    if (!element.props) {\n      return [];\n    }\n    if (!this._cachedProps[element.control]) {\n      this._cachedProps[element.control] = Object.keys(element.props).map(\n        key => element.props[key].control\n      );\n    }\n    return this._cachedProps[element.control];\n  }\n\n  cachedChildProps(element: EditorComponent) {\n    if (!element.childProps) {\n      return [];\n    }\n    if (!this._cachedChildProps[element.control]) {\n      this._cachedChildProps[element.control] = Object.keys(element.childProps).map(\n        key => element.childProps[key].control\n      );\n    }\n    return this._cachedChildProps[element.control];\n  }\n\n  load(project: IProject, saveLast = true) {\n    this.project = this.manager.load(project, saveLast);\n  }\n\n  duplicateProject(name: string) {\n    this.project = this.manager.duplicateProject(this.project, name);\n  }\n\n  createProject(name: string) {\n    this.project = this.manager.createProject(name);\n  }\n\n  editorProps: FormElement[] = [\n    {\n      group: 'Editor',\n      control: 'Input',\n      props: { value: { source: 'editorLabel' }, label: 'Label' }\n    },\n    {\n      group: 'Editor',\n      control: 'Checkbox',\n      props: { checked: { source: 'locked' }, label: 'Locked' }\n    }\n  ];\n}\n","import { FormElement, JSONSchema } from '@tomino/dynamic-form';\nimport { ProjectDataSet } from './form_store';\nimport { generateUid } from './editor_common';\nimport { toJS } from '../common';\nimport { formDatasetToJS, schemaDatasetToJS } from '../helpers';\nimport { IProject, IStorage } from '../storage/common_storage';\n\ntype Builder = (form: FormElement, schema: JSONSchema) => ProjectDataSet;\n\nexport class ProjectManager {\n  static LAST = 'CORPIX_LAST_PROJECT';\n\n  storage: IStorage;\n\n  // projectHandlers: string[];\n  private project: IProject;\n\n  private buildProject: Builder;\n\n  // dataSource: any;\n\n  // @computed get data() {\n  //   if (!this.dataSource) {\n  //     this.recomputeData();\n  //   }\n  //   // subscribe\n  //   this.dataVersion;\n\n  //   return this.dataSource;\n  // }\n\n  // @action recomputeData() {\n  //   const data = toJS(this.dataSource);\n  //   const dataSet = datasetToJS(this.currentProject.schema);\n\n  //   try {\n  //     this.dataSource = this.project ? buildDataSet(dataSet, data) : null;\n  //   } catch (ex) {\n  //     alert('Data is no longer valid, needed to remove temporary data');\n  //     this.dataSource = this.project ? buildDataSet(dataSet) : null;\n  //   }\n  //   this.dataVersion++;\n  // }\n\n  constructor(storage: IStorage, builder: Builder) {\n    this.storage = storage;\n    this.buildProject = builder;\n  }\n\n  listProjects(): Promise<IProject[]> {\n    return this.storage.listProjects();\n  }\n\n  loadLastProject(): Promise<ProjectDataSet> {\n    let last = localStorage.getItem(ProjectManager.LAST);\n    if (last) {\n      return this.loadById(last);\n    }\n    return null;\n  }\n\n  async loadById(id: string): Promise<ProjectDataSet> {\n    let project = await this.storage.loadProject(id);\n    return this.load(project);\n  }\n\n  load(project: IProject, saveLast = true) {\n    this.project = project;\n\n    if (saveLast) {\n      localStorage.setItem(ProjectManager.LAST, project.id);\n    }\n\n    return this.buildProject(project.form || {}, project.schema || {});\n  }\n\n  duplicateProject(project: ProjectDataSet, name: string): ProjectDataSet {\n    let newProject = this.saveProject(project, generateUid(), name);\n    return this.load(newProject);\n  }\n\n  saveProject(project: ProjectDataSet, id?: string, name?: string): IProject {\n    const form = toJS(project.form) as any;\n    if (name) {\n      form.name = name;\n    }\n    return this.save({\n      form: formDatasetToJS(form),\n      schema: schemaDatasetToJS(project.schema, false),\n      style: {},\n      id: id || this.project.id,\n      created: this.project.created,\n      modified: Date.now()\n    });\n  }\n\n  save(project: IProject): IProject {\n    this.storage.saveProject(project);\n    this.project = project;\n\n    localStorage.setItem(ProjectManager.LAST, this.project.id);\n\n    return project;\n  }\n\n  deleteProject(id: string) {\n    this.storage.deleteProject(id);\n\n    if (this.project.id === id) {\n      this.project = null;\n      localStorage.removeItem(ProjectManager.LAST);\n    }\n  }\n\n  createProject(name: string): ProjectDataSet {\n    const id = generateUid();\n    return this.load({\n      form: {\n        control: 'Form',\n        props: {\n          label: name,\n          control: 'Form'\n        },\n        elements: []\n      },\n      schema: {\n        type: 'object',\n        properties: {}\n      },\n      style: {},\n      id,\n      created: Date.now(),\n      modified: null\n    });\n  }\n}\n","import {\n  JSONSchema,\n  FormElement,\n  buildStore,\n  setUndoManager,\n  DataSet,\n  EditorComponentCatalogue,\n  Schema,\n  PropMap\n} from '@tomino/dynamic-form';\nimport { UndoManager } from 'mst-middlewares';\nimport { types, IMSTMap, ISimpleType, IAnyModelType } from 'mobx-state-tree';\nimport { JSONSchemaBase } from '@tomino/dynamic-form';\n\nimport { SchemaRecord } from './editor_types';\nimport { root, findParentSchema } from './editor_common';\nimport { elementSchema, schemaSchema, boundSchema } from './common_schemas';\nimport { toJS } from 'mobx';\nimport { schemaDatasetToJS } from '../helpers';\n\nlet undoSet = false;\n\ntype FormElementType = DataSet<FormElement & { id: string }>;\nexport interface FormDataSet<P = any, C = any, CH = any> extends FormElementType {\n  elements: FormDataSet<CH, any>[];\n  pages: FormDataSet[];\n  props: P;\n  controlProps: C;\n  parent: FormDataSet<any, CH>;\n  isSelected: boolean;\n  moveElement(from: FormDataSet, to: FormDataSet, index?: number): void;\n}\n\ntype SchemaElementType = DataSet<JSONSchemaBase>;\nexport interface SchemaDataSet extends SchemaElementType {\n  id: string;\n  required: string[];\n  parent: SchemaDataSet;\n  properties: IMSTMap<ISimpleType<SchemaDataSet>>;\n  items: SchemaDataSet;\n  definitions: IMSTMap<ISimpleType<SchemaDataSet>>;\n  reference?: SchemaDataSet;\n  imports: IMSTMap<ISimpleType<SchemaDataSet>>;\n  oneOf: SchemaDataSet[];\n  allOf: SchemaDataSet[];\n  anyOf: SchemaDataSet[];\n  not: SchemaDataSet;\n  changeType(value: string, prev: string): void;\n}\n\nexport type StateDataSet = {\n  readonly selectedSchema: SchemaDataSet;\n  readonly selectedSchemaName: string;\n  readonly selectedElement: FormDataSet;\n  readonly selectedForm: FormDataSet;\n  readonly selectedLeftPane: LeftPane;\n  setForm(element: FormDataSet): void;\n  setSchema(schema: SchemaDataSet, name?: string): void;\n  setElement(element: FormDataSet, schema: SchemaDataSet): void;\n  deleteActiveSchema(): void;\n  deleteActiveElement(): void;\n  changeLeftPane(view: LeftPane): void;\n};\n\ntype LeftPane = 'pages' | 'data' | 'components' | 'outline' | 'views' | 'all';\n\nexport interface ProjectDataSet {\n  form: FormDataSet;\n  schema: SchemaDataSet;\n  state: StateDataSet;\n\n  renameSchema(name: string, rootSchema: SchemaDataSet): string;\n}\n\n// add advanced properties\n// till i will be able to add a multiple properties\n// TODO: once I will enable type unions in schema this will go\n\n/* =========================================================\n    Utility methods\n   ======================================================== */\n\nfunction mergeProp(\n  schema: JSONSchema,\n  localTypes: { [index: string]: JSONSchema },\n  sharedTypes: SchemaRecord[]\n) {\n  let item = { ...schema };\n  if (item.properties) {\n    item.properties = mergeProperties(item, localTypes, sharedTypes);\n  }\n  if (item.$import) {\n    item.reference = sharedTypes.find(t => t.id === item.$import).id;\n  }\n  if (item.$ref) {\n    item.reference = item.$ref.split('/')[2];\n  }\n  return item;\n}\n\nfunction mergeProperties(\n  schema: JSONSchema,\n  localTypes: { [index: string]: JSONSchema },\n  sharedTypes: SchemaRecord[]\n) {\n  let keys = Object.getOwnPropertyNames(schema.properties);\n  let newProperties: { [index: string]: JSONSchema } = {};\n\n  for (let key of keys) {\n    let prop = mergeProp(schema.properties[key], localTypes, sharedTypes);\n    newProperties[key] = mergeSchema(prop, localTypes, sharedTypes);\n  }\n  return newProperties;\n}\n\nfunction mergeSchema(\n  schema: JSONSchema,\n  localTypes: { [index: string]: JSONSchema },\n  sharedTypes: SchemaRecord[]\n): JSONSchema {\n  let newSchema = { ...schema };\n\n  if (schema.properties) {\n    newSchema.properties = mergeProperties(schema, localTypes, sharedTypes);\n  }\n  if (schema.items) {\n    newSchema.items = mergeProp(newSchema.items, localTypes, sharedTypes);\n  }\n\n  return newSchema;\n}\n\nexport function searchJsonSchema(func: (item: JSONSchema) => any, schema: JSONSchema) {\n  let queue = [schema];\n  while (queue.length) {\n    let current = queue.pop();\n    if (!current.properties) {\n      continue;\n    }\n    for (let key of Object.getOwnPropertyNames(current.properties)) {\n      let property = current.properties[key];\n      if (property.properties) {\n        queue.push(property);\n      }\n      let result = func(property);\n      if (result) {\n        return result;\n      }\n    }\n  }\n}\n\nexport function searchSchema(schema: SchemaDataSet, func: (item: SchemaDataSet) => any) {\n  let queue = [schema];\n  while (queue.length) {\n    let current = queue.pop();\n    if (!current.properties) {\n      continue;\n    }\n    for (let key of Array.from(current.properties.keys())) {\n      let property = current.properties.get(key);\n      if (property.properties) {\n        queue.push(property);\n      }\n      let result = func(property);\n      if (result) {\n        return result;\n      }\n    }\n  }\n}\n\nexport function searchForm(form: FormDataSet, func: (item: FormDataSet) => any) {\n  let queue = [form];\n  while (queue.length) {\n    let current = queue.pop();\n    for (let element of current.elements) {\n      if (element.elements) {\n        queue.push(element);\n      }\n      let result = func(element);\n      if (result) {\n        return result;\n      }\n    }\n  }\n}\n\nfunction assignArrayIds(schema: JSONSchema, schemas: SchemaRecord[]) {\n  let s: any = schema;\n  s.imports = {};\n\n  // import all used schemas\n  // do not import unused schemas\n  searchJsonSchema(property => {\n    if (property.$import) {\n      let item = schemas.find(s => s.id === property.$import);\n      s.imports[item.id] = item.schema;\n    }\n  }, schema);\n}\n\n/* =========================================================\n    Stores\n   ======================================================== */\n\nfunction assignSource(props: any) {\n  Object.getOwnPropertyNames(props).forEach(key => {\n    // 'checked'\n    props[key].control.props = {\n      [props[key].schema.type === 'boolean' ? 'value' : 'value']: { source: key },\n      ...props[key].control.props\n    };\n  });\n}\n\nfunction buildProps(props: PropMap, extraProps = {}) {\n  // assign the default source\n  assignSource(props);\n\n  // build schema\n  let schema = new Schema({\n    type: 'object',\n    properties: { ...buildPropSchema(props), ...extraProps }\n  });\n  return buildStore(schema, {}, false);\n}\n\nfunction buildPropSchema(props: PropMap) {\n  let result: { [index: string]: JSONSchema } = {};\n  for (let key of Object.getOwnPropertyNames(props)) {\n    result[key] = props[key].schema;\n  }\n  return result;\n}\n\ntype IState = {\n  editorCatalogue: EditorComponentCatalogue;\n  selectedParentSchema: SchemaDataSet;\n  selectedSourcePath: string;\n  recomputeDataBounce(): void;\n  types: SchemaRecord[];\n  schema: SchemaDataSet;\n  form: FormDataSet;\n  project: ProjectDataSet;\n  state: StateDataSet;\n};\n\nexport function prepareStores(context: IState) {\n  let id = 0;\n  let date = Date.now();\n\n  function generateId() {\n    if (process.env.NODE_ENV === 'test') {\n      return (id++).toString();\n    }\n    return (date + id++).toString();\n  }\n\n  let objectMap: { [index: string]: any } = {};\n\n  const mapModifiers = (self: any) => ({\n    afterCreate() {\n      objectMap[self.uid] = self;\n    },\n    beforeDestroy() {\n      delete objectMap[self.uid];\n    }\n  });\n\n  const referenceHandlers = {\n    get(identifier: string) {\n      return objectMap[identifier] || null;\n    },\n    // given a user, produce the identifier that should be stored\n    set(value: any /* User */) {\n      return value.uid;\n    }\n  };\n\n  const props: { [index: string]: any } = {};\n  const propNames: { [index: string]: string[] } = {};\n  let childProps: JSONSchema = {\n    properties: {\n      control: { type: 'string' },\n      label: boundSchema(),\n      css: boundSchema(),\n      className: boundSchema(),\n      hidden: boundSchema(),\n      editorLabel: { type: 'string' },\n      locked: { type: 'boolean' }\n    }\n  };\n\n  // find all child props\n  let childPropStore = buildStore(new Schema({ type: 'object', properties: {} }), {}, false);\n  // const emptyStore = buildStore(new Schema({ type: 'object', properties: {} }), {}, false);\n\n  if (context.editorCatalogue) {\n    for (let key of Object.getOwnPropertyNames(context.editorCatalogue.components)) {\n      let c = context.editorCatalogue.components[key];\n      if (c.childProps) {\n        // assign default source\n        assignSource(c.childProps);\n\n        // build schems\n        childProps = { properties: { ...childProps.properties, ...buildPropSchema(c.childProps) } };\n      }\n    }\n\n    // this is a generic store for all element\n    // if element does not define its own prop, it defines at least these props\n    childPropStore = buildStore(\n      new Schema({ type: 'object', properties: childProps.properties }),\n      {},\n      false\n    );\n\n    // build control prop stores\n    for (let key of Object.getOwnPropertyNames(context.editorCatalogue.components)) {\n      let c = context.editorCatalogue.components[key];\n      if (c.props) {\n        props[key] = buildProps(c.props, childProps.properties);\n        propNames[key] = Object.keys(c.props).concat(Object.keys(childProps.properties));\n      }\n    }\n  }\n\n  const elementStore = buildStore(elementSchema, {}, false)\n    .props({\n      uid: types.optional(types.string, generateId),\n      props: types.optional(\n        types.union({\n          dispatcher: snapshot => {\n            if (!snapshot || !snapshot.control) {\n              // console.warn('No control props detected ...');\n              return childPropStore;\n            }\n            return props[snapshot.control] || childPropStore;\n          }\n        }),\n        {}\n      ),\n      // sourceRef: types.maybe(types.reference(types.late((): IAnyModelType => elementStore), referenceHandlers)),\n      elements: types.optional(\n        types.array(\n          types.maybe(types.union(types.late((): IAnyModelType => elementStore), types.null))\n        ),\n        []\n      ),\n      pages: types.optional(\n        types.array(\n          types.maybe(types.union(types.late((): IAnyModelType => elementStore), types.null))\n        ),\n        []\n      ),\n      isSelected: types.optional(types.boolean, false)\n    })\n    .actions(mapModifiers)\n    .actions(() => ({\n      moveElement(from: FormDataSet, to: FormDataSet, index: number) {\n        from.parent.detach(from);\n        // from.detach(from);\n        if (index != null && index >= 0) {\n          to.insertRow('elements', index, toJS(from));\n        } else {\n          to.addRow('elements', toJS(from));\n        }\n      }\n    }));\n\n  // const formStore = buildStore(elementSchema, {}, false, {\n  //   formElement: elementStore as any\n  // });\n  const schemaStore = buildStore(schemaSchema, {}, false)\n    .actions(mapModifiers)\n    .props({\n      uid: types.optional(types.string, generateId),\n      properties: types.maybe(types.map(types.late((): IAnyModelType => schemaStore))),\n      items: types.maybe(types.late((): IAnyModelType => schemaStore)),\n      reference: types.maybe(\n        types.reference(types.late((): IAnyModelType => schemaStore), {\n          get(identifier: string, parent: SchemaDataSet) {\n            let root: SchemaDataSet = (parent.root() as any).schema;\n            if (!root) {\n              return {};\n            }\n            // find in types\n            let key = Array.from(root.definitions.keys()).find(f => f === identifier);\n            if (key) {\n              return root.definitions.get(key);\n            }\n            // find in imports\n            key = Array.from(root.imports.keys()).find(f => f === identifier);\n            if (key) {\n              return root.imports.get(key);\n            }\n            throw new Error('Could not find reference to: ' + identifier);\n          },\n          // given a user, produce the identifier that should be stored\n          set(value: SchemaDataSet /* User */) {\n            let root: SchemaDataSet = (value.root() as any).schema;\n            if (!root) {\n              return '';\n            }\n\n            let key = Array.from(root.definitions.keys()).find(\n              f => root.definitions.get(f) === value\n            );\n            if (key) {\n              return key;\n            }\n            // find in imports\n            key = Array.from(root.imports.keys()).find(f => root.imports.get(f) === value);\n            if (key) {\n              return key;\n            }\n            throw new Error('WTF');\n          }\n        })\n      ),\n      definitions: types.optional(types.map(types.late((): IAnyModelType => schemaStore)), {}),\n      imports: types.optional(types.map(types.late((): IAnyModelType => schemaStore)), {}),\n      anyOf: types.optional(types.array(types.late((): IAnyModelType => schemaStore)), []),\n      allOf: types.optional(types.array(types.late((): IAnyModelType => schemaStore)), []),\n      oneOf: types.optional(types.array(types.late((): IAnyModelType => schemaStore)), []),\n      errorMessage: types.maybe(\n        types.union(types.string, types.map(types.union(types.string, types.map(types.string))))\n      )\n    })\n    .volatile(self => ({\n      name() {\n        let parent: SchemaDataSet = self.parent as any;\n        let key = Array.from(parent.properties.keys()).find(\n          k => parent.properties.get(k) === (self as any)\n        );\n        if (key) {\n          return key;\n        }\n        return 'unknownArgMessage';\n      }\n    }))\n    .actions(self => ({\n      changeType: (value: string, prev: string) => {\n        const owner = (self as unknown) as SchemaDataSet;\n\n        owner.setValue('$ref', null);\n        owner.setValue('$import', null);\n        owner.setValue('reference', undefined);\n        owner.setValue('type', value);\n\n        // atomic types do not need to be handled\n        if (['string', 'number', 'integer', 'boolean'].indexOf(value) >= 0) {\n          owner.setValue('properties', undefined);\n          owner.setValue('items', undefined);\n          return;\n        }\n\n        if (value === 'array' && prev !== 'array') {\n          owner.setValue('items', { type: 'object', properties: {} });\n          return;\n        }\n\n        if (value === 'object') {\n          if (!owner.getValue('properties')) {\n            owner.setValue('properties', {});\n          }\n          return;\n        }\n\n        let elementRoot = root(owner);\n\n        let localTypes = Array.from(elementRoot.definitions.keys());\n        if (localTypes.indexOf(value) >= 0) {\n          owner.setValue('reference', value);\n          owner.setValue('$ref', `#/definitions/${value}`);\n          owner.setValue('type', 'object');\n          return;\n        }\n\n        let imports = Array.from(elementRoot.imports.keys());\n        if (imports.indexOf(value) >= 0) {\n          owner.setValue('reference', value);\n          owner.setValue('$import', value);\n          owner.setValue('type', 'object');\n          return;\n        }\n      }\n    }));\n\n  const stateStore = types\n    .model({\n      selectedForm: types.maybe(types.reference(elementStore, referenceHandlers)),\n      selectedSchema: types.maybe(types.reference(schemaStore, referenceHandlers)),\n      selectedSchemaName: types.maybe(types.string),\n      selectedElement: types.maybe(types.reference(elementStore, referenceHandlers)),\n      selectedLeftPane: types.optional(types.string, localStorage.getItem('CORPIX_LEFT') || 'pages')\n    })\n    .actions(self => ({\n      setForm(element: FormDataSet) {\n        self.selectedSchema = undefined;\n        self.selectedElement = element as any;\n        self.selectedForm = element as any;\n      },\n      setSchema(schema: any, name: string = '') {\n        self.selectedSchema = schema;\n        self.selectedSchemaName = name;\n        self.selectedElement = undefined;\n      },\n      setElement(element: FormDataSet, schema: SchemaDataSet) {\n        self.selectedSchema = undefined;\n        if (self.selectedElement) {\n          self.selectedElement.setValue('isSelected', false);\n        }\n        self.selectedElement = element as any;\n        self.selectedElement.setValue('isSelected', true);\n        context.selectedParentSchema = findParentSchema(\n          element,\n          schema,\n          context as DynamicForm.EditorContextType\n        );\n      },\n      changeLeftPane(view: LeftPane) {\n        localStorage.setItem('CORPIX_LEFT', view);\n        self.selectedLeftPane = view;\n      }\n    }))\n    .actions(self => ({\n      deleteActiveSchema() {\n        self.selectedSchema.parent.detach(self.selectedSchema);\n        self.setSchema(undefined, undefined);\n      },\n      deleteActiveElement() {\n        self.selectedElement.parent.detach(self.selectedElement);\n        self.selectedElement = undefined;\n      }\n    }));\n\n  const projectStore = types\n    .model({\n      form: elementStore,\n      schema: schemaStore,\n      state: stateStore,\n      history: types.optional(UndoManager, {} as any)\n    })\n    .actions(self => ({\n      renameSchema: (name: string, rootSchema: SchemaDataSet) => {\n        // TODO: Represnt schema elements as array\n        let selected = self.state.selectedSchema;\n        let owner = selected.reference ? selected.reference : selected;\n        let parent: SchemaDataSet = owner.parent as any;\n        let sourcePath = context.selectedSourcePath;\n        let titleOnly =\n          !sourcePath || (parent.definitions.has(sourcePath) && rootSchema === parent);\n\n        let current = self.state.selectedSchema;\n\n        // we are modifying a data type name\n        // this is only a title change, not a map\n        if (titleOnly) {\n          current.setValue('title', name);\n          return;\n        }\n\n        if (parent.properties.has(name)) {\n          current.setError('title', 'Element with this name already exists!');\n          return;\n        }\n\n        // rename all references in the form\n\n        let newSourcePathParts = sourcePath.split('.');\n        newSourcePathParts.pop();\n        let newSourcePath = newSourcePathParts.concat(name).join('.');\n\n        context.selectedSourcePath = newSourcePath;\n\n        searchForm(self.form as any, item => {\n          // change props\n          for (let prop of propNames[item.control]) {\n            let p = item.props[prop];\n            if (p && p.source && p.source.indexOf(sourcePath) >= 0) {\n              p.setValue('source', p.source.replace(sourcePath, newSourcePath));\n            }\n          }\n        });\n\n        const data: any = schemaDatasetToJS(current);\n        parent.properties.set(name, data);\n\n        let newValue = parent.properties.get(name);\n        newValue.setValue('title', name);\n        self.state.setSchema(newValue, name);\n\n        parent.detach(current);\n\n        context.recomputeDataBounce();\n      }\n    }));\n\n  return function buildFormEditorDataset(form: FormElement, schema: JSONSchema): ProjectDataSet {\n    // add globals to schema\n\n    assignArrayIds(schema, context.types);\n    // prepare schemas\n\n    if (schema) {\n      schema = mergeSchema(schema, schema.definitions, context.types);\n    } else {\n      schema = {};\n    }\n\n    let s = projectStore.create({ form, schema, state: {} } as any);\n\n    // select the main form by default\n\n    if (form) {\n      const currentForm = localStorage.getItem('CORPIX_SELECTED_FORM');\n      if (currentForm && s.form.pages.some(p => p.uid === currentForm)) {\n        s.state.setForm(s.form.pages.find(p => p.uid === currentForm));\n      } else {\n        s.state.setForm(s.form as any);\n      }\n    }\n\n    context.form = s.form as any;\n    context.schema = s.schema as any;\n    context.project = s as any;\n    context.state = s.state as any;\n\n    if (!undoSet) {\n      setUndoManager(s);\n\n      (global as any).__state = s;\n      undoSet = true;\n    }\n\n    return (s as unknown) as ProjectDataSet;\n  };\n}\n","import { Theme } from './common';\n\nexport const white: Theme = {\n  borderColor: '#777',\n  buttonBackground: '#888',\n  dark: false,\n  dragBackground: '#666',\n  dragBorder: '#999',\n  headerBackground: '#bcbcbc',\n  headerText: '#444',\n  headerColor: '#444',\n  inputBackground: '#E0e0e0',\n  inputBorder: '#BBB',\n  inputColor: '#333',\n  inputLabel: '#666',\n  invalidBackground: '#f48f42',\n  invalidColor: 'black',\n  inverted: false,\n  label: '#e8a4bb',\n  menuColor: '#cdcdcc',\n  meta: '#888',\n  pane: '#efefef',\n  selectedBackground: '#ddd',\n  selectedColor: '#555',\n  sideMenuColor: 'black',\n  textColor: '#303030'\n};\n","import { Theme } from './common';\n\nexport const black: Theme = {\n  dark: true,\n  sideMenuColor: 'black',\n  menuColor: '#303030',\n  selectedColor: '#d0d0d0',\n  selectedBackground: '#555',\n  dragBackground: '#666',\n  dragBorder: '#999',\n  pane: '#272822',\n  headerBackground: '#303030',\n  textColor: '#bfbfbf',\n  meta: '#909090',\n  headerText: '#d0d0d0',\n  inverted: true,\n  inputBackground: '#303030',\n  buttonBackground: '#404040',\n  headerColor: '#ccc',\n  inputColor: '#d0d0d0',\n  inputLabel: '#666',\n  borderColor: 'black',\n  invalidColor: 'white',\n  invalidBackground: '#f48f42',\n  label: '#e8a4bb',\n  inputBorder: '#111'\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport names from 'classnames';\n\nimport { bind } from '../editor_helpers';\nimport { css } from '../../common';\nimport { FormDataSet } from '../form_store';\nimport { GridChildProps } from '../../layouts/grid_view';\nimport { EditorContextType, EditorContext } from '../editor_context';\nimport { calculateHorizontalPosition } from '../editor_common';\nimport { clearAll } from '../../layouts/drag_drop';\nimport { FormComponentProps, DataSet, FormComponentCatalogue } from '@tomino/dynamic-form';\n\nconst cell = css`\n  &.empty {\n    border: dotted 2px #dfdfdf;\n    min-width: 50px;\n    min-height: 20px;\n    height: 100%;\n  }\n  label: cell;\n`;\n\nexport interface DropCellProps {\n  className?: string;\n  formElement: FormDataSet<GridChildProps>;\n  parentFormElement?: FormDataSet;\n  editorState: EditorContextType;\n  owner: DataSet;\n  catalogue: FormComponentCatalogue;\n  style?: any;\n  children: any;\n  mouseOver?: (e: React.MouseEvent, props: FormComponentProps, context: EditorContextType) => void;\n  mouseOut?: () => void;\n  id: string;\n  hover?: (e: React.DragEvent, props: DropCellProps, context?: EditorContextType) => void;\n  drop: (e: React.DragEvent, props: DropCellProps, context?: EditorContextType) => boolean;\n}\n\nexport const DropCell = observer((props: DropCellProps) => {\n  const context = React.useContext(EditorContext);\n  const ref = React.useRef<HTMLDivElement>();\n\n  const onDrag = React.useCallback(\n    (ev: React.DragEvent<HTMLDivElement>) => {\n      context.dragItem = {\n        name: props.formElement.control,\n        row: props.formElement.props.row,\n        column: props.formElement.props.column,\n        element: props.formElement,\n        id: props.id,\n        position: calculateHorizontalPosition(ev)\n      };\n    },\n    [context.dragItem, props.formElement, props.id]\n  );\n\n  const dragEnter = React.useCallback(() => clearAll(), []);\n\n  const dragOver = React.useCallback(\n    (e: React.DragEvent) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      const item = context.dragItem;\n      if (!item) {\n        return;\n      }\n\n      // dataset binding highlight\n      // dragging over the dataset binding\n\n      if (item.dataset) {\n        props.editorState.hoverParent = props.formElement.parent;\n      } else if (props.hover) {\n        props.hover(e, props, context);\n      }\n      ref.current.style.background = '#999';\n    },\n    [context, props]\n  );\n\n  const dragLeave = React.useCallback((e: React.DragEvent) => {\n    e.preventDefault();\n    ref.current.style.background = 'inherit';\n  }, []);\n\n  const drop = React.useCallback(\n    e => {\n      const item = context.dragItem;\n      if (!item) {\n        return;\n      }\n\n      // dataset binding highlight\n      // dragging over the dataset binding\n      if (item.dataset) {\n        bind(props.formElement, item);\n      }\n\n      if (props.drop(e, props, context)) {\n        context.project.state.setElement(item.element, props.editorState.schema);\n        context.selectedParent = props.parentFormElement;\n      }\n\n      ref.current.style.background = 'inherit';\n    },\n    [context, props]\n  );\n\n  const mouseOver = React.useCallback(\n    e => {\n      if (props.mouseOver) {\n        props.mouseOver(e, props, context);\n      }\n    },\n    [context, props]\n  );\n\n  let control = props.formElement.control;\n  return (\n    <div\n      ref={ref}\n      draggable={control !== 'EditorCell'}\n      onMouseOver={mouseOver}\n      onMouseOut={props.mouseOut}\n      onDragStart={onDrag}\n      onDragOver={dragOver}\n      onDragLeave={dragLeave}\n      onDragEnter={dragEnter}\n      onDrop={drop}\n      style={props.style}\n      className={names(\n        cell,\n        'cellContent',\n        control === 'EditorCell' ? 'empty' : '',\n        props.className\n      )}\n      // onClick={this.toggleActive}\n      data-id={props.id}\n    >\n      {props.children || '\\xa0'}\n    </div>\n  );\n});\n","import { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { FormDataSet, SchemaDataSet } from './form_store';\nimport { GridChildProps } from '../layouts/grid_view';\nimport { EditorContextType } from './editor_context';\nimport { bindGetValue } from '../helpers';\n\nexport function findConflict(\n  props: FormComponentProps,\n  context: EditorContextType,\n  cells: FormDataSet<GridChildProps>[],\n  start: number,\n  end: number\n) {\n  const getValue = bindGetValue(props, context);\n  return cells.find(\n    e =>\n      (getValue(e, 'column') >= start && getValue(e, 'column') <= end) ||\n      (getValue(e, 'column') + getValue(e, 'width') - 1 >= start &&\n        getValue(e, 'column') + getValue(e, 'width') - 1 <= end)\n  );\n}\n\nexport function adjustPosition(\n  props: FormComponentProps,\n  context: EditorContextType,\n  where: string,\n  source: FormDataSet<GridChildProps>,\n  target: FormDataSet<GridChildProps>,\n  parent: FormDataSet<GridChildProps>\n) {\n  const getValue = bindGetValue(props, context);\n  if (!parent) {\n    // TODO: fix\n    return getValue(target, 'column');\n  }\n  let dimensions = parent.elements.reduce(\n    (prev, next) => ({\n      rows: prev.rows < next.props.row ? next.props.row : prev.rows,\n      columns: prev.columns < next.props.column ? next.props.column : prev.columns\n    }),\n    { rows: 0, columns: 0 }\n  );\n\n  // adjust from left or right\n  let column =\n    where === 'left'\n      ? getValue(target, 'column')\n      : getValue(target, 'column') - getValue(target, 'width') + 1;\n\n  // if (adjust) {\n  //   source.props.column = position.props.column - source.props.width + 1;\n  // }\n  // adjust to min width\n  column = column < 1 ? 1 : column;\n  // adjust to max width\n  column =\n    column + source.props.width > dimensions.columns\n      ? dimensions.columns - getValue(source, 'width') + 1\n      : column;\n\n  let cells = parent.elements.filter(e => e.props.row === target.props.row && e !== source);\n  // try one adjustment moving the item left or right from the conflict cell\n  let conflict = findConflict(props, context, cells, column, column + source.props.width - 1);\n\n  // TRYING TO SOLVE IT FOR THE USER\n  // if (conflict) {\n  //   column = where === 'left' ? conflict.props.column - source.props.width : conflict.props.column + conflict.props.width;\n  // }\n  // // if it fails again we give up\n  // if (column >= 0) {\n  //   conflict = findConflict(cells, column, column + source.props.width - 1);\n  // }\n\n  if (conflict) {\n    return -1;\n  }\n  return column;\n}\n\nexport function bind(formElement: FormDataSet, item: any) {\n  // we can either drop on existing control\n  // or on an empty cell\n\n  if (formElement.parent) {\n    // find the parent path\n    let parent = formElement.parent;\n    let parentPath = '';\n    while (parent) {\n      if (parent.props.value && parent.props.value.source) {\n        parentPath = parentPath + parent.props.value + '.';\n      }\n      parent = parent.parent;\n    }\n    let path = item.name.replace(parentPath, '');\n    formElement.setValue('source', path);\n    return;\n  }\n\n  // if it is an empty cell, we will guess the control\n\n  const schema: SchemaDataSet = item.schema;\n  item.label = item.name;\n  item.source = item.name;\n\n  if (schema.type === 'boolean') {\n    item.name = 'Checkbox';\n  } else if (schema.type === 'array') {\n    item.name = 'Table';\n  } else if (schema.type === 'number' || schema.type === 'integer') {\n    item.name = 'Input';\n    item.controlProps = { type: 'number' };\n  } else if (schema.type === 'string') {\n    item.name = 'Input';\n  }\n}\n","/* eslint-disable react-hooks/rules-of-hooks */\n\nimport { css } from '../common';\nimport { EditorContextType } from '../editor/editor_context';\n\nexport type Processor<T> = {\n  children: (owner: T) => T[];\n  name: (owner: T) => string;\n  id: (owner: T) => string;\n  disableDrop?: (owner: T, schema: any) => boolean;\n};\n\nconst dropZone = `\n  opacity: 0.3;\n  min-width: 100px;\n  display: block;\n  position: absolute;\n  overflow: hidden;\n  white-space: nowrap;\n  text-wrap: ellipsis;\n  font-size: 10px;\n`;\n\nconst horizontalDropZone = `\n  ${dropZone}\n  display: flex !important;\n  align-items: center !important;\n  height: 100%;\n  top: 0px;\n  \n`;\n\nconst placeholder = (size: number, dropStyle: any) => css`\n  transition: margin 0.2s cubic-bezier(0.215, 0.61, 0.355, 1) !important;\n  position: relative;\n  /* padding-top: 5px; */\n  /* padding-bottom: 5px; */\n\n  &.onMiddle {\n    outline: dashed 2px #ccc;\n  }\n\n  &.onBottom {\n    margin-bottom: ${size}px !important;\n    ::after {\n      ${dropZone}\n      ${dropStyle}\n      content: attr(data-after);\n      bottom: -${size - (size - 20) / 2}px;\n    }\n  }\n\n  &.onTop {\n    margin-top: ${size}px !important;\n    ::before {\n      ${dropZone}\n      ${dropStyle}\n      content: attr(data-before);\n      top: -${size - (size - 20) / 2}px;\n    }\n  }\n\n  &.onRight {\n    margin-right: 110px !important;\n    ::after {\n      ${horizontalDropZone}\n      ${dropStyle}\n      content: attr(data-after);\n      right: -105px;\n    }\n  }\n\n  &.onLeft {\n    margin-left: 110px !important;\n    ::before {\n      ${horizontalDropZone}\n      ${dropStyle}\n      content: attr(data-before);\n      left: -105px;\n    }\n  }\n  label: placeholder;\n`;\n\nfunction findVerticalIndex(e: React.DragEvent, rects: HTMLDivElement[], i: number) {\n  return (\n    rects[i].getBoundingClientRect().top + window.scrollY < e.pageY &&\n    (!rects[i + 1] || rects[i + 1].getBoundingClientRect().top + window.scrollY > e.pageY)\n  );\n}\n\nfunction findHorizontalIndex(e: React.DragEvent, rects: HTMLDivElement[], i: number) {\n  let rect = rects[i].getBoundingClientRect();\n\n  return (\n    rect.top + window.scrollY < e.pageY &&\n    rect.top + rect.height + window.scrollY > e.pageY &&\n    rect.left + window.scrollX < e.pageX &&\n    (!rects[i + 1] ||\n      rect.left + rect.width + window.scrollX > e.pageX ||\n      rects[i + 1].getBoundingClientRect().left + window.scrollX > e.pageX)\n  );\n}\n\nfunction findVerticalPosition(e: React.DragEvent, rect: ClientRect, previousEnd: number) {\n  let offset = 8; // rect.height > 40 ? 20 : rect.height / 2;\n  // return rect.top + window.scrollY + offset > e.pageY\n  //   ? 'top'\n  //   : rect.top + window.scrollY + rect.height - offset < e.pageY\n  //     ? 'bottom'\n  //     : 'middle';\n\n  return rect.bottom + window.scrollY < e.pageY\n    ? 'bottom'\n    : previousEnd + window.scrollY + offset > e.pageY\n      ? 'top'\n      : 'middle';\n}\n\nfunction findHorizontalPosition(e: React.DragEvent, rect: ClientRect) {\n  let offset = rect.width > 100 ? 20 : rect.width / 2;\n  return rect.left + window.scrollX + offset > e.pageX\n    ? 'top'\n    : rect.left + window.scrollX + rect.width - offset < e.pageX\n      ? 'bottom'\n      : 'middle';\n}\n\n// function getRandomColor() {\n//   var letters = '0123456789ABCDEF';\n//   var color = '#';\n//   for (var i = 0; i < 6; i++) {\n//     color += letters[Math.floor(Math.random() * 16)];\n//   }\n//   return color;\n// }\n\nlet config: {\n  [index: string]: {\n    currentStacks: string[];\n    active: HTMLDivElement[];\n    padMap: HTMLDivElement[];\n    drops: { position: string; index: number };\n  };\n} = {};\n\nfunction clear(id: string) {\n  for (let el of config[id].active) {\n    el.classList.remove('onBottom', 'onTop', 'onLeft', 'onRight', 'onMiddle');\n  }\n  config[id].active = [];\n}\n\nfunction cleanup(id: string, context: EditorContextType, e?: any, endDragHandler?: any) {\n  config[id].currentStacks = [];\n\n  for (let pad of config[id].padMap) {\n    pad.style.paddingBottom = null;\n    pad.style.paddingTop = null;\n  }\n  config[id].padMap = [];\n\n  if (endDragHandler) {\n    endDragHandler(e);\n  }\n\n  if (context) {\n    context.dragItem = null;\n  }\n}\n\nexport function clearAll(context?: EditorContextType) {\n  for (let key of Object.keys(config)) {\n    clear(key);\n    cleanup(key, context);\n  }\n}\n\nexport class DragDrop<T> {\n  startClass: string;\n  endClass: string;\n  findIndex: (e: React.DragEvent, rects: HTMLDivElement[], i: number) => boolean;\n  findPosition: (\n    e: React.DragEvent,\n    rect: ClientRect,\n    previousEnd: number,\n    nextStart: number\n  ) => string;\n  placeholderClass: string;\n  paddingElement: 'paddingBottom' | 'paddingRight';\n  allowParenting: boolean;\n\n  context: EditorContextType;\n  owner: T;\n  processor: Processor<T>;\n  uid: string;\n  dropHandler: (to: number, position?: string) => void;\n  endDragHandler: (e?: React.DragEvent) => void;\n\n  add = true;\n  initialised = false;\n\n  constructor(\n    layout: 'row' | 'column',\n    owner: T,\n    processor: Processor<T>,\n    dropStyle: string,\n    uid = 'global',\n    dropHandler: (to: number, position?: string) => void,\n    endDragHandler: (e?: React.DragEvent) => void,\n    allowParenting: boolean,\n    height = 40,\n    context: EditorContextType = null\n  ) {\n    this.startClass = layout === 'row' ? 'onLeft' : 'onTop';\n    this.endClass = layout === 'row' ? 'onRight' : 'onBottom';\n    this.findIndex = layout === 'row' ? findHorizontalIndex : findVerticalIndex;\n    this.findPosition = layout === 'row' ? findHorizontalPosition : findVerticalPosition;\n    this.paddingElement = layout === 'row' ? 'paddingRight' : 'paddingBottom';\n    this.processor = processor;\n    this.owner = owner;\n    this.uid = uid;\n    this.dropHandler = dropHandler;\n    this.endDragHandler = endDragHandler;\n    this.context = context;\n    this.allowParenting = allowParenting;\n\n    this.placeholderClass = placeholder(height, dropStyle);\n\n    if (!config[this.uid]) {\n      config[this.uid] = {\n        currentStacks: [],\n        active: [],\n        drops: null,\n        padMap: []\n      };\n    }\n  }\n\n  get config() {\n    return config[this.uid];\n  }\n\n  init = (container: HTMLDivElement) => {\n    let items = this.processor.children(this.owner);\n    let nodes = Array.from(container.childNodes) as HTMLDivElement[];\n    let id = this.processor.id(this.owner);\n\n    container.setAttribute('data-drag', id);\n\n    //container.style.backgroundColor = getRandomColor();\n\n    for (let i = 0; i < items.length; i++) {\n      let element = nodes[i];\n      let item = items[i];\n\n      if (!item || !element) {\n        continue;\n      }\n\n      let id = this.processor.id(item);\n\n      element.setAttribute('data-drag', id);\n      //element.style.backgroundColor = getRandomColor();\n      if (!element.classList.contains(this.placeholderClass)) {\n        element.classList.add(this.placeholderClass);\n      }\n\n      let name = this.processor.name(item);\n      element.setAttribute('data-after', '🔰 After ' + name);\n      element.setAttribute('data-before', '🔰 Before ' + name);\n    }\n  };\n\n  findRect(e: React.DragEvent, elements: HTMLDivElement[]) {\n    for (let i = 0; i < elements.length; i++) {\n      // all other element\n      if (this.findIndex(e, elements, i)) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  clear() {\n    // console.log('Cleaning: ' + this.uid);\n    clear(this.uid);\n  }\n\n  dragEnd(e: React.DragEvent) {\n    // console.log(`Leave: ${index}: ${position}`);\n    this.add = true;\n    this.clear();\n    cleanup(this.uid, this.context, e, this.endDragHandler);\n  }\n\n  onDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n    e.preventDefault();\n\n    if (this.processor.disableDrop && this.processor.disableDrop(this.owner, this.context)) {\n      return;\n    }\n\n    // we will incrementally be expanding elements for a better dragover experience\n    if (this.config.padMap.indexOf(e.currentTarget) === -1) {\n      e.currentTarget.style[this.paddingElement] = '5px';\n      this.config.padMap.push(e.currentTarget);\n    }\n\n    if (!this.initialised) {\n      this.init(e.currentTarget as HTMLDivElement);\n      this.initialised = true;\n    }\n\n    let id = e.currentTarget.getAttribute('data-drag');\n\n    // we start adding to the stack when signalled\n    // stack is cleared when a DragLeave event is detected\n    // in this moment it wil repopulate with current elements\n    if (this.add) {\n      this.config.currentStacks.push(id);\n      this.add = false;\n    }\n\n    let elements = ((e.currentTarget.childNodes as any) || []) as HTMLDivElement[];\n    if (!elements || elements.length === 0) {\n      return;\n    }\n\n    // we only process current element, if event bubbles up we will avoid it\n    // we use stack for this purpose where the current control is on the very bottom\n    const currentIndex = this.config.currentStacks.findIndex(s => s === id);\n    if (currentIndex != 0) {\n      return;\n    }\n\n    // find the index of the current item\n    const index = this.findRect(e, elements);\n    if (index === -1) {\n      return;\n    }\n\n    let element = elements[index];\n    // we may skip all elements that dave no-drop attribute\n    if (!element || element.getAttribute('data-no-drop')) {\n      return;\n    }\n\n    // decide behaviour based on position\n    // position is either the top | bottom | middle part of the drag over element\n    let previous = element.previousSibling as HTMLDivElement;\n    let next = element.nextSibling as HTMLDivElement;\n    let previousEnd =\n      (previous\n        ? previous.getBoundingClientRect().bottom\n        : element.parentElement.getBoundingClientRect().top) + window.scrollY;\n    let nextStart =\n      (next\n        ? next.getBoundingClientRect().top\n        : element.parentElement.getBoundingClientRect().bottom) + window.scrollY;\n\n    let pos = this.findPosition(e, element.getBoundingClientRect(), previousEnd, nextStart);\n\n    // when we are in the middle of the element we remove classes\n    // if (pos === 'middle') {\n    //   console.log('Clearing middle...');\n\n    //   this.clear();\n    //   return;\n    // }\n\n    // console.log(pos);\n\n    let className: string;\n    if (index === 0 && pos === 'top') {\n      className = this.startClass;\n    } else if (pos === 'bottom') {\n      className = this.endClass;\n    } else if (index > 0 && pos === 'top') {\n      className = this.endClass;\n      element = element.previousSibling as HTMLDivElement;\n    } else if (this.allowParenting && pos === 'middle') {\n      className = 'onMiddle';\n    }\n\n    if (element.classList.contains(className)) {\n      return;\n    }\n\n    // console.log('Showing: ' + id + ' - ' + index + ':' + pos);\n    this.config.drops = { index, position: pos };\n\n    // the current element changed so we need to clear all previous\n    this.clear();\n\n    element.classList.add(className);\n    this.config.active.push(element);\n  };\n\n  onDragEnd = (e: React.DragEvent) => {\n    // console.log('Drag end ...');\n    this.dragEnd(e);\n  };\n\n  onDragLeave = () => {\n    this.config.currentStacks = [];\n    this.add = true;\n  };\n\n  onDrop = (e: React.DragEvent) => {\n    let id = e.currentTarget.getAttribute('data-drag');\n    let currentIndex = this.config.currentStacks.findIndex(s => s === id);\n    if (currentIndex === 0) {\n      // console.log(\n      //   `Drop ${currentIndex} - ${this.config.drops.index} - ${this.config.drops.position}`\n      // );\n\n      if (this.dropHandler) {\n        this.initialised = false;\n        this.dropHandler(\n          this.config.drops.index + (this.config.drops.position === 'bottom' ? 1 : 0),\n          this.config.drops.position\n        );\n      }\n      this.dragEnd(e);\n    }\n  };\n\n  props() {\n    return {\n      onDragOver: this.onDragOver,\n      onDragEnd: this.onDragEnd,\n      onDrop: this.onDrop,\n      onDragLeave: this.onDragLeave\n    };\n  }\n}\n","import { css, Theme } from '../common';\n\nexport const selected = css`\n  /* name:selected */\n  outline: dashed 3px lightcoral !important;\n  outline-offset: -1px !important;\n  label: selected;\n`;\n\nexport const borderHandler = css`\n  width: 5px;\n  height: 100%;\n  flex: 1 5px;\n  cursor: ew-resize;\n`;\n\nexport const cellContent = css`\n  flex: 1 100%;\n`;\n\nexport const cellStyle = css`\n  display: flex;\n  width: 100%;\n`;\n\nexport const containerWrapper = css`\n  width: 100%;\n  position: relative;\n  label: containerWrapper;\n`;\n\nexport const containerLabelBase = css`\n  position: absolute;\n  font-weight: bold;\n  z-index: 10;\n  padding: 3px 12px;\n  border-bottom-left-radius: 3px;\n  border-bottom-right-radius: 3px;\n  opacity: 0.8;\n  display: block;\n  white-space: nowrap;\n  label: containerLabel;\n`;\n\nexport const containerLabelRight = css`\n  ${containerLabelBase}\n  border-radius: 3px;\n  right: 3px;\n  bottom: 3px;\n\n  label: containerLabelRight;\n`;\n\nexport const containerLabelLeft = css`\n  ${containerLabelBase}\n  position: inherit;\n  display: block;\n  border-radius: 0px;\n  margin-bottom: 6px;\n  label: containerLabelLeft;\n`;\n\nexport const containerBorder = (theme: Theme) => css`\n  .on {\n    outline: dotted 2px ${theme.label};\n    outline-offset: -1px;\n    border-radius: 3px;\n  }\n  label: containerBorder;\n`;\n\nconst hover = css`\n  background-color: grey;\n  label: hover;\n  transition: padding 0.3s;\n`;\n\nexport const caret = css`\n  width: 10px;\n  margin-right: 6px;\n  opacity: 0.7;\n  font-size: 12px;\n`;\n\nexport const hoverStates: { [index: string]: any } = {\n  hoverDataset: css`\n    ${hover}\n    opacity: 0.5;\n  `,\n  off: css`\n    background-color: transparent;\n    label: off;\n  `,\n  hover,\n  error: css`\n    background-color: #ff9999;\n    label: error;\n  `,\n  leftHover: css`\n    ${hover};\n    background-color: white;\n    padding-left: 15px;\n    label: hoverLeft;\n  `,\n  rightHover: css`\n    ${hover};\n    background-color: white;\n    padding-right: 15px;\n    label: hoverRight;\n  `,\n  topHover: css`\n    ${hover};\n    background-color: white;\n    padding-top: 10px;\n    label: hoverTop;\n  `,\n  bottomHover: css`\n    ${hover};\n    background-color: white;\n    padding-bottom: 10px;\n    label: hoverBottom;\n  `\n};\n","/* eslint-disable react-hooks/rules-of-hooks */\n\nimport React from 'react';\n\nimport { css } from '../common';\nimport { EditorContext } from './editor_context';\nimport { FormDataSet } from './form_store';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nconst label = css`\n  position: absolute;\n  z-index: 100;\n  background: salmon;\n  padding: 3px;\n  border-radius: 3px;\n  white-space: nowrap;\n  overflow: hidden;\n  color: white;\n  transition: width 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);\n\n  span {\n    padding: 0px 3px;\n    cursor: pointer;\n  }\n\n  label: label;\n`;\n\nconst overStyle = css`\n  outline: dotted 2px;\n  outline-color: transparent;\n  transition: outline-color 0.3s;\n  .on {\n    outline: dotted 2px;\n    outline-color: #aaa !important;\n  }\n\n  /* outline-offset: -3px; */\n  /* background-color: pink !important; */\n  label: over;\n`;\n\nlet controls: any[] = [];\nlet elem: HTMLDivElement;\nlet timer: any = null;\nlet out = true;\n\nfunction startTimer() {\n  clearTimeout(timer);\n  timer = setTimeout(() => {\n    if (!elem) {\n      return;\n    }\n    elem.style.left = '-1000px';\n    elem.style.top = '-1000px';\n  }, 1000);\n}\n\nfunction showLabel(currentTarget: HTMLElement) {\n  // console.log(index + ' over: ' + element.control);\n  clearTimeout(timer);\n  if (!elem) {\n    elem = document.createElement('div');\n    elem.className = label;\n    document.body.appendChild(elem);\n  }\n  let bb = currentTarget.getBoundingClientRect();\n  elem.onmouseover = () => {\n    clearTimeout(timer);\n  };\n  elem.onmouseout = () => startTimer();\n\n  let left = bb.left + window.scrollX;\n  let top = bb.top + bb.height + window.scrollY;\n\n  while (elem.firstChild) {\n    elem.removeChild(elem.firstChild);\n  }\n\n  elem.style.left = left + 'px';\n  elem.style.top = top + 'px';\n}\n\nexport function editorProps(element: FormDataSet, props: FormComponentProps) {\n  const context = React.useContext(EditorContext);\n  const ele = element;\n  // const [over, setOver] = React.useState(false);\n  const onClick = React.useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation();\n      context.state.setElement(element, context.schema);\n    },\n    [context.schema, context.state, element]\n  );\n\n  const onMouseOver = React.useCallback(\n    (e: React.ChangeEvent<HTMLDivElement>) => {\n      e.stopPropagation();\n      e.preventDefault();\n\n      let el = ele;\n      // if (!e.target.getAttribute('data-editor-id')) {\n      //   return;\n      // }\n      // console.log('Over: ' + (ele && ele.control) + e.currentTarget.getAttribute('data-control'));\n\n      if (controls.length > 0) {\n        return;\n      }\n\n      // we detect \"invisible\" or \"provider\" elements\n      // TODO: revisit\n      while (el.elements && el.elements.length && el.elements[0]) {\n        let control = context.editorCatalogue.components[el.elements[0].control];\n        if (control && control.provider) {\n          el = el.elements[0];\n        } else {\n          break;\n        }\n      }\n\n      while (el != null && el.control) {\n        let current = el;\n        controls.push(element);\n\n        // let index = e.handled || 0;\n        // e.handled = index + 1;\n        if (out) {\n          showLabel(e.currentTarget);\n          if (!e.currentTarget.classList.contains(overStyle)) {\n            e.currentTarget.classList.add(overStyle);\n          }\n          e.currentTarget.classList.add('on');\n          out = false;\n        }\n\n        // console.log(\n        //   `${e.currentTarget === e.target} C: ${e.currentTarget.getAttribute(\n        //     'data-editor-id'\n        //   )} T: ${e.target.getAttribute('data-editor-id')}`\n        // );\n\n        let child = document.createElement('span');\n        child.onclick = ((e: React.MouseEvent<HTMLDivElement>) => {\n          e.stopPropagation();\n          context.state.setElement(current, context.schema);\n        }) as any;\n        child.innerHTML = el.control;\n\n        if (elem && elem.childNodes.length === 1) {\n          let expand = document.createElement('span');\n          expand.onclick = () => {\n            elem.style.width = elem.getAttribute('data-full-width') + 'px';\n          };\n          expand.style.padding = '0px 6px 0px 3px';\n          expand.innerHTML = ' \\u276F ';\n          elem.appendChild(expand);\n        } else if (elem && elem.childNodes.length > 1) {\n          elem.appendChild(document.createTextNode(' \\u276F '));\n        }\n        if (elem) {\n          elem.appendChild(child);\n\n          // calculate hide\n          elem.style.width = null;\n          if (elem.childNodes.length === 1) {\n            elem.setAttribute('data-start-width', elem.getBoundingClientRect().width.toString());\n          } else {\n            elem.setAttribute('data-full-width', elem.getBoundingClientRect().width.toString());\n            elem.style.width = parseInt(elem.getAttribute('data-start-width')) + 16 + 'px';\n          }\n        }\n        el = el.parent;\n      }\n    },\n    [context.editorCatalogue.components, context.schema, context.state, ele, element]\n  );\n\n  const onMouseOut = React.useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n    out = true;\n    controls = [];\n    e.currentTarget.classList.remove('on');\n    // e.currentTarget.classList.remove(overStyle);\n    startTimer();\n  }, []);\n\n  const newProps = React.useMemo(\n    () => ({\n      ...props.extra,\n      onClick,\n      onMouseOver,\n      onMouseOut\n    }),\n    [onClick, onMouseOut, onMouseOver, props.extra]\n  );\n\n  if (!element || element.uid == null) {\n    return undefined;\n  }\n\n  return newProps;\n}\n","import * as React from 'react';\n\nimport { ImageProps, Link, TextView, TextProps, ImageView, LinkSelectorView } from './text_view';\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\nimport { propGroup, prop, boundProp } from '../editor/editor_common';\nimport { getValue } from '../helpers';\nimport { Context } from '../context';\nimport { DynamicComponent } from '../wrapper';\n\n/* =========================================================\n    Text\n   ======================================================== */\n\nconst TextEditorComponent: React.FC<FormComponentProps<TextProps>> = observer(props => {\n  const context = React.useContext(Context);\n  if (!getValue(props, context)) {\n    return <DynamicComponent {...props}>[Text]</DynamicComponent>;\n  }\n  return <TextView.Component {...props} />;\n});\n\nexport const TextEditor: EditorComponent = {\n  Component: observer(TextEditorComponent),\n  title: 'Text',\n  control: 'Text',\n  icon: 'font',\n  props: propGroup('Text', {\n    value: boundProp({\n      props: { label: '', display: 'padded' },\n      control: 'Textarea'\n    })\n  })\n};\n\n/* =========================================================\n    IMAGE\n   ======================================================== */\n\nconst ImageEditorComponent = observer((props: FormComponentProps<ImageProps>) => {\n  let context = React.useContext(Context);\n  let src = getValue(props, context, 'src');\n  if (!src) {\n    return <DynamicComponent {...props}>[Image]</DynamicComponent>;\n  }\n  return <ImageView.Component {...props} />;\n});\n\nImageEditorComponent.displayName = 'ImageEditor';\n\nexport const ImageEditor: EditorComponent = {\n  Component: observer(ImageEditorComponent),\n  title: 'Image',\n  control: 'Image',\n  icon: 'image outline',\n  props: propGroup('Image', {\n    alt: boundProp({\n      props: { label: 'Alternative Text' }\n    }),\n    src: boundProp(),\n    imageWidth: boundProp(),\n    imageHeight: boundProp()\n  })\n};\n\n/* =========================================================\n    Link\n   ======================================================== */\n\nexport const LinkEditor: EditorComponent = {\n  Component: observer(Link),\n  title: 'Link',\n  control: 'Link',\n  icon: 'anchor',\n  props: propGroup('Link', {\n    url: {\n      control: {\n        props: { label: 'Url' },\n        documentation:\n          'You can interpolate values using \"${}\" notation. For example \"This is my ${name}\", where <i>name</i> is a value from the dataset.'\n      },\n      schema: { type: 'string' }\n    },\n    text: {\n      control: {\n        props: { label: 'Text' },\n        documentation:\n          'You can interpolate values using \"${}\" notation. For example \"This is my ${name}\", where <i>name</i> is a value from the dataset.'\n      },\n      schema: { type: 'string' }\n    }\n  })\n};\n\n/* =========================================================\n    Link Selector\n   ======================================================== */\n\nexport const LinkSelectorEditor: EditorComponent = {\n  Component: LinkSelectorView.Component,\n  title: 'Selector',\n  control: 'LinkSelector',\n  icon: 'anchor',\n  props: {\n    ...propGroup('Selector', {\n      text: prop({ control: 'Textarea' }),\n      source: boundProp({\n        documentation:\n          'This value is stored to the target. You do not have to specify this and use \"source\", where the value from \"source\" will be stored in the \"target\"'\n      }),\n      target: boundProp({\n        documentation: 'Dataset path to store the value'\n      })\n    })\n  }\n};\n","import * as React from 'react';\nimport { FormComponentProps, FormComponent, BoundProp } from '@tomino/dynamic-form';\nimport { css, pointer, tryInterpolate, getValue, DynamicControl, sourceValue } from '../common';\nimport { observer } from 'mobx-react';\nimport { Context } from '../context';\nimport { EditorContext } from '../editor/editor_context';\n\nconst formText = css`\n  margin-top: 20px;\n  label: formText;\n`;\n\n/* =========================================================\n    Text\n   ======================================================== */\n\nexport type TextProps = {\n  value: string;\n  text: string;\n  inline: boolean;\n};\n\nexport const TextComponent: React.FC<FormComponentProps<TextProps>> = props => {\n  const context = React.useContext(EditorContext);\n  const text = getValue(props, context, 'value');\n  const inline = getValue(props, context, 'inline');\n\n  let parsedText = '';\n  try {\n    parsedText = tryInterpolate(text, props.owner);\n  } catch (ex) {\n    parsedText = '<b style=\"color: red\">Error: </b>' + ex.message;\n  }\n  return (\n    <DynamicControl\n      {...props}\n      styleName={inline ? formText : ''}\n      dangerouslySetInnerHTML={{ __html: parsedText }}\n    />\n  );\n};\n\nexport const TextView: FormComponent<TextProps> = {\n  Component: TextComponent,\n  toString: f => f.props.text\n};\n\n/* =========================================================\n    Image\n   ======================================================== */\n\nexport type ImageProps = {\n  text?: string;\n  src?: string;\n  imageWidth?: string;\n  imageHeight?: string;\n};\n\nconst imageProps = ['alt', 'src'];\n\nexport const Image: React.FC<FormComponentProps<ImageProps>> = props => {\n  const context = React.useContext(Context);\n  return (\n    <DynamicControl\n      {...props}\n      controlProps={imageProps}\n      control=\"img\"\n      style={{\n        width: getValue(props, context, 'imageWidth'),\n        height: getValue(props, context, 'imageHeight')\n      }}\n    />\n  );\n};\n\nImage.displayName = 'Image';\n\nexport const ImageView: FormComponent<ImageProps> = {\n  Component: Image,\n  toString: formElement => formElement.props.url\n};\n\n/* =========================================================\n    LINK\n   ======================================================== */\n\nexport type LinkProps = {\n  text: string;\n  url: string;\n};\n\nexport const Link: React.FC<FormComponentProps<LinkProps>> = props => {\n  const {\n    owner,\n    formElement: {\n      props: { text, url }\n    }\n  } = props;\n  return (\n    <DynamicControl {...props} control=\"a\" href={tryInterpolate(url, owner)}>\n      {tryInterpolate(text, owner) || '[Link]'}\n    </DynamicControl>\n  );\n};\n\nexport const LinkView: FormComponent<LinkProps> = {\n  Component: Link,\n  toString: (owner, { formElement }) => {\n    return `[${formElement.props.url}] ${tryInterpolate(formElement.props.url, owner)}`;\n  }\n};\n\n/* =========================================================\n    LINK SELECTOR\n   ======================================================== */\n\nexport type LinkSelectorProps = {\n  text: string;\n  target: BoundProp;\n  source: BoundProp;\n};\n\nexport const LinkSelectorComponent: React.FC<FormComponentProps<LinkSelectorProps>> = props => {\n  const { formElement, owner } = props;\n  const { text, target } = formElement.props;\n  const context = React.useContext(Context);\n  const onClick = React.useCallback(\n    () => owner.setValue(sourceValue(target), getValue(props, context, 'source')),\n    [context, owner, props, target]\n  );\n  return (\n    <DynamicControl {...props} control=\"a\" styleName={pointer} onClick={onClick}>\n      {tryInterpolate(text, owner)}\n    </DynamicControl>\n  );\n};\n\nexport const LinkSelectorView: FormComponent<LinkSelectorProps> = {\n  Component: observer(LinkSelectorComponent),\n  toString: (owner, props, context) => {\n    return tryInterpolate(getValue(props, context), owner);\n  }\n};\n","import * as React from 'react';\n\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\n\nimport { observer } from 'mobx-react';\nimport { GridChildProps, GridProps, GridView } from './grid_view';\nimport { DropCellProps, DropCell } from '../editor/form/editor_cell';\nimport { adjustPosition } from '../editor/editor_helpers';\nimport { propGroup, boundProp } from '../editor/editor_common';\nimport { LayoutProps, generateEmptyCells } from '../editor/layouts_common_editor';\nimport { EditorContextType, EditorContext } from '../editor/editor_context';\nimport { DynamicComponent } from '../wrapper';\nimport { showHandles, timeHideHandles } from '../editor/drag_drop_boundary';\n\nfunction drop(_e: React.DragEvent, props: DropCellProps, context: EditorContextType): boolean {\n  const item = context.dragItem;\n  context.dragItem = null;\n\n  let sourceElement = item.element;\n  let targetElement = props.formElement;\n\n  // OPTION 1: We are dropping on the existing element\n  if (targetElement && targetElement.control !== 'EditorCell') {\n    return false;\n  }\n\n  // OPTION 2: We are dropping existing element on empty cell\n  else if (sourceElement) {\n    const column = adjustPosition(\n      props,\n      context,\n      item.position,\n      sourceElement,\n      props.formElement,\n      props.parentFormElement\n      // false\n    );\n    // const column = props.formElement.props.column;\n    if (column === -1) {\n      return false;\n    }\n    sourceElement.props.setValue('row', props.formElement.props.row);\n    sourceElement.props.setValue('column', column);\n    // we can grab by left part or right part\n  }\n  // OPTION 3: We are dropping new item on empty cell\n  else {\n    let width = sourceElement ? sourceElement.width : 1;\n    props.parentFormElement.addRow('elements', {\n      label: item.label || '',\n      props: {\n        ...item.controlProps,\n        control: item.name,\n        row: props.formElement.props.row,\n        column: props.formElement.props.column,\n        width\n      },\n      control: item.name,\n      source: item.source,\n      elements: item.defaultChildren\n    });\n    sourceElement = props.parentFormElement.elements[props.parentFormElement.elements.length - 1];\n  }\n  return false;\n}\n\nconst EditorCell = (props: DropCellProps) => {\n  return (\n    <DropCell\n      {...props}\n      drop={drop}\n      // hover={hover}\n      mouseOver={showHandles}\n      mouseOut={timeHideHandles}\n    />\n  );\n};\n\nexport const GridEditorComponent: React.FC<\n  FormComponentProps<GridProps, GridChildProps> & LayoutProps\n> = props => {\n  const context = React.useContext(EditorContext);\n  const controls = generateEmptyCells(context, props, props.formElement, 'EditorCell');\n\n  // we replace the form element with the new one\n  return (\n    <DynamicComponent {...props}>\n      <GridView.Component {...props} EditorCell={EditorCell} controls={controls} />\n    </DynamicComponent>\n  );\n};\n\nexport const GridEditor: EditorComponent = {\n  Component: observer(GridEditorComponent),\n  control: 'Grid',\n  icon: 'grid layout',\n  title: 'Grid',\n  group: 'Layout',\n  defaultProps: {\n    rows: 1,\n    columns: 1,\n    gap: '6px'\n  },\n  childProps: propGroup('Layout', {\n    row: boundProp(\n      {\n        documentation: 'Row of the grid (1 ..)',\n        props: { inputLabel: 'row' },\n        tuple: 'Position',\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    column: boundProp(\n      {\n        documentation: 'Column of the grid (1 ..)',\n        props: { inputLabel: 'col' },\n        tuple: 'Position',\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    width: boundProp(\n      {\n        documentation: 'Width of the control in number of grid cells.',\n        tuple: 'Dimension',\n        props: { inputLabel: 'w' },\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    height: boundProp(\n      {\n        documentation: 'Height of the control in number of grid cells.',\n        tuple: 'Dimension',\n        props: { inputLabel: 'h' },\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    )\n  }),\n  props: {\n    ...propGroup('Grid', {\n      alignItems: boundProp({\n        control: 'Select',\n        documentation: `Aligns grid items vertically.<br>\n          <ul>\n          <li><i>Start (default)</i>: items are packed toward the top</li>\n          <li><i>End:</i> items are packed toward the bottom</li>\n          <li><i>Center</i>: items are centered</li>\n          <li><i>Stretch</i>: items fill the whole height of the cell/li>\n          </ul>\n          Information taken from <a href=\"https://css-tricks.com/snippets/css/complete-guide-grid/\" target=\"_blank\">this guide</a> for more details`,\n        group: 'Basic',\n        type: 'string',\n        $enum: [\n          { text: 'Start', value: 'flex-start' },\n          { text: 'End', value: 'flex-end' },\n          { text: 'Center', value: 'center' },\n          { text: 'Stretch', value: 'stretch' }\n        ]\n      }),\n      gap: boundProp({\n        control: 'Select',\n        documentation: 'Spacing between cells',\n        group: 'Basic',\n        $enum: [\n          {\n            text: 'None',\n            value: '0px'\n          },\n          {\n            text: 'Tiny',\n            value: '3px'\n          },\n          {\n            text: 'Small',\n            value: '6px'\n          },\n          {\n            text: 'Normal',\n            value: '12px'\n          },\n          {\n            text: 'Big',\n            value: '18px'\n          },\n          {\n            text: 'Huge',\n            value: '24px'\n          }\n        ],\n        type: 'string'\n      }),\n      justifyItems: boundProp({\n        control: 'Select',\n        documentation: `Aligns grid items horizontally.<br>\n          <ul>\n          <li><i>Start (default)</i>: items are packed toward the start line</li>\n          <li><i>End:</i> items are packed toward the end line</li>\n          <li><i>Center</i>: items are centered along the line</li>\n          <li><i>Stretch</i>: items fill the whole width of the cell/li>\n          </ul>\n          Information taken from <a href=\"https://css-tricks.com/snippets/css/complete-guide-grid/\" target=\"_blank\">this guide</a> for more details`,\n        group: 'Basic',\n        type: 'string',\n        $enum: [\n          { text: 'Start', value: 'flex-start' },\n          { text: 'End', value: 'flex-end' },\n          { text: 'Center', value: 'center' },\n          { text: 'Stretch', value: 'stretch' }\n        ],\n        props: { label: 'Justify Content' }\n      })\n    }),\n    rows: boundProp(\n      {\n        documentation: 'Number of grid rows',\n        group: 'Dimensions',\n        props: {\n          inputLabel: 'rows'\n        },\n        tuple: 'Size',\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    columns: boundProp(\n      {\n        documentation: 'Number of grid columns',\n        group: 'Dimensions',\n        props: {\n          inputLabel: 'cols'\n        },\n        tuple: 'Size',\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    rowSize: boundProp({\n      documentation: 'Default height of extra rows (e.g. 100px)',\n      group: 'Dimensions',\n      props: {\n        inputLabel: 'rows'\n      },\n      tuple: 'Width',\n      type: 'number'\n    }),\n    columnSize: boundProp({\n      documentation: 'Default width of extra columns (e.g. 100px)',\n      group: 'Dimensions',\n      props: {\n        inputLabel: 'cols'\n      },\n      tuple: 'Width',\n      type: 'number'\n    }),\n    templateRows: boundProp({\n      documentation: `Row Template. For example: \n        <pre>10px auto 1fr</pre> will define a grid with three rows. \n        First row will be 10px high. Second row will automatically adjust its height. \n        And third column will fill the visible height.`,\n      group: 'Templates',\n      props: { label: 'Rows' },\n      type: 'number'\n    }),\n    templateColumns: boundProp({\n      documentation: `Column template. For example: \n        <pre>10px auto 1fr</pre> will define a grid with three columns. \n        First columns will be 10px wide. Second column will automatically adjust its size. \n        And third column will fill the visible width.`,\n      group: 'Templates',\n      props: { label: 'Column' },\n      type: 'number'\n    }),\n    rowsReadOnly: boundProp(\n      {\n        documentation: 'Number of grid rows in read only mode',\n        group: 'Read-Only',\n        props: {\n          inputLabel: 'rows'\n        },\n        tuple: 'Size',\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    columnsReadOnly: boundProp(\n      {\n        documentation: 'Number of grid columns in read only mode',\n        group: 'Read-Only',\n        props: {\n          inputLabel: 'cols'\n        },\n        tuple: 'Size',\n        type: 'number'\n      },\n      'ValueSourceHandler',\n      'number'\n    ),\n    templateRowsReadOnly: boundProp({\n      documentation: 'Row template for read only mode (e.g. 10px auto 1fr)',\n      group: 'Read-Only',\n      props: { label: 'Row Template' },\n      type: 'number'\n    }),\n    templateColumnsReadOnly: boundProp({\n      documentation: 'Column template for read only mode (e.g. 10px auto 1fr)',\n      group: 'Read-Only',\n      props: { label: 'Column Template' },\n      type: 'number'\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { FormElement, FormComponentProps, FormComponent } from '@tomino/dynamic-form';\n\nimport { css } from '../common';\nimport { observer } from 'mobx-react';\nimport { processControls } from './layouts_common';\nimport { DynamicComponent } from '../wrapper';\nimport { BoundProp } from '@tomino/dynamic-form';\nimport { ContextType, Context } from '../context';\nimport { getValue, getPropValue } from '../helpers';\n\nexport const grid = css`\n  display: grid;\n  position: relative;\n`;\n\nexport type Props = {\n  EditorCell?: React.ComponentType<any>;\n  controls?: FormElement[];\n};\n\nexport type GridProps = {\n  rows?: BoundProp<number>;\n  rowsReadOnly?: BoundProp<number>;\n  templateRows?: BoundProp;\n  templateRowsReadOnly?: BoundProp;\n  columns?: BoundProp<number>;\n  columnsReadOnly?: BoundProp<number>;\n  templateColumns?: BoundProp;\n  templateColumnsReadOnly?: BoundProp;\n  columnSize?: BoundProp;\n  rowSize?: BoundProp;\n  alignItems?: BoundProp;\n  justifyItems?: BoundProp;\n  gap?: BoundProp;\n};\n\nexport type GridChildProps = {\n  width?: BoundProp<number>;\n  height?: BoundProp<number>;\n  row?: BoundProp<number>;\n  column?: BoundProp<number>;\n  justifySelf?: BoundProp;\n  alignSelf?: BoundProp;\n};\n\nexport function sortGrid(context: ContextType, props: FormComponentProps) {\n  return function(a: FormElement<GridChildProps>, b: FormElement<GridChildProps>) {\n    return getPropValue(props, a, context, 'row') < getPropValue(props, b, context, 'row')\n      ? -1\n      : getPropValue(props, a, context, 'row') > getPropValue(props, b, context, 'row')\n        ? 1\n        : getPropValue(props, a, context, 'column') < getPropValue(props, b, context, 'column')\n          ? -1\n          : 1;\n  };\n}\n\nexport function createColumnStyles(\n  props: FormComponentProps,\n  formElement: FormElement<GridChildProps>,\n  context: ContextType\n) {\n  return {\n    gridColumn: `${getPropValue(props, formElement, context, 'column')} / span ${getPropValue(\n      props,\n      formElement,\n      context,\n      'width',\n      1\n    )}`,\n    gridRow: `${getPropValue(props, formElement, context, 'row')} / span ${getPropValue(\n      props,\n      formElement,\n      context,\n      'height'\n    ) || 1}`,\n    justifySelf: getPropValue(props, formElement, context, 'justifySelf'),\n    alignSelf: getPropValue(props, formElement, context, 'alignSelf')\n  };\n}\n\nexport function createGridStyles(\n  props: FormComponentProps<GridProps>,\n  context: ContextType,\n  readOnly: boolean\n) {\n  let gridTemplateColumns = (readOnly && getValue(props, context, 'templateColumnsReadOnly')\n    ? getValue(props, context, 'templateColumnsReadOnly')\n    : getValue(props, context, 'templateColumns')\n      ? getValue(props, context, 'templateColumns')\n      : `repeat(${\n        readOnly && getValue(props, context, 'columnsReadOnly')\n          ? getValue(props, context, 'columnsReadOnly')\n          : getValue(props, context, 'columns', 1)\n      }, 1fr)`) as string;\n\n  let gridTemplateRows = (readOnly && getValue(props, context, 'templateRowsReadOnly')\n    ? getValue(props, context, 'templateRowsReadOnly')\n    : getValue(props, context, 'templateRows')\n      ? getValue(props, context, 'templateRows')\n      : `repeat(${\n        readOnly && getValue(props, context, 'rowsReadOnly')\n          ? getValue(props, context, 'rowsReadOnly')\n          : getValue(props, context, 'rows') || 1\n      }, auto)`) as string;\n\n  return {\n    gridTemplateColumns,\n    gridTemplateRows,\n    gridAutoColumns: getValue(props, context, 'columnSize') || '20px',\n    gridAutoRows: getValue(props, context, 'rowSize') || '20px',\n    alignItems: getValue(props, context, 'alignItems'),\n    justifyItems: getValue(props, context, 'justifyItems'),\n    gridGap: getValue(props, context, 'gap')\n  };\n}\n\nexport const Grid: React.FC<FormComponentProps<GridProps, GridChildProps> & Props> = props => {\n  const controls: FormElement<GridChildProps>[] = processControls(props);\n  const { EditorCell, className, ...rest } = props;\n  const context = React.useContext(Context);\n  return (\n    <DynamicComponent\n      {...rest}\n      className={className}\n      style={createGridStyles(props, context, props.readOnly)}\n      styleName={grid}\n    >\n      {(props.controls || controls).map((element, i) =>\n        EditorCell ? (\n          <EditorCell\n            {...rest}\n            key={i}\n            style={createColumnStyles(props, element, context)}\n            formElement={element}\n            parentFormElement={props.formElement}\n          >\n            {props.catalogue.createComponent(props, element, context)}\n          </EditorCell>\n        ) : (\n          <div key={i} style={createColumnStyles(props, element, context)}>\n            {props.catalogue.createComponent(props, element, context)}\n          </div>\n        )\n      )}\n    </DynamicComponent>\n  );\n};\n\nexport const GridView: FormComponent<GridProps, GridChildProps> = {\n  Component: observer(Grid),\n  toString(owner, props, context) {\n    const sort = sortGrid(context, props);\n    let sorted = props.formElement.elements.sort(sort);\n    return sorted\n      .map(s => props.catalogue.components[s.control].toString(owner, props, context))\n      .join('\\n');\n  }\n};\n","// import React from 'react';\n\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\n// import { css } from '../common';\n// import { Icon } from 'semantic-ui-react';\n// import { observer } from 'mobx-react';\n\nexport function processControls(props: FormComponentProps) {\n  // filter out what we do not need\n  let controls = props.readOnly\n    ? props.formElement.elements.filter(e => e.control.indexOf('Button') === -1)\n    : props.formElement.elements;\n\n  // generate empty cells if requires\n  return controls;\n}\n\n// const handle = css`\n//   padding-left: 1px;\n//   opacity: 0.8;\n//   width: 20px;\n//   position: absolute;\n//   color: #777;\n//   border: 1px solid #777;\n//   border-radius: 3px;\n//   left: -10px;\n//   background: #ddd;\n//   display: none;\n//   label: handle;\n// `;\n\n// export const Handle = observer((props: any) => (\n//   <div\n//     {...props}\n//     className={handle}\n//     style={{\n//       display: props.item.isSelected ? 'block' : 'none'\n//     }}\n//   >\n//     <Icon name=\"content\" />\n//   </div>\n// ));\n\n// Handle.displayName = 'Handle';\n","import { action } from 'mobx';\nimport { findConflict } from './editor_helpers';\nimport { FormDataSet } from './form_store';\nimport { GridChildProps } from '../layouts/grid_view';\nimport { FormComponentProps, DataSet } from '@tomino/dynamic-form';\nimport { css } from '../common';\nimport { getPropValue, setPropValue } from '../helpers';\nimport { EditorContextType } from './editor_context';\n\nconst handle = css`\n  width: 8px;\n  height: 8px;\n  position: absolute;\n  left: -100px;\n  top: -100px;\n  background-color: #aaa;\n  border: solid 1px #222;\n  cursor: ew-resize;\n  label: handle;\n`;\n\nlet leftHandle: HTMLDivElement;\nlet rightHandle: HTMLDivElement;\nlet hideTimeout: any;\nlet hiding = false;\n\nexport function timeHideHandles() {\n  // console.log(' wait hiding');\n  hideTimeout = setTimeout(hideHandles, 10);\n}\n\nfunction createHandle() {\n  const resizeHandle = document.createElement('div');\n  resizeHandle.draggable = true;\n  resizeHandle.className = handle;\n  resizeHandle.onmouseover = () => clearTimeout(hideTimeout);\n  resizeHandle.onmouseout = timeHideHandles;\n  document.body.appendChild(resizeHandle);\n  return resizeHandle;\n}\n\nexport function showHandles(\n  e: React.MouseEvent,\n  props: FormComponentProps,\n  context: EditorContextType\n) {\n  if (!leftHandle) {\n    leftHandle = createHandle();\n    rightHandle = createHandle();\n  }\n  if (hiding) {\n    return;\n  }\n  if (props.formElement.control !== 'EditorCell') {\n    clearTimeout(hideTimeout);\n\n    let rect = (e.currentTarget.childNodes[0] as HTMLDivElement).getBoundingClientRect();\n    leftHandle.style.left = rect.left - 4 + window.scrollX + 'px';\n    leftHandle.style.top = rect.top + rect.height / 2 + window.scrollY - 4 + 'px';\n    rightHandle.style.left = rect.left + rect.width - 4 + window.scrollX + 'px';\n    rightHandle.style.top = rect.top + rect.height / 2 + window.scrollY - 4 + 'px';\n\n    const target = e.currentTarget as HTMLDivElement;\n\n    leftHandle.ondragstart = ev =>\n      dragElement(ev, props, context, target, props.formElement as any, 'left');\n    leftHandle.setAttribute('data-row', props.formElement.props.row);\n    leftHandle.setAttribute('data-column', props.formElement.props.column);\n\n    rightHandle.ondragstart = ev =>\n      dragElement(ev, props, context, target, props.formElement as any, 'right');\n    rightHandle.setAttribute('data-row', props.formElement.props.row);\n    rightHandle.setAttribute('data-column', props.formElement.props.column);\n  }\n}\n\nfunction hideHandles() {\n  // console.log('hiding');\n  if (leftHandle) {\n    rightHandle.style.left = '-100px';\n    leftHandle.style.top = '-100px';\n  }\n  return true;\n}\n\nexport function dragElement(\n  e: DragEvent,\n  props: FormComponentProps,\n  context: EditorContextType,\n  target: HTMLDivElement,\n  element: FormDataSet<GridChildProps, GridChildProps>,\n  direction: 'left' | 'right'\n) {\n  // let widthPx = 0;\n  e.preventDefault();\n  e.stopPropagation();\n\n  hiding = true;\n  hideHandles();\n\n  let formWidth = getPropValue(props, element, context, 'width');\n\n  // create a clone of the currentTarget element\n  // const form = document.querySelector('#editorForm');\n  // const sibling = (direction === 'left'\n  //   ? e.currentTarget.nextSibling\n  //   : e.currentTarget.previousSibling) as HTMLDivElement;\n\n  const clone = target.cloneNode(true) as HTMLDivElement;\n\n  // console.log(clone.className);\n\n  target.classList.remove('content');\n  target.style.opacity = '0.1';\n\n  const rect = target.getBoundingClientRect();\n  //const parentRect = sibling.parentElement.parentElement.getBoundingClientRect();\n\n  let originalX = direction === 'left' ? rect.left : rect.right;\n  let clientWidth = rect.width;\n  let widthDivision = clientWidth / formWidth;\n  let newWidth = Math.floor(clientWidth / widthDivision);\n\n  // used in validation\n  let cells = element.parent.elements.filter(\n    e => e.props.row === element.props.row && e !== element\n  );\n\n  // insert the clone to the page\n  // TODO: position the clone appropriately\n  document.body.appendChild(clone);\n\n  clone.style.outline = 'dotted 3px blue';\n  clone.style.outlineOffset = '-1px';\n  clone.style.backgroundColor = 'white';\n  clone.style.position = 'absolute';\n  clone.style.top = rect.top + window.scrollY + 'px';\n  clone.style.left = rect.left + window.scrollX + 'px';\n  clone.style.width = rect.width + 'px';\n  clone.style.height = rect.height + 'px';\n\n  const closeDragElement = action(() => {\n    /* stop moving when mouse button is released:*/\n    document.onmouseup = null;\n    document.onmousemove = null;\n\n    if (validateDrag() && newFormWidth() > 0) {\n      setPropValue(props, element.props as DataSet, context, newColumn(), 'column');\n      setPropValue(props, element.props as DataSet, context, newFormWidth(), 'width');\n    }\n\n    //sibling.classList.add('content');\n    target.style.opacity = '1';\n    document.body.removeChild(clone);\n    hiding = false;\n  });\n\n  e = e || (window.event as any);\n  // get the mouse cursor position at startup:\n  document.onmouseup = closeDragElement;\n  // call a function whenever the cursor moves:\n  document.onmousemove = elementDrag;\n\n  function newFormWidth() {\n    return Math.ceil(newWidth / widthDivision);\n  }\n\n  function newColumn() {\n    const col = getPropValue(props, element, context, 'column');\n    const width = getPropValue(props, element, context, 'width');\n    return direction === 'left' ? col - (newFormWidth() - width) : col;\n  }\n\n  function validateDrag() {\n    // try one adjustment moving the item left or right from the conflict cell\n    // console.log(`${newColumn()}`);\n\n    return !findConflict(props, context, cells, newColumn(), newColumn() + newFormWidth() - 1);\n  }\n\n  function elementDrag(e: MouseEvent) {\n    e = e || (window.event as any);\n    e.preventDefault();\n\n    if (direction === 'left') {\n      // set the element's new position:\n      newWidth = originalX - e.clientX + clientWidth;\n      if (validateDrag()) {\n        clone.style.width = newWidth + 'px';\n        clone.style.left = e.clientX - 2 + 'px'; // clone.offsetLeft - pos1 + 'px';\n      }\n    } else {\n      newWidth = e.clientX - originalX + clientWidth;\n      if (validateDrag()) {\n        clone.style.width = newWidth + 'px';\n      }\n    }\n  }\n}\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { propGroup, prop, gapProp } from '../editor/editor_common';\nimport { StackView, StackProps } from './stack_view';\nimport { DropComponentEditor } from '../editor/droppable_editor';\n\nexport const StackEditorComponent: React.FC<FormComponentProps<StackProps>> = props => (\n  <DropComponentEditor\n    {...props}\n    Component={StackView.Component}\n    layout={props.formElement.props.layout}\n  />\n);\n\nexport const StackEditor: EditorComponent = {\n  Component: StackEditorComponent,\n  control: 'Stack',\n  icon: 'align justify',\n  title: 'Stack Layout',\n  group: 'Layout',\n  defaultProps: {\n    layout: 'column'\n  },\n  props: propGroup('Stack', {\n    layout: prop({\n      documentation: 'Items can either be stacked in rows or columns',\n      label: 'Layout',\n      control: 'Select',\n      type: 'string',\n      $enum: [{ text: 'Rows', value: 'row' }, { text: 'Columns', value: 'column' }]\n    }),\n    final: prop({\n      type: 'boolean',\n      documentation:\n        'Prohibits adding new elements to the stack. This is used mostly in editor for visual appeal.'\n    }),\n    gap: gapProp({\n      documentation: 'Spacing between cells'\n    }),\n    padding: gapProp({\n      documentation: 'Cell padding',\n      label: 'Padding'\n    })\n  })\n};\n","import * as React from 'react';\n\nimport { FormComponentProps, FormComponent, FormElement } from '@tomino/dynamic-form';\n\nimport { css } from '../common';\nimport { observer } from 'mobx-react';\nimport { processControls } from './layouts_common';\nimport { DynamicComponent } from '../wrapper';\nimport { Context } from '../context';\n\nexport type Props = {\n  EmptyCell?: React.FC<FormComponentProps>;\n};\n\nexport type StackProps = {\n  layout: 'row' | 'column';\n  gap: string;\n  padding: string;\n  final: boolean;\n};\n\nexport type StackChildProps = {};\n\nexport function itemCSS(formElement: FormElement, layout: 'column' | 'row') {\n  let itemCSS =\n    layout === 'row' ||\n    (formElement.props.padding && formElement.props.padding != '0px') ||\n    (formElement.props.gap && formElement.props.gap != '0px')\n      ? `padding: ${formElement.props.padding}; \n         margin: ${formElement.props.gap};\n         display: ${layout === 'row' ? 'inline-block' : 'block'};\n         :first-of-type label,\n         :first-of-type {\n           margin-top: 0px;\n           padding-top: 0px;\n         }\n         label: item-${layout};\n         `\n      : '';\n  return itemCSS ? css([itemCSS]) : '';\n}\n\nconst StackComponent: React.FC<FormComponentProps<StackProps, StackChildProps> & Props> = props => {\n  const context = React.useContext(Context);\n  const controls = processControls(props) || [];\n  const itemsCss = itemCSS(props.formElement, props.formElement.props.layout);\n\n  return (\n    <>\n      <DynamicComponent {...props}>\n        {controls.map((element, i) =>\n          itemsCss ? (\n            <div className={itemsCss} key={i}>\n              {props.catalogue.createComponent(props, element, context, null)}\n            </div>\n          ) : (\n            <React.Fragment key={i}>\n              {props.catalogue.createComponent(props, element, context, itemsCss)}\n            </React.Fragment>\n          )\n        )}\n      </DynamicComponent>\n      {props.formElement.elements.length === 0 && props.EmptyCell && (\n        <props.EmptyCell {...props} className={itemsCss} />\n      )}\n    </>\n  );\n};\n\nexport const StackView: FormComponent = {\n  Component: observer(StackComponent),\n  toString(owner, props, catalogue) {\n    return props.formElement.elements\n      .map(s => catalogue.components[s.control].toString(s, owner, catalogue))\n      .join('\\n');\n  }\n};\n","import React from 'react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { css, names } from '../common';\nimport { EditorContext } from './editor_context';\nimport { FormDataSet } from './form_store';\nimport { DragDrop } from '../layouts/drag_drop';\nimport { SingleDropCell } from './layouts_common_editor';\nimport { processor } from './editor_common';\nimport { dragDropHandler } from './drag_drop_form_control';\n\nconst extraPad = css`\n  padding-top: 1px;\n`;\n\ntype Props = {\n  Component: React.ComponentType<any>;\n  layout: 'row' | 'column';\n};\n\nexport const DropComponentEditor: React.FC<FormComponentProps<any> & Props> = props => {\n  const context = React.useContext(EditorContext);\n\n  const dropHandler = React.useCallback(\n    dragDropHandler(context, props.formElement as FormDataSet),\n    [context.dragItem, props.formElement]\n  );\n\n  const drag = React.useMemo(\n    () =>\n      new DragDrop(\n        props.layout,\n        props.formElement as FormDataSet,\n        processor,\n        `color: ${context.theme.textColor}!important;`,\n        'editor',\n        dropHandler,\n        null,\n        false,\n        35,\n        context\n      ),\n    [context, dropHandler, props.formElement, props.layout]\n  );\n\n  return (\n    <props.Component\n      {...props}\n      {...drag.props()}\n      className={names(props.className, extraPad)}\n      data-editor=\"isEditor\"\n      EmptyCell={(props: FormComponentProps) => (\n        <SingleDropCell id=\"0\" {...props} editorState={context} />\n      )}\n    />\n  );\n};\n","import { EditorContextType } from './editor_context';\nimport { FormDataSet } from './form_store';\nimport { toJS } from '../common';\n\nexport function dragEndHandler(context: EditorContextType) {\n  return function() {\n    let item = context.dragItem;\n    if (item && item.node) {\n      item.node.style.visibility = 'visible';\n      item.node.style.height = 'inherit';\n    }\n    context.dragItem = null;\n  };\n}\n\nexport function dragDropHandler(context: EditorContextType, item: FormDataSet) {\n  return function(to: number, position: string) {\n    const dragItem = context.dragItem;\n    if (dragItem === null) {\n      return;\n    }\n\n    // we either move existing element\n    // or we drag element from toolbox\n    if (dragItem.type === 'outline') {\n      const fromItem = dragItem.element as FormDataSet;\n      const toItem = item.elements[to];\n      const fromRow = toJS(fromItem.elements[dragItem.from]);\n\n      fromItem.removeRow('elements', dragItem.from);\n      to = item.elements.indexOf(toItem);\n      to = to == -1 ? item.elements.length : to;\n\n      if (position === 'middle') {\n        toItem.addRow('elements', fromRow);\n        dragItem.drag.initialised = false;\n      } else {\n        console.log('Inserting to: ' + to);\n        item.insertRow('elements', to, fromRow);\n        dragItem.drag.initialised = false;\n      }\n    } else {\n      let control = dragItem.name;\n      let value = undefined;\n      let label = undefined;\n\n      if (dragItem.type === 'dataset') {\n        control = dragItem.schema.type === 'boolean' ? 'Checkbox' : 'Input';\n        value = {\n          source: dragItem.name\n        };\n        label = dragItem.name;\n\n        dragItem.target.style.visibility = 'visible';\n        dragItem.target.style.height = 'inherit';\n      }\n      const newItem = {\n        label: dragItem.label || '',\n        props: {\n          ...dragItem.controlProps,\n          control: control,\n          value,\n          label\n        },\n        control: control,\n        elements: dragItem.defaultChildren\n      };\n      if (position === 'middle') {\n        const toItem = item.elements[to];\n        toItem.addRow('elements', newItem);\n      } else {\n        item.insertRow('elements', to, newItem);\n      }\n    }\n  };\n}\n","import React from 'react';\n\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { FormView } from './form_view';\nimport { propGroup, handlerProp } from './editor/editor_common';\nimport { SingleDropCell } from './editor/layouts_common_editor';\nimport { DynamicComponent } from './wrapper';\nimport { observer } from 'mobx-react';\n\nexport type FormProps = {\n  text: string;\n};\n\nexport const FormEditorComponent: React.FC<FormComponentProps> = props => {\n  if (props.formElement.elements.length === 0) {\n    return (\n      <DynamicComponent {...props}>\n        <SingleDropCell {...props} />\n      </DynamicComponent>\n    );\n  } else return <FormView {...props} />;\n};\n\nexport const FormEditor: EditorComponent = {\n  Component: observer(FormEditorComponent),\n  title: 'Form',\n  control: 'Form',\n  icon: 'file outline',\n  valueProvider: 'value',\n  props: propGroup('Form Editor', {\n    onCreate: handlerProp()\n  })\n};\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { AuthItem, AuthItemProps } from './auth_item_view';\nimport { prop, propGroup } from '../editor/editor_common';\nimport { observer } from 'mobx-react';\nimport { createComponents } from '../common';\n\n// export const AuthItemEditorComponent: React.FC<FormComponentProps<AuthItemProps>> = observer(\n//   props => {\n//     return (\n//       <LayoutWrapper\n//         {...props}\n//         label={config.i18n`Auth Item`}\n//         ownAddCell={false}\n//         Component={props.formElement.props.disable ? CreateComponents : AuthItem}\n//       />\n//     );\n//   }\n// );\n\nexport const AuthItemEditorComponent: React.FC<FormComponentProps<AuthItemProps>> = observer(\n  props =>\n    props.formElement.props.disable ? <>{createComponents(props)}</> : <AuthItem {...props} />\n);\n\nAuthItemEditorComponent.displayName = 'ApolloProviderEditor';\n\nexport const AuthItemEditor: EditorComponent = {\n  provider: true,\n  Component: AuthItemEditorComponent,\n  title: 'Auth Item',\n  control: 'AuthItem',\n  icon: 'lock',\n  group: 'Auth',\n  props: propGroup('Auth', {\n    roles: prop({\n      control: 'Table',\n      props: { text: 'Roles' },\n      type: 'array',\n      elements: [\n        {\n          control: 'Input'\n        }\n      ],\n      items: { type: 'string' }\n    }),\n    disable: {\n      control: {\n        documentation: 'This is useful during testing when a mocked provider can be used instead.',\n        props: { label: 'Disable' },\n        group: 'Auth',\n        control: 'Checkbox'\n      },\n      schema: { type: 'boolean' }\n    }\n  })\n};\n","import * as React from 'react';\n\nimport { createComponents } from '../common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { Context } from '../context';\nimport { observer } from 'mobx-react';\n\nexport type AuthItemProps = {\n  roles: string[];\n  disable: boolean;\n};\n\nexport const AuthItem: React.FC<FormComponentProps<AuthItemProps>> = observer(props => {\n  const ctx = React.useContext(Context);\n  const { roles } = props.formElement.props;\n  if (\n    !ctx.auth.user ||\n    !ctx.auth.user.id ||\n    (roles && roles.length && roles.every(r => !ctx.auth.user.roles.some(u => u === r)))\n  ) {\n    return null;\n  }\n  return <>{createComponents(props)}</>;\n  // return (\n  //   <DynamicComponent {...props} control={React.Fragment}>\n  //     {createComponents(props)}\n  //   </DynamicComponent>\n  // );\n});\n","import React from 'react';\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\n\nimport { propGroup, boundProp } from '../editor/editor_common';\nimport { FlexView, FlexProps } from './flex_view';\nimport { DropComponentEditor } from '../editor/droppable_editor';\n\nexport const FlexEditorComponent: React.FC<FormComponentProps<FlexProps>> = props => (\n  <DropComponentEditor\n    {...props}\n    Component={FlexView.Component}\n    layout={props.formElement.props.layout as any}\n  />\n);\n\nexport const FlexEditor: EditorComponent = {\n  Component: FlexEditorComponent,\n  control: 'Flex',\n  icon: 'align justify',\n  title: 'Flex Layout',\n  group: 'Layout',\n  defaultProps: {\n    layout: 'column'\n  },\n  props: propGroup('Flex', {\n    layout: boundProp({\n      documentation: 'Items can either be stacked in rows or columns',\n      label: 'Layout',\n      type: 'string',\n      $enum: [{ text: 'Rows', value: 'row' }, { text: 'Columns', value: 'column' }]\n    }),\n    gap: boundProp({\n      documentation: 'Spacing between cells',\n      label: 'Gap',\n      control: 'Select',\n      type: 'string',\n      $enum: [\n        { text: 'None', value: '0px' },\n        { text: 'Tiny', value: '3px' },\n        { text: 'Small', value: '6px' },\n        { text: 'Normal', value: '12px' },\n        { text: 'Big', value: '18px' },\n        { text: 'Huge', value: '24px' }\n      ]\n    }),\n    wrap: boundProp({\n      documentation: 'Items can wrap if no space remains',\n      label: 'Wrap',\n      control: 'Select',\n      type: 'string',\n      $enum: [\n        { text: 'Wrap', value: 'wrap' },\n        { text: 'No Wrap', value: 'no-wrap' },\n        { text: 'Reverse Wrap', value: 'wrap-reverse' }\n      ]\n    }),\n    justifyContent: boundProp({\n      control: 'Select',\n      documentation: `Set how elements are distributed in the container. <br>\n          <ul>\n          <li><i>Start (default)</i>: items are packed toward the start line</li>\n          <li><i>End:</i> items are packed toward the end line</li>\n          <li><i>Center</i>: items are centered along the line</li>\n          <li><i>Space Between</i>: items are evenly distributed in the line; first item is on the start line, last item on the end line</li>\n          <li><i>Space Around</i>: items are evenly distributed in the line with equal space around them. Note that visually the spaces aren't equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies.</li>\n          <li><i>Space Evenly</i>: items are distributed so that the spacing between any two items (and the space to the edges) is equal.</li>\n          </ul>\n          Information taken from <a href=\"https://css-tricks.com/snippets/css/a-guide-to-flexbox/\" target=\"_blank\">this guide</a> for more details`,\n      label: 'Justify',\n\n      type: 'string',\n      $enum: [\n        { text: 'Start', value: 'flex-start' },\n        { text: 'End', value: 'flex-end' },\n        { text: 'Center', value: 'center' },\n        { text: 'Space Between', value: 'space-between' },\n        { text: 'Space Around', value: 'space-around' },\n        { text: 'Space Evenly', value: 'space-evenly' }\n      ]\n    }),\n    alignItems: boundProp({\n      documentation: `This defines the default behavior for how items are laid out along horizontal (column layout) or vertical (row layout) axis.<br>\n          <ul>\n          <li><i>Stretch (default)</i>: stretch to fill the container</li>\n          <li><i>Start</i>: items are aligned at the beginning of their container</li>\n          <li><i>End</i>: items are aligned at the end of their container</li>\n          <li><i>Center</i>: items are centered</li>\n          <li><i>Baseline</i>: items are aligned based on text position</li>\n          </ul>\n          Information taken from <a href=\"https://css-tricks.com/snippets/css/a-guide-to-flexbox/\" target=\"_blank\">this guide</a> for more details`,\n      label: 'Align Items',\n      type: 'string',\n      $enum: [\n        { text: 'Stretch', value: 'stretch' },\n        { text: 'Start', value: 'flex-start' },\n        { text: 'End', value: 'flex-end' },\n        { text: 'Center', value: 'center' },\n        { text: 'Baseline', value: 'baseline' }\n      ]\n    }),\n    alignContent: boundProp({\n      control: 'Select',\n      documentation: `This defines the default behavior for how items are laid out along vertical (column layout) or horizontal (row layout) axis.<br>\n          <ul>\n          <li><i>Start</i>: lines packed to the start of the container</li>\n          <li><i>End</i>: lines packed to the end of the container</li>\n          <li><i>Center</i>: lines packed to the center of the container</li>\n          <li><i>Space Between</i>: lines evenly distributed; the first line is at the start of the container while the last one is at the end</li>\n          <li><i>Space Around:</i> lines evenly distributed with equal space around each line</li>\n          <li><i>Stretch (default)</i></i>: lines stretch to take up the remaining space</li>\n          </ul>\n          Information taken from <a href=\"https://css-tricks.com/snippets/css/a-guide-to-flexbox/\" target=\"_blank\">this guide</a> for more details`,\n      label: 'Align Content',\n      type: 'string',\n      $enum: [\n        { text: 'Start', value: 'flex-start' },\n        { text: 'End', value: 'flex-end' },\n        { text: 'Center', value: 'center' },\n        { text: 'Space Between', value: 'space-between' },\n        { text: 'Space Around', value: 'space-around' },\n        { text: 'Stretch', value: 'stretch' }\n      ]\n    })\n  }),\n  childProps: {\n    basis: boundProp({\n      group: 'Layout',\n      documentation: 'Base width of the item. Value can be in [px, %, auto]',\n      label: 'Width',\n      type: 'string'\n    }),\n    grow: boundProp({\n      group: 'Layout',\n      label: 'Grow',\n      documentation:\n        'Ratio to which the item grows in relation to other items. If all items have grow value 1, all grow the same way. If one item has grow value 1 and other 2, the one with value 2 will grow twice as big.',\n      type: 'number'\n    }),\n    shrink: boundProp({\n      group: 'Layout',\n      documentation:\n        'Ratio to which the item shrinks in relation to other items. If all items have grow value 1, all shrink the same way. If one item has shrink value 1 and other 2, the one with value 2 will shrink twice smaller.',\n      label: 'Shrink',\n      type: 'number'\n    }),\n    alignSelf: boundProp({\n      group: 'Layout',\n      control: 'Select',\n      documentation: `This defines the default behavior for how the item is laid out along horizontal (column layout) or vertical (row layout) axis.<br>\n          <ul>\n          <li><i>Stretch (default)</i>: stretch to fill the container</li>\n          <li><i>Start</i>: items are aligned at the beginning of their container</li>\n          <li><i>End</i>: items are aligned at the end of their container</li>\n          <li><i>Center</i>: items are centered</li>\n          <li><i>Baseline</i>: items are aligned based on text position</li>\n          </ul>\n          Information taken from <a href=\"https://css-tricks.com/snippets/css/a-guide-to-flexbox/\" target=\"_blank\">this guide</a> for more details`,\n      label: 'Align Item',\n      type: 'string',\n      $enum: [\n        { text: 'Stretch', value: 'stretch' },\n        { text: 'Start', value: 'flex-start' },\n        { text: 'End', value: 'flex-end' },\n        { text: 'Center', value: 'center' },\n        { text: 'Baseline', value: 'baseline' }\n      ]\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\n\nimport { css } from '../common';\nimport { observer } from 'mobx-react';\nimport { FlexDirectionProperty, FlexWrapProperty } from 'csstype';\nimport { processControls } from './layouts_common';\nimport { DynamicComponent } from '../wrapper';\nimport { Context } from '../context';\n\nexport const stack = css`\n  position: relative;\n  display: flex;\n  label: stack;\n`;\n\n// const sortRow = (a: FormElement, b: FormElement) => (a.column < b.column ? -1 : 1);\nconst containerBasis = {\n  display: 'flex'\n};\nexport function createContainerFlexStyle(props: FlexProps): React.CSSProperties {\n  if (!props) {\n    return containerBasis;\n  }\n  return {\n    ...containerBasis,\n    flexWrap: props.wrap,\n    flexDirection: props.layout,\n    justifyContent: props.justifyContent,\n    alignItems: props.alignItems,\n    alignContent: props.alignContent\n  };\n}\n\nconst itemBasis = {\n  flex: 'none'\n};\nexport function createItemFlexStyle(props: FlexChildProps): React.CSSProperties {\n  if (!props) {\n    return itemBasis;\n  }\n  return {\n    flex: !props.basis && !props.grow && !props.shrink ? 'none' : '',\n    flexBasis: props.basis,\n    flexGrow: props.grow,\n    flexShrink: props.shrink,\n    alignSelf: props.alignSelf\n  };\n}\n\nexport type Props = {\n  EmptyCell?: React.FC<FormComponentProps>;\n};\n\nexport type FlexProps = {\n  gap: number;\n  wrap: FlexWrapProperty;\n  layout: FlexDirectionProperty;\n  justifyContent: string;\n  alignItems: string;\n  alignContent: string;\n};\n\nexport type FlexChildProps = {\n  flex: string;\n  basis: number;\n  grow: number;\n  shrink: number;\n  alignSelf: string;\n};\n\nconst FlexComponent: React.FC<FormComponentProps<FlexProps, FlexChildProps> & Props> = props => {\n  const context = React.useContext(Context);\n  const control = props.formElement;\n  const controlProps: FlexProps = control.props;\n  const controls = processControls(props);\n  const className = css({ padding: controlProps.gap, label: 'gap' });\n\n  return (\n    <DynamicComponent {...props} style={createContainerFlexStyle(controlProps)}>\n      {controls.map((element, i) => (\n        <div key={i} style={createItemFlexStyle(element.props)} className={className}>\n          {props.catalogue.createComponent(props, element, context)}\n        </div>\n      ))}\n      {props.formElement.elements.length === 0 && props.EmptyCell && (\n        <props.EmptyCell {...props} className={className} />\n      )}\n    </DynamicComponent>\n  );\n};\n\nexport const FlexView: FormComponent = {\n  Component: observer(FlexComponent),\n  toString(owner, props, context, catalogue) {\n    return props.formElement.elements\n      .map(s => props.catalogue.components[s.control].toString(owner, props, context, catalogue))\n      .join('\\n');\n  }\n};\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\n\nimport { CheckboxEditor } from './checkbox_editor';\nimport { InputEditor } from './input_editor';\nimport { RadioEditor } from './radio_editor';\nimport { TableEditor } from './table_editor';\nimport { SignatureEditor } from './signature_editor';\nimport { TextAreaEditor } from './textarea_editor';\nimport { CommentEditor } from './comment_editor';\nimport { DropdownEditor } from './dropdown_editor';\nimport { DateEditor } from './date_time_editor';\nimport { ButtonEditor } from './buttons_editor';\nimport { FormEditor } from '../form_editor';\nimport { MenuEditor, MenuItemEditor } from './menu_editor';\nimport { IconEditor } from './icon_editor';\nimport { SegmentEditor } from './segment_editor';\nimport { TabsEditor } from './tab_editor';\nimport { HeaderEditor } from './header_editor';\nimport { IfEditor } from '../vanilla/if_editor';\nimport { SearchEditor } from './search_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  cssClass: 'ui form',\n  components: {\n    Button: ButtonEditor,\n    Checkbox: CheckboxEditor,\n    Comment: CommentEditor,\n    Date: DateEditor,\n    Dropdown: DropdownEditor,\n    Form: FormEditor,\n    Header: HeaderEditor,\n    Icon: IconEditor,\n    If: IfEditor,\n    Input: InputEditor,\n    Lookup: SearchEditor,\n    MenuItem: MenuItemEditor,\n    Menu: MenuEditor,\n    Radio: RadioEditor,\n    // Search: SearchEditor,\n    Segment: SegmentEditor,\n    Signature: SignatureEditor,\n    Table: TableEditor,\n    Tabs: TabsEditor,\n    Textarea: TextAreaEditor\n  }\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\n\nimport { CheckboxView } from './checkbox_view';\nimport { propGroup, boundProp } from '../editor/editor_common';\n\nexport type CheckBoxProps = {\n  text: string;\n};\n\nexport const CheckboxEditor: EditorComponent = {\n  Component: CheckboxView.Component,\n  bound: true,\n  title: 'Checkbox',\n  control: 'Checkbox',\n  icon: 'check square outline',\n  props: propGroup('Checkbox', {\n    value: boundProp({ type: 'boolean' }),\n    text: boundProp(),\n    radio: boundProp({ type: 'boolean' }),\n    slider: boundProp({ type: 'boolean' }),\n    toggle: boundProp({ type: 'boolean' })\n  })\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Checkbox } from 'semantic-ui-react';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\n\nimport { DynamicComponent } from '../wrapper';\nimport { processControl, getValue } from '../helpers';\n\nconst checkboxProps = ['radio', 'slider', 'toggle'];\n\nconst CheckboxComponent: React.FC<FormComponentProps> = props => {\n  const { source, disabled, controlProps, value, handleChange } = processControl(props);\n\n  return (\n    <DynamicComponent\n      {...props}\n      control={Checkbox}\n      controlProps={checkboxProps}\n      name={source}\n      label={controlProps.text}\n      readOnly={disabled}\n      checked={!!value}\n      onChange={handleChange}\n      disabled={disabled}\n    />\n  );\n};\n\nexport const CheckboxView: FormComponent = {\n  Component: observer(CheckboxComponent),\n  toString: (_owner, props, context) => (getValue(props, context) ? 'Yes' : 'No')\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { InputView } from './input_view';\nimport { propGroup, boundProp } from '../editor/editor_common';\nimport { sizes } from './enums';\n\nexport const InputEditor: EditorComponent = {\n  Component: InputView.Component,\n  title: 'Input',\n  control: 'Input',\n  icon: 'square outline',\n  bound: true,\n  props: propGroup('Input', {\n    fluid: boundProp({ type: 'boolean' }),\n    focus: boundProp({ type: 'boolean' }),\n    icon: boundProp(),\n    iconPosition: boundProp({\n      control: 'Select',\n      props: { options: [{ text: 'Left', value: 'left' }, { text: 'Right', value: 'right' }] }\n    }),\n    inverted: boundProp({ type: 'boolean' }),\n    inputLabel: boundProp(),\n    labelPosition: boundProp({\n      control: 'Select',\n      props: { options: [{ text: 'Left', value: 'left' }, { text: 'Right', value: 'right' }] }\n    }),\n    loading: boundProp({ type: 'boolean' }),\n    size: boundProp({ control: 'Select', props: { options: sizes } }),\n    transparent: boundProp({ type: 'boolean' }),\n    value: boundProp(),\n    placeholder: boundProp()\n  }),\n  defaultProps: {\n    fluid: true\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Form, Input, InputProps } from 'semantic-ui-react';\nimport { DataSet, FormComponentProps, FormComponent } from '@tomino/dynamic-form';\n\nimport { ErrorLabel } from './error_view';\nimport { processControl, getValue } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\nconst inputProps = [\n  // 'action',\n  // 'actionPosition',\n  'fluid',\n  'focus',\n  'icon',\n  'iconPosition',\n  'inverted',\n  'label',\n  'labelPosition',\n  'loading',\n  'onChange',\n  'size',\n  'transparent',\n  'placeholder',\n  'value'\n];\n\nconst InputComponent: React.FC<FormComponentProps<InputProps>> = props => {\n  const { source, disabled, error, handleChange, owner, context, value } = processControl(props);\n  const schema = owner.getSchema(source);\n\n  const inputLabel = getValue(props, context, 'inputLabel');\n\n  return (\n    <DynamicComponent\n      {...props}\n      control={Input}\n      controlProps={inputProps}\n      name={source}\n      disabled={disabled}\n      error={!!error}\n      type={schema.type === 'integer' || schema.type === 'number' ? 'number' : 'text'}\n      label={inputLabel || undefined}\n      onChange={handleChange}\n      showError={true}\n      value={value || ''}\n    />\n  );\n};\n\nInputComponent.displayName = 'Input';\n\nexport const InputView: FormComponent = {\n  Component: observer(InputComponent),\n  toString: (_owner, props, context) => getValue(props, context)\n};\n\ninterface InputBoundProps {\n  name: string;\n  owner: DataSet;\n  label: string;\n}\n\nexport class FormInputComponent extends React.Component<InputBoundProps & InputProps> {\n  handleInputChange: React.ReactEventHandler<HTMLInputElement> = e => {\n    // find value\n    this.props.owner.setValue(this.props.name, e.currentTarget.value);\n  };\n\n  render() {\n    const { owner, name, label } = this.props;\n\n    return (\n      <Form.Field>\n        <label>{label}</label>\n        <Input\n          name={name}\n          error={!!owner.getError(name)}\n          value={owner.getValue(name)}\n          onChange={this.handleInputChange}\n          disabled={this.props.readOnly}\n        />\n\n        <ErrorLabel error={owner.getError(name)} />\n      </Form.Field>\n    );\n  }\n}\n\nexport const FormInput = observer(FormInputComponent);\n","export const colors = [\n  { value: 'red', text: 'red' },\n  { value: 'orange', text: 'orange' },\n  { value: 'yellow', text: 'yellow' },\n  { value: 'olive', text: 'olive' },\n  { value: 'green', text: 'green' },\n  { value: 'teal', text: 'teal' },\n  { value: 'blue', text: 'blue' },\n  { value: 'violet', text: 'violet' },\n  { value: 'purple', text: 'purple' },\n  { value: 'pink', text: 'pink' },\n  { value: 'brown', text: 'brown' },\n  { value: 'grey', text: 'grey' },\n  { value: 'black', text: 'black' }\n];\n\nexport const sizes = [\n  { value: 'mini', text: 'mini' },\n  { value: 'tiny', text: 'tiny' },\n  { value: 'small', text: 'small' },\n  { value: 'large', text: 'large' },\n  { value: 'big', text: 'big' },\n  { value: 'huge', text: 'huge' },\n  { value: 'massive', text: 'massive' }\n];\n\nexport const align = [\n  { value: 'left', text: 'left' },\n  { value: 'center', text: 'center' },\n  { value: 'right', text: 'right' },\n  { value: 'justified', text: 'justified' }\n];\n\nexport const verticalAlign = [\n  { value: 'top', text: 'top' },\n  { value: 'middle', text: 'middle' },\n  { value: 'bottom', text: 'bottom' }\n];\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { RadioView } from './radio_view';\nimport { propGroup, boundProp, tableProp, dataProp } from '../editor/editor_common';\n\nexport const RadioEditor: EditorComponent = {\n  Component: RadioView.Component,\n  title: 'Radio',\n  control: 'Radio',\n  icon: 'circle',\n  bound: true,\n  props: {\n    ...propGroup('Radio', {\n      value: boundProp(),\n      schemaSource: dataProp()\n    }),\n    options: tableProp({ bound: true }, 'Options')\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Radio, CheckboxProps as SuiCheckboxProps } from 'semantic-ui-react';\nimport { Option, FormComponentProps, FormComponent } from '@tomino/dynamic-form';\n\nimport { css } from '../common';\nimport { processControl, getValues, getValue, setValue } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\nconst formRadio = css`\n  margin-right: 12px;\n  margin-bottom: 6px;\n`;\n\nexport const RadioComponent: React.FC<FormComponentProps> = props => {\n  const { source, disabled, error, owner, value, context } = processControl(props, false);\n  const [options, schemaSource, vertical] = getValues(props, 'options', 'schemaSource', 'vertical');\n  const radioValues = schemaSource ? owner.getSchema(schemaSource).$enum : options;\n\n  const handleToggleChange = React.useCallback(\n    (_: any, control: SuiCheckboxProps) => {\n      // find value\n      setValue(props, context, control.value);\n    },\n    [context, props]\n  );\n\n  return (\n    <DynamicComponent {...props}>\n      {radioValues.map((item: Option) => (\n        <React.Fragment key={item.value}>\n          <Radio\n            className={formRadio}\n            name={source}\n            label={item.text}\n            disabled={disabled}\n            value={item.value}\n            checked={value === item.value}\n            error={error}\n            onChange={handleToggleChange}\n          />\n          {vertical && <br />}\n        </React.Fragment>\n      ))}\n    </DynamicComponent>\n  );\n};\n\nexport const RadioView: FormComponent = {\n  Component: observer(RadioComponent),\n  toString: (_, props, context) => {\n    const value = getValue(props, context);\n    // let radioList = props.formElement.props.list;\n    // const radioOptions = owner.getSchema(radioList).$enum;\n    // const radioText = radioOptions.find(o => o.value === value).text;\n    return value;\n  }\n};\n","import * as React from 'react';\n\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\nimport { TableView, TableProps, createDataset } from './table_view';\nimport { observer } from 'mobx-react';\nimport { prop, propGroup, handlerProp, boundProp } from '../editor/editor_common';\nimport { align, verticalAlign } from './enums';\nimport { DynamicComponent } from '../wrapper';\nimport { TemplateEditor } from '../vanilla/template_editor';\nimport { EditorContext } from '../editor/editor_context';\nimport { Table } from 'semantic-ui-react';\nimport { EditorControl, SingleDropCell } from '../editor/layouts_common_editor';\nimport { toJS } from 'mobx';\n\nconst templates = [\n  { text: 'Component View', value: 'component' },\n  { text: 'View Template', value: 'view' },\n  { text: 'Edit Template', value: 'edit' },\n  { text: 'Add Template', value: 'add' }\n];\n\nconst Template = observer((props: FormComponentProps<TableProps> & { templateIndex: number }) => {\n  const editorState = React.useContext(EditorContext);\n  let addDataset = createDataset(props.formElement.props.items, toJS(props.owner));\n  let formElement = props.formElement;\n  let template = formElement.elements[props.templateIndex];\n  let elements = template.elements;\n  let items = props.formElement.props.items;\n\n  editorState.project.state.selectedElement;\n\n  return (\n    <Table>\n      <Table.Header>\n        <Table.Row>\n          {items.map((m, i) => (\n            <Table.HeaderCell key={m.title + i}>{m.title}</Table.HeaderCell>\n          ))}\n        </Table.Row>\n      </Table.Header>\n      <Table.Body>\n        <Table.Row>\n          {items.map((m, i) => (\n            <Table.Cell key={m.title + i}>\n              {elements.length > i && elements[i] ? (\n                <EditorControl props={{ ...props, owner: addDataset }} formElement={elements[i]} />\n              ) : (\n                <SingleDropCell\n                  {...props}\n                  formElement={template}\n                  className=\"\"\n                  id={i.toString()}\n                  elementIndex={i}\n                  editorState={editorState}\n                />\n              )}\n            </Table.Cell>\n          ))}\n        </Table.Row>\n      </Table.Body>\n      <Table.Body />\n    </Table>\n  );\n});\n\nconst TableComponent = (props: FormComponentProps<TableProps>) => {\n  return (\n    <DynamicComponent {...props} hideLabel={true}>\n      <TemplateEditor\n        {...props}\n        extra={props.extra}\n        Component={TableView.Component}\n        Template={Template}\n        options={templates}\n      />\n    </DynamicComponent>\n  );\n};\n\nexport const TableEditor: EditorComponent = {\n  Component: observer(TableComponent),\n  title: 'Table',\n  control: 'Table',\n  icon: 'code',\n  bound: true,\n  valueProvider: 'value',\n  defaultChildren: [\n    {\n      elements: []\n    },\n    {\n      elements: []\n    },\n    {\n      elements: []\n    }\n  ],\n  props: {\n    ...propGroup('Templates', {\n      allowAdd: prop({ type: 'boolean' }),\n      allowEdit: prop({ type: 'boolean' }),\n      allowDelete: prop({ type: 'boolean' }),\n      customView: prop({ type: 'boolean' })\n    }),\n    ...propGroup('Table', {\n      value: boundProp(),\n      template: prop({\n        control: 'Select',\n        props: {\n          options: templates,\n          default: 'component'\n        }\n      }),\n      propSource: prop({}),\n      attached: boundProp({\n        type: 'boolean',\n        control: 'Select',\n        props: {\n          options: [\n            { text: '', value: '' },\n            { text: 'Top', value: 'top' },\n            { text: 'Bottom', value: 'bottom' },\n            { text: 'Both', value: true }\n          ]\n        }\n      }),\n      basic: boundProp({\n        type: 'boolean',\n        control: 'Select',\n        props: {\n          options: [\n            { text: '', value: '' },\n            { text: 'Very', value: 'very' },\n            { text: 'Normal', value: true }\n          ]\n        }\n      }),\n      inverted: boundProp({ type: 'boolean', control: 'Checkbox' }),\n      celled: boundProp({ type: 'boolean' }),\n      collapsing: boundProp({ type: 'boolean' }),\n      compact: boundProp({\n        type: 'boolean',\n        control: 'Select',\n        props: {\n          options: [\n            { text: '', value: '' },\n            { text: 'Very', value: 'very' },\n            { text: 'Normal', value: true }\n          ]\n        }\n      }),\n      padded: boundProp({\n        type: 'boolean',\n        control: 'Select',\n        props: {\n          options: [\n            { text: '', value: '' },\n            { text: 'Very', value: 'very' },\n            { text: 'Normal', value: true }\n          ]\n        }\n      }),\n      fixed: boundProp({ type: 'boolean' }),\n      selectable: boundProp({ type: 'boolean' }),\n      singleLine: boundProp({ type: 'boolean' }),\n      sortable: boundProp({ type: 'boolean' }),\n      stackable: boundProp({ type: 'boolean' }),\n      striped: boundProp({ type: 'boolean' }),\n      structured: boundProp({ type: 'boolean' }),\n      textAlign: boundProp({ control: 'Select', props: { options: align } }),\n      verticalAlign: boundProp({ control: 'Select', props: { options: verticalAlign } })\n    }),\n    ...propGroup('Handlers', {\n      onCreate: handlerProp(),\n      onAdd: handlerProp(),\n      onSave: handlerProp(),\n      onDelete: handlerProp()\n    }),\n    items: prop({\n      control: 'Table',\n      props: { text: 'Columns' },\n      elements: [\n        {\n          props: { placeholder: 'Title', value: { source: 'title' } }\n        },\n        {\n          props: {\n            value: { source: 'source' },\n            text: 'Source',\n            options: { handler: 'datasetSource' }\n          },\n          control: 'Select'\n        },\n        {\n          control: 'Select',\n          props: {\n            text: 'Type',\n            value: { source: 'type' },\n            options: [\n              {\n                value: 'string',\n                text: 'String'\n              },\n              {\n                value: 'number',\n                text: 'Number'\n              },\n              {\n                value: 'boolean',\n                text: 'Boolean'\n              }\n            ]\n          }\n        }\n      ],\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          title: { type: 'string' },\n          source: { type: 'string' },\n          type: { type: 'string' }\n        }\n      }\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Button, Table, TableProps as TablePropsSUI } from 'semantic-ui-react';\nimport {\n  DataSet,\n  FormComponentProps,\n  FormComponent,\n  JSONSchema,\n  FormElement,\n  JSONSchema7TypeName,\n  buildDataSet,\n  BoundProp\n} from '@tomino/dynamic-form';\n\nimport { ErrorView } from './error_view';\nimport { css, toJS, prop } from '../common';\nimport { getValue, getPropValue, simpleHandle, valueSource } from '../helpers';\nimport { Context } from '../context';\nimport { DynamicComponent } from '../wrapper';\n\nexport function createDataset(items: Column[], parent: any) {\n  let schema: JSONSchema = {\n    type: 'object',\n    properties: {}\n  };\n  for (let column of items) {\n    schema.properties[column.source] = {\n      type: column.type || 'string'\n    };\n  }\n  return buildDataSet(schema, toJS(parent));\n}\n\nexport const tableAddButton = css`\n  margin-top: 12px !important;\n`;\n\ntype Column = {\n  title: string;\n  source: string;\n  type: JSONSchema7TypeName;\n};\n\nexport type TableProps = TablePropsSUI & {\n  propSource: string;\n  onCreate: string;\n  onAdd: string;\n  onSave: string;\n  onDelete: string;\n  items: Column[];\n  allowAdd?: boolean;\n  allowEdit?: boolean;\n  allowDelete?: boolean;\n  customView?: boolean;\n  value: BoundProp;\n};\n\nfunction hasControl(template: FormElement, i: number) {\n  return template && template.elements && template.elements.length > i && template.elements[i];\n}\n\nconst tableProps = [\n  'attached',\n  'basic',\n  'inverted',\n  'celled',\n  'collapsing',\n  'compact',\n  'padded',\n  'fixed',\n  'selectable',\n  'singleLine',\n  'sortable',\n  'stackable',\n  'striped',\n  'structured',\n  'textAlign',\n  'verticalAlign'\n];\n\nconst TableComponent: React.FC<FormComponentProps<TableProps>> = props => {\n  const [editingRow, editRow] = React.useState(-1);\n  const context = React.useContext(Context);\n  const controlProps = props.formElement.props || ({} as TableProps);\n  const {\n    formElement,\n    owner\n  }: { formElement: FormElement<TableProps>; owner: DataSet } = controlProps.onCreate\n    ? simpleHandle(props, controlProps.onCreate, context)\n    : { formElement: props.formElement, owner: props.owner };\n  const readOnly = props.readOnly;\n\n  const list: DataSet[] = controlProps.propSource\n    ? props.dataProps[controlProps.propSource]\n    : getValue(props, context) || [];\n\n  const { items, allowAdd, allowDelete, allowEdit, customView } =\n    formElement.props || ({} as TableProps);\n\n  const edit = React.useCallback((e: React.MouseEvent) => {\n    editRow(parseInt(e.currentTarget.getAttribute('data-index')));\n  }, []);\n\n  const source = prop(props.formElement);\n\n  const viewTemplate =\n    formElement.elements && formElement.elements.length > 0 && formElement.elements[0];\n  const editTemplate =\n    formElement.elements && formElement.elements.length > 1 && formElement.elements[1];\n  const addTemplate =\n    formElement.elements && formElement.elements.length > 2 && formElement.elements[2];\n\n  let filteredItems = (items || []).filter(i => i && i.title && i.type && i.source);\n\n  // build add dataset\n  const addDataset = React.useMemo(() => {\n    return createDataset(filteredItems, owner);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [items]);\n\n  const addRow = React.useCallback(() => {\n    const data: any = toJS(addDataset);\n    if (formElement.props.onAdd) {\n      simpleHandle(props, formElement.props.onAdd, context, { data });\n    } else if (data.__item) {\n      owner.addRow(source, data.__item);\n    } else {\n      owner.addRow(source, data);\n    }\n  }, [addDataset, context, formElement.props.onAdd, owner, props, source]);\n\n  let rowDataset = editingRow >= 0 ? createDataset(items, list[editingRow]) : null;\n  const cancelEdit = React.useCallback(() => {\n    editRow(-1);\n  }, []);\n  const editRowHandler = React.useCallback(() => {\n    const data: any = toJS(rowDataset);\n    if (formElement.props.onSave) {\n      simpleHandle(props, formElement.props.onSave, context, { data });\n    } else if (owner && owner.replaceRow) {\n      const source = valueSource(props.formElement);\n      owner.replaceRow(source, editingRow, data);\n    } else {\n      alert('You need to define an on save handler');\n    }\n    editRow(-1);\n  }, [context, editingRow, formElement.props.onSave, owner, props, rowDataset]);\n\n  const deleteRow = React.useCallback(\n    (e: React.MouseEvent) => {\n      if (formElement.props.onDelete) {\n        simpleHandle(props, formElement.props.onDelete, context, {\n          index: parseInt(e.currentTarget.getAttribute('data-index')),\n          data: list\n        });\n      } else {\n        owner.removeRowIndex(source, parseInt(e.currentTarget.getAttribute('data-index')));\n      }\n    },\n    [context, formElement.props.onDelete, list, owner, props, source]\n  );\n\n  if (!filteredItems || !filteredItems.length) {\n    return <div>You need to define table columns</div>;\n  }\n\n  let simpleArray = filteredItems.length === 1 && filteredItems[0].source === '__item';\n\n  if (!list) {\n    return <div>Collection contains no items ...</div>;\n  }\n\n  return (\n    <DynamicComponent control={Table} controlProps={tableProps} {...props}>\n      <Table.Header>\n        <Table.Row>\n          {filteredItems.map((m, i) => (\n            <Table.HeaderCell key={m.title + i}>{m.title}</Table.HeaderCell>\n          ))}\n          {!readOnly && (allowEdit || allowDelete || allowAdd) ? <Table.HeaderCell /> : null}\n        </Table.Row>\n      </Table.Header>\n      <Table.Body>\n        {list.map((row, i) => (\n          <Table.Row key={i}>\n            {editingRow === i\n              ? filteredItems.map((e, i) => {\n                // If this is a simple array\n                if (simpleArray) {\n                  const r = row;\n                  row = {\n                    setValue(_s: any, value: any) {\n                      owner.replaceRow(source, i, value);\n                    },\n                    getValue() {\n                      return r;\n                    },\n                    getSchema() {\n                      return owner.getSchema().items;\n                    },\n                    isRequired() {\n                      return false;\n                    }\n                  } as any;\n                } else {\n                  row = rowDataset;\n                }\n                return (\n                  <Table.Cell key={i}>\n                    {props.catalogue.createComponent(\n                      { ...props, owner: row, dataProps: owner },\n                      hasControl(editTemplate, i)\n                        ? editTemplate.elements[i]\n                        : {\n                          control: 'Input',\n                          props: { value: { source: e.source } }\n                        },\n                      context\n                    )}\n                  </Table.Cell>\n                );\n              })\n              : filteredItems.map((m, j) => {\n                const value = m.source === '__item' ? row : (row as any)[m.source];\n                return (\n                  <Table.Cell key={m.title + j}>\n                    {customView && hasControl(viewTemplate, j)\n                      ? props.catalogue.createComponent(\n                        {\n                          ...props,\n                          owner: row,\n                          dataProps: owner\n                        },\n                        viewTemplate.elements[j],\n                        context\n                      )\n                      : value && typeof value == 'object'\n                        ? '[object]'\n                        : value}\n                  </Table.Cell>\n                );\n              })}\n            {!readOnly && (allowEdit || allowDelete || allowAdd) ? (\n              <Table.Cell collapsing>\n                {allowEdit && editingRow === i && (\n                  <>\n                    <Button icon=\"close\" color=\"orange\" data-index={i} onClick={cancelEdit} />\n                    <Button icon=\"check\" color=\"green\" data-index={i} onClick={editRowHandler} />\n                  </>\n                )}\n                {allowEdit && editingRow !== i && (\n                  <Button icon=\"edit\" color=\"blue\" data-index={i} onClick={edit} />\n                )}\n                {allowDelete && editingRow !== i && (\n                  <Button icon=\"trash\" color=\"red\" data-index={i} onClick={deleteRow} />\n                )}\n              </Table.Cell>\n            ) : null}\n          </Table.Row>\n        ))}\n        {!readOnly && allowAdd ? (\n          <Table.Row>\n            {filteredItems.map((m, i) => (\n              <Table.Cell key={m.title + i}>\n                {props.catalogue.createComponent(\n                  { ...props, owner: addDataset, dataProps: owner },\n                  hasControl(addTemplate, i)\n                    ? addTemplate.elements[i]\n                    : {\n                      control: 'Input',\n                      props: {\n                        value: { source: m.source },\n                        placeholder: m.title\n                      }\n                    },\n                  context\n                )}\n              </Table.Cell>\n            ))}\n            <Table.Cell>\n              <Button icon=\"plus\" color=\"blue\" onClick={addRow} />\n            </Table.Cell>\n          </Table.Row>\n        ) : null}\n      </Table.Body>\n\n      <ErrorView owner={props.owner} source={prop(formElement)} pointing=\"left\" />\n    </DynamicComponent>\n  );\n};\n\nexport const TableView: FormComponent = {\n  Component: observer(TableComponent),\n  toString: (_owner, props, context) => {\n    const tableList: DataSet[] = getValue(props, context);\n    return tableList\n      .map(\n        (_, i) =>\n          `[${i + 1}] ${props.formElement.elements\n            .map(\n              e => `${getPropValue(props, e, context, 'label')}: ${getPropValue(props, e, context)}`\n            )\n            .join('\\n    ')}`\n      )\n      .join('\\n\\n');\n  }\n};\n","import * as React from 'react';\n\nimport { Signature } from './signature_view';\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\n\n// TODO:\nconst SignatureEditorComponent = (props: FormComponentProps) => (\n  <Signature\n    readOnly={true}\n    owner={props.owner}\n    formElement={props.formElement}\n    handlers={props.handlers}\n    catalogue={props.catalogue as any}\n  />\n);\n\nexport const SignatureEditor: EditorComponent = {\n  Component: SignatureEditorComponent,\n  title: 'Signature',\n  control: 'Signature',\n  icon: 'edit',\n  bound: true\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { css, SignatureType } from '../common';\nimport { SignedSignature } from './signature/signature_signed';\nimport { SignatureRejected } from './signature/signature_rejected';\nimport { SignatureRoot } from './signature/signature';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { getValue } from '../helpers';\nimport { Context } from '../context';\n\nconst signatureStyle = css`\n  border: solid 1px #ededed;\n  border-radius: 5px;\n\n  .image {\n    width: 32px !important;\n  }\n\n  .button {\n    margin-top: 6px !important;\n  }\n\n  .items {\n    margin-top: 6px !important;\n  }\n\n  .list {\n    margin-top: 6px !important;\n  }\n\n  img {\n    width: 32px !important;\n    vertical-align: middle;\n    margin-right: 6px;\n    cursor: pointer;\n  }\n`;\n\nexport class Signature extends React.Component<FormComponentProps> {\n  static contextType = Context;\n\n  state = {\n    modalOpen: false,\n    modalRejectOpen: false,\n    reason: '',\n    password: '',\n    loading: false,\n    error: '',\n    fontReady: typeof window === 'undefined' ? true : false\n  };\n\n  handleOpen = () => this.setState({ modalOpen: true });\n  handleClose = () => !this.state.loading && this.setState({ modalOpen: false });\n\n  async componentDidMount() {\n    const value = getValue(this.props, this.context) as SignatureType;\n    if (value.signature) {\n      const state = await this.props.handlers.verifySignature({\n        owner: this.props.owner,\n        props: this.props,\n        context: this.context,\n        args: {\n          uid: value.uid,\n          signature: value.signature\n        }\n      });\n      // console.log(state);\n      value.setValue('verifiedState', state);\n    }\n  }\n\n  render() {\n    const {\n      formElement,\n      formElement: { props },\n      handlers\n    } = this.props;\n\n    // check if all handlers are present\n    if (\n      !this.props.readOnly &&\n      (!handlers ||\n        !handlers.verifySignature ||\n        !handlers.sign ||\n        !handlers.signatureFont ||\n        !handlers.validateForm)\n    ) {\n      throw new Error(\n        `You must implement following handlers to use signatures:\n          - validateForm (): boolean\n          - verifySignature(uid: string, signature: string): boolean\n          - sign(source: string, reject: boolean, password: string, reason: string, submit: boolean): string\n          - signatureFont(): string`\n      );\n    }\n\n    const value = getValue(this.props, this.context) as SignatureType;\n    const { allowComment } = props;\n    const font = handlers.signatureFont ? handlers.signatureFont(null) : 'Menlo, Arial';\n\n    // load font if needed\n    if (value.signature && typeof window !== undefined) {\n      // use three possible fonts\n\n      if (typeof window !== 'undefined') {\n        require('webfontloader').load({\n          google: { families: [font] },\n          fontactive: () => !this.state.fontReady && this.setState({ fontReady: true })\n        });\n      }\n    }\n\n    return (\n      <fieldset className={signatureStyle}>\n        <legend>{formElement.props.label}</legend>\n        {value.signature && this.state.fontReady && (\n          <SignedSignature value={value} font={font} readonly={this.props.readOnly} />\n        )}\n        {value.rejected && <SignatureRejected value={value} />}\n        {!value.date && <SignatureRoot {...this.props} allowComment={allowComment} />}\n      </fieldset>\n    );\n  }\n}\n\nexport const SignatureView: FormComponent = {\n  Component: observer(Signature),\n  toString: () => ''\n};\n","import * as React from 'react';\n\nimport { verified, rejected, pending } from './images';\n\nimport { SignatureType, css } from '../../common';\nimport { Item, Modal, Header, Button, Icon } from 'semantic-ui-react';\nimport { Observer } from 'mobx-react';\n\nconst signedStyle = css`\n  font-size: 18px !important;\n`;\n\nconst signedDate = css`\n  font-size: 12px !important;\n  color: #333;\n`;\n\ntype Props = {\n  value: SignatureType;\n  font: string;\n  readonly: boolean;\n};\nexport const SignedSignature: React.FC<Props> = ({ value, font, readonly }) => {\n  const [modalOpen, toggleOpen] = React.useState(false);\n\n  if (readonly) {\n    return (\n      <Item.Group>\n        <Item>\n          <Item.Image size=\"tiny\">\n            <img\n              src={value.verifiedState === 'Verified' ? verified : rejected}\n              title={\n                value.verifiedState === 'Verified'\n                  ? 'Verified Signature'\n                  : 'Invalid Signature. Document data do not match the signed document data.'\n              }\n            />\n          </Item.Image>\n          <Item.Content>\n            <span className={signedStyle} style={{ fontFamily: font }}>\n              {value.name}\n            </span>\n            <br />\n            <span className={signedDate}>{new Date(value.date).toLocaleDateString()}</span>\n          </Item.Content>\n        </Item>\n      </Item.Group>\n    );\n  }\n\n  return (\n    <Observer>\n      {() => (\n        <Item.Group>\n          <Item>\n            <Item.Image size=\"tiny\">\n              {value.verifiedState === 'Pending' && (\n                <Modal\n                  trigger={\n                    <img\n                      src={pending}\n                      title=\"Pending Signature Verification\"\n                      onClick={() => toggleOpen(true)}\n                    />\n                  }\n                  basic\n                  size=\"small\"\n                  open={modalOpen}\n                >\n                  <Header icon=\"question\" content=\"Pending Verification\" />\n                  <Modal.Content>\n                    <p>Please wait while we verify the signature.</p>\n                  </Modal.Content>\n                  <Modal.Actions>\n                    <Button basic inverted onClick={() => toggleOpen(false)}>\n                      <Icon name=\"remove\" /> Close\n                    </Button>\n                  </Modal.Actions>\n                </Modal>\n              )}\n              {value.verifiedState === 'Verified' && (\n                <Modal\n                  trigger={\n                    <img src={verified} title=\"Valid Signature\" onClick={() => toggleOpen(true)} />\n                  }\n                  basic\n                  size=\"small\"\n                  open={modalOpen}\n                >\n                  <Header icon=\"check\" content=\"The Signature is Valid\" />\n                  <Modal.Content>\n                    <p>\n                      The signature was verified. User {value.name} has signed this document and\n                      since the document has been signed it has not been modified or tampered with.\n                    </p>\n                  </Modal.Content>\n                  <Modal.Actions>\n                    <Button basic inverted onClick={() => toggleOpen(false)}>\n                      <Icon name=\"remove\" /> Close\n                    </Button>\n                  </Modal.Actions>\n                </Modal>\n              )}\n              {value.verifiedState === 'Rejected' && (\n                <Modal\n                  trigger={\n                    <img\n                      src={rejected}\n                      title=\"Invalid Signature\"\n                      onClick={() => toggleOpen(true)}\n                    />\n                  }\n                  basic\n                  size=\"small\"\n                  open={modalOpen}\n                >\n                  <Header icon=\"times circle\" content=\"The Signature is Invalid\" />\n                  <Modal.Content>\n                    <p>\n                      It is possible that the content of the form has been modified after user\n                      signed the document. Please contact the process owner and the signatory.\n                    </p>\n                  </Modal.Content>\n                  <Modal.Actions>\n                    <Button basic inverted onClick={() => toggleOpen(false)}>\n                      <Icon name=\"remove\" /> Close\n                    </Button>\n                  </Modal.Actions>\n                </Modal>\n              )}\n            </Item.Image>\n            <Item.Content>\n              <span className={signedStyle} style={{ fontFamily: font }}>\n                {value.name}\n              </span>\n              <br />\n              <span className={signedDate}>{new Date(value.date).toLocaleDateString()}</span>\n            </Item.Content>\n          </Item>\n        </Item.Group>\n      )}\n    </Observer>\n  );\n};\n","export const verified =\n  'data:image/png;base64,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';\n\nexport const rejected = `data:image/png;base64,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`;\n\nexport const pending = `data:image/gif;base64,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`;\n","import * as React from 'react';\nimport { List } from 'semantic-ui-react';\n\nimport { SignatureType } from '../../common';\n\ntype Props = {\n  value: SignatureType;\n};\n\nexport const SignatureRejected: React.FC<Props> = ({ value }) => (\n  <List>\n    <List.Item\n      icon=\"ban\"\n      content={`${value.name} rejected to sign on ${new Date(value.date).toLocaleDateString()}`}\n    />\n    {value.comment && <List.Item icon=\"comment\" content={value.comment} />}\n  </List>\n);\n","import * as React from 'react';\n\nimport { css } from '../../common';\nimport { TextArea } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { SignatureSign } from './signature_sign';\nimport { SignatureReject } from './signature_reject';\nimport { ErrorView } from '../error_view';\nimport { valueSource } from '../../helpers';\n\ntype Props = {\n  allowComment: boolean;\n};\n\nconst signatureLine = css`\n  height: 20px;\n  margin: 12px;\n  border-bottom: dashed 1px #d4d4d5;\n`;\n\nexport const SignatureRoot: React.FC<FormComponentProps & Props> = props => {\n  const [reason, setReason] = React.useState('');\n\n  if (props.readOnly) {\n    return <div className={signatureLine}>&nbsp;</div>;\n  }\n\n  return (\n    <>\n      {props.allowComment && (\n        <TextArea\n          placeholder=\"Please leave a comment ...\"\n          value={reason}\n          onChange={e => setReason(e.currentTarget.value)}\n        />\n      )}\n\n      <SignatureSign {...props} reason={reason} />\n\n      {(props.formElement.props || {}).allowReject && (\n        <SignatureReject {...props} reason={reason} />\n      )}\n\n      <ErrorView\n        owner={props.owner}\n        source={valueSource(props.formElement) + '.name'}\n        newLine={true}\n      />\n    </>\n  );\n};\n\nSignatureRoot.displayName = 'Signature';\n","import * as React from 'react';\n\nimport { css } from '../../common';\nimport { Modal, Header, Button, Icon, Input, Label, Message } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { Context } from '../../context';\nimport { valueSource, setValue } from '../../helpers';\n\ntype Props = {\n  allowComment: boolean;\n  reason: string;\n};\n\nconst margined = css`\n  margin-top: 12px;\n`;\n\nconst centered = css`\n  text-align: center;\n`;\n\nconst errorLabel = css`\n  margin-left: 12px !important;\n`;\n\nexport const SignatureSign: React.FC<FormComponentProps & Props> = props => {\n  const { allowComment, handlers, formElement, owner, reason } = props;\n  const context = React.useContext(Context);\n  const [password, setPassword] = React.useState('');\n  const [error, setError] = React.useState('');\n  const [modelOpen, setModalOpen] = React.useState(false);\n  const [loading, setLoading] = React.useState(false);\n\n  return (\n    <Modal\n      open={modelOpen}\n      trigger={\n        <Button\n          onClick={() => handlers.validateForm(null) && setModalOpen(true)}\n          icon=\"pencil alternate\"\n          content=\"Sign\"\n          labelPosition=\"left\"\n          primary\n          floated={allowComment ? 'right' : null}\n        />\n      }\n      size=\"small\"\n    >\n      <Header icon=\"shield\" content=\"Form Signature\" />\n      <Modal.Content>\n        <div>\n          <p>\n            {formElement.props && formElement.props.submit\n              ? `Do you wish to sign this form? Upon signing, you will no longer be able to make any\n                  changes, the form will be automatically submitted and process will advance to a next\n                  state.`\n              : `Do you wish to sign this form? Upon signing, you will no longer be able to make any\n                  changes. To submit this form go back to the process page and press the \"Submit\" button.\n                  To make further changes to the form, you will need to remove your signature.`}\n          </p>\n\n          {reason && (\n            <Message icon=\"comment outline\" header=\"You left a comment\" content={reason} />\n          )}\n\n          <form className={centered}>\n            <label htmlFor=\"password\">\n              <b>Please provide your password to sign this form:</b>\n              <br />\n            </label>{' '}\n            <Input\n              className={margined}\n              autoComplete=\"password\"\n              type=\"password\"\n              icon=\"lock\"\n              value={password}\n              onChange={e => setPassword(e.currentTarget.value)}\n            />\n            {error && <Label color=\"red\" content={error} className={errorLabel} />}\n          </form>\n        </div>\n      </Modal.Content>\n      <Modal.Actions>\n        {!loading && (\n          <Button onClick={() => setModalOpen(false)} loading={loading}>\n            <Icon name=\"remove\" /> Cancel\n          </Button>\n        )}\n        <Button\n          color=\"green\"\n          loading={loading}\n          onClick={async () => {\n            if (loading) {\n              return;\n            }\n\n            if (password) {\n              setLoading(true);\n              setError('');\n              let signature = await handlers.sign({\n                owner,\n                props,\n                context,\n                args: {\n                  source: valueSource(formElement),\n                  reject: false,\n                  password,\n                  reason,\n                  submit: formElement.props && !!formElement.props.submit\n                }\n              });\n              setLoading(false);\n              // setPassword('');\n              if (signature) {\n                setValue(props, context, signature);\n              }\n              // setTimeout(() => setSignModalOpen(false), 500);\n            } else {\n              setError('Please provide password');\n            }\n          }}\n        >\n          <Icon name=\"pencil alternate\" />{' '}\n          {formElement.props && formElement.props.submit ? 'Sign and Submit' : 'Sign'}\n        </Button>\n      </Modal.Actions>\n    </Modal>\n  );\n};\n\nSignatureSign.displayName = 'SignatureSign';\n","import * as React from 'react';\n\nimport { SignatureType, css } from '../../common';\nimport { Modal, Header, Button, Icon, Input, Label, Message } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { setValue, valueSource } from '../../helpers';\n\ntype Props = {\n  allowComment: boolean;\n  reason: string;\n};\n\nconst margined = css`\n  margin-top: 12px;\n`;\n\nconst centered = css`\n  text-align: center;\n`;\n\nconst errorLabel = css`\n  margin-left: 12px !important;\n`;\n\nexport const SignatureReject: React.FC<FormComponentProps & Props> = props => {\n  const { allowComment, handlers, formElement, owner, reason } = props;\n  const [password, setPassword] = React.useState('');\n  const [error, setError] = React.useState('');\n  const [rejectModalOpen, setRejectModalOpen] = React.useState(false);\n  const [loading, setLoading] = React.useState(false);\n\n  return (\n    <Modal\n      open={rejectModalOpen}\n      trigger={\n        <Button\n          icon=\"ban\"\n          content=\"Reject\"\n          labelPosition=\"left\"\n          onClick={() => handlers.validateForm(null) && setRejectModalOpen(true)}\n          color=\"red\"\n          floated={allowComment ? 'right' : null}\n        />\n      }\n      size=\"small\"\n    >\n      <Header icon=\"ban\" content=\"Reject Signature\" />\n      <Modal.Content>\n        <div>\n          <p>\n            {formElement.props.submit\n              ? `Do you wish to reject this form? Upon rejecting, you will no longer be able to\n                  make any changes, the form will be automatically submitted and process will\n                  advance to a next state.`\n              : `Do you wish to reject this form? Upon rejecting, you will no longer be able to\n                  make any changes. To make further changes to the form, you will need to withdraw your rejection.`}\n          </p>\n          {reason && (\n            <Message icon=\"comment outline\" header=\"You left a comment\" content={reason} />\n          )}\n\n          <form className={centered}>\n            <label htmlFor=\"password\">\n              <b>Please provide your password to reject this form:</b>\n            </label>{' '}\n            <br />\n            <Input\n              className={margined}\n              type=\"password\"\n              icon=\"lock\"\n              autoComplete=\"password\"\n              value={password}\n              onChange={e => setPassword(e.currentTarget.value)}\n            />\n            {error && <Label color=\"red\" content={error} className={errorLabel} />}\n          </form>\n        </div>\n      </Modal.Content>\n\n      <Modal.Actions>\n        {!loading && (\n          <Button onClick={() => setRejectModalOpen(false)} loading={loading}>\n            <Icon name=\"remove\" /> Cancel\n          </Button>\n        )}\n        <Button\n          color=\"red\"\n          loading={loading}\n          onClick={async () => {\n            if (loading) {\n              return;\n            }\n            if (password) {\n              setLoading(true);\n              setError('');\n              const rejection = (await handlers.sign({\n                owner,\n                props,\n                context,\n                args: {\n                  source: valueSource(formElement),\n                  reject: true,\n                  password,\n                  reason,\n                  submit: formElement.props && !!formElement.props.submit\n                }\n              })) as SignatureType;\n              setValue(props, context, rejection);\n\n              // setLoading(false);\n              // setPassword('');\n              // setRejectModalOpen(false);\n            } else {\n              setError('Please provide password');\n            }\n          }}\n        >\n          <Icon name=\"ban\" />{' '}\n          {formElement.props && formElement.props.submit ? 'Reject and Submit' : 'Reject'}\n        </Button>\n      </Modal.Actions>\n    </Modal>\n  );\n};\n\nSignatureReject.displayName = 'RejectSignature';\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { TextAreaView } from './textarea_view';\nimport { propGroup, prop } from '../editor/editor_common';\n\nexport const TextAreaEditor: EditorComponent = {\n  Component: TextAreaView.Component,\n  title: 'Text Area',\n  control: 'Textarea',\n  icon: 'window maximize outline',\n  bound: true,\n  props: propGroup('Text Area', {\n    placeholder: prop()\n  })\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { TextArea } from 'semantic-ui-react';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\n\nimport { ErrorView } from './error_view';\nimport { processControl, getValue } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\nconst controlProps = ['placeholder'];\n\nexport const TextAreaComponent: React.FC<FormComponentProps> = props => {\n  const { source, owner, disabled, error, value, handleChange } = processControl(props);\n\n  return (\n    <React.Fragment>\n      <DynamicComponent\n        {...props}\n        control={TextArea}\n        controlProps={controlProps}\n        name={source}\n        disabled={disabled || !source}\n        error={error}\n        value={value || ''}\n        onChange={handleChange}\n      />\n\n      <ErrorView owner={owner} source={source} />\n    </React.Fragment>\n  );\n};\n\nexport const TextAreaView: FormComponent = {\n  Component: observer(TextAreaComponent),\n  toString: (_owner, props, context) => getValue(props, context)\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\n\nimport { Comment } from './comment_view';\nimport { propGroup, boundProp } from '../editor/editor_common';\nimport { colors } from './enums';\n\nexport const CommentEditor: EditorComponent = {\n  Component: Comment,\n  title: 'Comment',\n  control: 'Comment',\n  icon: 'comment',\n  props: propGroup('Comment', {\n    content: boundProp(),\n    header: boundProp({\n      default: 'Comment'\n    }),\n    icon: boundProp({\n      default: 'comments outline'\n    }),\n    color: boundProp({\n      default: 'yellow',\n      control: 'Select',\n      props: {\n        options: colors\n      }\n    })\n  }),\n  defaultProps: {\n    header: 'Comment',\n    icon: 'comments outline',\n    color: 'yellow'\n  }\n};\n","import * as React from 'react';\n\nimport { Message } from 'semantic-ui-react';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { getValue } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\ntype CommentProps = {\n  text: string;\n  header: string;\n  color: string;\n};\nconst controlProps = ['header', 'icon', 'color', 'content'];\n\nexport const Comment: React.FC<FormComponentProps<CommentProps>> = props => {\n  return <DynamicComponent {...props} control={Message} controlProps={controlProps} />;\n};\n\nexport const CommentView: FormComponent = {\n  Component: Comment,\n  toString: (_, props, context) => getValue(props, context, 'text')\n};\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { observer } from 'mobx-react';\nimport {\n  propGroup,\n  boundProp,\n  handlerProp,\n  tableProp,\n  dataProp,\n  prop\n} from '../editor/editor_common';\nimport { DropdownView, DropdownProps } from './dropdown_view';\nimport { DynamicComponent } from '../wrapper';\nimport { StackEditor } from '../layouts/stack_editor';\nimport { Segment } from 'semantic-ui-react';\nimport { SingleDropCell } from '../editor/layouts_common_editor';\n\nconst templates = [\n  { text: 'Component View', value: 'component' },\n  { text: 'Items', value: 'items' }\n];\n\nconst DropdownEditorComponent = (props: FormComponentProps<DropdownProps>) => {\n  const { formElement } = props;\n  const template = formElement.props.template;\n\n  const stackedFormElement = React.useMemo(\n    () => ({\n      ...formElement,\n      props: {\n        gap: '12px',\n        layout: 'column'\n      }\n    }),\n    [formElement]\n  );\n\n  if (template == null || template === 'component') {\n    return <DropdownView {...props} />;\n  }\n\n  return (\n    <DynamicComponent {...props}>\n      <Segment>\n        <StackEditor.Component {...props} formElement={stackedFormElement} />\n        <SingleDropCell {...props} />\n      </Segment>\n    </DynamicComponent>\n  );\n};\n\nexport const DropdownEditor: EditorComponent = {\n  Component: observer(DropdownEditorComponent),\n  title: 'Dropdown',\n  control: 'Dropdown',\n  icon: 'caret down',\n  group: 'Form',\n  props: {\n    options: tableProp({ bound: true }, 'Options'),\n    ...propGroup('Sources', {\n      asyncOptions: handlerProp(),\n      value: boundProp(),\n      schemaSource: dataProp({\n        documentation: 'Dataset path containing the enumeration of list values'\n      }),\n      filterSource: dataProp({\n        documentation:\n          'Dataset path used to filter current values. For example, we can have a dataset path \"country\", store a code of currently selected country.'\n      }),\n      filterColumn: prop({\n        documentation:\n          'Enumerator column used to filter current values. For example, we can have an enumerator with columns \"value, text, countryCode\". As a result we can choose to use the \"countryCode\" to compare with filter source.'\n      })\n    }),\n    ...propGroup('Dropdown', {\n      additionLabel: boundProp(),\n      basic: boundProp({ type: 'boolean' }),\n      button: boundProp({ type: 'boolean' }),\n      className: boundProp({ type: 'boolean' }),\n      clearable: boundProp({ type: 'boolean' }),\n      closeOnBlur: boundProp({ type: 'boolean' }),\n      closeOnChange: boundProp({ type: 'boolean' }),\n      compact: boundProp({ type: 'boolean' }),\n      deburr: boundProp({ type: 'boolean' }),\n      defaultOpen: boundProp({ type: 'boolean' }),\n      direction: boundProp({\n        control: 'Select',\n        props: { options: [{ text: 'left', value: 'left' }, { text: 'right', value: 'right' }] }\n      }),\n      error: boundProp({ type: 'boolean' }),\n      floating: boundProp({ type: 'boolean' }),\n      fluid: boundProp({ type: 'boolean' }),\n      header: boundProp({ type: 'boolean' }),\n      icon: boundProp({ type: 'boolean' }),\n      item: boundProp({ type: 'boolean' }),\n      labeled: boundProp({ type: 'boolean' }),\n      lazyLoad: boundProp({ type: 'boolean' }),\n      loading: boundProp({ type: 'boolean' }),\n      minCharacters: boundProp({ type: 'number' }),\n      noResultsMessage: boundProp({ type: 'boolean' }),\n      open: boundProp({ type: 'boolean' }),\n      openOnFocus: boundProp({ type: 'boolean' }),\n      placeholder: boundProp({ type: 'boolean' }),\n      pointing: boundProp({ type: 'boolean' }),\n      scrolling: boundProp({ type: 'boolean' }),\n      search: boundProp({ type: 'boolean' }),\n      searchQuery: boundProp({ type: 'boolean' }),\n      selectOnBlur: boundProp({ type: 'boolean' }),\n      selectOnNavigation: boundProp({ type: 'boolean' }),\n      selection: boundProp({ type: 'boolean' }),\n      simple: boundProp({ type: 'boolean' }),\n      text: boundProp(),\n      upward: boundProp({ type: 'boolean' }),\n      wrapSelection: boundProp({ type: 'boolean' })\n    }),\n\n    ...propGroup('Handlers', {\n      onAddItem: handlerProp(),\n      onBlur: handlerProp({ type: 'boolean' }),\n      onChange: handlerProp({ type: 'boolean' }),\n      onClose: handlerProp({ type: 'boolean' }),\n      onClick: handlerProp({ type: 'boolean' }),\n      onFocus: handlerProp({ type: 'boolean' }),\n      onLabelClick: handlerProp({ type: 'boolean' }),\n      // onLoadOptions: handlerProp({ type: 'boolean' }),\n      onMouseDown: handlerProp({ type: 'boolean' }),\n      onOpen: handlerProp({ type: 'boolean' }),\n      onSearchChange: handlerProp({ type: 'boolean' }),\n      onSearch: handlerProp({ type: 'boolean' })\n    }),\n    ...propGroup('Editor', {\n      template: prop({\n        control: 'Select',\n        props: {\n          default: 'component',\n          options: templates\n        }\n      })\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { Dropdown, DropdownProps as SuiDropdownProps } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { observer } from 'mobx-react';\nimport { processControl, getValues, simpleHandle } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\ntype Props = {\n  filterSource: string;\n  filterColumn: string;\n  schemaSource: string;\n  template: string;\n  asyncOptions: string;\n};\n\nconst controlProps = [\n  'basic',\n  'button',\n  'className',\n  'clearable',\n  'closeOnBlur',\n  'closeOnChange',\n  'compact',\n  'deburr',\n  'defaultOpen',\n  'direction',\n  'floating',\n  'fluid',\n  'header',\n  'icon',\n  'item',\n  'labeled',\n  'lazyLoad',\n  'loading',\n  'minCharacters',\n  'noResultsMessage',\n  'onAddItem',\n  'onBlur',\n  'onChange',\n  'onClose',\n  'onClick',\n  'onFocus',\n  'onLabelClick',\n  // 'onLoadOptions',\n  'onMouseDown',\n  'onOpen',\n  'onSearchChange',\n  // 'onSearch',\n  'open',\n  'options',\n  'openOnFocus',\n  'placeholder',\n  'pointing',\n  'scrolling',\n  'search',\n  'searchQuery',\n  'selectOnBlur',\n  'selectOnNavigation',\n  'selection',\n  'simple',\n  'text',\n  'upward',\n  'wrapSelection',\n  'value'\n];\n\nexport type MenuChildProps = {\n  name: string;\n};\n\nexport type DropdownProps = SuiDropdownProps & Props;\n\nexport const DropdownView = observer((props: FormComponentProps<DropdownProps>) => {\n  const { handleChange, error, formElement, owner, context, value } = processControl(props);\n  const [filterSource, filterColumn, schemaSource, options, asyncOptionsHandler] = getValues(\n    props,\n    'filterSource',\n    'filterColumn',\n    'schemaSource',\n    'options',\n    'asyncOptions'\n  );\n\n  // const options = React.useMemo(() => getValue(props, context, 'options'), [context, props]);\n\n  const [loading, setLoading] = React.useState(false);\n  const [asyncOptions, setOptions] = React.useState([]);\n\n  let currentOptions = React.useMemo(() => {\n    return schemaSource\n      ? owner.getSchema(schemaSource).$enum\n      : Array.isArray(options) && options.length > asyncOptions.length\n        ? options\n        : asyncOptions;\n  }, [asyncOptions, options, owner, schemaSource]);\n\n  React.useEffect(() => {\n    async function load() {\n      if (asyncOptionsHandler) {\n        setLoading(true);\n        const options = simpleHandle(props, asyncOptionsHandler, context);\n        const opts = await options;\n        setOptions(opts);\n        setLoading(false);\n      }\n    }\n    load();\n  }, [asyncOptionsHandler, context, options, owner, props]);\n\n  const filter = filterSource ? owner.getValue(filterSource) : null;\n  const filteredOptions = filterSource\n    ? currentOptions.filter((v: any) => v[filterColumn] === filter)\n    : currentOptions;\n\n  if (!formElement.elements || formElement.elements.length === 0) {\n    return (\n      <DynamicComponent\n        {...props}\n        control={Dropdown}\n        controlProps={controlProps}\n        error={!!error}\n        options={filteredOptions}\n        loading={loading}\n        showError={true}\n        onChange={handleChange}\n        value={value || ''}\n      />\n    );\n  }\n  return (\n    <DynamicComponent {...props} control={Dropdown} controlProps={controlProps}>\n      <Dropdown.Menu>\n        {formElement.elements &&\n          formElement.elements.map((m, i) => (\n            <Dropdown.Item key={i} data-name={m.props.name} data-value={m.props.value}>\n              {props.catalogue.createComponent(props, m, context)}\n            </Dropdown.Item>\n          ))}\n      </Dropdown.Menu>\n    </DynamicComponent>\n  );\n});\n","import { EditorComponent } from '@tomino/dynamic-form';\n\nimport { DateView } from './date_time_view';\nimport { propGroup, boundProp } from '../editor/editor_common';\n\nexport const DateEditor: EditorComponent = {\n  Component: DateView.Component,\n  title: 'Date Time',\n  control: 'Date',\n  icon: 'calendar',\n  props: propGroup('Comment', {\n    value: boundProp(),\n    iconPosition: boundProp({\n      default: 'left'\n    }),\n    type: boundProp({\n      control: 'Select',\n      props: {\n        options: [\n          { text: 'Date', value: 'Date' },\n          { text: 'Time', value: 'Time' },\n          { text: 'DateTime', value: 'DateTime' },\n          { text: 'Range', value: 'Range' }\n        ]\n      }\n    }),\n    clearable: boundProp({\n      type: 'boolean'\n    })\n  }),\n  defaultProps: {\n    iconPosition: 'left'\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { DateInput, TimeInput, DateTimeInput, DatesRangeInput } from 'semantic-ui-calendar-react';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { processControl, getValue } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\nexport type DateComponentProps = {\n  type: string;\n};\n\nconst controlProps = ['value', 'iconPosition', 'clearable'];\n\nconst DateComponent: React.FC<FormComponentProps<DateComponentProps>> = props => {\n  const { source, formElement, disabled, handleChange } = processControl(props);\n  const type = formElement.props.type;\n  let Component: any =\n    type === 'Date'\n      ? DateInput\n      : type === 'Time'\n        ? TimeInput\n        : type === 'DateTime'\n          ? DateTimeInput\n          : DatesRangeInput;\n\n  return (\n    <>\n      <DynamicComponent\n        {...props}\n        control={Component}\n        controlProps={controlProps}\n        disabled={disabled}\n        name={source}\n        duration={0}\n        animation=\"none\"\n        onChange={handleChange}\n      />\n    </>\n  );\n};\n\nexport const DateView: FormComponent = {\n  Component: observer(DateComponent),\n  toString: (_, props, context) => getValue(props, context)\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { ButtonComponent, ButtonProps } from './buttons_view';\nimport { observer } from 'mobx-react';\nimport { propGroup, handlerProp, boundProp } from '../editor/editor_common';\nimport { colors } from './enums';\n\n// export const ApproveButton: EditorComponent = {\n//   Component: observer(Approve),\n//   title: 'Approve Button',\n//   control: 'ApproveButton',\n//   icon: 'check',\n//   group: 'Buttons'\n// };\n\n// export const DeleteButton: EditorComponent = {\n//   Component: observer(Delete),\n//   title: 'Delete Button',\n//   control: 'Delete Button',\n//   icon: 'trash',\n//   group: 'Buttons'\n// };\n\nexport const ButtonEditor: EditorComponent<ButtonProps> = {\n  Component: observer(ButtonComponent),\n  title: 'Button',\n  control: 'Button',\n  icon: 'box',\n  group: 'Buttons',\n  props: {\n    ...propGroup('Button', {\n      onClick: handlerProp({}),\n      icon: boundProp({}),\n      color: boundProp({\n        control: 'Select',\n        label: 'Color',\n        props: {\n          options: colors\n        }\n      }),\n      content: boundProp({})\n    })\n  }\n};\n\n// export const RejectButton: EditorComponent = {\n//   Component: observer(Reject),\n//   title: 'Reject Button',\n//   control: 'RejectButton',\n//   icon: 'ban',\n//   group: 'Buttons'\n// };\n\n// export const SubmitButton: EditorComponent = {\n//   Component: observer(Submit),\n//   title: 'Submit Button',\n//   control: 'SubmitButton',\n//   icon: 'download',\n//   group: 'Buttons'\n// };\n","import * as React from 'react';\nimport { FormComponentProps, config, FormComponent } from '@tomino/dynamic-form';\nimport { Button } from 'semantic-ui-react';\nimport { SemanticICONS } from 'semantic-ui-react/dist/commonjs/generic';\nimport { DynamicComponent } from '../wrapper';\nimport { simpleHandle } from '../helpers';\nimport { Context } from '../context';\n\n// export const Approve: React.FC<FormComponentProps> = ({\n//   formElement,\n//   handlers,\n//   owner,\n//   readOnly\n// }) => {\n//   if (readOnly) {\n//     return null;\n//   }\n//   return (\n//     <Button\n//       icon=\"check\"\n//       primary\n//       onClick={() => {\n//         if (formElement.source) {\n//           owner.setValue(formElement.source, true);\n//         }\n//         handlers && handlers.approve();\n//       }}\n//       content={formElement.label || config.i18n`Approve`}\n//       labelPosition=\"left\"\n//     />\n//   );\n// };\n\n// export const ApproveButton: FormComponent = {\n//   Component: Approve\n// };\n\n// export const Delete: React.FC<FormComponentProps> = ({\n//   owner,\n//   handlers,\n//   formElement,\n//   readOnly\n// }) => {\n//   if (readOnly) {\n//     return null;\n//   }\n\n//   function handleDelete(e: React.MouseEvent<HTMLButtonElement>) {\n//     handlers.delete(owner, { e, formElement });\n//   }\n\n//   return <Button icon=\"trash\" color=\"red\" onClick={handleDelete} />;\n// };\n\n// export const DeleteButton: FormComponent = {\n//   Component: Delete\n// };\n\nexport type ButtonProps = {\n  target: string;\n  icon: SemanticICONS;\n  color: string;\n  content: string;\n  onClick: any;\n};\n\nconst buttonProps = ['color', 'src', 'icon', 'content'];\n\nexport const ButtonComponent: React.FC<FormComponentProps<ButtonProps>> = props => {\n  const context = React.useContext(Context);\n  const onClick = React.useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (props.formElement.props.onClick) {\n        simpleHandle(props, props.formElement.props.onClick, context, { e });\n      } else {\n        console.error('Button does not define a handler');\n      }\n    },\n    [context, props]\n  );\n\n  if (props.readOnly) {\n    return null;\n  }\n\n  return (\n    <DynamicComponent\n      {...props}\n      control={Button}\n      controlProps={buttonProps}\n      onClick={onClick}\n      as={props.formElement.props.target ? config.linkElement : undefined}\n      {...config.linkElementTarget(props.formElement.props.target)}\n    />\n  );\n};\n\nButtonComponent.displayName = 'Button';\n\nexport const ButtonView: FormComponent = {\n  Component: ButtonComponent\n};\n\n// export const Reject: React.FC<FormComponentProps> = ({\n//   formElement,\n//   handlers,\n//   owner,\n//   readOnly\n// }) => {\n//   const onClick = React.useCallback(() => {\n//     if (formElement.source) {\n//       owner.setValue(formElement.source, true);\n//     }\n//     handlers && handlers.reject();\n//   }, [formElement.source, handlers, owner]);\n\n//   if (readOnly) {\n//     return null;\n//   }\n\n//   return (\n//     <Button\n//       icon=\"ban\"\n//       color=\"red\"\n//       onClick={onClick}\n//       content={formElement.label || config.i18n`Reject`}\n//       labelPosition=\"left\"\n//     />\n//   );\n// };\n\n// export const RejectButton: FormComponent = {\n//   Component: Reject\n// };\n\n// export const Submit: React.FC<FormComponentProps> = ({\n//   formElement,\n//   handlers,\n//   owner,\n//   readOnly\n// }) => {\n//   if (readOnly) {\n//     return null;\n//   }\n//   return (\n//     <Button\n//       icon=\"check\"\n//       primary\n//       onClick={() => handlers.submit(owner)}\n//       content={formElement.label || config.i18n`Submit`}\n//       labelPosition=\"left\"\n//     />\n//   );\n// };\n\n// export const SubmitButton: FormComponent = {\n//   Component: Submit\n// };\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { MenuItem, MenuView, MenuProps } from './menu_view';\nimport { observer } from 'mobx-react';\nimport { propGroup, prop, handlerProp } from '../editor/editor_common';\nimport { colors } from './enums';\nimport { DropComponentEditor } from '../editor/droppable_editor';\n\nexport const MenuEditorComponent: React.FC<FormComponentProps<MenuProps>> = props => (\n  <DropComponentEditor\n    {...props}\n    Component={observer(MenuView)}\n    layout={props.formElement.props.vertical ? 'column' : 'row'}\n  />\n);\n\nexport const MenuEditor: EditorComponent = {\n  Component: observer(MenuEditorComponent),\n  title: 'Menu',\n  control: 'Menu',\n  icon: 'window maximize outline',\n  group: 'Form',\n  props: {\n    ...propGroup('Menu', {\n      attached: prop({\n        control: 'Select',\n        label: 'Attached',\n        type: 'string',\n        $enum: [\n          { text: 'None', value: '' },\n          { text: 'top', value: 'Top' },\n          { text: 'bottom', value: 'Bottom' }\n        ]\n      }),\n      inverted: prop({\n        control: 'Checkbox',\n        label: 'Inverted',\n        type: 'boolean'\n      }),\n      subMenu: prop({\n        control: 'Checkbox',\n        label: 'Sub Menu',\n        type: 'boolean'\n      }),\n      tabular: prop({\n        control: 'Checkbox',\n        label: 'Tabular',\n        type: 'boolean'\n      }),\n      color: prop({\n        control: 'Select',\n        label: 'Color',\n        type: 'string',\n        $enum: colors\n      }),\n      position: prop({\n        control: 'Select',\n        label: 'Position',\n        type: 'string',\n        props: {\n          options: [{ text: 'Left', value: 'left' }, { text: 'Right', value: 'right' }]\n        }\n      }),\n      final: prop({\n        type: 'boolean'\n      })\n    })\n  },\n  childProps: propGroup('Menu', {\n    name: prop({\n      label: 'Name',\n      type: 'string'\n    }),\n    customItem: prop({\n      label: 'Custom Item',\n      type: 'boolean',\n      control: 'Checkbox',\n      documentation:\n        'Enable, if contained item defines its own menu item structure, such as Dropdown'\n    })\n  })\n};\n\nexport const MenuItemEditor: EditorComponent = {\n  Component: MenuItem,\n  title: 'Menu Item',\n  control: 'MenuItem',\n  icon: 'window maximize outline',\n  group: 'Form',\n  props: {\n    ...propGroup('Menu', {\n      content: prop({}),\n      icon: prop({})\n    }),\n    ...propGroup('Handlers', {\n      onClick: handlerProp({})\n    })\n  }\n};\n","import * as React from 'react';\n\nimport {\n  Menu,\n  SemanticCOLORS,\n  SemanticWIDTHS,\n  MenuItemProps as MenuItemSui\n} from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { isNullOrEmpty, names, handle } from '../common';\nimport { Context } from '../context';\nimport { DynamicComponent } from '../wrapper';\nimport { getValue } from '../helpers';\n\nexport type MenuProps = {\n  attached: 'top' | 'bottom';\n  borderless: boolean;\n  className: string;\n  color: SemanticCOLORS;\n  compact: boolean;\n  defaultActiveIndex: number;\n  defaultActive: string;\n  fixed: 'left' | 'right' | 'bottom' | 'top';\n  floated: boolean | 'right';\n  fluid: boolean;\n  icon: boolean | 'labeled';\n  inverted: boolean;\n  pagination: boolean;\n  pointing: boolean;\n  secondary: boolean;\n  size: 'mini' | 'tiny' | 'small' | 'large' | 'huge' | 'massive';\n  stackable: boolean;\n  tabular: boolean | 'right';\n  text: boolean;\n  vertical: boolean;\n  widths: SemanticWIDTHS;\n  subMenu: boolean;\n};\n\nexport type MenuChildProps = {\n  name: string;\n  customItem: boolean;\n};\n\ntype MenuItemProps = MenuItemSui & {\n  onClick: string;\n};\n\nconst menuControlProps = [\n  'attached',\n  'borderless',\n  'color',\n  'compact',\n  'fixed',\n  'floated',\n  'fluid',\n  'icon',\n  'inverted',\n  'pagination',\n  'pointing',\n  'secondary',\n  'size',\n  'stackable',\n  'tabular',\n  'text',\n  'vertical',\n  'widths'\n];\n\nconst menuItemControlProps = ['content', 'icon'];\n\nexport const MenuItem: React.FC<FormComponentProps<MenuItemProps>> = props => {\n  const context = React.useContext(Context);\n  const clickHandler = props.formElement.props.onClick;\n  const onClick = React.useCallback(() => {\n    if (clickHandler) {\n      handle(props.handlers, clickHandler, props.owner, props, props.formElement, context);\n    }\n  }, [clickHandler, context, props]);\n\n  return (\n    <DynamicComponent\n      {...props}\n      controlProps={menuItemControlProps}\n      control={Menu.Item}\n      onClick={onClick}\n      as=\"div\"\n    />\n  );\n};\n\nexport const MenuView: React.FC<\n  FormComponentProps<MenuProps, MenuChildProps> & { EmptyCell?: any }\n> = props => {\n  const context = React.useContext(Context);\n  const { formElement } = props;\n  const value = getValue(props, context);\n  const [selection] = React.useState(\n    value ||\n      (formElement.elements && formElement.elements.length && formElement.elements[0].props.name)\n  );\n  // const onClick = React.useCallback((e: React.MouseEvent<any>) => {\n  //   setSelection(e.currentTarget.getAttribute('data-name'));\n  // }, []);\n\n  const MenuType = formElement.props.subMenu ? Menu.Menu : Menu;\n\n  return (\n    <>\n      <DynamicComponent {...props} control={MenuType} controlProps={menuControlProps}>\n        {(formElement.elements || []).map((m, i) => (\n          <React.Fragment key={i}>\n            {props.catalogue.createComponent(\n              {\n                ...props,\n                className: names(props.className, {\n                  active: !isNullOrEmpty(selection) && m.props.name === selection\n                })\n              },\n              m,\n              context\n            )}\n          </React.Fragment>\n        ))}\n        {props.formElement.elements.length === 0 && props.EmptyCell && (\n          <Menu.Item data-no-drop={true}>\n            <props.EmptyCell {...props} />\n          </Menu.Item>\n        )}\n      </DynamicComponent>\n    </>\n  );\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { IconView } from './icon_view';\nimport { observer } from 'mobx-react';\nimport { propGroup, prop } from '../editor/editor_common';\n\nexport const IconEditor: EditorComponent = {\n  Component: observer(IconView),\n  title: 'Icon',\n  control: 'Icon',\n  icon: 'bath',\n  props: propGroup('Icon', {\n    name: prop({\n      label: 'Icon',\n      type: 'string',\n      documentation:\n        'Please see the list of icons here: <a href=\"https://react.semantic-ui.com/elements/icon/\" target=\"_blank\">https://react.semantic-ui.com/elements/icon/</a>'\n    })\n  })\n};\n","import * as React from 'react';\n\nimport { Icon } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { SemanticICONS } from 'semantic-ui-react/dist/commonjs/generic';\n\nexport type IconProps = {\n  name: SemanticICONS;\n};\n\nexport const IconView: React.FC<FormComponentProps<IconProps>> = props => (\n  <Icon name={props.formElement.props.name || 'ban'} />\n);\n\nIconView.displayName = 'Icon';\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { SegmentView } from './segment_view';\nimport { propGroup, boundProp } from '../editor/editor_common';\nimport { colors, sizes, align } from './enums';\nimport { observer } from 'mobx-react';\n\nexport const SegmentEditor: EditorComponent = {\n  Component: observer(SegmentView),\n  title: 'Segment',\n  control: 'Segment',\n  icon: 'window maximize outline',\n  props: {\n    ...propGroup('Segment', {\n      attached: boundProp({\n        $enum: [{ value: 'top', text: 'top' }, { value: 'bottom', text: 'bottom' }]\n      }),\n      basic: boundProp({ type: 'boolean' }),\n      circular: boundProp({ type: 'boolean' }),\n      clearing: boundProp({ type: 'boolean' }),\n      color: boundProp({ $enum: colors }),\n      compact: boundProp({ type: 'boolean' }),\n      disabled: boundProp({ type: 'boolean' }),\n      floated: boundProp({\n        $enum: [{ value: 'left', text: 'left' }, { value: 'right', text: 'right' }]\n      }),\n      inverted: boundProp({ type: 'boolean' }),\n      loading: boundProp({ type: 'boolean' }),\n      padded: boundProp({ type: 'boolean' }),\n      piled: boundProp({ type: 'boolean' }),\n      placeholder: boundProp({ type: 'boolean' }),\n      raised: boundProp({ type: 'boolean' }),\n      secondary: boundProp({ type: 'boolean' }),\n      size: boundProp({ $enum: sizes }),\n      stacked: boundProp({ type: 'boolean' }),\n      tertiary: boundProp({ type: 'boolean' }),\n      textAlign: boundProp({ $enum: align }),\n      vertical: boundProp({ type: 'boolean' })\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Segment, SegmentProps } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { createComponents } from '../common';\nimport { DynamicComponent } from '../wrapper';\n\nexport const controlProps = [\n  'attached',\n  'basic',\n  'circular',\n  'clearing',\n  'disabled',\n  'color',\n  'compact',\n  'floated',\n  'inverted',\n  'loading',\n  'name',\n  'padded',\n  'piled',\n  'placeholder',\n  'raised',\n  'secondary',\n  'size',\n  'stacked',\n  'tertiary',\n  'textAlign',\n  'vertical'\n];\n\nexport const SegmentView: React.FC<FormComponentProps<SegmentProps>> = observer(props => {\n  return (\n    <DynamicComponent {...props} controlProps={controlProps} control={Segment}>\n      {createComponents(props)}\n    </DynamicComponent>\n  );\n});\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { propGroup, prop, boundProp, tableProp } from '../editor/editor_common';\nimport { TabProps, TabView } from './tab_view';\nimport { SingleDropCell } from '../editor/layouts_common_editor';\nimport { EditorContext } from '../editor/editor_context';\n\n// const TabsEditorComponent = (props: FormComponentProps<TabProps>) => {\n//   return (\n//     <DynamicComponent {...props}>\n//       <TemplateEditor {...props} extra={props.extra} Component={TabView} options={templates} />\n//     </DynamicComponent>\n//   );\n// };\n\nconst TabsEditorComponent = (props: FormComponentProps<TabProps>) => {\n  const context = React.useContext(EditorContext);\n  return (\n    <TabView.Component\n      {...props}\n      EmptyCell={(props: FormComponentProps) => (\n        <SingleDropCell id=\"0\" {...props} editorState={context} />\n      )}\n    />\n  );\n};\n\nTabsEditorComponent.displayName = 'TabsEditor';\n\nexport const TabsEditor: EditorComponent = {\n  Component: TabsEditorComponent,\n  bound: true,\n  valueProvider: 'value',\n  title: 'Tabs',\n  control: 'Tabs',\n  icon: 'th list',\n  props: {\n    ...propGroup('Tab Config', {\n      value: boundProp({ type: 'string' }, 'SourceHandler'),\n      valueField: boundProp({ type: 'string' }),\n      textField: boundProp({ type: 'string' }),\n      vertical: prop({ type: 'boolean' })\n    }),\n    // ...propGroup('Editor', {\n    //   template: prop({\n    //     control: 'Select',\n    //     props: {\n    //       default: 'component',\n    //       options: templates\n    //     }\n    //   })\n    // }),\n    menuItems: tableProp({}, 'Tab Items', [\n      {\n        control: 'Input',\n        props: { placeholder: 'Icon', value: { source: 'icon', label: 'Icon' } }\n      }\n    ])\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { Menu, Segment } from 'semantic-ui-react';\nimport { Option } from '@tomino/dynamic-form';\nimport {\n  DataSet,\n  FormComponentProps,\n  FormComponent,\n  BoundProp,\n  BoundType\n} from '@tomino/dynamic-form';\n\nimport { names, valueSource, css } from '../common';\nimport { getValue } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\nimport { Context } from '../context';\n\nexport const verticalStyle = css`\n  /* name:vertical */\n  display: flex;\n\n  .tabMenu {\n    flex: 1 auto;\n  }\n\n  .tabDivider {\n    flex: 1 16px;\n  }\n\n  .tabContent {\n    flex: 1 100%;\n    margin-top: 0px;\n  }\n  label: vertical;\n`;\n\nexport type TabProps = {\n  menuItems: { text: string; value: string }[];\n  valueField: string;\n  textField: string;\n  vertical: boolean;\n  value: BoundProp;\n};\n\ntype Props = {\n  EmptyCell?: any;\n};\n\nconst TabComponent: React.FC<FormComponentProps<TabProps> & Props> = props => {\n  const [selection, setSelection] = React.useState(0);\n  const context = React.useContext(Context);\n  const { formElement, owner, EmptyCell } = props;\n  const { menuItems, vertical, value } = formElement.props;\n\n  let menus: Option[];\n  let currentOwner: DataSet;\n\n  // 1. if source and list are defined, we will display as many menus as there are fields in the array\n  // 2. If only list is defined, we will take values from the enumerator and project into dataset\n\n  const textField = getValue(props, context, 'textField');\n  const valueField = getValue(props, context, 'valueField');\n  const bound = value && (value as BoundType).source && valueField && textField;\n  const source = valueSource(formElement);\n\n  if (bound) {\n    let values = getValue(props, context) || [];\n\n    menus = values.map((v: any) => ({ text: v[textField], value: v[valueField] }));\n    currentOwner = owner.getValue(`${source}.${selection}`);\n\n    // add the editor\n    if (bound && menus.length === 0) {\n      menus = [{ text: '<Bound>', value: '' }];\n    }\n    // all items share the same form control\n  } else menus = [];\n\n  if (menuItems) {\n    menus = menus.concat(menuItems);\n    if (!bound) {\n      currentOwner = owner;\n    }\n  }\n\n  // select owner\n  let element = bound\n    ? formElement.elements[0]\n    : formElement.elements.length > selection\n      ? formElement.elements[selection]\n      : undefined;\n\n  return (\n    <DynamicComponent {...props} styleName={vertical ? verticalStyle : 'none'}>\n      <Menu\n        attached={vertical ? undefined : 'top'}\n        tabular={!vertical}\n        vertical={!!vertical}\n        className=\"tabMenu\"\n      >\n        {menus.map((m, i) => (\n          <Menu.Item\n            icon={m.icon ? m.icon : undefined}\n            content={m.text}\n            key={i}\n            onClick={() => {\n              setSelection(i);\n            }}\n            active={selection === i}\n          />\n        ))}\n      </Menu>\n\n      {vertical && <div className=\"tabDivider\" />}\n\n      <Segment\n        attached={vertical ? undefined : 'bottom'}\n        basic={!!vertical}\n        className={names({ noPadding: vertical }, 'tabContent')}\n      >\n        {!element && EmptyCell ? (\n          <EmptyCell {...props} elementIndex={selection} />\n        ) : (\n          props.catalogue.createComponent(\n            {\n              ...props,\n              owner: currentOwner || owner\n            },\n            formElement.elements[bound ? 0 : selection],\n            context\n          )\n        )}\n      </Segment>\n    </DynamicComponent>\n  );\n};\n\nexport const TabView: FormComponent = {\n  Component: observer(TabComponent)\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\nimport { HeaderView } from './header_view';\nimport { propGroup, boundProp } from '../editor/editor_common';\nimport { colors, sizes, align } from './enums';\n\nexport const HeaderEditor: EditorComponent = {\n  Component: observer(HeaderView),\n  title: 'Header',\n  control: 'Header',\n  icon: 'font',\n  props: propGroup('Header', {\n    titleSource: boundProp({}),\n    attached: boundProp({\n      control: 'Select',\n      props: {\n        options: [\n          { text: 'None', value: '' },\n          { text: 'Top', value: 'top' },\n          { text: 'Bottom', value: 'bottom' }\n        ]\n      }\n    }),\n    block: boundProp({ type: 'boolean' }),\n    color: boundProp({ control: 'Select', props: { options: colors } }),\n    content: boundProp({}),\n    disabled: boundProp({ type: 'boolean' }),\n    dividing: boundProp({ type: 'boolean' }),\n    floated: boundProp({\n      control: 'Select',\n      props: {\n        options: [\n          { text: 'None', value: '' },\n          { text: 'Left', value: 'left' },\n          { text: 'Right', value: 'right' }\n        ]\n      }\n    }),\n    icon: boundProp({}),\n    image: boundProp({}),\n    inverted: boundProp({ type: 'boolean' }),\n    size: boundProp({ control: 'Select', props: { options: sizes } }),\n    sub: boundProp({ type: 'boolean' }),\n    subheader: boundProp({ control: 'Textarea' }),\n    textAlign: boundProp({ control: 'Select', props: { options: align } })\n  })\n};\n","import * as React from 'react';\n\nimport { HeaderProps as SuiHeaderProps, Header, Icon } from 'semantic-ui-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { tryInterpolate, createComponents } from '../common';\nimport { getValues } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\ntype HeaderProps = SuiHeaderProps & {\n  titleSource: string;\n};\n\nconst controlProps = [\n  'attached',\n  'block',\n  'color',\n  'content',\n  'disabled',\n  'dividing',\n  'floated',\n  'icon',\n  'image',\n  'inverted',\n  'size',\n  'sub',\n  'subheader',\n  'textAlign'\n];\n\nexport const HeaderView: React.FC<FormComponentProps<HeaderProps>> = props => {\n  const { formElement, owner } = props;\n\n  const [content, icon] = getValues(props, 'content');\n\n  let interpolatedContent = tryInterpolate(content, owner);\n\n  if (!formElement.elements || formElement.elements.length == 0) {\n    return (\n      <DynamicComponent\n        control={Header}\n        controlProps={controlProps}\n        content={interpolatedContent}\n        {...props}\n      />\n    );\n  }\n\n  return (\n    <DynamicComponent control={Header} controlProps={controlProps} {...props}>\n      {icon && <Icon name={icon} />}\n      {formElement.elements && formElement.elements.length && (\n        <Header.Content>{createComponents(props)}</Header.Content>\n      )}\n    </DynamicComponent>\n  );\n};\n\nHeaderView.displayName = 'HeaderView';\n","import * as React from 'react';\n\nimport { FormComponentProps, EditorComponent } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\nimport { prop, propGroup, boundProp } from '../editor/editor_common';\nimport { IfView, IfProps } from './if_view';\nimport { DynamicComponent } from '../wrapper';\nimport { TemplateEditor } from './template_editor';\n\nconst templates = [\n  { text: 'Component View', value: '' },\n  { text: 'True Template', value: 'true' },\n  { text: 'False Template', value: 'false' }\n];\n\nconst IfEditorComponent = (props: FormComponentProps<IfProps>) => {\n  return (\n    <DynamicComponent {...props}>\n      <TemplateEditor {...props} extra={props.extra} Component={IfView} options={templates} />\n    </DynamicComponent>\n  );\n};\n\nexport const IfEditor: EditorComponent = {\n  Component: observer(IfEditorComponent),\n  title: 'If',\n  control: 'If',\n  icon: 'question',\n  bound: false,\n  props: {\n    ...propGroup('Condition', {\n      template: prop({\n        control: 'Select',\n        default: 'view',\n        props: {\n          options: templates\n        }\n      }),\n      value: boundProp({}),\n      exists: prop({ type: 'boolean' }),\n      notExists: prop({ type: 'boolean' }),\n      equal: prop({ type: 'string' }),\n      notEqual: prop({ type: 'string' }),\n      biggerThan: prop({ type: 'number' }),\n      biggerOrEqualThan: prop({ type: 'number' }),\n      smallerThan: prop({ type: 'number' }),\n      smallerOrEqualThan: prop({ type: 'number' }),\n      expression: prop({\n        control: 'Textarea',\n        props: { text: 'Expression' }\n      })\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { FormComponentProps, safeEval, BoundProp } from '@tomino/dynamic-form';\nimport { getValue } from '../helpers';\nimport { Context } from '../context';\nimport { prop } from '../common';\n\nexport type IfProps = {\n  exists: boolean;\n  notExists: boolean;\n  biggerThan: number;\n  biggerOrEqualThan: number;\n  smallerThan: number;\n  smallerOrEqualThan: number;\n  equal: string;\n  notEqual: string;\n  expression: string;\n  value: BoundProp;\n};\n\nexport const IfView: React.FC<FormComponentProps<IfProps>> = controlProps => {\n  const { formElement, owner } = controlProps;\n  const { props: props } = formElement;\n  const context = React.useContext(Context);\n\n  if (!prop(controlProps.formElement)) {\n    return <div>Component not bound.</div>;\n  }\n\n  const value = getValue(controlProps, context);\n\n  let isTrue = true;\n  if (props.exists && !value) {\n    isTrue = false;\n  } else if (props.notExists && value) {\n    isTrue = false;\n  } else if (props.equal && value != value) {\n    isTrue = false;\n  } else if (props.notEqual && value == parseFloat(value)) {\n    isTrue = false;\n  } else if (props.biggerThan && value <= parseFloat(value)) {\n    isTrue = false;\n  } else if (props.biggerOrEqualThan && value < parseFloat(value)) {\n    isTrue = false;\n  } else if (props.smallerThan && value <= parseFloat(value)) {\n    isTrue = false;\n  } else if (props.smallerOrEqualThan && value > parseFloat(value)) {\n    isTrue = false;\n  } else if (props.expression) {\n    isTrue = safeEval(owner, props.expression, owner);\n  }\n\n  if (formElement.elements && formElement.elements.length) {\n    return controlProps.catalogue.createComponent(\n      controlProps,\n      formElement.elements[isTrue ? 0 : 1],\n      context\n    ); //, true);\n  }\n  return <div>Empty template</div>;\n};\n\nIfView.displayName = 'IfView';\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { SearchComponentProps, SearchComponent } from './search_view';\nimport { observer } from 'mobx-react';\nimport { propGroup, prop, handlerProp, boundProp } from '../editor/editor_common';\n\nexport const SearchEditor: EditorComponent<SearchComponentProps> = {\n  Component: observer(SearchComponent),\n  title: 'Lookup',\n  control: 'Lookup',\n  icon: 'search',\n  bound: true,\n  props: {\n    ...propGroup('Lookup', {\n      searchName: prop(),\n      search: handlerProp(),\n      single: prop({ type: 'boolean' }),\n      limit: prop({ type: 'number' }),\n      value: boundProp()\n    }),\n    renderTemplate: prop({\n      group: 'Render Template',\n      control: 'Code',\n      props: {\n        language: 'markup'\n      }\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { SearchResultData, SearchProps, Search } from 'semantic-ui-react';\nimport { FormComponentProps, BoundProp } from '@tomino/dynamic-form';\nimport { debounce } from '@tomino/toolbelt';\n\nimport { handle, css } from '../common';\nimport { Context, ContextType } from '../context';\nimport { getValue, setValue, valueSource } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\n\ntype DropdownOption = {\n  title: string;\n  titles: string[];\n  description?: string;\n  image?: string;\n  price?: string;\n  value: string;\n};\n\ntype State = {\n  isLoading: boolean;\n  value: string;\n  options: DropdownOption[];\n};\n\nexport type SearchComponentProps = {\n  searchName: string;\n  renderTemplate: string;\n  search: string;\n  single: number;\n  limit: number;\n  value: BoundProp;\n};\n\nconst style = css`\n  .input {\n    display: block !important;\n  }\n  .result:first-of-type:hover,\n  .result:first-of-type {\n    background: #dedede !important;\n    font-weight: bold;\n  }\n`;\n\nexport const SearchComponent: React.FC<FormComponentProps<SearchComponentProps>> = props => {\n  const ctx = React.useContext(Context); // the react component freezes when used with context\n  return <SearchWithContext {...props} context={ctx} />;\n};\n\nconst controlProps = ['fluid'];\n\n@observer\nexport class SearchWithContext extends React.Component<\n  FormComponentProps<SearchComponentProps> & { context: ContextType },\n  State\n> {\n  static contextType = Context;\n\n  state = { isLoading: false, options: [] as any[], value: '' };\n\n  async componentDidMount() {\n    this.resetComponent();\n\n    let props = this.props.formElement.props;\n    let value = getValue(this.props, this.context);\n\n    if (!value) {\n      return;\n    }\n\n    // we need to preload our value\n    if (value != null) {\n      this.setState({ isLoading: true });\n      handle(\n        this.props.handlers,\n        props.search || 'lookup',\n        this.props.owner,\n        this.props,\n        this.props.formElement,\n        this.context,\n        {\n          lookup: props.searchName,\n          single: props.single,\n          limit: props.limit,\n          value,\n          context: this.props.context,\n          searchByValue: true\n        }\n      ).then((options: DropdownOption[]) => {\n        // handle titles, make sure they are defined\n        this.createTitles(options);\n        this.setState({\n          isLoading: false,\n          value: options && options.length ? options[options.length - 1].title : ''\n        });\n      });\n    }\n  }\n\n  resetComponent = () => this.setState({ isLoading: false, options: [], value: '' });\n\n  handleResultSelect = (_event: React.MouseEvent<HTMLDivElement>, { result }: SearchResultData) => {\n    if (result.key === '-1') {\n      return false;\n    }\n\n    this.setState({ value: result.title });\n    setValue(this.props, this.context, result.value);\n  };\n\n  handleSearchChange = (_event: React.MouseEvent<HTMLElement>, { value }: SearchProps) => {\n    this.setState({ isLoading: true, value });\n    if (value.length < 1) return this.resetComponent();\n\n    this.getResults(value);\n  };\n\n  createTitles(options: DropdownOption[]) {\n    for (let option of options) {\n      if (!option.title) {\n        if (option.titles) {\n          option.title = option.titles.join(' - ');\n        } else {\n          console.error('You need to provide title!');\n        }\n      }\n    }\n  }\n\n  resultRenderer = (option: any) => {\n    let control = this.props.formElement.props.renderTemplate;\n    let titles: string[] = option.titles || [option.title];\n\n    if (control[0] && control[0].match(/\\d/)) {\n      control = control\n        .split('\\n')\n        .map((s, i) => `<div style=\"width: ${s};display: inline-block\">{${i}}</div>`)\n        .join('\\n');\n    }\n\n    titles.forEach((t, i) => (control = control.replace(`{${i}}`, t)));\n\n    return <div dangerouslySetInnerHTML={{ __html: control }} />;\n  };\n\n  getResults = debounce((value: string) => {\n    if (!value) {\n      return [];\n    }\n    if (!this.props.formElement.props.searchName) {\n      throw new Error('You need to define a search name!');\n    }\n    let props = this.props.formElement.props;\n    handle(\n      this.props.handlers,\n      props.search || 'lookup',\n      this.props.owner,\n      this.props,\n      this.props.formElement,\n      this.context,\n      {\n        lookup: props.searchName,\n        single: props.single,\n        limit: props.limit,\n        value,\n        context: this.props.context\n      }\n    ).then((options: DropdownOption[]) => {\n      // handle titles, make sure they are defined\n      this.createTitles(options);\n\n      this.setState({\n        isLoading: false,\n        options\n      });\n    });\n  }, 500);\n\n  render() {\n    const { isLoading, value, options } = this.state;\n\n    if (!valueSource(this.props.formElement)) {\n      return <span>Component not bound ;(</span>;\n    }\n\n    if (this.props.readOnly || this.props.formElement.props.single) {\n      // return <Input disabled value={value} />;\n      return value;\n    }\n\n    return (\n      <DynamicComponent\n        {...this.props}\n        control={Search}\n        controlProps={controlProps}\n        className={style}\n        loading={isLoading}\n        fluid={true}\n        showNoResults={this.state.isLoading ? false : true}\n        showError={true}\n        onResultSelect={this.handleResultSelect}\n        onSearchChange={this.handleSearchChange}\n        resultRenderer={\n          this.props.formElement.props.renderTemplate ? this.resultRenderer : undefined\n        }\n        results={options}\n        value={value}\n      />\n    );\n  }\n}\n\nexport const SearchView = {\n  Component: SearchComponent,\n  toString: () => ''\n};\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\nimport { ApolloProviderEditor } from './apollo_provider_editor';\nimport { ApolloQueryEditor } from './apollo_query.editor';\nimport { ApolloMutationEditor } from './apollo_mutation_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  components: {\n    ApolloProvider: ApolloProviderEditor,\n    ApolloQuery: ApolloQueryEditor,\n    ApolloMutation: ApolloMutationEditor\n  },\n  cssClass: ''\n};\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { ApolloProvider, ApolloProps } from './apollo_provider_view';\nimport { thumbnails } from './apollo_query.editor';\nimport { propGroup, prop } from '../editor/editor_common';\nimport { Context } from '../context';\nimport { DynamicComponent } from '../wrapper';\n\nconst Provider = (props: any) => (\n  <div onMouseOver={props.onMouseOver} onMouseOut={props.onMouseOut}>\n    <ApolloProvider {...props} />\n  </div>\n);\n\nexport const ApolloProviderEditorComponent: React.FC<FormComponentProps<ApolloProps>> = props => {\n  const controlProps = props.formElement.props;\n  const context = React.useContext(Context);\n\n  if (controlProps.authorised) {\n    context.auth.user = {\n      roles: controlProps.roles.split(','),\n      name: controlProps.user,\n      id: controlProps.id\n    };\n  }\n\n  return <DynamicComponent {...props} control={Provider} preserveProps={true} />;\n};\n\nApolloProviderEditorComponent.displayName = 'ApolloProviderEditor';\n\nexport const ApolloProviderEditor: EditorComponent = {\n  Component: ApolloProviderEditorComponent,\n  title: 'Apollo Provider',\n  control: 'ApolloProvider',\n  thumbnail: thumbnails,\n  provider: true,\n  group: 'Data',\n  props: {\n    ...propGroup('Apollo', {\n      server: prop({ label: 'Server Url', type: 'string' }),\n      tokenName: prop({ label: 'Token', type: 'string' }),\n      auth: prop({ label: 'Use Authentication', control: 'Checkbox', type: 'boolean' }),\n      batchRequests: prop({ label: 'Batch Requests', control: 'Checkbox', type: 'boolean' }),\n      disable: prop({\n        documentation: 'This is useful during testing when a mocked provider can be used instead.',\n        label: 'Disable provider',\n        group: 'Apollo',\n        control: 'Checkbox',\n        type: 'boolean'\n      })\n    }),\n    ...propGroup('Test', {\n      authorised: prop({ label: 'Authorise', control: 'Checkbox', type: 'boolean' }),\n      user: prop({ label: 'User', type: 'string' }),\n      roles: prop({ label: 'Roles', type: 'string' }),\n      id: prop({ label: 'Id', type: 'string' })\n    })\n  }\n};\n","import * as React from 'react';\n\nimport { ApolloProvider as Provider } from 'react-apollo';\nimport { ApolloClient } from 'apollo-client';\nimport { InMemoryCache } from 'apollo-cache-inmemory';\n\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { createComponents } from '../common';\nimport { Context } from '../context';\n\nexport type ApolloProps = {\n  server: string;\n  auth: string;\n  tokenName: string;\n  batchRequests: boolean;\n  disable: boolean;\n  authorised?: boolean;\n  user?: string;\n  roles?: string;\n  id?: string;\n};\n\nexport const ApolloProvider: React.FC<FormComponentProps<ApolloProps>> = props => {\n  const context = React.useContext(Context);\n  const {\n    formElement: {\n      props: { auth, server, tokenName, batchRequests, disable }\n    }\n  } = props;\n\n  if (disable) {\n    return <>{createComponents(props)}</>;\n  }\n\n  let httpLink;\n\n  if (batchRequests) {\n    let { BatchHttpLink } = require('apollo-link-batch-http');\n    httpLink = new BatchHttpLink({ uri: server });\n  } else {\n    httpLink = require('apollo-link-http').createHttpLink({\n      uri: server\n    });\n  }\n\n  let client: ApolloClient<any>;\n\n  if (auth) {\n    const { setContext } = require('apollo-link-context');\n    const authLink = setContext((_: any, { headers }: any) => {\n      const token = localStorage.getItem(tokenName || 'CORPIX_TOKEN');\n      return {\n        headers: {\n          ...headers,\n          authorization: token ? `Bearer ${token}` : ''\n        }\n      };\n    });\n    client = new ApolloClient({\n      link: authLink.concat(httpLink),\n      cache: new InMemoryCache()\n    });\n  } else {\n    client = new ApolloClient({\n      link: httpLink,\n      cache: new InMemoryCache()\n    });\n  }\n\n  context.app.client = client;\n\n  return <Provider client={client}>{createComponents(props)}</Provider>;\n};\n\nexport const ApolloProviderView: FormComponent = {\n  Component: ApolloProvider\n};\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\nimport gql from 'graphql-tag';\nimport { MockedProvider } from 'react-apollo/test-utils';\n\nimport { ApolloQueryView, ApolloQueryProps, parseVariables } from './apollo_query_view';\nimport { prop, propGroup, handlerProp, boundProp, dataProp } from '../editor/editor_common';\nimport { observer } from 'mobx-react';\nimport { getValue } from '../helpers';\nimport { Context } from '../context';\n\nexport const thumbnails = {\n  light:\n    'data:image/png;base64,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',\n  dark:\n    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAABCJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2PC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj45NjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj42NDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxkYzpzdWJqZWN0PgogICAgICAgICAgICA8cmRmOlNlcS8+CiAgICAgICAgIDwvZGM6c3ViamVjdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTk6MDQ6MjcgMjI6MDQ6Mjk8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPlBpeGVsbWF0b3IgMy42PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgp5izruAAANRElEQVR4Ac2bW6xdVRWG7U1aIJVQNcXYpujJCUUNoCQmWoKE+oAaQ4SUmyDFVy8QLyHEFx98ARRCQBJjI+oDXlATwKQxTaMJCEQKGlTSA0agUQoICgIFWjh+39zzX117n33Ovp1iR/KfMeZYY445xryvtdslb1kEmp2dXYKb5eCNJUuWvB6X6NVNg1PASVVeB18L1oAVQNoPngVPgifADPhjxSM9PpehXwoOoJ+FT0QGPhGR5FtxYOIHdER5JWwT+BTYDDYCA+6lBC83jn6x2Jl/ATvAHeD3tPMa3HZK51G28958IoAl4Ii0jLweXAUeAm16vV0YUe6t+yD1vw7e3Wr3CMr9Oi8mC/KxKtLg8taIO52/Ci4FTmvJUXJmhF5GeBQ4tR8De8FzYB+QjgTHAn0dD1w2U8DZFHKks2SeRv4B+DZxPKNBOybLh4TsaZAgbPRy8DQIvRoB/g+wDWwBU6CZLYOCw3YlmAYXgFvAXhBqt6H+i/GHvAKUQQ3Ps4k5DpeBspbhG8E9ILQ/AnwnMOnV/RpFvxToa3kPGv+99bA7BlwIfgdC7TbvRnmC9eDxL7eNfvtPbxMLl3UUC+TLQNbmy8ih7Qhufg1RdsaYWEkOblDq5iy96KtNkrBely3lj4EdILSvCgfgW5vGWwL68TuByu0pf11t7A14puJu5LPTHnJ6vivwPB+H49NO6xpNyueAR4CUWJRvAleAb4Iz0h7y6J1ApXbyt1GW2qN+I+VVNgJ3tNobX9peVG4bIEvxKOSbQajdEdHdnABQDD8oGLen/R3V238rt6HzW45XUR7eeSqOyW0LlI7XBfJF4HkguSSMT56l+pVq5yVqMFGxMUTOyL+ALD0FvNnZsNOymSWDPS+uBW17fBZCzv2jvTlmf9jN8+EGSEOQKXY9spSRfxzZq6zJN1OxE8Kb/5cYSufDjwc5jt0MQ+5Vks+8Zxj3wh2BQZy620tZ8458k/ybn+7cFomnLFO4SzAbYkYdVRP7w3Nr99FQIQ43Itt76UHXVKb9RBsdftwsvbD0Q7Pv9Amvrwo/JR74lSD0CoIIfcnKFJqlPccZD5upgXxvrWni0nnVwaTJN23MCaAqaGugTbsu9s3xhuwR2EvXxZ4Hc3w3Ch4ewb3ahK+gwnfAK8C7+E3ov4De0fGt7w34yGTjEGz2aCofBXr9GMt+bP49qnN8Lk1cyKdR/yPAt8y70d+tv7aN5S7iYabRWuRnQMjdM+f82Ls9PsrUg/vmdh/wyHoSeJcXyrb7T/ABg4OPNNuw7zu90TebelfSKVSDbHzXUpZylJQbHuXmzE29UTj1y1sd/GwwiK7WN0ZDvzwlFurkFipv5DzvyzFM8uuR/wVC261AYc59vK+jeZTUdwQyA3KneA2dl5Q21EkzwCVi2yNvirWebTbLe57QOmoME9xVyFI2vvJiQ3mkqdjbWOrD3wv+A6T2Wd3RHLy1WT63JjLyLOhtv18Z/92dg2IlyE0KcXZnDaDZYfs5GkaHr+wvX9Mx5KjneJXnuuqzzIKfxTe6iWNo+8Kft1dn9cHZRWEzkDL6W6xE+aBRvIzAUx9ug71HazvxdEg6wJkyVWMYe/Nth4q/7lHnobr0rh8wJUfrSVDWP9yPkpNQGvVo+nB15JLzCLTtJ4AfPbXz2LLD/fT1NpBXbDsnflCPTtaHYOX6fgP8D+Cj6sooU/gzCG2zCQoTNxof8O9W57mdZaSvRn9xfSYz2dgYZPanDNTo2XdyiZ9c723LnJea6PtAey1m+pdKY7XYabQEje93AM95ycQz3S2fDo4Ged9wc2zvEafbPrpJY0kHfBZfkkvddk40yJOBo63s19sHwGJQZtAncLYW5KtuboCPoLufafgi/LcgZByv1sKFlbs8FoPuxck+4FIvufvHX2xCfrreUwsTNUpi2T8urv6SeNq6HZuXauEnlRuPlM33M4zSGuwm3QeSi7nZ8aGTbHA6JfgMjaX3W+rRRIIuicDfT80za2173UDKdIT/vOplvwb+NOassaOyGb4d+dNASr1OaYy/Nbd2B0wb6LqWr8eUawLptdbjocUEmyn8GjWTnE52Ecx9CrT1VmST/41lKDMlS+hzHXWjr8WRGM0094m/t2quswNcn6G9VUjj0Q/NaYh8lvgu4YhfUCumQ9Kp5aKDjWd8Er612qbtLIPTsTsJny6D6KrpSCx+k6OVj7MD/DkrgT2nFjKJ6Dqa4f/m4vJJqmwAJmgH6C9T+xfIks+yV+xA3gO0je4AspR9JB3Z0Q75t+aSDkiOxrPGDjDgJOsOOSllRC+pjuI7yewgoL8xmnby6wYHLYPb9u21TmyNTzoHm1XYeHyN1QkdN+XvK1U2rhVpoPV8fJHgXM+e5e/By+bqKT2fjvhl1fv+UT6LUXa5SNkYMyipu4Fnua1mhmk/DiWOUtcO8HxOQxO997f8eJnyy4+zIW2Y5B466Ptw19g+4BcgkZnnxvhXkDrGldnQbKh0nM/HpeSo7/2uSXfgd1Vv5dMxMm107s9VP5Bh70/mTlGDK6+z8HRAAvb2dT369mZmgseAndT/Ec9dBieCrpGifCbPprGZgduZnixDEfYmG3/JUd2zZroLhK7RIwW/pmgwNGFf3t3hebNE7HrvN/mF6Gkbw+DUlpHLyd1fLl1ZbUZaBtRzoymDAL8GhHapdOcNbVCglx25oTsAb/pxKUnlXQJuub1hNbMAvbt8G46m7wwfp+37kXcBydlhHDkVzsXGfcZjtu1b24WIKs3H3A0twz0GNdNS+I8SxvkKU77KUvc4fGWzypTTvbJJinbiynZ2EjwPWfLfA0kmad0k+yHk04A09AB1zMvsMrfplOEzTrmLQOglhCkN4Gm0Zd9fjC08r5uOUN76wlENJJeJp4MDoQ8pPL/4fC9R8GyoTsCu5AKfAuYYusjN6EHgKEhHgg+CRy0MQ3hy9DOCufk5dfXt6Bmky+EB4BkcPWJDsXOHPhV/d+HXN7dNwGdSBsQvy9/Axj1D33muzSAyN3NMvg860svB2B9EqFvWNvxkEMqmlQ8f2wdFluc4WKkM/3J15gzKLPKUkT5fbdIpqd6XY19mCnyblSuZ83JHz9Ha0ap5Fg9Wo9dumCkWm/OrD98mDcyRyW79U5/hLxcei/NRZpP7wAug3yhfYmVijK3FvmQONZfVGJzVMvJGau4lsBxd6eGyk1PZ6TovpYPgHpsPA8mf0v2slbXmrz3v1Al8YAdgY8+XkYXfCaQXgXtA4L5wQvW54CzAruQA3wKk5Li5SQzlWJ/FqRfn2fxsoJd+PGzyCQgHWQaX9jprlX9Y/Q4apCzRna26/gRQ2nD9+yLiiPk6+i3gUXUG5U3o3Yw8d9X1o2xAjuyvwPPAgKL32LkBSNF1Sgv/zZ3iTsy2ATdHp7vLwQ3M4J8iNkIr7x7yOf4Tu7lgfwYwD2O9FXtzXua0LOsUvh6M/NMYdQxqQcIml6AF7doPh/Q7b9vWB1lK25FD5rjetuAr/KNhOuFaZClnb/k2T9kRGIuoO2+QgxxOWLfEjA+PTSk5XWu7lH0T7cSGUDYn+FrwDAjtRoij7Ohz4sbGTuyLOcYjKubzq34+VzzLgK5CNoeQua21Hrx7Q0ZRrsDwy4GUm9eNtYL7xchTeb4gD5XeGEE25xuRpeRyec2l5NoVA0ZNjyLfYy0oR0a5o1Pu7rUuD4dHITHCzwdScrgnEaJrco2ucB6k5zYiey9v38AW5R9JdTW4yAXizVI+BTmJm4O5bLQ5+ILHZtkcquFWjKX8bOWxs64+O+xmArEl+XXIxiol9q017nn3MZ8XopKbWS4P1+sF8nYnPQ6aTkD+v+8JxgDayRujlJj9AuXAatd/6ndSP/gXw+Z6iXwbkA7HfyrrUZZl67TPyCfW25IVz5qcoluQx7FGyHcAKb3q+srLj89XgeF6d8FWh3toW7YZa2Q3vKz5xJiPKsa38LqPo15OxWbNIGcmZF2hmvWYyT3BfwVyyPcG2wC54dnxOeoQmzWfz+sm3+TQm99Q5bYD5MPpP0x4w9sNJEc/J9Z1SQzdZMm3HDVTCKdbgceK1J4N3rd96WiIslPVmSHchMpGBJ+zXNRVxC71umyx2QRsK5RLjjFdlsaRm5ijm4jjsCShE+SNIJclxOaerbwTbAF+gJhD6E1QX94s22j891bCbjXQp75DudtbNpac88V/r49FKdOIo9RMK2Svzfl3+ojNRqTsh5BtwMCnwNzr5zxRaVvrWFcf+gpls7Ns2+V6qyvkgy848/juVXdNr96H85VpaLH/46Qb6bHAF5UNYBpMAT9ghvIub9lfs24B1/Be/xS87PTInU9cKg410QnOhmZUkdeDq8BDoE3ZL9q6YeXeuvq2jfI+b47IzpaxBtL6Y1e0skTjHn3j/ufpfMUxjn6x+PXnYbAD+HXoLr/kwMt0h1Gc92uVZgOpX6MDK/Ua1BFw17Uj/HRVCL06p7MvUv5jLGWv0k71NSD7iZ/AnNZ7wR4wA/4E/M3Cf7fUTG18egfwCn4AfTqQ4nj0P0HhgMLabpXwAAAAAElFTkSuQmCC'\n};\n\nexport const variables = {\n  variables: prop({\n    control: 'Table',\n    props: { text: 'Variables - Constant', display: 'group' },\n    elements: [\n      {\n        control: 'Input',\n        props: { placeholder: 'Name', value: { source: 'name' }, label: 'Name' }\n      },\n      {\n        control: 'Input',\n        props: { placeholder: 'Value', label: 'Value', value: { source: 'value' } }\n      },\n      {\n        control: 'Select',\n\n        props: {\n          label: 'Type',\n          value: { source: 'type' },\n          options: [\n            { text: 'String', value: 'string' },\n            { text: 'Number', value: 'number' },\n            { text: 'Boolean', value: 'boolean' }\n          ]\n        }\n      }\n    ],\n    type: 'array',\n    items: {\n      type: 'object',\n      properties: {\n        name: { type: 'string' },\n        value: { type: 'string' },\n        type: { type: 'string' }\n      }\n    }\n  }),\n  boundVariables: prop({\n    control: 'Table',\n    props: { text: 'Variables - Bound', display: 'group' },\n    elements: [\n      {\n        control: 'Input',\n        props: { placeholder: 'Name', label: 'Name', value: { source: 'name' } }\n      },\n      {\n        control: 'Select',\n        props: {\n          options: { handler: 'datasetSource' },\n          label: 'Source',\n          value: { source: 'source' }\n        }\n      }\n    ],\n    type: 'array',\n    items: {\n      type: 'object',\n      properties: {\n        name: { type: 'string' },\n        source: { type: 'string' },\n        value: { type: 'string' }\n      }\n    }\n  })\n};\n\nconst ApolloQueryEditorComponent = (props: FormComponentProps<ApolloQueryProps>) => {\n  const controlProps = props.formElement.props;\n  const context = React.useContext(Context);\n  controlProps.query;\n\n  let fakeData = getValue(props, context, 'fakeData');\n  if (fakeData) {\n    let data: any;\n    try {\n      data = eval(`(${fakeData.trim()})`);\n    } catch (ex) {\n      return <div>Error parsing json: {ex.message}</div>;\n    }\n\n    const mocks = [\n      {\n        request: {\n          query: gql([controlProps.query]),\n          variables: parseVariables(props, context)\n        },\n        result: {\n          data\n        }\n      }\n    ];\n\n    return (\n      <MockedProvider mocks={mocks} addTypename={false}>\n        <ApolloQueryView.Component {...props} />\n      </MockedProvider>\n    );\n  }\n  return <ApolloQueryView.Component {...props} />;\n};\n\nexport const ApolloQueryEditor: EditorComponent = {\n  Component: observer(ApolloQueryEditorComponent),\n  title: 'Apollo Query',\n  control: 'ApolloQuery',\n  thumbnail: thumbnails,\n  provider: true,\n  group: 'Data',\n  props: {\n    ...propGroup('Query', {\n      query: prop({\n        label: 'Query',\n        control: 'Code',\n        props: {\n          display: 'topLabel',\n          language: 'graphql'\n        },\n        type: 'string'\n      }),\n      target: dataProp({\n        label: 'Target'\n      }),\n      propTarget: prop({\n        label: 'Prop Target',\n        documentation: 'The query result will be passed to child components under this prop name'\n      }),\n      loadingText: prop({\n        props: { value: { source: 'loadingText' } },\n        type: 'string'\n      })\n    }),\n    ...variables,\n    ...propGroup('Handlers', {\n      onResult: handlerProp({\n        label: 'onResult'\n      }),\n      onError: handlerProp({\n        label: 'onError'\n      }),\n      onQuery: handlerProp({\n        label: 'onQuery'\n      })\n    }),\n    ...propGroup('Editor', {\n      fakeData: boundProp({\n        control: 'Code',\n        props: { language: 'javascript', display: 'topLabel' }\n      })\n    })\n  },\n  defaultProps: {\n    loadingText: 'Loading ...'\n  }\n};\n","import * as React from 'react';\n\nimport { Query } from 'react-apollo';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport gql from 'graphql-tag';\n\nimport { createComponents } from '../common';\nimport { ApolloError } from 'apollo-client';\nimport { observer } from 'mobx-react';\nimport { Context, ContextType } from '../context';\nimport { simpleHandle } from '../helpers';\n\nexport type ApolloQueryProps = {\n  query: string;\n  target: string;\n  propTarget: string;\n  loadingText: string;\n  variables: { name: string; value: string; type: string }[];\n  boundVariables: { name: string; source: string }[];\n  onResult: string;\n  onError: string;\n  onQuery: string;\n  fakeData: string;\n};\n\nexport function parseParameter(value: string, type: string) {\n  switch (type) {\n    case 'number':\n      return parseFloat(value);\n    case 'boolean':\n      return value === 'true' ? true : false;\n  }\n  return value;\n}\n\nexport function parseVariables(props: FormComponentProps, context: ContextType) {\n  const {\n    owner,\n    formElement: {\n      props: { variables, boundVariables, onQuery }\n    }\n  } = props;\n  let currentVariables: any = onQuery ? simpleHandle(props, onQuery, owner, context) : {};\n  if (variables) {\n    for (let v of variables) {\n      currentVariables[v.name] = parseParameter(v.value, v.type);\n    }\n  }\n  if (boundVariables) {\n    for (let v of boundVariables) {\n      currentVariables[v.name] = owner.getValue(v.source);\n    }\n  }\n  return currentVariables;\n}\n\nexport const ApolloQuery: React.FC<FormComponentProps<ApolloQueryProps>> = props => {\n  const [error, setError] = React.useState(null);\n  const context = React.useContext(Context);\n  const {\n    owner,\n    formElement: {\n      props: { query, loadingText, target, onError, onResult, propTarget }\n    }\n  } = props;\n\n  if (!query) {\n    return <div>Please specify the query</div>;\n  }\n\n  let parsedQuery: any;\n  try {\n    parsedQuery = gql([query]);\n  } catch (ex) {\n    return <pre>Query Error: {ex.message}</pre>;\n  }\n\n  let currentVariables = parseVariables(props, context);\n\n  return (\n    <Query\n      query={parsedQuery}\n      variables={currentVariables}\n      onCompleted={(data: any) => {\n        if (target) {\n          // setValue(props, context, data[Object.getOwnPropertyNames(data)[0]], target);\n          owner.setValue(target, data[Object.getOwnPropertyNames(data)[0]]);\n        }\n        if (onResult) {\n          simpleHandle(props, onResult, context, data);\n        }\n      }}\n      onError={(data: ApolloError) => {\n        console.log(data);\n        try {\n          if (onError) {\n            simpleHandle(props, onError, context, data);\n          }\n          if (error) {\n            setError(null);\n          }\n          setError(data.message);\n        } catch (ex) {\n          setError(ex);\n        }\n      }}\n    >\n      {({ loading, error, data }: any) => {\n        if (error) {\n          return <pre>Query Error: {JSON.stringify(error, null, 2)}</pre>;\n        }\n        if (loading) return loadingText;\n        if (error) return `Error! ${error.message}`;\n\n        let dataProps = { ...props };\n        if (propTarget) {\n          dataProps.dataProps = { [propTarget]: data[Object.getOwnPropertyNames(data)[0]] };\n        }\n        return createComponents(dataProps);\n      }}\n    </Query>\n  );\n};\n\nexport const ApolloQueryView: FormComponent = {\n  Component: observer(ApolloQuery)\n};\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { prop, propGroup, handlerProp } from '../editor/editor_common';\nimport { observer } from 'mobx-react';\nimport { thumbnails, variables } from './apollo_query.editor';\nimport { ApolloMutationView, ApolloMutationProps } from './apollo_mutation_view';\n\nimport gql from 'graphql-tag';\nimport { MockedProvider } from 'react-apollo/test-utils';\nimport { Context } from '../context';\nimport { getValue } from '../helpers';\nimport { EditorContext } from '../editor/editor_context';\n\nconst ApolloMutationEditorComponent = observer((props: FormComponentProps<ApolloMutationProps>) => {\n  const controlProps = props.formElement.props;\n  const context = React.useContext(Context);\n  const editorContext = React.useContext(EditorContext);\n\n  const handler = getValue(props, context, 'clickHandler');\n  if (editorContext.projectHandlers.indexOf(handler) === -1) {\n    editorContext.projectHandlers.push(handler);\n  }\n\n  controlProps.mutation;\n\n  let fakeData = getValue(props, context, 'fakeData');\n  if (fakeData) {\n    let data: any;\n    try {\n      data = eval(`(${fakeData.trim()})`);\n    } catch (ex) {\n      return <div>Error parsing json: {ex.message}</div>;\n    }\n\n    const mocks = [\n      {\n        request: {\n          query: gql([controlProps.mutation])\n        },\n        result: {\n          data\n        }\n      }\n    ];\n\n    return (\n      <MockedProvider mocks={mocks} addTypename={false}>\n        <ApolloMutationView.Component {...props} />\n      </MockedProvider>\n    );\n  }\n  return <ApolloMutationView.Component {...props} />;\n});\n\nexport const ApolloMutationEditor: EditorComponent = {\n  Component: ApolloMutationEditorComponent,\n  title: 'Apollo Mutation',\n  control: 'ApolloMutation',\n  thumbnail: thumbnails,\n  provider: true,\n  group: 'Data',\n  handlers: {\n    newHandler({ owner, context, args: { current, previous } }) {\n      context.projectHandlers.remove(previous);\n      if (context.projectHandlers.some((s: string) => s === current)) {\n        owner.setError('clickHandler', `Handler \"${current}\" exists`);\n        return null;\n      } else {\n        context.projectHandlers.push(current);\n      }\n      owner.setError('clickHandler', '');\n      owner.setValue('clickHandler', current);\n\n      return current;\n    }\n  },\n  props: {\n    ...propGroup('Mutation', {\n      mutation: prop({\n        control: 'Code',\n        props: {\n          language: 'graphql'\n        },\n        type: 'string'\n      })\n    }),\n    ...propGroup('Options', {\n      target: prop({\n        control: 'Select',\n        props: {\n          options: { handler: 'datasetSource' }\n        }\n      }),\n      clickHandler: prop({\n        documentation:\n          'Name of the handler that submits this mutation. You can assign this handler to any other component.',\n        props: {\n          value: {\n            source: 'clickHandler',\n            parse: 'newHandler'\n          }\n        }\n      }),\n      successAlert: prop({\n        documentation: 'Displays an alert after successful mutation. Requires \"AlertProvider\"'\n      }),\n      errorAlert: prop({\n        documentation: 'Displays an alert after failed mutation. Requires \"AlertProvider\"'\n      })\n      // loadingText: {\n      //   control: { source: 'loadingText', label: 'Loading Text' },\n      //   schema: { type: 'string' }\n      // }\n    }),\n    ...variables,\n    ...propGroup('Handlers', {\n      onSubmit: handlerProp(),\n      onResult: handlerProp(),\n      onError: handlerProp()\n    }),\n    ...propGroup('Editor', {\n      fakeData: prop({ control: 'Code', props: { language: 'javascript' } })\n    })\n  },\n  defaultProps: {\n    loadingText: 'Loading ...'\n  }\n};\n","import * as React from 'react';\n\nimport { Mutation } from 'react-apollo';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport gql from 'graphql-tag';\n\nimport { createComponents } from '../common';\nimport { ApolloError } from 'apollo-client';\nimport { observer } from 'mobx-react';\nimport { Context } from '../context';\nimport { parseParameter } from './apollo_query_view';\nimport { simpleHandle } from '../helpers';\nimport { Message } from 'semantic-ui-react';\n\nexport type ApolloMutationProps = {\n  mutation: string;\n  target: string;\n  variables: { name: string; value: string; type: string }[];\n  boundVariables: { name: string; source: string }[];\n  onResult: string;\n  onError: string;\n  clickHandler: string;\n  onSubmit: string;\n  successAlert: string;\n  errorAlert: string;\n  fakeData: string;\n};\n\nexport const ApolloMutation = observer((props: FormComponentProps<ApolloMutationProps>) => {\n  const [error, setError] = React.useState(null);\n\n  const {\n    owner,\n    formElement: {\n      props: {\n        mutation,\n        target,\n        onError,\n        onResult,\n        clickHandler,\n        variables,\n        boundVariables,\n        onSubmit,\n        successAlert,\n        errorAlert\n      }\n    }\n  } = props;\n\n  const context = React.useContext(Context);\n\n  if (!mutation) {\n    return <div>Please specify the mutation</div>;\n  }\n\n  let parsedMutation: any;\n  try {\n    parsedMutation = React.useMemo(() => gql([mutation]), [mutation]);\n  } catch (ex) {\n    return <pre>Mutation Error: {ex.message}</pre>;\n  }\n\n  return (\n    <Mutation\n      mutation={parsedMutation}\n      onCompleted={(data: any) => {\n        if (target) {\n          owner.setValue(target, data[Object.getOwnPropertyNames(data)[0]]);\n        }\n        if (onResult) {\n          simpleHandle(props, onResult, context, data);\n        }\n        if (successAlert) {\n          if (!context.alert) {\n            throw new Error('You need to add AlertProvider');\n          }\n          context.alert.success(successAlert);\n        }\n        if (error) {\n          setError(null);\n        }\n      }}\n      onError={(data: ApolloError) => {\n        try {\n          if (onError) {\n            simpleHandle(props, onError, context, data);\n          }\n          if (errorAlert) {\n            if (!context.alert) {\n              throw new Error('You need to add AlertProvider');\n            }\n            context.alert.error(errorAlert);\n          }\n\n          setError(data.message);\n        } catch (ex) {\n          setError(ex);\n        }\n      }}\n    >\n      {(mutate: any, { loading, error, data }: any) => {\n        let handlers = props.handlers;\n        if (clickHandler) {\n          const newClickHandler = () => {\n            let currentVariables: any = onSubmit\n              ? simpleHandle(props, onSubmit, context, data)\n              : {};\n            if (currentVariables == null) {\n              return;\n            }\n            if (variables) {\n              for (let v of variables) {\n                currentVariables[v.name] = parseParameter(v.value, v.type);\n              }\n            }\n            if (boundVariables) {\n              for (let v of boundVariables) {\n                currentVariables[v.name] = owner.getValue(v.source);\n              }\n            }\n            mutate({\n              variables: currentVariables\n            });\n          };\n          handlers = { ...handlers, [clickHandler]: newClickHandler };\n        }\n        const components = createComponents({\n          ...props,\n          handlers,\n          extra: { loading, error, data }\n        });\n        if (error) {\n          return (\n            <>\n              <Message\n                color=\"red\"\n                header=\"Query Error\"\n                icon=\"ban\"\n                content={\n                  error.message\n                    ? error.message.split(':')[error.message.split(':').length - 1]\n                    : JSON.stringify(error, null, 2)\n                }\n              />\n              {/* <pre>Query Error: {JSON.stringify(error, null, 2)}</pre> */}\n              <br />\n              {components}\n            </>\n          );\n        }\n        return <>{components}</>;\n      }}\n    </Mutation>\n  );\n});\n\nexport const ApolloMutationView: FormComponent = {\n  Component: ApolloMutation,\n  toString: () => {\n    throw new Error('Not Implemented');\n  }\n};\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\nimport { ReactRouterProviderEditor } from './react_router_editor';\nimport { ReactRouterRouteEditor } from './react_router_editor';\nimport { ReactRouterSwitchEditor } from './react_router_editor';\nimport { ReactRouterLinkEditor } from './react_router_editor';\nimport { ReactRouterRedirectEditor } from './react_router_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  components: {\n    ReactRouterProvider: ReactRouterProviderEditor,\n    ReactRouterRoute: ReactRouterRouteEditor,\n    ReactRouterSwitch: ReactRouterSwitchEditor,\n    ReactRouterLink: ReactRouterLinkEditor,\n    ReactRouterRedirect: ReactRouterRedirectEditor\n  },\n  cssClass: ''\n};\n","import React from 'react';\nimport { Label } from 'semantic-ui-react';\nimport { observer } from 'mobx-react';\n\nimport { MemoryRouter } from 'react-router';\n\nimport {\n  EditorComponent,\n  FormComponentProps,\n  config,\n  PropMap\n} from '@tomino/dynamic-form';\n\nimport {\n  ReactRouterProvider,\n  ReactRouterProps,\n  ReactRouterRoute,\n  ReactRouterSwitch,\n  ReactRouterLinkView,\n  RedirectProps\n} from './react_router_view';\n\nimport { root, createComponents } from '../common';\nimport { propGroup, prop, boundProp } from '../editor/editor_common';\nimport { DynamicComponent } from '../wrapper';\nimport { EditorDropCell } from '../editor/layouts_common_editor';\nimport { getValue } from '../helpers';\nimport { EditorContext } from '../editor/editor_context';\n\nexport const thumbnails = {\n  dark:\n    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE0NDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTQ0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAg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',\n  light:\n    'data:image/png;base64,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'\n};\n\n/* =========================================================\n    Provider\n   ======================================================== */\n\nconst DisabledRouter: React.FC<FormComponentProps<ReactRouterProps>> = props => (\n  <MemoryRouter initialEntries={[props.formElement.props.testRoute]}>\n    {createComponents(props)}\n  </MemoryRouter>\n);\n\nDisabledRouter.displayName = 'DisabledRouter';\n\nexport const ReactRouterProviderEditorComponent: React.FC<\n  FormComponentProps<ReactRouterProps>\n> = props => {\n  const context = React.useContext(EditorContext);\n  let route = getValue(props, context, 'testRoute');\n  return (\n    <DynamicComponent\n      {...props}\n      preserveProps={true}\n      label={config.i18n`Router Provider`}\n      control={\n        !props.formElement.elements || props.formElement.elements.length == 0\n          ? EditorDropCell\n          : route\n            ? DisabledRouter\n            : ReactRouterProvider\n      }\n    />\n  );\n};\n\nexport const ReactRouterProviderEditor: EditorComponent = {\n  Component: observer(ReactRouterProviderEditorComponent),\n  title: 'React Router Provider',\n  control: 'ReactRouterProvider',\n  thumbnail: thumbnails,\n  provider: true,\n  group: 'React Router',\n  props: propGroup('Editor', {\n    testRoute: boundProp({\n      documentation: 'This is useful during testing when a mocked provider can be used instead.'\n    })\n  })\n};\n\nexport const routeProps: PropMap = propGroup('Router', {\n  exact: prop({\n    group: 'Route',\n    control: 'Checkbox',\n    documentation:\n      'Allows to match the path \"exactly\". For example route \"/\" without \"exact\" would match also \"/home\"',\n    label: 'Exact',\n    type: 'boolean'\n  }),\n  path: prop({\n    group: 'Route',\n    label: 'Path',\n    documentation: 'Path / Route to match',\n    type: 'string'\n  }),\n  page: prop({\n    control: 'Select',\n    group: 'Route',\n    label: 'Page',\n    documentation: 'Page to display',\n    props: {\n      options: { handler: 'optionsProjectPages' }\n    },\n    type: 'string'\n  })\n});\n\nexport const ReactRouterRouteEditor: EditorComponent = {\n  Component: observer(ReactRouterRoute),\n  title: 'Route',\n  control: 'ReactRouterRoute',\n  thumbnail: thumbnails,\n  group: 'React Router',\n  props: routeProps,\n  handlers: {\n    optionsProjectPages: ({ owner }) => {\n      const form = root(owner);\n      return form.pages\n        ? form.pages.map(p => ({\n          text: p.props.label,\n          value: p.uid\n        }))\n        : [];\n    }\n  }\n};\n\n/* =========================================================\n    Switch\n   ======================================================== */\n\nexport const ReactRouterSwitchEditor: EditorComponent = {\n  Component: observer(ReactRouterSwitch),\n  title: 'Switch',\n  control: 'ReactRouterSwitch',\n  thumbnail: thumbnails,\n  group: 'React Router',\n  props: {\n    config: prop({\n      control: 'Table',\n      props: { text: 'Routes' },\n      elements: [\n        {\n          control: 'Input',\n          props: { placeholder: 'path', label: 'Path', value: { source: 'path' } }\n        },\n        {\n          control: 'Select',\n          props: {\n            label: 'Page',\n            value: { source: 'page' },\n            options: { handler: 'optionsProjectPages' }\n          },\n          documentation: 'Page to display'\n        },\n        {\n          control: 'Checkbox',\n          props: {\n            label: 'Exact',\n            width: '20px',\n            value: { source: 'exact' }\n          }\n        }\n      ],\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          exact: { type: 'boolean' },\n          path: { type: 'string' },\n          page: { type: 'string' }\n        }\n      }\n    })\n  }\n};\n\n/* =========================================================\n    Link\n   ======================================================== */\n\nexport const ReactRouterLinkEditor: EditorComponent = {\n  Component: observer(ReactRouterLinkView.Component),\n  title: 'Link',\n  control: 'ReactRouterLink',\n  thumbnail: thumbnails,\n  group: 'React Router',\n  props: propGroup('Router', {\n    url: prop({\n      label: 'Url',\n      documentation:\n        'You can interpolate values using \"${}\" notation. For example \"This is my ${name}\", where <i>name</i> is a value from the dataset.',\n      type: 'string'\n    }),\n    text: prop({\n      label: 'Text',\n      documentation:\n        'You can interpolate values using \"${}\" notation. For example \"This is my ${name}\", where <i>name</i> is a value from the dataset.',\n      type: 'string'\n    })\n  })\n};\n\n/* =========================================================\n    Link\n   ======================================================== */\n\nexport const ReactRouterRedirectEditorComponent: React.FC<\n  FormComponentProps<RedirectProps>\n> = observer(props => <Label content={`Redirect to: ${props.formElement.props.url}`} />);\n\nexport const ReactRouterRedirectEditor: EditorComponent = {\n  Component: observer(ReactRouterRedirectEditorComponent),\n  title: 'Redirect',\n  control: 'ReactRouterRedirect',\n  icon: 'anchor',\n  props: propGroup('Router', {\n    url: prop({\n      label: 'Url',\n      documentation:\n        'You can interpolate values using \"${}\" notation. For example \"This is my ${name}\", where <i>name</i> is a value from the dataset.',\n      type: 'string'\n    })\n  })\n};\n","import * as React from 'react';\n\nimport {\n  BrowserRouter,\n  Route,\n  Link,\n  Redirect,\n  Switch,\n  RouteComponentProps\n} from 'react-router-dom';\nimport { FormComponentProps, FormComponent } from '@tomino/dynamic-form';\nimport { createComponents, root, tryInterpolate } from '../common';\nimport { FormView } from '../form_view';\nimport { observer } from 'mobx-react';\nimport { DynamicComponent } from '../wrapper';\n\nexport type ReactRouterProps = {\n  disable: boolean;\n  testRoute: string;\n};\n\n/* =========================================================\n    Provider\n   ======================================================== */\n\nexport const ReactRouterProvider: React.FC<FormComponentProps<ReactRouterProps>> = props => {\n  return <BrowserRouter>{createComponents(props)}</BrowserRouter>;\n};\n\n/* =========================================================\n    Route\n   ======================================================== */\n\nexport type RouteProps = {\n  path: string;\n  page: string;\n  exact?: boolean;\n};\n\ntype PropAssignProps = FormComponentProps & RouteComponentProps<any> & { Component: any };\n\nexport class PageView extends React.PureComponent<PropAssignProps> {\n  assignParams() {\n    if (this.props.match.params) {\n      for (let key of Object.keys(this.props.match.params)) {\n        try {\n          if (this.props.owner.getValue(key) != this.props.match.params[key]) {\n            this.props.owner.setValue(key, this.props.match.params[key]);\n          }\n        } catch (ex) {\n          console.warn(ex);\n        }\n      }\n    }\n  }\n  componentWillMount() {\n    this.assignParams();\n  }\n  componentWillUpdate() {\n    this.assignParams();\n  }\n  render() {\n    return <FormView {...this.props} />;\n  }\n}\n\nconst EmptyPage: React.FC<FormComponentProps<RouteProps>> = props => (\n  <DynamicComponent {...props}>Please select a page ...</DynamicComponent>\n);\n\nexport const ReactRouterRoute: React.FC<FormComponentProps<RouteProps>> = props => {\n  const Component = React.useMemo(() => {\n    const page = root(props.formElement).pages.find(p => p.uid === props.formElement.props.page);\n\n    if (!page) {\n      return EmptyPage;\n    }\n\n    const RouteView = (routerProps: RouteComponentProps<any>) => (\n      <PageView {...routerProps} {...props} formElement={page} />\n    );\n    return RouteView;\n  }, [props]);\n  Component.displayName = 'MemoRoute';\n\n  return (\n    <Route\n      exact={!!props.formElement.props.exact}\n      path={props.formElement.props.path}\n      component={Component}\n    />\n  );\n};\n\nReactRouterRoute.displayName = 'ReactRouterRoute';\n\n/* =========================================================\n    Switch\n   ======================================================== */\n\nexport type SwitchProps = {\n  config: RouteProps[];\n};\n\nexport const ReactRouterSwitch: React.FC<FormComponentProps<SwitchProps>> = props => {\n  const { formElement, ...rest } = props;\n\n  if (!props.formElement.props.config) {\n    return null;\n  }\n\n  return (\n    <Switch>\n      {props.formElement.props.config.map((c, i) => {\n        return (\n          <ReactRouterRoute\n            key={i}\n            {...rest}\n            formElement={{ ...formElement, parent: formElement.parent, props: c }}\n          />\n        );\n      })}\n    </Switch>\n  );\n};\n\nReactRouterSwitch.displayName = 'ReactRouterSwitch';\n\n/* =========================================================\n    LINK\n   ======================================================== */\n\nexport type LinkProps = {\n  text: string;\n  url: string;\n};\n\nconst ReactRouterLink: React.FC<FormComponentProps<LinkProps>> = props => {\n  const {\n    owner,\n    formElement,\n    formElement: {\n      props: { text, url }\n    }\n  } = props;\n  return (\n    <DynamicComponent {...props} control={Link} to={tryInterpolate(url, owner)}>\n      {tryInterpolate(text, owner) ||\n        (formElement.elements && formElement.elements.length && createComponents(props)) ||\n        '[⚓︎ Link]'}\n    </DynamicComponent>\n  );\n};\n\nexport const ReactRouterLinkView: FormComponent<LinkProps> = {\n  Component: observer(ReactRouterLink),\n  toString: (owner, props) => {\n    return `[${props.formElement.props.url}] ${tryInterpolate(props.formElement.props.url, owner)}`;\n  }\n};\n\n/* =========================================================\n    Redirect\n   ======================================================== */\n\nexport type RedirectProps = {\n  url: string;\n};\n\nexport const ReactRouterRedirect: React.FC<FormComponentProps<LinkProps>> = ({\n  owner,\n  formElement: {\n    props: { url }\n  }\n}) => <Redirect to={tryInterpolate(url, owner)} />;\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\nimport { AlertProviderEditor } from './react_alert_provider_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  components: {\n    AlertProvider: AlertProviderEditor\n  },\n  cssClass: ''\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\n\nimport { positions, transitions } from 'react-alert';\nimport { AlertProvider } from './react_alert_provider_view';\nimport { observer } from 'mobx-react';\nimport { propGroup, boundProp, prop } from '../editor/editor_common';\n\nexport const AlertProviderEditor: EditorComponent = {\n  Component: observer(AlertProvider),\n  title: 'Alert Provider',\n  control: 'AlertProvider',\n  icon: 'exclamation',\n  group: 'Data',\n  defaultProps: {\n    position: positions.TOP_RIGHT,\n    timeout: 5000,\n    transition: transitions.SCALE,\n    offset: '30px'\n  },\n  props: propGroup('Alert', {\n    position: boundProp({\n      control: 'Select',\n      group: 'Alert',\n      type: 'string',\n      $enum: [\n        {\n          text: 'Top Right',\n          value: positions.TOP_RIGHT\n        },\n        {\n          text: 'Top Center',\n          value: positions.TOP_CENTER\n        },\n        {\n          text: 'Top Left',\n          value: positions.TOP_LEFT\n        },\n        {\n          text: 'Bottom Center',\n          value: positions.BOTTOM_CENTER\n        },\n        {\n          text: 'Bottom Left',\n          value: positions.BOTTOM_LEFT\n        },\n        {\n          text: 'Bottom Right',\n          value: positions.BOTTOM_RIGHT\n        },\n        {\n          text: 'Middle',\n          value: positions.MIDDLE\n        },\n        {\n          text: 'Middle Left',\n          value: positions.MIDDLE_LEFT\n        },\n        {\n          text: 'Middle Right',\n          value: positions.MIDDLE_RIGHT\n        }\n      ]\n    }),\n    timeout: prop({ type: 'number' }),\n    offset: prop(),\n    transition: prop({\n      control: 'Select',\n      type: 'string',\n      $enum: [\n        {\n          text: 'Fade',\n          value: transitions.FADE\n        },\n        {\n          text: 'Scale',\n          value: transitions.SCALE\n        }\n      ]\n    })\n  })\n};\n","import React from 'react';\n\n// @ts-ignore\nimport AlertTemplate from 'react-alert-template-basic';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { Provider, AlertProviderProps, useAlert } from 'react-alert';\n\nimport { createComponents } from '../common';\nimport { Context } from '../context';\nimport { DynamicComponent } from '../wrapper';\n\nconst Init: React.FC = () => {\n  const ctx = React.useContext(Context);\n  ctx.alert = useAlert();\n  return null;\n};\n\nconst controlProps = ['position', 'timeout', 'offset', 'transition'];\n\nexport const AlertProvider: React.FC<FormComponentProps<AlertProviderProps>> = props => (\n  <DynamicComponent\n    {...props}\n    control={Provider}\n    controlProps={controlProps}\n    template={AlertTemplate}\n  >\n    <Init />\n    {createComponents(props)}\n  </DynamicComponent>\n);\n\nAlertProvider.displayName = 'AlertProvider';\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\nimport { PrivateReactRouterRouteEditor } from './auth_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  components: {\n    PrivateReactRouterRoute: PrivateReactRouterRouteEditor\n  },\n  cssClass: ''\n};\n","import React from 'react';\nimport { EditorComponent, FormComponentProps } from '@tomino/dynamic-form';\n\nimport { routeProps } from '../../react-router/react_router_editor';\nimport { thumbnails } from '../../apollo/apollo_query.editor';\nimport { ReactRouterRoute } from '../../react-router/react_router_view';\nimport { observer } from 'mobx-react';\nimport { PrivateRouteProps, PrivateReactRouterRoute } from './auth_view';\nimport { propGroup, prop } from '../../editor/editor_common';\n\nconst PrivateReactRouterRouteEditorComponent: React.FC<\n  FormComponentProps<PrivateRouteProps>\n> = observer(props => {\n  // const state = React.useContext(EditorContext);\n  props.formElement.props.page;\n  return props.formElement.props.disable ? (\n    <ReactRouterRoute {...props} />\n  ) : (\n    <PrivateReactRouterRoute {...props} />\n  );\n});\n\nexport const PrivateReactRouterRouteEditor: EditorComponent = {\n  Component: PrivateReactRouterRouteEditorComponent,\n  title: 'Private Route',\n  control: 'PrivateReactRouterRoute',\n  thumbnail: thumbnails,\n  group: 'React Router',\n  props: propGroup('Router', {\n    ...routeProps,\n    disable: prop({\n      label: 'Disable Auth',\n      control: 'Checkbox',\n      group: 'Route',\n      type: 'boolean'\n    })\n  })\n};\n","import * as Gql from './gql';\n\nimport React from 'react';\nimport { Route, RouteComponentProps } from 'react-router';\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { Context } from '../../context';\nimport { PageView, RouteProps } from '../../react-router/react_router_view';\nimport { root } from '../../common';\nimport Login from './login';\nimport { observer } from 'mobx-react';\n\n/* =========================================================\n    Private Route\n   ======================================================== */\n\nexport type PrivateRouteProps = RouteProps & {\n  disable: boolean;\n};\n\nexport const LoggedInView = observer(\n  (props: FormComponentProps<PrivateRouteProps> & { result: any; routerProps: any }) => {\n    const { routerProps } = props;\n    const ctx = React.useContext(Context);\n\n    const Component = React.useMemo(() => {\n      const page = root(props.formElement).pages.find(p => p.uid === props.formElement.props.page);\n      const RouteView = (routerProps: RouteComponentProps<any>) => (\n        <PageView {...routerProps} {...props} formElement={page} />\n      );\n      return RouteView;\n    }, [props]);\n\n    let user = ctx.auth.user;\n    let token = localStorage.getItem(ctx.authToken);\n\n    if (token && !user) {\n      return (\n        <Gql.ResumeQueryComponent variables={{ token: localStorage.getItem(ctx.authToken) }}>\n          {(result: any) => {\n            if (result.loading || !result.data) {\n              return <div>Authorising ...</div>;\n            } else {\n              if (result.error || !result.data.resume.user) {\n                return <Login />;\n              } else {\n                if (!ctx.auth.user) {\n                  ctx.auth.user = result.data.resume.user;\n                  ctx.auth.logout = () => {\n                    localStorage.removeItem(ctx.authToken);\n                    ctx.auth.user = null;\n                  };\n                }\n                return <Component {...routerProps} />;\n              }\n            }\n          }}\n        </Gql.ResumeQueryComponent>\n      );\n    } else if (user) {\n      return <Component {...routerProps} />;\n    } else {\n      return <Login />;\n    }\n  }\n);\n\nexport const PrivateReactRouterRoute: React.FC<FormComponentProps<PrivateRouteProps>> = props => {\n  // const ctx = React.useContext(Context);\n  return (\n    <Route\n      exact={!!props.formElement.props.exact}\n      path={props.formElement.props.path}\n      render={routerProps => <LoggedInView {...props} routerProps={routerProps} />}\n    />\n  );\n};\n","import * as React from 'react';\n\nimport * as ReactApollo from 'react-apollo';\nimport gql from 'graphql-tag';\n\ntype Maybe<T> = T | null;\n\n/* =========================================================\n    Login\n   ======================================================== */\n\nexport const LoginMutationDocument = gql`\n  mutation LoginMutation($email: String!, $password: String!) {\n    login(email: $email, password: $password) {\n      token\n    }\n  }\n`;\n\nexport type LoginMutationVariables = {\n  email: string;\n  password: string;\n};\n\nexport type LoginMutationMutation = {\n  __typename?: 'Mutation';\n\n  login: Maybe<LoginMutationLogin>;\n};\n\nexport type LoginMutationLogin = {\n  __typename?: 'AuthPayload';\n\n  token: Maybe<string>;\n};\n\nexport class LoginMutationComponent extends React.Component<\n  Partial<ReactApollo.MutationProps<LoginMutationMutation, LoginMutationVariables>>\n> {\n  render() {\n    return (\n      <ReactApollo.Mutation<LoginMutationMutation, LoginMutationVariables>\n        mutation={LoginMutationDocument}\n        {...(this as any)['props'] as any}\n      />\n    );\n  }\n}\n\n/* =========================================================\n    Resume\n   ======================================================== */\n\nexport type ResumeQueryVariables = {\n  token: string;\n};\n\nexport type ResumeQueryQuery = {\n  __typename?: 'Mutation';\n\n  resume: Maybe<ResumeMutationResume>;\n};\n\nexport type ResumeMutationResume = {\n  __typename?: 'AuthPayload';\n\n  token: Maybe<string>;\n\n  user: Maybe<ResumeMutationUser>;\n};\n\nexport type ResumeMutationUser = {\n  __typename?: 'User';\n\n  email: string;\n\n  id: string;\n\n  roles: Maybe<(Maybe<string>)[]>;\n\n  user: string;\n};\n\nexport const ResumeQueryDocument = gql`\n  query ResumeQuery($token: String!) {\n    resume(token: $token) {\n      token\n      user {\n        email\n        id\n        roles\n        user\n      }\n    }\n  }\n`;\nexport class ResumeQueryComponent extends React.Component<\n  Partial<ReactApollo.QueryProps<ResumeQueryQuery, ResumeQueryVariables>>\n> {\n  render() {\n    return (\n      <ReactApollo.Query<ResumeQueryQuery, ResumeQueryVariables>\n        query={ResumeQueryDocument}\n        {...(this as any)['props'] as any}\n      />\n    );\n  }\n}\n\n/* =========================================================\n  Signup\n  ======================================================== */\n\nexport type SignupMutationVariables = {\n  email: string;\n  password: string;\n  name: string;\n};\n\nexport type SignupMutationMutation = {\n  __typename?: 'Mutation';\n\n  signup: Maybe<SignupMutationSignup>;\n};\n\nexport type SignupMutationSignup = {\n  __typename?: 'AuthPayload';\n\n  token: Maybe<string>;\n};\n\nexport const SignupMutationDocument = gql`\n  mutation SignupMutation($email: String!, $password: String!, $name: String!) {\n    signup(email: $email, password: $password, name: $name) {\n      token\n    }\n  }\n`;\nexport class SignupMutationComponent extends React.Component<\n  Partial<ReactApollo.MutationProps<SignupMutationMutation, SignupMutationVariables>>\n> {\n  render() {\n    return (\n      <ReactApollo.Mutation<SignupMutationMutation, SignupMutationVariables>\n        mutation={SignupMutationDocument}\n        {...(this as any)['props'] as any}\n      />\n    );\n  }\n}\n","import * as Gql from './gql';\n\nimport React from 'react';\nimport { Segment, Form, Button, Message } from 'semantic-ui-react';\nimport useReactRouter from 'use-react-router';\n\nimport { useMergeState, css } from '../../common';\nimport { Context, ContextType } from '../../context';\n\nconst loginSegment = css`\n  margin: 16px !important;\n`;\n\nconst buttonRow = css`\n  margin-top: 12px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n`;\n\nconst Login = () => {\n  const [state, changeState] = useMergeState({\n    login: true, // switch between Login and SignUp\n    email: '',\n    password: '',\n    name: '',\n    error: false\n  });\n  const ctx = React.useContext(Context);\n\n  const { login, email, password, name } = state;\n  const { history } = useReactRouter();\n\n  const saveUserData = (ctx: ContextType, token: string) => {\n    localStorage.setItem(ctx.authToken, token);\n  };\n\n  const confirm = async (ctx: ContextType, data: any) => {\n    const login = state.login ? data.login : data.signup;\n    ctx.auth.user = login.user;\n    saveUserData(ctx, login.token);\n    history.push(`/`);\n    changeState({ error: false });\n  };\n\n  console.log(state.error);\n\n  return (\n    <Segment className={'ui form ' + loginSegment}>\n      <Form>\n        <h4 className=\"mv3\">{login ? 'Login' : 'Sign Up'}</h4>\n        {state.error && <Message color=\"red\" content=\"Incorrect user name or password!\" />}\n        <div className=\"flex flex-column\">\n          {!login && (\n            <Form.Input\n              label=\"Full Name\"\n              value={name}\n              onChange={e => changeState({ name: e.target.value })}\n              type=\"text\"\n              placeholder=\"Your name\"\n            />\n          )}\n          <Form.Input\n            label=\"Email\"\n            value={email}\n            onChange={e => changeState({ email: e.target.value })}\n            type=\"text\"\n            placeholder=\"Your email address\"\n          />\n          <Form.Input\n            label=\"Password\"\n            value={password}\n            onChange={e => changeState({ password: e.target.value })}\n            type=\"password\"\n            placeholder=\"Choose a safe password\"\n          />\n        </div>\n        <div className={buttonRow}>\n          {login ? (\n            <Gql.LoginMutationComponent\n              variables={{ email, password }}\n              onCompleted={data => confirm(ctx, data)}\n              onError={() => changeState({ error: true })}\n            >\n              {mutation => (\n                <Button primary className=\"pointer mr2 button\" onClick={mutation as any}>\n                  {login ? 'Login' : 'create account'}\n                </Button>\n              )}\n            </Gql.LoginMutationComponent>\n          ) : (\n            <Gql.SignupMutationComponent\n              variables={{ email, password, name }}\n              onCompleted={data => confirm(ctx, data)}\n            >\n              {mutation => (\n                <Button primary className=\"pointer mr2 button\" onClick={mutation as any}>\n                  {login ? 'Login' : 'create account'}\n                </Button>\n              )}\n            </Gql.SignupMutationComponent>\n          )}\n\n          <div className=\"pointer button\" onClick={() => changeState({ login: !login })}>\n            {login ? 'need to create an account?' : 'already have an account?'}\n          </div>\n        </div>\n      </Form>\n    </Segment>\n  );\n};\n\nexport default Login;\n","import * as React from 'react';\nimport { ToolBox as StyledToolBox } from '../editor_styles';\n\nimport { Menu, Input } from 'semantic-ui-react';\nimport { EditorComponentCatalogue } from '@tomino/dynamic-form';\nimport { groupByArray } from '@tomino/toolbelt';\n\nimport { PaneContent } from '../editor_styles';\nimport { generateId } from '../editor_common';\nimport { EditorContext } from '../editor_context';\nimport { ToolItem } from './tool_item';\nimport { css } from 'emotion';\n\ntype Props = {\n  catalogue: EditorComponentCatalogue;\n};\n\nconst searchInput = css`\n  position: absolute !important;\n  left: 90px;\n  right: 12px;\n  top: 6px;\n  bottom: 6px;\n`;\n\nexport const ToolBox: React.FC<Props> = ({ catalogue }) => {\n  const editorState = React.useContext(EditorContext);\n  const [filter, setFilter] = React.useState('');\n  const items = Object.getOwnPropertyNames(catalogue.components)\n    .map(key => catalogue.components[key])\n    .sort((a, b) => (a.title < b.title ? -1 : 1));\n\n  let filtered = filter\n    ? items.filter(s => s.title.toLowerCase().indexOf(filter.toLowerCase()) >= 0)\n    : items;\n\n  let grouped = groupByArray(filtered, 'group').sort((a, b) => (a.key < b.key ? -1 : 1));\n\n  return (\n    <PaneContent>\n      <div className=\"paneHeader\">\n        <div className=\"text\">Controls</div>\n        <Input\n          icon=\"search\"\n          placeholder=\"Search ...\"\n          className={searchInput}\n          fluid\n          size=\"mini\"\n          onChange={e => setFilter(e.currentTarget.value)}\n        />\n      </div>\n      {/* <div className=\"paneHeader\">\n        <div className=\"text\">Controls</div>\n      </div> */}\n\n      <StyledToolBox>\n        <Menu text inverted={editorState.theme.inverted} vertical compact fluid>\n          {grouped.map(g => (\n            <React.Fragment key={g.key || 'General'}>\n              <Menu.Item header>{g.key || 'Common'}</Menu.Item>\n              {g.values.map((s, i) => (\n                <Menu.Item key={s.title + i}>\n                  <ToolItem {...s as any} id={generateId()} editorState={editorState} />\n                </Menu.Item>\n              ))}\n            </React.Fragment>\n          ))}\n        </Menu>\n      </StyledToolBox>\n    </PaneContent>\n  );\n};\n\nToolBox.displayName = 'ToolBox';\n","import React from 'react';\n\nimport { css, Theme, names } from '../common';\nimport { EditorContext } from './editor_context';\nimport { styleComponent } from './styled_component';\n\nexport const flexed = css`\n  flex: auto !important;\n  margin-right: 8px !important;\n`;\n\nexport const compact = css`\n  margin-bottom: 0px !important;\n`;\n\nexport const caret = css`\n  margin-right: 3px !important;\n  padding-right: 0px !important;\n  label: caret;\n`;\n\nexport const scrollablePane = `\n  position: absolute;\n  top: 0px;\n  bottom: 0px;\n  width: 100%;\n  overflow: auto;\n`;\n\nexport const pad6 = css`\n  padding: 6px;\n  label: pad6;\n`;\n\nexport const pad12 = css`\n  padding: 12px;\n  label: pad6;\n`;\n\nexport const margin12 = css`\n  margin: 12px !important;\n  label: margin12;\n`;\n\nexport const paneContent = (theme: any) => css`\n  overflow-x: hidden;\n  overflow-y: hidden;\n  background-color: ${theme.pane};\n  color: ${theme.textColor};\n  height: 100%;\n  width: 100%;\n  position: relative;\n  width: 100%;\n  label: paneContent;\n\n  .text {\n    white-space: nowrap;\n  }\n\n  .menu {\n    margin-bottom: 0px !important;\n  }\n\n  .searchInput {\n    margin: 6px !important;\n  }\n\n  .paneHeader {\n    font-weight: bold;\n    display: flex;\n    align-items: center;\n    position: relative;\n    width: 100%;\n    height: 40px;\n\n    padding: 6px 12px 6px 12px;\n    background-color: ${theme.headerBackground};\n    border-bottom: solid 2px #111;\n\n    .text {\n      border-bottom: solid 3px #2185d0;\n      flex: 1 1 auto;\n      height: 30px;\n      position: absolute;\n      top: 10px;\n      color: ${theme.headerColor};\n    }\n\n    .expandable {\n      left: 35px;\n    }\n\n    span {\n      flex: 1 1 100%;\n    }\n  }\n`;\n\nexport const PaneContent = styleComponent(paneContent);\n\nexport const modalActions = css`\n  display: flex;\n  justify-content: flex-end;\n  margin-top: 12px;\n  align-items: center;\n\n  .button {\n    white-space: nowrap;\n  }\n`;\n\nexport const propertyFields = css`\n  /* name: properties */\n  .menu {\n    margin-bottom: 0px !important;\n  }\n  input {\n    padding: 6px !important;\n  }\n  .fields {\n    margin-bottom: 3px !important;\n  }\n`;\n\nexport const editorGrid = css`\n  position: relative;\n  .Resizer {\n    background: #000;\n    opacity: 0.2;\n    z-index: 1;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n    -moz-background-clip: padding;\n    -webkit-background-clip: padding;\n    background-clip: padding-box;\n  }\n\n  .Resizer:hover {\n    -webkit-transition: all 2s ease;\n    transition: all 2s ease;\n  }\n\n  .Resizer.horizontal {\n    height: 11px;\n    margin: -5px 0;\n    border-top: 5px solid rgba(255, 255, 255, 0);\n    border-bottom: 5px solid rgba(255, 255, 255, 0);\n    cursor: row-resize;\n    width: 100%;\n  }\n\n  .Resizer.horizontal:hover {\n    border-top: 5px solid rgba(0, 0, 0, 0.5);\n    border-bottom: 5px solid rgba(0, 0, 0, 0.5);\n  }\n\n  .Resizer.vertical {\n    width: 11px;\n    margin: 0 -5px;\n    border-left: 5px solid rgba(255, 255, 255, 0);\n    border-right: 5px solid rgba(255, 255, 255, 0);\n    cursor: col-resize;\n  }\n\n  .Resizer.vertical:hover {\n    border-left: 5px solid rgba(0, 0, 0, 0.5);\n    border-right: 5px solid rgba(0, 0, 0, 0.5);\n  }\n  .Resizer.disabled {\n    cursor: not-allowed;\n  }\n  .Resizer.disabled:hover {\n    border-color: transparent;\n  }\n`;\n\nexport const propertyLabel = css`\n  .property {\n    text-align: right;\n  }\n\n  .property label {\n    margin-top: 6px !important;\n  }\n`;\n\nexport const relative = css`\n  position: relative;\n  height: 100%;\n`;\n\nexport const white = css`\n  background-color: white;\n`;\n\nexport const sidePane = css`\n  ${scrollablePane};\n  top: 40px;\n  label: sidePane;\n`;\n\nexport const searchableSidePane = css`\n  ${scrollablePane};\n  top: 80px;\n  label: sidePane;\n`;\n\nexport const toolBox = (theme: any, hideMenu: boolean) => css`\n  ${scrollablePane};\n\n  padding: 6px 12px 6px 12px;\n  top: ${hideMenu ? '0px' : '40px'};\n  margin: 0px !important;\n  overflow: auto;\n  label: toolBox;\n\n  .item {\n    margin: 0px;\n    padding: 3px;\n  }\n\n  .header.item {\n    color: ${theme.headerText}!important;\n    padding: 6px 0px 6px 0px !important;\n  }\n`;\n\nexport const ToolBox = (props: any) => {\n  const context = React.useContext(EditorContext);\n  return (\n    <div className={names(toolBox(context.theme, props.hideMenu), props.className)}>\n      {props.children}\n    </div>\n  );\n};\n\nexport const noRoundCorners = css`\n  border-radius: 0px !important;\n`;\n\nexport const pointers = css`\n  > * > div {\n    cursor: pointer;\n  }\n`;\n\nconst common = `\n  margin-left: -8px;\n  padding-bottom: 5px;\n  font-weight: bold;\n  font-size: 11px;\n  font-family: 'Courier';\n`;\n\nconst folderCommon = `\n  color: black;\n  font-weight: bold;\n  font-size: 10px;\n  font-family: 'Courier';\n  margin-left: -10px;\n`;\n\nexport const list = (theme: Theme) => css`\n  label: list;\n  width: 100%;\n  height: 100%;\n\n  .label {\n    float: right;\n  }\n\n  .selected {\n    background: ${theme.selectedBackground};\n    color: ${theme.selectedColor};\n    border-radius: 3px;\n  }\n\n  .over {\n    background: #aaa;\n    border-radius: 3px;\n    padding-left: 3px;\n    margin-right: 6px;\n  }\n\n  .array {\n    display: flex;\n  }\n\n  .import {\n    display: flex;\n  }\n\n  .reference {\n    display: flex;\n  }\n\n  .reference::after {\n    content: 'T';\n    color: white;\n    ${folderCommon}\n  }\n\n  .import::after {\n    content: 'I';\n    ${folderCommon}\n  }\n\n  .array::after {\n    content: 'A';\n    ${folderCommon}\n  }\n\n  .string::after {\n    content: 'S';\n    ${common}\n  }\n\n  .integer::after {\n    content: 'I';\n    ${common}\n  }\n\n  .number::after {\n    content: 'F';\n    ${common}\n  }\n\n  .boolean::after {\n    content: 'B';\n    ${common}\n  }\n\n  .treeCaret {\n    margin-right: 2px !important;\n    flex: 1 1 16px;\n    cursor: pointer;\n  }\n\n  .folder {\n    font-weight: bold;\n    flex: 1 1 100%;\n    padding-left: 3px;\n    cursor: pointer;\n  }\n\n  .pointer {\n    cursor: pointer;\n  }\n\n  .item {\n    display: flex;\n    margin: 0px;\n    padding: 1px 3px 1px 3px !important;\n    align-items: center;\n    justify-content: flex-start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .item.folder i {\n    margin-left: -5px !important;\n    margin-right: 5px !important;\n  }\n\n  .item i {\n    flex: 0 0 16px;\n    margin-right: 6px;\n    align-self: flex-start;\n    width: 16px;\n  }\n\n  .item .content {\n    flex: 1 1 100%;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .item.single {\n    margin-left: 14px !important;\n  }\n\n  .item.single i {\n    color: ${theme.invalidBackground};\n  }\n\n  .itemContent {\n    padding-left: 12px;\n  }\n\n  .contentSimple {\n    padding-left: 6px;\n  }\n\n  .link {\n    width: 100%;\n    cursor: pointer;\n    padding: 0px 3px;\n  }\n\n  .meta {\n    font-size: smaller;\n    color: ${theme.meta};\n    font-weight: normal;\n  }\n\n  a.single {\n    color: ${theme.textColor};\n  }\n`;\n\nexport const List = styleComponent(list);\n","import React from 'react';\nimport { names, Theme } from '../common';\nimport { EditorContext } from './editor_context';\n\nexport const styleComponent = (style: (theme: Theme) => string) => {\n  const Styled = (props: any) => {\n    const context = React.useContext(EditorContext);\n    return (\n      <div {...props} className={names(style(context.theme), props.className)}>\n        {props.children}\n      </div>\n    );\n  };\n  return Styled;\n};\n","import * as React from 'react';\n\nimport { FormElement, EditorComponent } from '@tomino/dynamic-form';\nimport { css, Theme, names } from '../../common';\n// import { calculateHorizontalPosition } from '../editor_common';\nimport { ToolIcon } from './tool_icon';\nimport { EditorContextType, EditorContext } from '../editor_context';\nimport { calculateHorizontalPosition } from '../editor_common';\nimport { clearAll } from '../../layouts/drag_drop';\n\nconst bareItem = (theme: Theme) => css`\n  /* border: 1px solid #deded2;\n  background-color: white;*/\n  width: 100%;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  color: ${theme.textColor};\n  /* border-bottom: dotted 1px #444; */\n  padding-bottom: 6px;\n  padding-top: 6px;\n`;\n\nconst style = css`\n  cursor: move;\n  width: 100%;\n  height: 100%;\n  display: flex;\n`;\n\ninterface BoxProps {\n  control: string;\n  title: string;\n  icon?: string;\n  thumbnail?: {\n    dark: string;\n    light: string;\n  };\n  row?: number;\n  column?: number;\n  id: string;\n  formElement?: FormElement;\n  defaultChildren?: EditorComponent[];\n  defaultProps?: { [index: string]: any };\n  editorState: EditorContextType;\n}\n\nexport const ToolItem: React.FC<BoxProps> = props => {\n  const context = React.useContext(EditorContext);\n  const { title, icon, children, thumbnail } = props;\n  const onDrag = React.useCallback(\n    (ev: React.DragEvent<HTMLDivElement>) => {\n      context.dragItem = {\n        name: props.control,\n        row: props.row,\n        column: props.column,\n        element: props.formElement,\n        id: props.id,\n        position: calculateHorizontalPosition(ev),\n        props: props.defaultProps,\n        defaultChildren: props.defaultChildren\n      };\n    },\n    [\n      context.dragItem,\n      props.column,\n      props.control,\n      props.defaultChildren,\n      props.defaultProps,\n      props.formElement,\n      props.id,\n      props.row\n    ]\n  );\n\n  const onDragEnd = React.useCallback(() => clearAll(context), [context]);\n\n  return (\n    <div\n      draggable={true}\n      className={names(style, { [bareItem(context.theme)]: !children })}\n      data-id={props.id}\n      onDragStart={onDrag}\n      onDragEnd={onDragEnd}\n    >\n      {children ? (\n        children\n      ) : (\n        <>\n          <ToolIcon icon={icon} thumbnail={thumbnail} />\n          {title}\n        </>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport { Icon } from 'semantic-ui-react';\n\nimport { css } from '../../common';\nimport { EditorContext } from '../editor_context';\n\nconst image = css`\n  width: 16px;\n  height: 16px;\n  vertical-align: middle;\n  margin-right: 6px;\n`;\n\ntype Props = {\n  icon: string;\n  thumbnail: { dark?: string; light?: string };\n  title?: string;\n  theme: any;\n};\n\nexport const ToolIcon = ({ icon, thumbnail, title }: Props) => {\n  const context = React.useContext(EditorContext);\n  return (\n    <>\n      {icon && <Icon name={icon as any} title={title} />}\n      {thumbnail && (\n        <img\n          src={context.theme.dark ? thumbnail.dark : thumbnail.light}\n          alt=\"icon\"\n          className={image}\n          title={title}\n        />\n      )}\n    </>\n  );\n};\n","import * as React from 'react';\n\nimport { FormView } from '../form_view';\nimport { FormViewProps } from '@tomino/dynamic-form';\nimport { css } from '../common';\n\nexport const formStyle = css`\n  .disabled,\n  :disabled {\n    opacity: 1 !important;\n    cursor: auto;\n  }\n\n  label {\n    cursor: auto !important;\n  }\n\n  label:before {\n    border: solid 1px #d4d4d5 !important;\n  }\n`;\n\nexport const SemanticFormView: React.FC<FormViewProps> = props => (\n  <FormView {...props} className={props.readOnly ? formStyle : ''} />\n);\n","import { catalogue as vanilla } from './vanilla/catalogue';\nimport { catalogue as semantic } from './semantic/catalogue';\nimport { catalogue as apollo } from './apollo/catalogue';\nimport { catalogue as router } from './react-router/catalogue';\nimport { catalogue as alert } from './react-alert/catalogue';\nimport { catalogue as auth } from './semantic/auth-graphql-react-router/catalogue';\n\nimport { merge } from './helpers';\n\nexport const catalogue = merge(vanilla, semantic, apollo, router, alert, auth);\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\n\nimport { FormulaView } from './formula_view';\nimport { RepeaterView } from './repeater_view';\nimport { TextView, ImageView, LinkView, LinkSelectorView } from './text_view';\nimport { GridView } from '../layouts/grid_view';\nimport { StackView } from '../layouts/stack_view';\nimport { AuthItem } from './auth_item_view';\nimport { FlexView } from '../layouts/flex_view';\nimport { FormView } from '../form_view';\nimport { createComponent1 } from '../common';\n\nexport const catalogue: FormComponentCatalogue = {\n  createComponent: createComponent1,\n  cssClass: '',\n  components: {\n    AuthItem: AuthItem,\n    EditorCell: null,\n    Flex: FlexView,\n    Form: FormView,\n    Formula: FormulaView,\n    Grid: GridView,\n    Image: ImageView,\n    Link: LinkView,\n    LinkSelector: LinkSelectorView,\n    Repeater: RepeaterView,\n    Stack: StackView,\n    Text: TextView\n  }\n};\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\n\nimport { CheckboxView } from './checkbox_view';\nimport { InputView } from './input_view';\nimport { RadioView } from './radio_view';\nimport { TableView } from './table_view';\nimport { SignatureView } from './signature_view';\nimport { TextAreaView } from './textarea_view';\nimport { CommentView } from './comment_view';\nimport { SearchView } from './search_view';\nimport { DateView } from './date_time_view';\nimport { MenuView, MenuItem } from './menu_view';\nimport { TabView } from './tab_view';\nimport { ButtonView } from './buttons_view';\nimport { DropdownView } from './dropdown_view';\nimport { IconView } from './icon_view';\nimport { SegmentView } from './segment_view';\nimport { HeaderView } from './header_view';\nimport { IfView } from '../vanilla/if_view';\n\nexport const catalogue: FormComponentCatalogue = {\n  cssClass: 'ui form',\n  components: {\n    // ApproveButton: ApproveButton,\n    Button: ButtonView,\n    Checkbox: CheckboxView,\n    Comment: CommentView,\n    Date: DateView,\n    // DeleteButton: DeleteButton,\n    Dropdown: DropdownView,\n    EditorCell: null,\n    Header: HeaderView,\n    Icon: IconView,\n    If: IfView,\n    Input: InputView,\n    Lookup: SearchView,\n    Menu: MenuView,\n    MenuItem: MenuItem,\n    Radio: RadioView,\n    // RejectButton: RejectButton,\n    Segment: SegmentView,\n    Search: SearchView,\n    Signature: SignatureView,\n    // SubmitButton: SubmitButton,\n    Tabs: TabView,\n    Table: TableView,\n    Textarea: TextAreaView,\n    Time: DateView\n  }\n};\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\nimport { ApolloProviderView } from './apollo_provider_view';\nimport { ApolloQueryView } from './apollo_query_view';\nimport { ApolloMutation } from './apollo_mutation_view';\n\nexport const catalogue: FormComponentCatalogue = {\n  components: {\n    ApolloProvider: ApolloProviderView,\n    ApolloQuery: ApolloQueryView,\n    ApolloMutation: ApolloMutation\n  },\n  cssClass: ''\n};\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\nimport { ReactRouterProvider } from './react_router_view';\nimport { ReactRouterRoute } from './react_router_view';\nimport { ReactRouterSwitch } from './react_router_view';\nimport { ReactRouterLinkView } from './react_router_view';\nimport { ReactRouterRedirect } from './react_router_view';\n\nexport const catalogue: FormComponentCatalogue = {\n  components: {\n    ReactRouterProvider,\n    ReactRouterRoute,\n    ReactRouterSwitch,\n    ReactRouterLink: ReactRouterLinkView,\n    ReactRouterRedirect\n  },\n  cssClass: ''\n};\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\nimport { AlertProvider } from './react_alert_provider_view';\n\nexport const catalogue: FormComponentCatalogue = {\n  components: {\n    AlertProvider\n  },\n  cssClass: ''\n};\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\nimport { PrivateReactRouterRoute } from './auth_view';\n\nexport const catalogue: FormComponentCatalogue = {\n  components: {\n    PrivateReactRouterRoute\n  },\n  cssClass: ''\n};\n","import * as React from 'react';\n\nimport * as propertyHandlers from './property_panel.handlers';\n\nimport { observer } from 'mobx-react';\nimport { config, FormElement, FormComponentProps } from '@tomino/dynamic-form';\nimport { groupByArray, debounce } from '@tomino/toolbelt';\nimport { FormDataSet, SchemaDataSet } from '../form_store';\nimport { pointer, names, prop } from '../../common';\nimport { renderElements } from '../../properties/control_factory_helpers';\nimport { Help } from '../../properties/help_view';\nimport { EditorContext, EditorContextType } from '../editor_context';\nimport { Message, Button, Icon, InputProps } from 'semantic-ui-react';\nimport { pad12, paneContent, margin12, searchableSidePane } from '../editor_styles';\nimport { schemaPanel, schemaHandlers } from '../schema/schema_panel';\nimport { styledPropertyView } from './property_styles';\nimport { propertyPanel } from './property_panel';\nimport { findSchema, createPath } from '../editor_common';\nimport { DeleteSchema } from '../dataset/dataset_modals';\nimport { EditorState } from '../editor_state';\nimport { getValue } from '../../helpers';\nimport { Input } from 'semantic-ui-react';\n\n// import * as schemaHandlers from '../editor/schema/schema_panel.handlers';\n\nexport type RenderPropsProps = {\n  groupName: string;\n  props: FormElement[];\n  activeElement: FormDataSet;\n  handlers: any;\n  filter: string;\n};\n\nexport const RenderProps = ({\n  props,\n  activeElement,\n  groupName,\n  handlers,\n  filter\n}: RenderPropsProps) => {\n  let i = 0;\n  const groups = groupByArray(props, x => x.group || (x.props.display === 'group' ? i++ : ''));\n  const editorState = React.useContext(EditorContext);\n\n  return (\n    <>\n      {groups.map((g, i) => (\n        <React.Fragment key={(g.key as string) + i}>\n          {renderElements(\n            editorState,\n            g.key && (!g.values[0].props || g.values[0].props.display !== 'group')\n              ? [\n                {\n                  control: 'Group',\n                  props: {\n                    text: g.key || groupName\n                  },\n                  elements: g.values\n                }\n              ]\n              : g.values,\n            activeElement.props,\n            handlers,\n            null /* catalogue */,\n            editorState,\n            activeElement.uid,\n            filter\n          )}\n        </React.Fragment>\n      ))}\n    </>\n  );\n};\n\nfunction buildElementBreadcrumbs(\n  context: EditorContextType,\n  props: FormComponentProps,\n  activeElement: FormDataSet\n) {\n  let breadcrumbs: any[];\n\n  if (activeElement) {\n    let label = getValue(props, context, 'label');\n    breadcrumbs = [\n      <span key=\"last\" style={{ fontWeight: 'normal' }}>\n        {activeElement.control}\n        {label && ` - ${label}`}\n      </span>\n    ];\n    breadcrumbs.push(<Icon key=\"lastIcon\" name=\"chevron right\" />);\n\n    let parent = activeElement.parent;\n    let index = 0;\n    while (parent != null && parent !== context.form) {\n      let current = parent;\n      if (parent.control) {\n        if (breadcrumbs.length > 5) {\n          breadcrumbs.push('...');\n          return breadcrumbs;\n        }\n        breadcrumbs.push(\n          <span\n            key={index}\n            className={pointer}\n            onClick={() => context.project.state.setElement(current, context.schema)}\n          >\n            {parent.control}\n          </span>\n        );\n        breadcrumbs.push(<Icon key={'Icon' + index++} name=\"chevron right\" />);\n      }\n      parent = parent.parent;\n    }\n    breadcrumbs.push(<span key=\"first\">Element</span>);\n  }\n  return breadcrumbs;\n}\n\nfunction buildSchemaBreadcrumbs(activeElement: SchemaDataSet, state: EditorState) {\n  let breadcrumbs: any[];\n\n  if (activeElement) {\n    breadcrumbs = [\n      <span key=\"last\" style={{ fontWeight: 'normal' }}>\n        {activeElement.title}\n      </span>\n    ];\n    breadcrumbs.push(<Icon key=\"lastIcon\" name=\"chevron right\" />);\n\n    let parent = activeElement.parent;\n    let index = 0;\n    while (parent != null && parent !== state.schema) {\n      let current = parent;\n\n      breadcrumbs.push(\n        <span\n          key={index}\n          className={pointer}\n          onClick={() => state.project.state.setSchema(current, current.title)}\n        >\n          {current.title}\n        </span>\n      );\n      breadcrumbs.push(<Icon key={'Icon' + index++} name=\"chevron right\" />);\n      parent = parent.parent;\n    }\n    breadcrumbs.push(<span key=\"first\">Schema</span>);\n  }\n  return breadcrumbs;\n}\n\nexport const PropertyEditor = observer(() => {\n  const context = React.useContext(EditorContext);\n  const [filter, setFilter] = React.useState('');\n  const [searchProperty, setSearchProperty] = React.useState('');\n  const debouncedSet = React.useMemo(() => debounce(setSearchProperty, 400), []);\n  const handleSearch = React.useCallback(\n    (_, props: InputProps) => {\n      setFilter(props.value);\n      debouncedSet(props.value);\n    },\n    [debouncedSet]\n  );\n\n  const { selectedElement, selectedSchema } = context.state;\n\n  // subscribe to schema changes\n  context.state.selectedSchemaName;\n\n  const handlers = React.useMemo(() => {\n    let result = propertyHandlers;\n    if (context.editorCatalogue) {\n      for (let key of Object.keys(context.editorCatalogue.components)) {\n        const component = context.editorCatalogue.components[key];\n        if (component.handlers) {\n          result = { ...result, ...component.handlers };\n        }\n      }\n    }\n    return result;\n  }, [context.editorCatalogue]);\n\n  const activeElement =\n    selectedElement &&\n    selectedElement.control !== 'EditorCell' &&\n    selectedElement.control !== '' &&\n    selectedElement.control !== null\n      ? selectedElement\n      : null;\n  let activeSchema = prop(activeElement)\n    ? findSchema(activeElement, context.project.schema, context)\n    : selectedSchema;\n\n  // const foundSchema = searchSchema(s => s.)\n\n  const editorElement =\n    activeElement &&\n    context.editorCatalogue &&\n    context.editorCatalogue.components[activeElement.control];\n  const parentEditorElement =\n    activeElement &&\n    activeElement.parent &&\n    context.editorCatalogue &&\n    context.editorCatalogue.components[activeElement.parent.control];\n\n  const editorProps = React.useMemo(\n    () =>\n      editorElement\n        ? context\n          .cachedProps(editorElement)\n          .filter(p => p.group === 'Editor')\n          .concat(context.editorProps)\n        : [],\n    [context, editorElement]\n  );\n  const componentProps = React.useMemo(\n    () =>\n      editorElement ? context.cachedProps(editorElement).filter(p => p.group !== 'Editor') : [],\n    [context, editorElement]\n  );\n\n  const childProps = parentEditorElement ? context.cachedChildProps(parentEditorElement) : [];\n\n  if (activeElement && !editorElement) {\n    throw new Error(`Control '${activeElement.control}' does not exists in the catalogue`);\n  }\n\n  let props: FormComponentProps = {\n    catalogue: context.editorCatalogue,\n    owner: activeElement,\n    handlers,\n    formElement: activeElement\n  };\n\n  let breadcrumbs: any = activeElement ? (\n    buildElementBreadcrumbs(context, props, activeElement).reverse()\n  ) : activeSchema ? (\n    buildSchemaBreadcrumbs(activeSchema, context).reverse()\n  ) : (\n    <span>Properties</span>\n  );\n\n  return (\n    <div className={names(paneContent(context.theme), styledPropertyView(context.theme))}>\n      <div className=\"paneHeader\">\n        <div className=\"text breadcrumbs\">\n          <div>{breadcrumbs}</div>\n        </div>\n      </div>\n      <div className=\"property-table-row\">\n        <Input\n          transparent\n          inverted\n          icon=\"search\"\n          iconPosition=\"left\"\n          size=\"mini\"\n          fluid\n          placeholder=\"Filter properties ...\"\n          className=\"searchInput\"\n          value={filter}\n          onChange={handleSearch}\n        />\n      </div>\n      <div className={names(searchableSidePane)}>\n        {activeElement && (\n          <>\n            {/* Shared PROPS */}\n            {!editorElement.provider && (\n              <RenderProps\n                activeElement={activeElement}\n                props={propertyPanel}\n                groupName=\"General\"\n                handlers={handlers}\n                filter={searchProperty}\n              />\n            )}\n            {/* Control Props */}\n            {editorElement.props && (\n              <RenderProps\n                activeElement={activeElement}\n                props={componentProps}\n                groupName=\"Control\"\n                handlers={handlers}\n                filter={searchProperty}\n              />\n            )}\n\n            {/* Child Props */}\n            {parentEditorElement && parentEditorElement.childProps && (\n              <RenderProps\n                activeElement={activeElement}\n                props={childProps}\n                groupName=\"Layout\"\n                handlers={handlers}\n                filter={searchProperty}\n              />\n            )}\n\n            {/* Editor Props */}\n            <RenderProps\n              activeElement={activeElement}\n              props={editorProps}\n              groupName=\"Editor\"\n              handlers={handlers}\n              filter={searchProperty}\n            />\n          </>\n        )}\n\n        {activeElement && !activeSchema && prop(activeElement) && (\n          <Message\n            className={margin12}\n            error\n            content={`Schema not found at: ${createPath(activeElement, context).join(' > ')}`}\n          />\n        )}\n        {/* Schema Props */}\n        {activeSchema &&\n          renderElements(\n            context,\n            schemaPanel,\n            activeSchema as any,\n            schemaHandlers as any,\n            null,\n            context /* catalogue */,\n            activeSchema.title,\n            searchProperty\n          )}\n\n        {(activeElement || activeSchema) && <Help owner={activeElement} />}\n\n        <div className={pad12}>\n          {activeElement &&\n            activeElement.parent.parent &&\n            (!activeElement.props || !activeElement.props.locked) && (\n            <Button\n              onClick={context.project.state.deleteActiveElement}\n              content={config.i18n`Delete`}\n              icon=\"trash\"\n            />\n          )}\n          {selectedSchema && <DeleteSchema schema={selectedSchema} />}\n        </div>\n      </div>\n    </div>\n  );\n});\n\nPropertyEditor.displayName = 'PropertyEditor';\n","import React from 'react';\n\nimport {\n  FormElement,\n  DataSet,\n  Handlers,\n  FormComponentCatalogue,\n  FormComponentProps\n} from '@tomino/dynamic-form';\nimport names from 'classnames';\n\nimport { ErrorView } from '../semantic/error_view';\nimport { renderControl } from './control_factory';\nimport { groupByArray } from '@tomino/toolbelt';\nimport { EditorContextType } from '../editor/editor_context';\nimport { getValue, getPropValue } from '../helpers';\nimport { prop } from '../common';\n\nexport function renderElements<T>(\n  context: EditorContextType,\n  elements: FormElement[],\n  owner: DataSet<T>,\n  handlers: Handlers<DataSet, EditorContextType>,\n  catalogue: FormComponentCatalogue,\n  editorState: EditorContextType,\n  uid: string,\n  filter: string\n) {\n  const filtered = elements.filter(\n    e =>\n      (!filter ||\n        (e.props.label || '').toLowerCase().indexOf(filter.toLowerCase()) >= 0 ||\n        (e.elements &&\n          e.elements.some(\n            child => (child.props.label || '').toLowerCase().indexOf(filter.toLowerCase()) >= 0\n          ))) &&\n      getValue({ formElement: e, owner, handlers, catalogue }, editorState, 'visible', true)\n  );\n  const props: FormComponentProps = {\n    owner,\n    catalogue,\n    handlers,\n    formElement: null\n  };\n  let group = groupByArray(filtered, e => e.tuple || getPropValue(props, e, context, 'label'));\n\n  // remove and spread elements from the empty group\n  // const emptyGroup = group.find(g => !g.key);\n  // if (emptyGroup) {\n  //   group.splice(group.indexOf(emptyGroup), 1);\n  //   group = group.concat(emptyGroup.values.map(v => ({ key: '', values: [v] })));\n  // }\n\n  return group.map((group, i) => {\n    let display = group.values[0].props.display;\n    return (\n      <div\n        key={i}\n        className={names('property-table-row', { flexed: !display || display === 'inlineLabel' })}\n        onClick={e => {\n          e.preventDefault();\n          e.stopPropagation();\n          editorState.help = group.values.map(g => g.documentation).join('<br />');\n        }}\n      >\n        {group.key && (\n          <label className=\"first\" htmlFor={`corpix-${group.key}`}>\n            {group.key}\n          </label>\n        )}\n\n        {display === 'topLabel' && <br />}\n\n        {group.values.map((formElement, i) => {\n          display = formElement.props.display;\n\n          return (\n            <div\n              key={i}\n              className={names({\n                full: display === 'topLabel',\n                second: group.key,\n                only: !group.key,\n                padded: display === 'padded'\n              })}\n            >\n              {renderControl({ formElement, owner, handlers, catalogue, uid }, filter)}\n              {prop(formElement) && (\n                <ErrorView control={formElement} owner={owner} source={prop(formElement)} />\n              )}\n            </div>\n          );\n        })}\n      </div>\n    );\n  });\n}\n","import * as React from 'react';\n\nimport { FormElement, DataSet, Handlers, FormComponentCatalogue } from '@tomino/dynamic-form';\n\nimport { Group } from './group';\nimport { Input } from './input';\nimport { Select } from './select';\nimport { TextArea } from './textbox';\nimport { Checkbox } from './checkbox';\nimport { Map } from './map';\nimport { Value } from './value';\nimport { TableView } from './table';\nimport { Tuple } from './tuple';\nimport { CodeEditor } from './code';\nimport { EditorContextType } from '../editor/editor_context';\nimport { Binding } from './binding';\n\n// import { Map } from './map';\n// import { MapTable } from './map_table';\n\nexport function renderControl<T>(\n  props: {\n    formElement: FormElement;\n    owner: DataSet<T>;\n    handlers?: Handlers<DataSet, EditorContextType>;\n    catalogue: FormComponentCatalogue;\n    uid: string;\n  },\n  filter?: string\n) {\n  if (props.formElement.bound) {\n    return <Binding key={props.uid} {...props} />;\n  }\n  switch (props.formElement.control) {\n    case 'Input':\n      return <Input key={props.uid} {...props} />;\n    case 'Code':\n      return <CodeEditor key={props.uid} {...props} />;\n    case 'Table':\n      return <TableView key={props.uid} {...props} />;\n    case 'Value':\n      return <Value key={props.uid} {...props} />;\n    case 'Group':\n      return <Group key={props.uid} {...props} filter={filter} />;\n    case 'Select':\n      return <Select key={props.uid} {...props} />;\n    case 'Tuple':\n      return <Tuple key={props.uid} {...props} />;\n    case 'Textarea':\n      return <TextArea key={props.uid} {...props} />;\n    case 'Checkbox':\n      return <Checkbox key={props.uid} {...props} />;\n\n    case 'Map':\n      return <Map key={props.uid} {...props} />;\n    // case 'MapTable':\n    //   return <MapTable {...props} />;\n    default:\n      return <Input key={props.uid} {...props} />;\n  }\n}\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { css, names, pointer, Theme } from '../common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { renderElements } from './control_factory_helpers';\nimport { Icon } from 'semantic-ui-react';\nimport { EditorContext } from '../editor/editor_context';\nimport { getPropValue } from '../helpers';\n\nexport const groupLabel = (theme: Theme) => css`\n  height: 30px;\n  color: ${theme.headerColor};\n  background-color: ${theme.headerBackground};\n  display: flex;\n  align-items: center;\n  padding-left: 12px;\n  border-top: 1px solid black;\n  border-bottom: 1px solid black;\n  white-space: nowrap;\n  label: groupLabel;\n\n  &.h1 {\n    .group-label {\n      font-size: 16px !important;\n    }\n  }\n  &.h2 {\n    padding: 0px !important;\n    .group-label {\n      font-size: 14px;\n      margin-bottom: 3px;\n    }\n  }\n  &.h3 {\n    padding: 0px;\n    .group-label {\n      font-size: 12px;\n      margin-bottom: 3px;\n    }\n  }\n  i {\n    flex: 0 0 18px;\n  }\n  span {\n    flex: 1 1 100%;\n  }\n  .group-label.h3 {\n    font-size: 12px !important;\n  }\n`;\n\nconst groupContent = css`\n  padding: 6px 12px;\n`;\n\ntype HeaderProps = {\n  label: string;\n  buttons: any;\n  className?: string;\n  bare?: boolean;\n};\n\nexport const PropertyHeader = observer(\n  ({ children, label, buttons, bare = false, className }: React.Props<any> & HeaderProps) => {\n    const context = React.useContext(EditorContext);\n    const groups = JSON.parse(localStorage.getItem('CORPIX_GROUPS') || '{}');\n    const [expanded, setExpanded] = React.useState(groups[label] == null ? true : groups[label]);\n\n    return (\n      <>\n        <div className={groupLabel(context.theme)}>\n          <Icon\n            className={pointer}\n            onClick={() => {\n              const groups = JSON.parse(localStorage.getItem('CORPIX_GROUPS') || '{}');\n              groups[label] = !expanded;\n              localStorage.setItem('CORPIX_GROUPS', JSON.stringify(groups));\n              setExpanded(!expanded);\n            }}\n            name={expanded ? 'caret down' : 'caret right'}\n          />\n          {label}\n          <span />\n          {buttons}\n        </div>\n        {expanded && children && (\n          <div className={names({ [groupContent]: !bare }, className)}>{children}</div>\n        )}\n      </>\n    );\n  }\n);\n\ntype Props = {\n  text: string;\n  bare: boolean;\n};\n\nexport const Group = observer((controlProps: FormComponentProps<Props> & { filter: string }) => {\n  const { formElement, owner, handlers, catalogue } = controlProps;\n  const editorState = React.useContext(EditorContext);\n  const { elements, props: props = {} as Props } = formElement;\n  const text = props.text;\n  const label = getPropValue(controlProps, elements[0], editorState, 'label');\n  return (\n    <PropertyHeader label={text} bare={props.bare || (elements.length === 1 && !label)}>\n      {elements &&\n        renderElements(\n          editorState,\n          elements,\n          owner,\n          handlers,\n          catalogue,\n          editorState,\n          controlProps.uid,\n          controlProps.filter\n        )}\n    </PropertyHeader>\n  );\n});\n\nGroup.displayName = 'Group';\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport names from 'classnames';\n\nimport { parseProps, onChangeHandler, controlMargin } from './properties_common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { EditorContext } from '../editor/editor_context';\nimport { tableRowFlex } from './properties_styles';\nimport { prop } from '../common';\n\nexport const Input = observer((componentProps: FormComponentProps) => {\n  const context = React.useContext(EditorContext);\n  const onChange = React.useMemo(\n    () => onChangeHandler.bind({ props: componentProps, editorState: context }),\n    [componentProps, context]\n  );\n\n  const { formElement, readOnly, owner } = componentProps;\n  const { value, error, props = {} } = parseProps(componentProps, context, true);\n  const source = prop(formElement);\n  const schema = owner.getSchema(source);\n\n  let type =\n    schema.properties && schema.properties.value ? schema.properties.value.type : schema.type;\n\n  return (\n    <div className=\"propertyInput\">\n      <input\n        type={type === 'number' || type === 'integer' ? 'number' : 'text'}\n        name={formElement.uid}\n        className={names(controlMargin, tableRowFlex, { invalid: error })}\n        onChange={onChange}\n        placeholder={props.placeholder}\n        data-value={value}\n        value={value || ''}\n        readOnly={readOnly}\n      />\n      {props && props.inputLabel && <div className=\"propertyLabel\">{props.inputLabel}</div>}\n    </div>\n  );\n});\n","import { FormComponentProps } from '@tomino/dynamic-form';\n\nimport { InputProps, DropdownProps } from 'semantic-ui-react';\nimport { prop } from '../common';\nimport { EditorContextType } from '../editor/editor_context';\nimport { getValue, setValue, isNullOrEmpty } from '../helpers';\n\nexport {\n  addButton,\n  celled,\n  controlMargin,\n  styledTableRow,\n  tableHeader,\n  tableRowAuto,\n  tableRowFull,\n  tableRowWithDelete\n} from './properties_styles';\n\nexport function parseProps<T, U>(\n  props: FormComponentProps<T, U>,\n  editorState: EditorContextType,\n  resolveBoundProperty = false,\n  propName: keyof T = undefined\n) {\n  let value = getValue(\n    props,\n    editorState,\n    propName,\n    undefined,\n    props.extra ? `.${props.extra}` : ''\n  );\n\n  if (resolveBoundProperty && value && Object.keys(value).indexOf('source') >= 0) {\n    if (!isNullOrEmpty(value.value)) {\n      value = value.value;\n    } else if (!isNullOrEmpty(value.source)) {\n      value = value.source;\n    } else if (!isNullOrEmpty(value.handler)) {\n      value = value.handler;\n    } else {\n      value = null;\n    }\n  }\n\n  return {\n    props: props.formElement.props,\n    value,\n    error: prop(props.formElement) ? props.owner.getError(prop(props.formElement)) : null\n  };\n}\n\nexport function onChangeHandler(\n  this: { props: FormComponentProps; editorState: EditorContextType; propName?: string },\n  e: React.ChangeEvent<any>,\n  sui?: InputProps | DropdownProps\n) {\n  let currentValue =\n    e.currentTarget.type === 'checkbox'\n      ? e.currentTarget.checked\n      : sui\n        ? sui.value\n        : e.currentTarget.value;\n  setValue(\n    this.props,\n    this.editorState,\n    currentValue,\n    this.propName,\n    this.props.extra ? `.${this.props.extra}` : ''\n  );\n}\n\nexport function clearHandler(this: React.Component<FormComponentProps>) {\n  setValue(this.props, null, '');\n}\n","import { css, Theme } from '../common';\n\nexport const addButton = (theme: Theme) => css`\n  border: 0px;\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n  height: 25px;\n  width: 25px;\n  background: ${theme.buttonBackground};\n  color: ${theme.inputColor};\n  label: addButton;\n`;\n\nexport const controlMargin = css`\n  padding: 0px 6px;\n  width: 100% !important;\n`;\n\nexport const styledTableRow = (theme: Theme) => css`\n  display: flex;\n  align-items: center;\n  height: 27px;\n  margin-bottom: 4px;\n\n  input {\n    border: 0px !important;\n    color: ${theme.inputColor} !important;\n    background-color: ${theme.inputBackground} !important;\n    border-left: solid 1px ${theme.borderColor} !important;\n    padding-left: 6px;\n  }\n`;\n\nexport const celled = (theme: Theme) => css`\n  > div {\n    border: 1px solid ${theme.borderColor};\n    border-radius: 3px;\n  }\n  label: celled;\n`;\n\nexport const tableRowWithDelete = css`\n  display: flex;\n  align-items: center;\n  height: 26px;\n  border: solid 1px #ccc;\n  margin-top: -1px;\n\n  > .only {\n    flex: 1 1 100%;\n    width: 100%;\n  }\n\n  > .first {\n    flex: 1 1 40%;\n    width: 100%;\n  }\n\n  > .second {\n    flex: 1 1 calc(60% - 20px);\n    width: 100%;\n    border-left: 1px solid #ccc !important;\n    min-width: 20px;\n  }\n\n  > button {\n    border: 0px !important;\n    border-left: 1px solid #ccc !important;\n    background-color: #eee !important;\n    flex: 1 1 20px;\n    height: 24px !important;\n  }\n\n  button {\n    height: 24px;\n  }\n`;\n\nexport const tableRowFull = css`\n  flex: 1 1 100%;\n  border-right: solid 1px #111;\n\n  > * {\n    width: 100%;\n  }\n`;\n\nexport const tableRowAuto = css`\n  flex: 1 1 auto;\n`;\n\nexport const tableRowFlex = css`\n  flex: 1;\n`;\n\nexport const tableHeader = css`\n  font-weight: bold;\n  font-style: italic;\n  color: #666;\n  margin-bottom: 6px;\n  margin-top: 6px;\n`;\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { parseProps, onChangeHandler } from './properties_common';\nimport { Dropdown } from 'semantic-ui-react';\nimport { prop } from '../common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { EditorContext } from '../editor/editor_context';\nimport { getValue } from '../helpers';\n\nexport const Select: React.FC<FormComponentProps> = observer(props => {\n  const editorState = React.useContext(EditorContext);\n  const onChange = React.useMemo(() => onChangeHandler.bind({ props, editorState }), [\n    editorState,\n    props\n  ]);\n\n  const { formElement } = props;\n  const source = prop(formElement);\n\n  let def = getValue(props, editorState, 'default');\n\n  const opts = React.useMemo(() => {\n    let options = getValue(props, editorState, 'options');\n    if (!options) {\n      options = [];\n    }\n    let schema = props.owner.getSchema(source, false);\n    if (schema && schema.$enum) {\n      options = options.concat(schema.$enum);\n    }\n    return options;\n  }, [editorState, props, source]);\n\n  const { value, error } = parseProps(props, editorState, true);\n\n  return (\n    <Dropdown\n      value={value || def}\n      data-value={value || def}\n      id={source}\n      selection\n      fluid\n      text={value ? undefined : formElement.props && formElement.props.text}\n      name=\"type\"\n      onChange={onChange}\n      className={`property-search ${error ? 'invalid' : ''}`}\n      options={opts}\n    />\n  );\n});\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { parseProps, onChangeHandler } from './properties_common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { EditorContext } from '../editor/editor_context';\n\nfunction autosize(e: React.KeyboardEvent<HTMLTextAreaElement>) {\n  var el = e.currentTarget;\n  setTimeout(function() {\n    const h = el.scrollHeight;\n    el.style.cssText = 'height:auto; padding:0';\n    // for box-sizing other than \"content-box\" use:\n    // el.style.cssText = '-moz-box-sizing:content-box';\n    el.style.cssText = 'height:' + (h < 200 ? h : 200) + 'px';\n  }, 0);\n}\n\nexport const TextArea = observer((props: FormComponentProps) => {\n  const context = React.useContext(EditorContext);\n  const onChange = React.useMemo(() => onChangeHandler.bind({ props, editorState: context }), [\n    props,\n    context\n  ]);\n\n  const { formElement, readOnly } = props;\n  const { value, error } = parseProps(props, context, true);\n\n  return (\n    <textarea\n      className={error ? 'invalid' : ''}\n      value={value || ''}\n      onChange={onChange}\n      disabled={readOnly}\n      onKeyDown={autosize}\n      id={formElement.uid}\n    />\n  );\n});\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { onChangeHandler, controlMargin, parseProps } from './properties_common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { EditorContext } from '../editor/editor_context';\nimport { names } from '../common';\n\nexport const Checkbox = observer((componentProps: FormComponentProps) => {\n  const context = React.useContext(EditorContext);\n  const onChange = React.useMemo(\n    () => onChangeHandler.bind({ props: componentProps, editorState: context }),\n    [componentProps, context]\n  );\n\n  const { readOnly } = componentProps;\n  const { value, error } = parseProps(componentProps, context, true);\n\n  // console.log('Rendering: ' + value);\n\n  return (\n    <div className={controlMargin}>\n      <input\n        key={(!!value).toString() + 'key'}\n        type=\"checkbox\"\n        name=\"source\"\n        checked={value}\n        data-value={value}\n        onChange={onChange}\n        className={names({ invalid: error })}\n        readOnly={readOnly}\n      />\n    </div>\n  );\n});\n","import * as React from 'react';\nimport * as styles from './properties_common';\n\nimport { styledTableRow, addButton, celled } from './properties_common';\n\nimport names from 'classnames';\nimport { observer } from 'mobx-react';\n\nimport { select, prop } from '../common';\nimport { ISimpleType, IMSTMap } from 'mobx-state-tree';\nimport { action } from 'mobx';\nimport {\n  DataSet,\n  FormElement,\n  Schema,\n  Option,\n  FormComponentProps,\n  Handlers\n} from '@tomino/dynamic-form';\n\nimport { PropertyHeader } from './group';\nimport { Dropdown } from 'semantic-ui-react';\nimport { EditorContext, EditorContextType } from '../editor/editor_context';\nimport { getValue } from '../helpers';\n\ntype ControlMap = {\n  key: string;\n};\n\ntype RowProps = {\n  mappingKey: string;\n  map: IMSTMap<ISimpleType<string>>;\n  owner: DataSet;\n  handlers: Handlers<any, EditorContextType>;\n  formElement: FormElement;\n  source: string;\n  controlMap: ControlMap[];\n};\n\nfunction renderControl(\n  options: Option[],\n  value: string,\n  type: string,\n  placeholder: string,\n  error: boolean,\n  onValueChange: any,\n  mappingKey: string,\n  className = ''\n) {\n  return options ? (\n    <Dropdown\n      value={value}\n      data-value={value}\n      data-key={mappingKey}\n      search\n      selection\n      fluid\n      name=\"type\"\n      onChange={onValueChange}\n      className={names('property-search', className, select, {\n        invalid: error\n      })}\n      options={options}\n    />\n  ) : (\n    <input\n      type={type}\n      placeholder={placeholder}\n      onChange={onValueChange}\n      className={names({\n        invalid: error\n      })}\n      value={value}\n      data-key={mappingKey}\n      data-value={value}\n    />\n  );\n}\n\nconst MapRow: React.FC<RowProps> = (props: RowProps) => {\n  const { mappingKey, map, owner, formElement, handlers, source, controlMap } = props;\n  const [currentKey, setKey] = React.useState(mappingKey);\n  const [value, setValue] = React.useState(map.get(mappingKey));\n  const [error, setError] = React.useState('');\n  const context = React.useContext(EditorContext);\n\n  let keyOptions: Option[] = getValue(\n    { formElement, owner, handlers, catalogue: null },\n    context,\n    'options'\n  );\n  let valueOptions: Option[];\n\n  const editorState = React.useContext(EditorContext);\n  const editorItem = editorState.editorCatalogue.components[owner.getValue('control')];\n  let schema: Schema;\n  if (editorItem && editorItem.props) {\n    schema = new Schema(editorItem.props);\n    keyOptions = Object.getOwnPropertyNames(schema.properties).map(key => ({\n      label: schema.properties[key].title,\n      value: key,\n      description: schema.properties[key].description\n    }));\n    if (currentKey) {\n      valueOptions = editorItem.props[currentKey].schema.$enum;\n      if (valueOptions) {\n        valueOptions.forEach(o => (o.key = mappingKey));\n      }\n    }\n  }\n\n  const selected = currentKey && keyOptions && keyOptions.find(o => o.value === currentKey);\n\n  const onKeyChange = action(\n    (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>, control: any) => {\n      const originalKey = e.currentTarget.getAttribute('data-key') || '';\n      const newKey = control.value;\n      const value = e.currentTarget.getAttribute('data-value');\n\n      setKey(newKey);\n\n      if (map.has(newKey)) {\n        owner.setError(source, 'Key exists: ' + newKey);\n        setError(originalKey);\n        return;\n      }\n\n      owner.mapRemove(source, originalKey);\n      owner.setMapValue(source, newKey, value == null ? '' : value);\n\n      let mapping = controlMap.find(o => o.key === originalKey);\n      if (mapping) {\n        mapping.key = newKey;\n      } else {\n        controlMap.push({ key: newKey });\n      }\n    }\n  );\n\n  const onValueChange = (e: any) => {\n    const key = e.currentTarget.getAttribute('data-key');\n    let value = e.currentTarget.value;\n\n    setValue(value);\n\n    // with schema we can try to create an actual value\n    const source = prop(formElement);\n    if (schema) {\n      value = schema.properties[key].tryParse(value);\n      owner.setMapValue(source, e.key, value);\n\n      const mapSource = owner.getValue(source);\n      const mapObject = JSON.parse(JSON.stringify(mapSource));\n      let result = schema.validate(mapObject);\n      if (result && result.length) {\n        let errorKey = result[0].dataPath.replace(/\\//g, '');\n        owner.setError(source, `${errorKey}: ${result[0].message}`);\n        setError(errorKey);\n      } else {\n        owner.setError(source, '');\n        setError('');\n      }\n    } else {\n      owner.setMapValue(source, key, value);\n    }\n  };\n\n  const deleteValue = (e: React.MouseEvent) => {\n    const originalKey = e.currentTarget.getAttribute('data-key');\n    owner.mapRemove(source, originalKey);\n  };\n\n  return (\n    <div\n      className={names(styledTableRow(editorState.theme), { invalid: error })}\n      onClick={e => {\n        if (selected && selected.description) {\n          owner.setValue('_help', selected.description);\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      }}\n    >\n      <div className={styles.tableRowFull}>\n        {renderControl(\n          keyOptions,\n          currentKey,\n          'text',\n          'Key',\n          error === currentKey,\n          onKeyChange,\n          mappingKey,\n          'first gray'\n        )}\n      </div>\n      <div className={styles.tableRowFull}>\n        {renderControl(\n          valueOptions,\n          value,\n          (selected && selected.type) || 'text',\n          'Value',\n          error === currentKey,\n          onValueChange,\n          mappingKey,\n          'second'\n        )}\n      </div>\n\n      <div className={styles.tableRowAuto}>\n        <button\n          className={addButton(editorState.theme)}\n          onClick={deleteValue}\n          data-key={mappingKey}\n        >\n          x\n        </button>\n      </div>\n    </div>\n  );\n};\n\n@observer\nexport class Map extends React.Component<FormComponentProps> {\n  static contextType = EditorContext;\n\n  onClear = () => {\n    this.props.owner.setValue(prop(this.props.formElement), '');\n  };\n\n  addRow = () => {\n    const source = prop(this.props.formElement);\n    const current = this.props.owner.getValue(source);\n    if (!current || typeof current !== 'object') {\n      this.props.owner.setValue(source, {});\n    }\n    this.props.owner.setMapValue(source, '', '');\n  };\n\n  render() {\n    const { formElement, owner, handlers } = this.props;\n    const source = prop(formElement);\n    const controlMap: ControlMap[] = [];\n\n    // let error = control.validate && control.validate(this.props.owner.getValue(source));\n\n    const map: IMSTMap<ISimpleType<string>> = owner.getValue(source);\n    const lines: any = [];\n\n    if (map && typeof map === 'object') {\n      // add new items\n      map.forEach((_value, key) => {\n        if (controlMap.every(c => c.key !== key)) {\n          controlMap.push({ key });\n        }\n      });\n\n      for (let i = 0; i < controlMap.length; i++) {\n        const mapping = controlMap[i];\n        lines.push(\n          <MapRow\n            key={i}\n            mappingKey={mapping.key}\n            map={map}\n            owner={owner}\n            formElement={formElement}\n            source={source}\n            handlers={handlers}\n            controlMap={controlMap}\n          />\n        );\n      }\n    }\n\n    return (\n      <PropertyHeader\n        label={formElement.props && formElement.props.text}\n        buttons={\n          <button className=\"headerButton\" onClick={this.addRow}>\n            +\n          </button>\n        }\n      >\n        <div className={celled(this.context.theme)}>{lines.length > 0 ? lines : undefined}</div>\n      </PropertyHeader>\n    );\n  }\n}\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { safeGetValue } from '../helpers';\nimport { EditorContext } from '../editor/editor_context';\n\nexport const Value: React.FC<FormComponentProps> = observer(props => {\n  const context = React.useContext(EditorContext);\n  return <div className=\"input\">{safeGetValue(props, context)}</div>;\n});\n","import * as React from 'react';\nimport * as styles from './properties_common';\n\nimport { styledTableRow, addButton, celled } from './properties_common';\n\nimport { observer } from 'mobx-react';\nimport { FormElement, DataSet, Option, FormComponentProps, Handlers } from '@tomino/dynamic-form';\n\nimport { select, prop } from '../common';\nimport { ErrorView } from '../semantic/error_view';\nimport { PropertyHeader } from './group';\nimport { Dropdown, SelectProps, Input, Icon } from 'semantic-ui-react';\nimport { Select } from './select';\nimport { renderControl } from './control_factory';\nimport { css } from 'emotion';\nimport { EditorContext, EditorContextType } from '../editor/editor_context';\nimport { getValue } from '../helpers';\nimport { DragDrop, Processor } from '../layouts/drag_drop';\nimport { dot } from './binding';\n\ntype RowProps = FormComponentProps<TableProps, TableChildProps> & {\n  data: DataSet;\n  index: number;\n  list?: any[];\n  handlers: Handlers<any, EditorContextType>;\n  dragHandleProps: any;\n  uid: string;\n};\n\ntype TableProps = {\n  value: any;\n  bound: boolean;\n  changeBound: any;\n};\n\ntype TableChildProps = {\n  width: number;\n  type: string;\n};\n\nconst handle = css`\n  padding-left: 3px;\n  opacity: 0.5;\n  cursor: grab;\n`;\n\nconst Handle = (props: any) => {\n  return (\n    <div {...props} className={handle}>\n      <Icon name=\"content\" />\n    </div>\n  );\n};\n\nfunction dragStart(index: number, context: EditorContextType) {\n  return function(e: React.DragEvent) {\n    const target = e.currentTarget as HTMLDivElement;\n\n    context.dragItem = {\n      from: index,\n      type: 'table',\n      node: e.currentTarget\n    };\n\n    setTimeout(() => {\n      target.style.visibility = 'hidden';\n      target.style.height = '0px';\n      target.style.margin = '0px';\n    }, 1);\n  };\n}\n\nconst TableRow: React.FC<RowProps> = props => {\n  const context = React.useContext(EditorContext);\n\n  const deleteRow = React.useCallback(\n    (e: React.MouseEvent<HTMLButtonElement>) => {\n      props.data.removeRowIndex(prop(props.formElement), parseInt(e.currentTarget.value));\n    },\n    [props.data, props.formElement]\n  );\n\n  const onDragStart = React.useCallback(dragStart(props.index, context), [props.index]);\n\n  return (\n    <div className={styledTableRow(context.theme)} onDragStart={onDragStart}>\n      <Handle {...props.dragHandleProps} index={props.index} />\n      {props.formElement.elements.map((e, i) => (\n        <div\n          className={styles.tableRowFull}\n          key={i}\n          style={{\n            flex: `1 1 ${(e.props && e.props.width) || '100%'}`\n          }}\n        >\n          {renderControl({ ...props, formElement: e })}\n        </div>\n      ))}\n      {!props.readOnly && (\n        <div className={styles.tableRowAuto}>\n          <button className={addButton(context.theme)} onClick={deleteRow} value={props.index}>\n            x\n          </button>\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst SimpleTableRow: React.FC<RowProps> = props => {\n  const context = React.useContext(EditorContext);\n\n  const onDragStart = React.useCallback(dragStart(props.index, context), [props.index]);\n\n  const onChange: any = React.useCallback(\n    (_e: any, props: SelectProps) =>\n      props.data.setArrayValue(props.formElement.props.value.source, props.index, props.value),\n    []\n  );\n\n  const deleteRow = React.useCallback(\n    (e: React.MouseEvent<HTMLButtonElement>) => {\n      props.data.removeRowIndex(\n        props.formElement.props.value.source,\n        parseInt(e.currentTarget.value)\n      );\n    },\n    [props.data, props.formElement.props.value.source]\n  );\n\n  function renderControl() {\n    if (!props.formElement.elements || props.formElement.elements.length === 0) {\n      throw new Error(\n        'You need to define the type of the control for the table row. For example: { elements: [{control: \"Input\"}] }'\n      );\n    }\n    const formElement = props.formElement.elements[0];\n    const value = props.list[props.index];\n    const type = (formElement.props && formElement.props.type) || 'text';\n\n    switch (formElement.control) {\n      case 'Input':\n        return <Input type={type} onChange={onChange} value={value} />;\n      case 'Select':\n        const options: Option[] = getValue({ ...props, formElement }, context, 'options');\n\n        return (\n          <Dropdown\n            value={value}\n            data-value={value}\n            search\n            selection\n            fluid\n            name=\"type\"\n            onChange={onChange}\n            className={`property-search ${select}`}\n            options={options}\n          />\n        );\n    }\n  }\n\n  return (\n    <div className={styledTableRow(context.theme)} onDragStart={onDragStart}>\n      <Handle {...props.dragHandleProps} index={props.index} />\n      <div className={styles.tableRowFull}>{renderControl()}</div>\n\n      {!props.readOnly && (\n        <div className={styles.tableRowAuto}>\n          <button className={addButton(context.theme)} onClick={deleteRow} value={props.index}>\n            x\n          </button>\n        </div>\n      )}\n    </div>\n  );\n};\n\nlet id = 1;\nconst processor: Processor<any> = {\n  children: props => {\n    const source = prop(props.formElement);\n    return props.owner.getValue(source) || [];\n  },\n  id: props => {\n    if (props.value) {\n      return props.value;\n    }\n    if (props.formElement) {\n      if (!props.formElement.uid) {\n        props.formElement.uid = id++;\n      }\n      return props.formElement.uid;\n    }\n    if (props.uid) {\n      return props.uid;\n    }\n    return id++;\n    throw new Error('Could not determine ID');\n  },\n  name: () => ''\n};\n\nexport const TableComponent: React.FC<FormComponentProps & { uid: string }> = props => {\n  const context = React.useContext(EditorContext);\n\n  const addRow = React.useCallback(() => {\n    const { formElement, owner } = props;\n    owner.addRow(prop(formElement));\n  }, [props]);\n\n  const onDrop = React.useCallback(\n    (to: number) => {\n      if (!context.dragItem || context.dragItem.type !== 'table') {\n        return;\n      }\n      let { formElement, owner } = props;\n\n      owner.moveRow(prop(formElement), context.dragItem.from, to);\n    },\n    [context.dragItem, props]\n  );\n\n  const dragHandleProps = React.useMemo(\n    () => ({\n      onMouseDown(e: any) {\n        e.currentTarget.parentNode.setAttribute('draggable', 'true');\n      },\n      onMouseUp(e: any) {\n        e.currentTarget.parentNode.setAttribute('draggable', 'false');\n      }\n    }),\n    []\n  );\n\n  const onEndDrag = React.useCallback(\n    e => {\n      let item = context.dragItem;\n      if (item && item.node) {\n        item.node.style.visibility = 'visible';\n        item.node.style.height = '';\n        item.node.style.margin = '';\n      }\n      e.target.draggable = false;\n      context.dragItem = null;\n    },\n    [context.dragItem]\n  );\n\n  const drag = React.useMemo(\n    () =>\n      new DragDrop(\n        'column',\n        props,\n        processor,\n        `color: ${context.theme.textColor}!important;`,\n        'outline',\n        onDrop,\n        onEndDrag,\n        false,\n        20,\n        context\n      ),\n    [context, onDrop, onEndDrag, props]\n  );\n\n  const owner = props.owner;\n  const formElement = props.formElement as FormElement;\n  const controlProps = formElement.props;\n  const source = prop(formElement);\n  const list: DataSet[] = owner.getValue(source) || [];\n\n  return (\n    <PropertyHeader\n      label={formElement.props && formElement.props.text}\n      buttons={\n        <>\n          {(!controlProps.view || controlProps.view === 'value') && (\n            <button className=\"headerButton\" onClick={addRow}>\n              +\n            </button>\n          )}\n          {formElement.props.bound && (\n            <div\n              className={dot(controlProps.view)}\n              onClick={formElement.props.changeBound}\n              style={{ marginRight: '20px' }}\n              title={`Green - Value\nYellow - Bound to data\nRed - Handled by a function`}\n            />\n          )}\n        </>\n      }\n      bound={formElement.props.bound}\n      changeBound={formElement.props.changeBound}\n    >\n      {controlProps.view && controlProps.view !== 'value' && (\n        <Select extra={controlProps.view} {...props} />\n      )}\n      {!controlProps.view || (controlProps.view === 'value' && list.length > 0) ? (\n        <>\n          <div className={celled(context.theme)} {...drag.props()}>\n            {list.map((row, i) =>\n              typeof list[0] === 'object' ? (\n                <TableRow\n                  key={i}\n                  index={i}\n                  formElement={formElement}\n                  owner={row}\n                  data={owner}\n                  readOnly={props.readOnly}\n                  catalogue={props.catalogue}\n                  handlers={props.handlers}\n                  dragHandleProps={dragHandleProps}\n                  uid={props.uid}\n                />\n              ) : (\n                <SimpleTableRow\n                  key={i}\n                  index={i}\n                  formElement={formElement}\n                  list={list}\n                  owner={owner}\n                  data={owner}\n                  readOnly={props.readOnly}\n                  catalogue={props.catalogue}\n                  handlers={props.handlers}\n                  dragHandleProps={dragHandleProps}\n                  uid={props.uid}\n                />\n              )\n            )}\n          </div>\n\n          <ErrorView owner={props.owner} source={prop(formElement)} pointing=\"left\" />\n        </>\n      ) : (\n        undefined\n      )}\n    </PropertyHeader>\n  );\n};\n\nexport const TableView = observer(TableComponent);\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { EditorContext } from '../editor/editor_context';\nimport { css } from '../common';\nimport { Select } from './select';\nimport { setValue } from '../helpers';\nimport { parseProps } from './properties_common';\nimport { renderControl } from './control_factory';\n\nexport const dot = (view: string) => css`\n  min-width: 7px;\n  max-width: 7px;\n  width: 7px;\n  height: 7px;\n  background-color: ${view === 'value' ? 'green' : view === 'handler' ? 'red' : 'yellow'};\n  margin: 0px 6px;\n  cursor: pointer;\n  label: dot;\n`;\n\nexport const Binding = observer((componentProps: FormComponentProps & { uid: string }) => {\n  const context = React.useContext(EditorContext);\n  const { formElement } = componentProps;\n  const { value } = parseProps(componentProps, context);\n\n  const [view, setView] = React.useState(\n    value && value.handler ? 'handler' : value && value.source ? 'source' : 'value'\n  );\n  // const source = valueSource(componentProps.formElement);\n  // const schema = componentProps.owner.getSchema(source);\n  // debugger;\n\n  const changeView = React.useCallback(() => {\n    if (view === 'value') {\n      formElement.props.options = { handler: 'datasetSource' };\n      // formElement.props.text = 'Binding';\n      setValue(componentProps, context, '', 'value', '.handler');\n      setView('source');\n    } else if (view === 'source') {\n      formElement.props.options = { handler: 'optionsHandlers' };\n      // formElement.props.text = 'Handler';\n      setValue(componentProps, context, '', 'value', '.value');\n      setView('handler');\n    } else if (view === 'handler') {\n      // formElement.props.text = 'Options';\n      setValue(componentProps, context, undefined, 'value');\n      setView('value');\n    }\n  }, [componentProps, context, formElement.props.options, view]);\n\n  const modifiedFormElement = React.useMemo(\n    () => ({\n      ...formElement,\n      bound: false,\n      props: {\n        ...formElement.props,\n        bound: true,\n        changeBound: changeView,\n        view,\n        options: { handler: view === 'source' ? 'datasetSource' : 'optionsHandlers' }\n      }\n    }),\n    [changeView, formElement, view]\n  );\n\n  if (formElement.control === 'Table') {\n    return renderControl({\n      ...componentProps,\n      formElement: modifiedFormElement\n    });\n  }\n\n  return (\n    <div className=\"propertyInput\">\n      {view === 'value' ? (\n        renderControl({\n          ...componentProps,\n          formElement: { ...formElement, bound: false }\n        })\n      ) : (\n        <Select extra={view} {...componentProps} formElement={modifiedFormElement} />\n      )}\n      <div\n        className={dot(view)}\n        onClick={changeView}\n        title={`Green - Value\nYellow - Bound to data\nRed - Handled by a function`}\n      />\n    </div>\n  );\n});\n\nBinding.displayName = 'Binding';\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport names from 'classnames';\n\nimport { parseProps, onChangeHandler, controlMargin } from './properties_common';\nimport { FormComponentProps } from '@tomino/dynamic-form';\nimport { Input } from 'semantic-ui-react';\nimport { EditorContext } from '../editor/editor_context';\n\ntype Props = {\n  items: {\n    label: string;\n    source: string;\n    type: string;\n  }[];\n};\n\nexport const Tuple = observer((componentProps: FormComponentProps<Props>) => {\n  const context = React.useContext(EditorContext);\n  const onChange = React.useMemo(\n    () => onChangeHandler.bind({ props: componentProps, editorState: context }),\n    [componentProps, context]\n  );\n  const { formElement, readOnly } = componentProps;\n  const { value, error, props } = parseProps(componentProps, context);\n\n  return (\n    <div>\n      {props.items.map((item, i) => (\n        <Input\n          key={i}\n          type={item.type || 'text'}\n          label={item.label}\n          labelPosition=\"right\"\n          name={formElement.uid}\n          className={names(controlMargin, { invalid: error })}\n          onChange={onChange}\n          data-value={value}\n          value={value || ''}\n          readOnly={readOnly}\n        />\n      ))}\n    </div>\n  );\n});\n\nTuple.displayName = 'Tuple';\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\n\nimport { FormComponentProps } from '@tomino/dynamic-form';\n\nimport Editor from 'react-simple-code-editor';\n\n//@ts-ignore\nimport { highlight, languages } from 'prismjs/components/prism-core';\nimport 'prismjs/components/prism-clike';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-graphql';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/themes/prism-dark.css';\nimport { setValue } from '../helpers';\nimport { EditorContext } from '../editor/editor_context';\nimport { parseProps } from './properties_common';\n\nexport const CodeEditor = observer((props: FormComponentProps) => {\n  const context = React.useContext(EditorContext);\n  const onChange = React.useMemo(() => (code: string) => setValue(props, context, code), [\n    context,\n    props\n  ]);\n\n  const { formElement } = props;\n  const { value } = parseProps(props, context, true);\n  // const value = getValue(props, context, 'value', '');\n\n  return (\n    <Editor\n      value={value || ''}\n      onValueChange={onChange}\n      highlight={code => highlight(code || '', languages[formElement.props.language])}\n      padding={10}\n      style={{\n        fontFamily: '\"Fira code\", \"Fira Mono\", monospace',\n        fontSize: 12,\n        flex: 1,\n        marginTop: '3px',\n        marginLeft: '3px'\n      }}\n    />\n  );\n});\n","import * as React from 'react';\n\nimport { Icon } from 'semantic-ui-react';\nimport { observer } from 'mobx-react';\nimport { DataSet } from '@tomino/dynamic-form';\nimport { Message } from 'semantic-ui-react';\nimport { css } from '../common';\nimport { EditorContext } from '../editor/editor_context';\n\ntype Props = {\n  owner: DataSet;\n};\n\nconst help = css`\n  margin: 6px !important;\n`;\n\nexport const Help = observer(({  }: Props) => {\n  const state = React.useContext(EditorContext);\n  let HelpView = state.help;\n  if (!HelpView) {\n    return null;\n  }\n  return (\n    <Message className={help}>\n      <Message.Header>\n        <Icon name={'help circle'} /> Help\n      </Message.Header>\n      <div>\n        {typeof HelpView === 'string' ? (\n          <div dangerouslySetInnerHTML={{ __html: HelpView }} />\n        ) : (\n          { HelpView }\n        )}\n      </div>\n    </Message>\n  );\n});\n","import * as schemaHandlers from './schema_panel.handlers';\n\nimport { config, FormElement } from '@tomino/dynamic-form';\n\nexport { schemaHandlers };\n\nexport const schemaPanel: FormElement[] = [\n  {\n    control: 'Group',\n    props: {\n      text: 'Data',\n      display: 'group'\n    },\n    elements: [\n      /* =========================================================\n              NAME / TITLE\n             ======================================================== */\n\n      {\n        props: {\n          value: {\n            source: 'title',\n            handler: 'titleValueHandler',\n            parse: 'titleParseHandler'\n          },\n          label: config.i18n`Name:`\n        },\n\n        control: 'Input',\n        documentation: 'Name of the element'\n      },\n\n      /* =========================================================\n              TYPE\n             ======================================================== */\n      {\n        props: {\n          value: {\n            source: 'type',\n            handler: 'typeValueHandler',\n            parse: 'typeParseHandler'\n          },\n          label: 'Type',\n          options: { handler: 'typeOptions' }\n        },\n        control: 'Select',\n        documentation: `Data type of the schema element`\n      },\n\n      /* =========================================================\n              Default value\n             ======================================================== */\n\n      {\n        props: {\n          label: 'Default',\n          value: { source: 'default' },\n          visible: { handler: 'atomicTypeVisibility' }\n        },\n        control: 'Input',\n        documentation: `Default value of the element`\n      },\n\n      /* =========================================================\n              READONLY\n             ======================================================== */\n      {\n        props: {\n          label: 'Read Only',\n          value: { source: 'readOnly' },\n          visible: { handler: 'atomicTypeVisibility' }\n        },\n        control: 'Checkbox',\n        documentation: `Value is readonly`\n      },\n\n      /* =========================================================\n              FAKER\n             ======================================================== */\n      // {\n      //   label: 'Faker',\n      //   props: {\n      //     search: true,\n      //     value: { source: 'faker' },\n      //     visible: { handler: 'atomicTypeVisibility' },\n      //     options: { handler: 'fakedOptions' }\n      //   },\n      //   control: 'Select',\n      //   documentation: `Utility type to generate fake data when previewing the form.`\n      // },\n      {\n        props: { label: 'Description', value: { source: 'description' } },\n        control: 'Textarea',\n        documentation: `Element descriptions`\n      },\n\n      /* =========================================================\n              Share\n             ======================================================== */\n\n      {\n        props: {\n          value: { label: 'Share', source: 'share' },\n          visible: { handler: 'objectVisibilityHandler' }\n        },\n        control: 'Checkbox',\n        documentation: `Any data stored in the shared type is saved into the database and shared among all new processes.\n                  This allows for data sharing between processes. When another process uses the same type the data is automatically loaded in the form`\n      }\n    ]\n  },\n  {\n    control: 'Group',\n    props: {\n      text: 'Validations'\n    },\n    elements: [\n      /* =========================================================\n              NUMBERS\n             ======================================================== */\n      {\n        props: {\n          type: 'number',\n          inputLabel: 'max',\n          value: { source: 'maximum' },\n          visible: { handler: 'numberVisibleHandler' }\n        },\n        tuple: 'Range',\n        control: 'Input',\n        documentation: `Maximum value of the field, e.g.value <= maximum`\n      },\n      {\n        props: {\n          label: 'Exclusive Maximum',\n          type: 'number',\n          inputLabel: 'max',\n          value: { source: 'exclusiveMaximum' },\n          visible: { handler: 'numberVisibleHandler' }\n        },\n        tuple: 'Exclusive',\n        control: 'Input',\n        documentation: `Exclusive maximum value of the field, e.g.value < maximum`\n      },\n      {\n        props: {\n          label: 'Minimum',\n          type: 'number',\n          inputLabel: 'min',\n          visible: { handler: 'numberVisibleHandler' },\n          value: { source: 'minimum' }\n        },\n        tuple: 'Range',\n        control: 'Input',\n        documentation: `Minimum value of the field, e.g.value >= maximum`\n      },\n      {\n        props: {\n          label: 'Exclusive Minimum',\n          type: 'number',\n          inputLabel: 'min',\n          visible: { handler: 'numberVisibleHandler' },\n          value: { source: 'exclusiveMinimum' }\n        },\n        tuple: 'Exclusive',\n        control: 'Input',\n        documentation: `Exclusive minimum value of the field, e.g.value > maximum`\n      },\n\n      {\n        props: {\n          label: 'Multiple Of',\n          type: 'number',\n          value: { source: 'multipleOf' },\n          visible: { handler: 'numberVisibleHandler' }\n        },\n        control: 'Input',\n        documentation: `Value has to be a multiple of specified number, e.g. for 3, the correct values are 0, 3, 6, 9 ...`\n      },\n\n      /* =========================================================\n              STRING\n             ======================================================== */\n      {\n        props: {\n          label: 'Format',\n          value: { source: 'format' },\n          visible: { handler: 'stringVisibleHandler' },\n          options: { handler: 'formatOptions' }\n        },\n        control: 'Select',\n\n        documentation: `Specific format of the string. Please see <a href=\"https://json-schema.org/understanding-json-schema/reference/string.html\" target=\"_blank\">following page</a> for more details`\n      },\n      {\n        props: {\n          label: 'Minimum Length',\n          type: 'number',\n          inputLabel: 'min',\n          visible: { handler: 'stringVisibleHandler' },\n          value: { source: 'minLength' }\n        },\n        tuple: 'Length',\n        control: 'Input',\n        documentation: `Minimum length of the string`\n      },\n      {\n        props: {\n          label: 'Maximum Length',\n          type: 'number',\n          inputLabel: 'max',\n          visible: { handler: 'stringVisibleHandler' },\n          value: { source: 'maxLength' }\n        },\n        tuple: 'Length',\n        control: 'Input',\n        documentation: `Maximum length of the string`\n      },\n\n      {\n        props: {\n          label: 'RegEx Pattern',\n          value: { source: 'pattern', validate: 'regexValidateHandler' },\n          visible: { handler: 'stringVisibleHandler' }\n        },\n        control: 'Input',\n        documentation: `Regular expression that has to match the string.`\n      },\n      /* =========================================================\n              ARRAY\n             ======================================================== */\n      {\n        props: {\n          label: 'Items Type',\n          visible: { handler: 'arrayVisibleHandler' },\n          value: {\n            source: 'items.type',\n            handler: 'itemsTypeValueHandler',\n            parse: 'itemsTypeParseHandler'\n          },\n          options: { handler: 'typeOptions' }\n        },\n        control: 'Select',\n        documentation: `Minimum number of items in the array`\n      },\n      {\n        props: {\n          label: 'Maximum Items',\n          visible: { handler: 'arrayVisibleHandler' },\n          type: 'number',\n          value: { source: 'maxItems' }\n        },\n        control: 'Input',\n        documentation: `Maximum number of items in the array`\n      },\n      {\n        props: {\n          label: 'Minimum Items',\n          value: { source: 'minItems' },\n          visible: { handler: 'arrayVisibleHandler' },\n          type: 'number'\n        },\n        control: 'Input',\n        documentation: `Minimum number of items in the array`\n      },\n      {\n        props: {\n          label: 'Unique Items',\n          visible: { handler: 'arrayVisibleHandler' },\n          value: { source: 'uniqueItems' }\n        },\n        control: 'Checkbox',\n        documentation: `Array has to contain only unique items`\n      },\n\n      /* =========================================================\n              GENERAL\n             ======================================================== */\n      {\n        props: { label: 'Group', value: { source: 'validationGroup' } },\n        control: 'Input',\n        documentation: `Fields in the same validation group are validated together. When changing a member of a validation group all other members of this group are validated.`\n      },\n      {\n        props: {\n          label: 'Required',\n          visible: { handler: 'atomicTypeVisibility' },\n          value: { source: 'title', handler: 'requiredValue', parse: 'requiredParse' }\n        },\n        control: 'Checkbox',\n        documentation: `Value of this field is required.`\n      },\n      {\n        props: {\n          visible: { handler: 'errorMessageVisibleHandler' },\n          label: config.i18n`Message`,\n          value: { source: 'errorMessage' }\n        },\n        control: 'Input',\n        documentation:\n          'You can define a single error message if any of the validations fail, or you can define custom messages for each validation element.'\n        // visible: owner => owner.getValue('type') === 'object'\n      }\n    ]\n  },\n  {\n    control: 'Map',\n    props: {\n      text: 'Custom Messages',\n      value: { source: 'errorMessage' },\n      options: { handler: 'errorMessageOptions' }\n    },\n    documentation: 'You can define an error message per validation category.'\n    // visible: owner => owner.getValue('type') === 'object'\n  },\n\n  /* =========================================================\n          Required\n         ======================================================== */\n  {\n    props: {\n      text: config.i18n`Required Fields`,\n      value: { source: 'required' },\n      visible: { handler: 'objectVisibilityHandler' }\n    },\n    control: 'Table',\n    elements: [\n      {\n        control: 'Select',\n        props: {\n          value: { source: '.' },\n          options: { handler: 'requiredOptionsHandler' }\n        }\n      }\n    ],\n    documentation: 'List of fields which value is required'\n    // visible: owner => owner.getValue('type') === 'object'\n  },\n  {\n    control: 'Table',\n    props: {\n      value: { source: '$enum' },\n      text: 'Enumerations'\n    },\n    elements: [\n      {\n        control: 'Input',\n        props: {\n          label: 'Text',\n          value: { source: 'text' },\n          width: 10,\n          placeholder: 'Text'\n        }\n      },\n      {\n        control: 'Input',\n        props: {\n          label: 'Value',\n          width: 6,\n          value: { source: 'value' },\n          placeholder: 'Value'\n        }\n      }\n    ]\n  },\n  {\n    control: 'Group',\n    props: {\n      text: 'Value Expression',\n      bare: true\n    },\n    elements: [\n      {\n        control: 'Textarea',\n        props: {\n          value: { source: 'expression', validate: 'expressionValidationHandler' },\n          placeholder: 'Javascript Expression',\n          css: 'min-height: 80px'\n        },\n\n        documentation: `Dynamic expression that evaluates automatically when your data changes.\n      Expressions use javascript and you can use <i>this</i> keyword to access the dataset.<br/><br />\n      <p>\n      <b>Example:</b>\n      <p>Consider following dataset:</p>\n      <p style=\"font-family: Courier\">\n      purchasePrice: number<br />\n      currentCountry: object<br />\n      &nbsp;&nbsp;&nbsp;&nbsp;tax: number\n      </p>\n      <p>You can write a following expression:</p>\n      <p style=\"font-family: Courier\">\n      this.purchasePrice + this.currentCountry.tax \n      </p>\n      </p>`\n      }\n    ]\n  },\n  {\n    control: 'Group',\n    props: {\n      text: 'Validation Expression',\n      bare: true\n    },\n    elements: [\n      {\n        control: 'Textarea',\n        props: {\n          value: { source: 'validationExpression' },\n          placeholder: 'Javascript Expression'\n        },\n        documentation: `Dynamic expression that automatically validates when your data changes.\n    Expressions use javascript and you can use <i>this</i> keyword to access the dataset and <i>value</i> keyword to access the current value.<br/><br />\n    <p>\n    <b>Example:</b>\n    <p style=\"font-family: Courier\">\n    value > this.price \n    </p>\n    </p>`\n      }\n    ]\n  }\n];\n\n// type Props = {\n//   project: ProjectDataSet;\n//   selected: SchemaDataSet;\n// };\n\n// export const SchemaEditor = observer(({ project, selected }: Props) => {\n//   // subscribe to changes to name\n//   project.state.selectedSchemaName;\n\n//   return (\n//     <>\n//       {renderElements(tabs, selected, handlers as any, null /* catalogue */)}\n//       {/* <DeleteSchema schema={selected} property={project.state.selectedSchemaName} /> */}\n//       {/* <PropertiesView\n//         owner={activeElement}\n//         handlers={handlers}\n//         tabs={tabs}\n//         Buttons={() => (\n//           <DeleteSchema schema={editorState.schema} property={project.state.selectedSchemaName} />\n//         )}\n//       /> */}\n//     </>\n//   );\n// });\n\n// SchemaEditor.displayName = 'SchemaEditor';\n","import {\n  Handler,\n  ParseHandler,\n  safeEval,\n  Schema,\n  ValidateHandler,\n  Option\n} from '@tomino/dynamic-form';\nimport { debounce } from '@tomino/toolbelt';\n\nimport { SchemaDataSet } from '../form_store';\nimport { root } from '../editor_common';\nimport { fakerOptions } from './faker_options';\nimport { EditorContextType } from '../editor_context';\nimport { schemaDatasetToJS } from '../../helpers';\nimport { HandlerArgs } from '@tomino/dynamic-form';\n\ntype SchemaHandler = Handler<SchemaDataSet, EditorContextType>;\ntype SchemaParseHandler = ParseHandler<SchemaDataSet, EditorContextType>;\ntype SchemaValidateHandler = ValidateHandler<SchemaDataSet, EditorContextType>;\n\nconst typeVisibility = (types: string[]) => ({ owner }: HandlerArgs) => {\n  return types.indexOf(owner.type) >= 0;\n};\n\nexport const objectVisibilityHandler: SchemaHandler = typeVisibility(['object']);\n\nexport const stringVisibleHandler: SchemaHandler = typeVisibility(['string']);\n\nexport const numberVisibleHandler: SchemaHandler = typeVisibility(['integer', 'number']);\n\nexport const arrayVisibleHandler: SchemaHandler = typeVisibility(['array']);\n\n/* =========================================================\n    Title\n   ======================================================== */\n\nexport const titleValueHandler: SchemaHandler = ({ owner, context }) =>\n  owner.title == null ? context.project.state.selectedSchemaName : owner.title;\n\nexport const titleParseHandler: SchemaParseHandler = ({ context, args }) =>\n  context.project.renameSchema(args.current, context.schema);\n\n/* =========================================================\n    Type\n   ======================================================== */\n\nexport const typeValueHandler: Handler = ({ owner }) => {\n  return owner.$import || (owner.$ref && owner.$ref.split('/')[2]) || owner.type;\n};\n\nexport const itemsTypeValueHandler: SchemaHandler = ({ owner }) => {\n  return typeValueHandler({ owner: owner.items });\n};\n\nexport const typeParseHandler: SchemaParseHandler = ({ owner, args }) =>\n  owner.changeType(args.current, args.previous);\n\nexport const itemsTypeParseHandler: SchemaParseHandler = ({ owner, args }) => {\n  owner.getValue('items').changeType(args.current, args.previous);\n};\n\nexport const typeOptions: SchemaHandler = ({ owner }) => {\n  let parent = root(owner);\n\n  if (!parent) {\n    return [];\n  }\n\n  return [\n    { text: 'Array', value: 'array' },\n    { text: 'Boolean', value: 'boolean' },\n    { text: 'Integer', value: 'integer' },\n    { text: 'Number', value: 'number' },\n    { text: 'Object', value: 'object' },\n    { text: 'String', value: 'string' },\n    { text: 'TYPES', value: '_types', disabled: true }\n  ].concat(\n    Array.from(parent.definitions.keys())\n      .map(d => ({\n        value: d,\n        text: parent.definitions.get(d).title\n      }))\n      .sort((a, b) => (a.text < b.text ? -1 : 1))\n  );\n  // .concat([{ text: '── IMPORTS ──', value: '_imports', disabled: true }])\n  // .concat(\n  //   Array.from(parent.imports.keys()).map(d => ({\n  //     value: d,\n  //     text: parent.imports.get(d).title\n  //   }))\n  // );\n};\n\nexport const atomicTypeVisibility: SchemaHandler = ({ owner }) =>\n  owner.getValue('type') === 'integer' ||\n  owner.getValue('type') === 'number' ||\n  owner.getValue('type') === 'boolean' ||\n  owner.getValue('type') === 'string';\n\nexport const fakedOptions: SchemaHandler = fakerOptions;\n\nexport const expressionValidationHandler: SchemaValidateHandler = debounce(\n  ({ owner, context, args: { value, source } }) => {\n    try {\n      const schemaJson = schemaDatasetToJS(context.schema);\n      const schema = new Schema(schemaJson);\n      const def = schema.defaultValue();\n      safeEval(def, value);\n    } catch (ex) {\n      owner.setError(source, ex.message);\n      return;\n    }\n    owner.setError(source, null);\n  },\n  300\n);\n\nexport const formatOptions: SchemaHandler = () => [\n  {\n    text: 'None',\n    value: ''\n  },\n  {\n    text: 'ISO Date Time',\n    value: 'date-time'\n  },\n  {\n    text: 'Date',\n    value: 'date'\n  },\n  {\n    text: 'Time',\n    value: 'time'\n  },\n  {\n    text: 'Email',\n    value: 'email'\n  }\n];\n\nexport const regexValidateHandler: SchemaValidateHandler = ({ owner, args: { value, source } }) => {\n  try {\n    new RegExp(value);\n  } catch (ex) {\n    owner.setError(source, ex.message);\n  }\n  return null;\n};\n\n/* =========================================================\n    Required\n   ======================================================== */\n\nexport const requiredValue: SchemaHandler = ({ context }) => {\n  return (\n    (context.selectedParentSchema &&\n      context.selectedParentSchema.required &&\n      context.selectedParentSchema.required.indexOf(context.project.state.selectedSchemaName) >=\n        0) ||\n    false\n  );\n};\n\nexport const requiredParse: SchemaParseHandler = ({ args, context }) => {\n  if (args.current) {\n    context.selectedParentSchema.addRow('required', context.project.state.selectedSchemaName);\n  } else {\n    context.selectedParentSchema.removeRowData(\n      'required',\n      context.project.state.selectedSchemaName\n    );\n  }\n};\n\nexport const requiredOptionsHandler: SchemaHandler = ({ owner }) => {\n  let element = owner;\n  while (!element.properties && !element.reference) {\n    element = element.parent;\n  }\n  return Array.from<string>(\n    ((element.reference && element.reference.properties) || element.properties).keys()\n  ).map(v => ({\n    value: v,\n    text: v\n  }));\n};\n\n/* =========================================================\n    Error\n   ======================================================== */\n\nconst validations: { [index: string]: Option[] } = {\n  string: [\n    { value: 'format', text: 'Format' },\n    { value: 'maxLength', text: 'Maximum Length' },\n    { value: 'minLength', text: 'Minimum Length' },\n    { value: 'pattern', text: 'Regular Expression' }\n  ],\n  array: [\n    { value: 'maxItems', text: 'Maximum Items' },\n    { value: 'minItems', text: 'Minimum Items' },\n    { value: 'uniqueItems', text: 'Unique Items' }\n  ],\n  number: [\n    { value: 'maximum', text: 'Maximum' },\n    { value: 'minimum', text: 'Minimum' },\n    { value: 'exclusiveMaximum', text: 'Exclusive Maximum' },\n    { value: 'exclusiveMinimum', text: 'Exclusive Minimum' },\n    { value: 'multipleOf', text: 'Multiple Of' }\n  ],\n  object: [{ value: 'required', text: 'Required' }]\n};\n\nexport const errorMessageVisibleHandler: SchemaHandler = ({ owner }) =>\n  typeof owner.errorMessage !== 'object';\n\nexport const errorMessageOptions: SchemaHandler = ({ owner }) =>\n  validations[owner.getValue('type')] || [];\n","import { Option } from '@tomino/dynamic-form';\n\nexport const fakerOptions = (): Option[] => [\n  // { text: '-- ADDRESS --', value: 'Address', disabled: true },\n  { value: '', text: '' },\n  { text: '-- ADDRESS --', value: 'address', disabled: true },\n  { value: 'address.zipCode', text: 'Zip Code' },\n  { value: 'address.city', text: 'City' },\n  { value: 'address.cityPrefix', text: 'City Prefix' },\n  { value: 'address.citySuffix', text: 'City Suffix' },\n  { value: 'address.streetName', text: 'Street Name' },\n  { value: 'address.streetAddress', text: 'Street Address' },\n  { value: 'address.streetSuffix', text: 'Street Suffix' },\n  { value: 'address.streetPrefix', text: 'Street Prefix' },\n  { value: 'address.secondaryAddress', text: 'Secondary Address' },\n  { value: 'address.county', text: 'County' },\n  { value: 'address.country', text: 'Country' },\n  { value: 'address.countryCode', text: 'Country Code' },\n  { value: 'address.state', text: 'State' },\n  { value: 'address.stateAbbr', text: 'State Abbreviation' },\n  { value: 'address.latitude', text: 'Latitude' },\n  { value: 'address.longitude', text: 'Longitude' },\n  { text: '-- COMMERCE --', value: 'commerce', disabled: true },\n  { value: 'commerce.color', text: 'Color' },\n  { value: 'commerce.department', text: 'Department' },\n  { value: 'commerce.productName', text: 'Product Name' },\n  { value: 'commerce.price', text: 'Price' },\n  { value: 'commerce.productAdjective', text: 'Product Adjective' },\n  { value: 'commerce.productMaterial', text: 'Product Material' },\n  { value: 'commerce.product', text: 'Product' },\n  { text: '-- COMPANY --', value: 'Company', disabled: true },\n  { value: 'company.suffixes', text: 'Suffixes' },\n  { value: 'company.companyName', text: 'Company Name' },\n  { value: 'company.companySuffix', text: 'Company Suffix' },\n  { value: 'company.catchPhrase', text: 'Catch Phrase' },\n  { value: 'company.bs', text: 'bs' },\n  { value: 'company.catchPhraseAdjective', text: 'Catch Phrase Adjective' },\n  { value: 'company.catchPhraseDescriptor', text: 'Catch Phrase Descriptor' },\n  { value: 'company.catchPhraseNoun', text: 'Catch Phrase Noun' },\n  { value: 'company.bsAdjective', text: 'Bs Adjective' },\n  { value: 'company.bsBuzz', text: 'Bs Buzz' },\n  { value: 'company.bsNoun', text: 'Bs Noun' },\n  { text: '-- DATABASE --', value: 'database', disabled: true },\n  { value: 'database.column', text: 'Column' },\n  { value: 'database.type', text: 'Type' },\n  { value: 'database.collation', text: 'Collation' },\n  { value: 'database.engine', text: 'Engine' },\n  { value: 'DATE', text: 'Date' },\n  { value: 'date.past', text: 'Past' },\n  { value: 'date.future', text: 'Future' },\n  { value: 'date.between', text: 'Between' },\n  { value: 'date.recent', text: 'Recent' },\n  { value: 'date.soon', text: 'Soon' },\n  { value: 'date.month', text: 'Month' },\n  { value: 'date.weekday', text: 'Weekday' },\n  { text: '-- FINANCE --', value: 'Finance', disabled: true },\n  { value: 'finance.account', text: 'Account' },\n  { value: 'finance.accountName', text: 'Account Name' },\n  { value: 'finance.mask', text: 'Mask' },\n  { value: 'finance.amount', text: 'Amount' },\n  { value: 'finance.transactionType', text: 'Transaction Type' },\n  { value: 'finance.currencyCode', text: 'Currency Code' },\n  { value: 'finance.currencyName', text: 'Currency Name' },\n  { value: 'finance.currencySymbol', text: 'Currency Symbol' },\n  { value: 'finance.bitcoinAddress', text: 'Bitcoin Address' },\n  { value: 'finance.ethereumAddress', text: 'Ethereum Address' },\n  { value: 'finance.iban', text: 'Iban' },\n  { value: 'finance.bic', text: 'Bic' },\n  { text: '-- HACKER --', value: 'hacker', disabled: true },\n  { value: 'hacker.abbreviation', text: 'Abbreviation' },\n  { value: 'hacker.adjective', text: 'Adjective' },\n  { value: 'hacker.noun', text: 'Noun' },\n  { value: 'hacker.verb', text: 'Verb' },\n  { value: 'hacker.ingverb', text: 'Ingverb' },\n  { value: 'hacker.phrase', text: 'Phrase' },\n  { value: 'hacker.randomize', text: 'Randomize' },\n  { value: 'hacker.slugify', text: 'Slugify' },\n  { value: 'hacker.shuffle', text: 'Shuffle' },\n  { value: 'hacker.mustache', text: 'Mustache' },\n  { value: 'hacker.userCard', text: 'UserCard' },\n\n  { text: '-- IMAGE --', value: 'Image', disabled: true },\n  { value: 'image.image', text: 'Image' },\n  { value: 'image.avatar', text: 'Avatar' },\n  { value: 'image.imageUrl', text: 'Image Url' },\n  { value: 'image.abstract', text: 'Abstract' },\n  { value: 'image.animals', text: 'Animals' },\n  { value: 'image.business', text: 'Business' },\n  { value: 'image.cats', text: 'Cats' },\n  { value: 'image.city', text: 'City' },\n  { value: 'image.food', text: 'Food' },\n  { value: 'image.nightlife', text: 'Nightlife' },\n  { value: 'image.fashion', text: 'Fashion' },\n  { value: 'image.people', text: 'People' },\n  { value: 'image.nature', text: 'Nature' },\n  { value: 'image.sports', text: 'Sports' },\n  { value: 'image.technics', text: 'Technics' },\n  { value: 'image.transport', text: 'Transport' },\n  { value: 'image.dataUri', text: 'Data Uri' },\n\n  { text: '-- INTERNET --', value: 'Internet', disabled: true },\n  { value: 'internet.avatar', text: 'Avatar' },\n  { value: 'internet.email', text: 'Email' },\n  { value: 'internet.exampleEmail', text: 'Example Email' },\n  { value: 'internet.userName', text: 'User Name' },\n  { value: 'internet.protocol', text: 'Protocol' },\n  { value: 'internet.url', text: 'Url' },\n  { value: 'internet.domainName', text: 'Domain Name' },\n  { value: 'internet.domainSuffix', text: 'Domain Suffix' },\n  { value: 'internet.domainWord', text: 'Domain Word' },\n  { value: 'internet.ip', text: 'Ip' },\n  { value: 'internet.ipv6', text: 'Ipv6' },\n  { value: 'internet.userAgent', text: 'User Agent' },\n  { value: 'internet.color', text: 'Color' },\n  { value: 'internet.mac', text: 'Mac' },\n  { value: 'internet.password', text: 'Password' },\n\n  { text: '-- LOREM --', value: 'lorem', disabled: true },\n  { value: 'lorem.word', text: 'Word' },\n  { value: 'lorem.words', text: 'Words' },\n  { value: 'lorem.sentence', text: 'Sentence' },\n  { value: 'lorem.slug', text: 'Slug' },\n  { value: 'lorem.sentences', text: 'Sentences' },\n  { value: 'lorem.paragraph', text: 'Paragraph' },\n  { value: 'lorem.paragraphs', text: 'Paragraphs' },\n  { value: 'lorem.text', text: 'Text' },\n  { value: 'lorem.lines', text: 'Lines' },\n\n  { text: '-- NAME --', value: 'Name', disabled: true },\n  { value: 'name.firstName', text: 'First Name' },\n  { value: 'name.lastName', text: 'Last Name' },\n  { value: 'name.findName', text: 'Full Name' },\n  { value: 'name.jobTitle', text: 'Job Title' },\n  { value: 'name.prefix', text: 'Prefix' },\n  { value: 'name.suffix', text: 'Suffix' },\n  { value: 'name.title', text: 'Title' },\n  { value: 'name.jobDescriptor', text: 'Job Descriptor' },\n  { value: 'name.jobArea', text: 'Job Area' },\n  { value: 'name.jobType', text: 'Job Type' },\n\n  { text: '-- PHONE --', value: 'phone', disabled: true },\n  { value: 'phone.phoneNumber', text: 'Phone Number' },\n  { value: 'phone.phoneNumberFormat', text: 'Phone Number Format' },\n  { value: 'phone.phoneFormats', text: 'Phone Formats' },\n\n  { text: '-- RANDOM --', value: 'Random', disabled: true },\n  { value: 'random.number', text: 'Number' },\n  { value: 'random.float', text: 'Float' },\n  { value: 'random.arrayElement', text: 'Array Element' },\n  { value: 'random.objectElement', text: 'Object Element' },\n  { value: 'random.uuid', text: 'Uuid' },\n  { value: 'random.boolean', text: 'Boolean' },\n  { value: 'random.word', text: 'Word' },\n  { value: 'random.words', text: 'Words' },\n  { value: 'random.image', text: 'Image' },\n  { value: 'random.locale', text: 'Locale' },\n  { value: 'random.alphaNumeric', text: 'Alpha Numeric' },\n  { value: 'random.hexaDecimal', text: 'Hexa Decimal' },\n\n  { text: '-- SYSTEM --', value: 'system', disabled: true },\n  { value: 'system.fileName', text: 'File Name' },\n  { value: 'system.commonFileName', text: 'Common File Name' },\n  { value: 'system.mimeType', text: 'Mime Type' },\n  { value: 'system.commonFileType', text: 'Common File Type' },\n  { value: 'system.commonFileExt', text: 'Common File Extension' },\n  { value: 'system.fileType', text: 'File Type' },\n  { value: 'system.fileExt', text: 'File Ext' },\n  { value: 'system.directoryPath', text: 'Directory Path' },\n  { value: 'system.filePath', text: 'File Path' },\n  { value: 'system.semver', text: 'Semver' }\n];\n","import { Theme, css } from '../../common';\n\nexport const styledPropertyView = (theme: Theme) => css`\n  font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;\n  label: propertyStyles;\n\n  label {\n    font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;\n  }\n\n  .input {\n    font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;\n    padding-left: 3px;\n    height: 25px;\n  }\n\n  .headerButton {\n    background: ${theme.buttonBackground};\n    padding: 3px 6px;\n    color: ${theme.inputColor};\n    border: 0px solid ${theme.borderColor};\n    border-radius: 3px;\n  }\n\n  .headerButton:last-of-type {\n    margin-right: 12px;\n  }\n\n  input {\n    font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;\n    padding-left: 6px !important;\n    height: 25px;\n    min-width: 30px;\n  }\n\n  textarea {\n    font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;\n    min-height: 100px;\n    resize: vertical;\n    background-color: ${theme.inputBackground}!important;\n    color: ${theme.inputColor}!important;\n    width: 100%;\n    border-radius: 3px;\n    padding: 6px;\n  }\n\n  .propertyInput {\n    display: flex;\n    flex: 1;\n    align-items: center;\n    label: propertyInput;\n  }\n\n  .propertyLabel {\n    margin: 0px 6px;\n    label: propertyLabel;\n    color: ${theme.inputLabel};\n  }\n\n  .ui.dropdown {\n    border: 0px !important;\n    border-radius: 3px;\n    background-color: ${theme.inputBackground}!important;\n    color: ${theme.inputColor}!important;\n\n    input,\n    .selected .text,\n    .selected .text,\n    &.visible .text {\n      color: ${theme.textColor}!important;\n    }\n\n    .text {\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      max-width: calc(100% - 15px);\n    }\n\n    .selected {\n      background: ${theme.selectedBackground}!important;\n    }\n\n    .menu.active,\n    .menu.visible:hover,\n    .menu.visible {\n      border: solid 1px !important;\n      border-color: ${theme.borderColor}!important;\n    }\n\n    .menu .item {\n      background-color: ${theme.menuColor};\n      color: ${theme.inputColor}!important;\n      border-top: solid 1px ${theme.borderColor} !important;\n      padding: 6px 10px !important;\n    }\n\n    .menu .item:hover {\n      background-color: ${theme.selectedBackground};\n    }\n\n    .menu .item:hover .text,\n    .menu .item.selected .text {\n      color: ${theme.textColor} !important;\n    }\n  }\n  .label {\n    width: 100%;\n    margin: 3px 0px 6px 0px;\n  }\n  .menu {\n    border-radius: 0px !important;\n  }\n  .dynamic-active {\n    display: block;\n  }\n  .dynamic-hidden {\n    display: none;\n  }\n\n  label {\n    font-weight: bolder;\n    display: inline-block;\n    vertical-align: middle;\n    color: #666;\n    margin-bottom: 3px;\n  }\n\n  .invalid {\n    background-color: ${theme.invalidBackground} !important;\n    color: ${theme.invalidColor}!important;\n  }\n\n  .property-table-row-single {\n    width: 100%;\n    background: #f8f8f9;\n    border: solid 1px #ccc;\n\n    textarea {\n      width: 100%;\n      background: white;\n      border: 0px;\n      min-height: 60px;\n      resize: vertical;\n      margin-bottom: -3px;\n    }\n  }\n\n  .property-search {\n    border-radius: 0px !important;\n    height: 25px !important;\n    padding: 5px 6px 3px 6px !important;\n    min-height: 24px !important;\n  }\n\n  .property-search i {\n    padding: 5px 6px 3px 3px !important;\n    min-height: 25px !important;\n  }\n\n  .property-search input {\n    padding: 5px 6px 3px 3px !important;\n  }\n\n  .property-table-row {\n    width: 100%;\n    padding-bottom: 4px;\n\n    &.flexed {\n      display: flex;\n    }\n\n    > .only {\n      flex: 1 1 100%;\n    }\n\n    .padded {\n      margin: 3px 12px 3px;\n      background-color: ${theme.inputBackground} !important;\n      color: ${theme.inputColor} !important;\n      border: 1px solid ${theme.inputBorder} !important;\n    }\n\n    > .first {\n      flex: 0 0 100px;\n      display: inline-block;\n      border: 0px;\n      padding: 2px 6px 0px 2px;\n      color: ${theme.textColor};\n    }\n\n    .second:not(:first-of-type) {\n      margin-left: 2px;\n    }\n\n    > .full {\n      width: 100%;\n    }\n\n    > .second {\n      flex: 1 1 100%;\n      display: inline-block;\n      background-color: ${theme.inputBackground} !important;\n      color: ${theme.inputColor} !important;\n      border: 1px solid ${theme.inputBorder} !important;\n      border-radius: 3px;\n      padding: 0px;\n    }\n\n    input {\n      border: 0px !important;\n      border-radius: 3px;\n      color: ${theme.inputColor} !important;\n      background-color: ${theme.inputBackground} !important;\n    }\n\n    label {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      display: inline-block;\n      white-space: nowrap;\n      vertical-align: top;\n      margin: 0px;\n\n      min-height: 24px;\n    }\n\n    > .holder {\n      display: inline-block;\n      padding-left: 6px;\n    }\n\n    textarea {\n      border: 0px;\n      min-height: 25px;\n    }\n\n    .dynamic-error-message {\n      text-align: right;\n      width: 100%;\n      margin: 0px;\n      padding: 3px 6px 4px 0px;\n    }\n  }\n`;\n","import { config, FormElement } from '@tomino/dynamic-form';\n\nexport let propertyPanel: FormElement[] = [\n  {\n    control: 'Group',\n    props: {\n      text: 'General'\n    },\n    elements: [\n      {\n        bound: true,\n        props: {\n          value: { source: 'label' },\n          label: config.i18n`Label`\n        },\n        control: 'Input',\n        documentation: 'Element label'\n      },\n      {\n        bound: true,\n        props: {\n          value: { source: 'hidden' },\n          label: config.i18n`Hide`\n        },\n        control: 'Checkbox'\n      },\n      {\n        bound: true,\n        props: {\n          value: { source: 'className' },\n          label: config.i18n`Css Class`\n        },\n        control: 'Input'\n      },\n      {\n        control: 'Code',\n        bound: true,\n        props: {\n          label: 'Style',\n          display: 'topLabel',\n          value: { source: 'css' },\n          language: 'css',\n          placeholder: 'Css styling'\n        },\n        documentation: `Apply css styles to your control`\n      }\n      // {\n      //   props: { checked: { source: 'readOnly', visible: { handler: 'readonlyElements' } } },\n      //   label: config.i18n`Readonly:`,\n      //   control: 'Checkbox'\n      // }\n    ]\n  }\n];\n","import * as React from 'react';\nimport { Button, Modal, Icon, Message, Input, Form } from 'semantic-ui-react';\nimport { SchemaDataSet, searchSchema, searchForm } from '../form_store';\nimport { css } from '../../common';\nimport { action } from 'mobx';\nimport { SchemaRecord } from '../editor_types';\nimport { config } from '@tomino/dynamic-form';\nimport { modalActions } from '../editor_styles';\nimport { clone } from '@tomino/toolbelt';\nimport { EditorContext } from '../editor_context';\n\ntype Props = {\n  schema: SchemaDataSet;\n  selectedSchema?: SchemaDataSet;\n  types?: SchemaRecord[];\n  property?: string;\n};\n\nconst modalLabel = css`\n  font-weight: bold;\n  padding-bottom: 6px;\n  display: block;\n`;\n\nfunction useMergeState<T>(initialState: T): [T, (t: Partial<T>) => void] {\n  const [state, setState] = React.useState(initialState);\n  const setMergedState = (newState: any) =>\n    setState((prevState: any) => Object.assign({}, prevState, newState));\n  return [state, setMergedState];\n}\n\nexport const AddSchema: React.FC<Props> = ({ schema, property }) => {\n  const editorState = React.useContext(EditorContext);\n  const [state, changeState] = useMergeState({\n    open: false,\n    error: '',\n    name: ''\n  });\n\n  const addSchema = action(() => {\n    let selected = editorState.project.state.selectedSchema || schema;\n    if (selected.type === 'array') {\n      selected = selected.reference ? selected.reference.items : selected.items;\n    }\n    while (!selected.reference && selected.type !== 'object') {\n      selected = selected.parent as any;\n    }\n\n    let owner = selected.reference ? selected.reference : selected;\n    let p = property === 'definitions' && schema === selected ? 'definitions' : 'properties';\n\n    let name = state.name;\n\n    // create name\n    // local types do not have names so that they are not suspectible to rename problems\n    if (owner.getValue(p) == null) {\n      owner.setValue(p, {});\n    }\n\n    if (p === 'definitions') {\n      // we need to check names\n      let definitions = owner.getValue(p);\n      if (Array.from(definitions.keys()).some(key => definitions.get(key).title === state.name)) {\n        changeState({ error: 'Element with this name already exists!' });\n        return;\n      }\n      let index = 1;\n      do {\n        name = 'Type_' + index++;\n      } while (owner.getValue(p).has(name));\n    } else if (owner.getValue(p).has(state.name)) {\n      changeState({ error: 'Element with this name already exists!' });\n      return;\n    }\n    // selected.properties\n    owner.setMapValue(p, name, { title: state.name, type: 'string' });\n    changeState({ open: false, error: '', name: '' });\n  });\n\n  return (\n    <Modal\n      open={state.open}\n      trigger={\n        <Button\n          primary\n          title=\"Add a new element\"\n          floated=\"right\"\n          icon=\"plus\"\n          size=\"tiny\"\n          compact\n          onClick={() => changeState({ open: true })}\n        />\n      }\n    >\n      <Modal.Header>\n        <Icon name=\"database\" />\n        Add Schema Element\n      </Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          <label className={modalLabel}>Element Name</label>\n          <Input\n            fluid\n            value={state.name}\n            onChange={(_e, v) => changeState({ name: v.value })}\n            placeholder=\"Please specify name of the new element\"\n          />\n          {state.error && <Message error content={state.error} />}\n\n          <div className={modalActions}>\n            <Button onClick={() => changeState({ open: false })}>Close</Button>\n            <Button onClick={addSchema} icon=\"plus\" color=\"green\" content=\"Add\" />\n          </div>\n        </Modal.Description>\n      </Modal.Content>\n    </Modal>\n  );\n};\n\nexport const DeleteSchema: React.FC<Props> = ({ schema }) => {\n  const context = React.useContext(EditorContext);\n  const [isOpen, setOpen] = React.useState(false);\n  let error = '';\n\n  function deleteSchema() {\n    context.project.state.deleteActiveSchema();\n  }\n\n  let formElement = searchForm(context.form, e => {\n    return Object.keys(e.props).find(\n      key =>\n        e.props[key] &&\n        e.props[key].source &&\n        e.props[key].source.indexOf(context.selectedSourcePath) >= 0\n    );\n  });\n\n  if (formElement) {\n    error = `Cannot delete this schema element since it is used in your form by element with label <b>${formElement}</b>`;\n  }\n  let dependentSchema = searchSchema(context.schema, s =>\n    s.$import === context.project.state.selectedSchemaName ||\n    s.$ref === '#/definitions/' + context.project.state.selectedSchemaName\n      ? s\n      : false\n  );\n  if (dependentSchema) {\n    error = `Cannot delete this type since it is used your schema by element <b>${dependentSchema.name()}</b>. Please remove all references and try again`;\n  }\n\n  return (\n    <Modal\n      open={isOpen}\n      trigger={\n        <Button\n          default\n          title=\"Delete Element\"\n          floated=\"right\"\n          icon=\"trash\"\n          content={config.i18n`Delete`}\n          onClick={() => {\n            if (!error) {\n              deleteSchema();\n            } else {\n              setOpen(true);\n            }\n          }}\n        />\n      }\n    >\n      <Modal.Header>\n        <Icon name=\"trash\" />\n        Deleting Schema Element &quot;\n        {schema.title || context.project.state.selectedSchemaName}\n        &quot;\n      </Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          {error ? (\n            <div dangerouslySetInnerHTML={{ __html: error }} />\n          ) : (\n            <span>Do you wish to delete the selected element?</span>\n          )}\n        </Modal.Description>\n      </Modal.Content>\n      <Modal.Actions>\n        <Button onClick={() => setOpen(false)}>Cancel</Button>\n        {!error && <Button onClick={deleteSchema} icon=\"trash\" color=\"red\" content=\"Delete\" />}\n      </Modal.Actions>\n    </Modal>\n  );\n};\n\nexport const ImportSchema: React.FC<Props> = ({ schema, types }) => {\n  const [isOpen, setOpen] = React.useState(false);\n  const imported = Array.from(schema.imports.keys());\n  const [toggled, setToggled] = React.useState(imported);\n\n  function importSchemas() {\n    for (let name of toggled) {\n      let item = types.find(t => t.id === name);\n      let cloned = clone(item.schema);\n      cloned.$import = item.id;\n      schema.setMapValue('definitions', item.id, cloned);\n    }\n    setOpen(false);\n  }\n\n  function toggle(id: string, isToggled: boolean) {\n    let newState = [...toggled];\n    if (!isToggled) {\n      newState.splice(newState.indexOf(id), 1);\n    } else {\n      newState.push(id);\n    }\n    setToggled(newState);\n  }\n\n  return (\n    <Modal\n      open={isOpen}\n      trigger={\n        <Button\n          default\n          title=\"Import shared schema\"\n          floated=\"right\"\n          icon=\"download\"\n          size=\"tiny\"\n          color=\"green\"\n          compact\n          onClick={() => setOpen(true)}\n        />\n      }\n    >\n      <Modal.Header>\n        <Icon name=\"download\" />\n        Import globally defined schema\n      </Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          <p>Please select one or more schemas to import</p>\n          <Form>\n            {types.map(t => (\n              <Form.Checkbox\n                key={t.name}\n                disabled={imported.indexOf(t.id) >= 0}\n                checked={toggled.indexOf(t.id) >= 0}\n                label={t.name}\n                onChange={(_e, v) => toggle(t.id, v.checked)}\n              />\n            ))}\n          </Form>\n        </Modal.Description>\n      </Modal.Content>\n      <Modal.Actions>\n        <Button onClick={() => setOpen(false)}>Cancel</Button>\n        <Button onClick={importSchemas} icon=\"download\" color=\"green\" content=\"Import\" />\n      </Modal.Actions>\n    </Modal>\n  );\n};\n","import { FormComponentCatalogue } from '@tomino/dynamic-form';\nimport { DatasetEditor } from './dataset/dataset_editor';\nimport { FormEditorEditor } from './form_editor_editor';\n\nexport const catalogue: FormComponentCatalogue = {\n  components: {\n    DatasetEditor: DatasetEditor,\n    FormEditor: FormEditorEditor.Component\n  },\n  cssClass: ''\n};\n","import * as styles from '../editor_styles';\n\nimport { List } from '../editor_styles';\nimport { PaneContent } from '../editor_styles';\n\nimport React from 'react';\nimport names from 'classnames';\n\nimport { JSONSchema, FormComponentProps } from '@tomino/dynamic-form';\nimport SplitPane from 'react-split-pane';\n\nimport { PropertyEditor } from '../properties/property_view';\nimport { EditorContext } from '../editor_context';\nimport { EditorState } from '../editor_state';\nimport { DatasetElements } from './dataset_elements';\nimport { DatasetTypes } from './dataset_types';\n\nimport { onSnapshot } from 'mobx-state-tree';\nimport { debounce } from '@tomino/toolbelt';\nimport { schemaDatasetToJS, setValue, getValue } from '../../helpers';\nimport { DynamicComponent } from '../../wrapper';\n\nexport type Props = {\n  theme: any;\n  height: string;\n  parseHandler: string;\n  allowCustomTypes: boolean;\n  source: string;\n};\n\nconst emptySchema = JSON.stringify({ type: 'object', properties: {} });\n\nexport const DatasetEditor: React.FC<FormComponentProps<Props>> = controlProps => {\n  const context = new EditorState();\n  const props = controlProps.formElement.props || ({} as Props);\n  let schema: JSONSchema;\n\n  // debounced callback will always remember our value\n  const saveSchema = React.useCallback(\n    debounce((snap: JSONSchema) => {\n      setValue(controlProps, context, JSON.stringify(schemaDatasetToJS(snap, false)), 'source');\n    }, 1000),\n    [controlProps.owner, controlProps.formElement]\n  );\n\n  try {\n    schema = JSON.parse(getValue(controlProps, context, 'source', emptySchema));\n\n    // load into context\n    context.load(\n      {\n        schema\n      },\n      false\n    );\n  } catch (ex) {\n    return <div>Error parsing schema: {ex.message}</div>;\n  }\n\n  // listen to snapshot and save when needed\n  onSnapshot(context.schema as any, saveSchema);\n\n  return (\n    <DynamicComponent\n      {...controlProps}\n      style={{\n        minHeight: props.height || '400px',\n        resize: 'vertical',\n        position: 'relative',\n        border: '1px solid',\n        overflowY: 'scroll'\n      }}\n    >\n      <EditorContext.Provider value={context}>\n        <SplitPane\n          className={names(styles.editorGrid)}\n          split=\"vertical\"\n          minSize={100}\n          defaultSize={parseInt(localStorage.getItem('CORPIX.s-split') || '280px', 10)}\n          onChange={(size: number) => localStorage.setItem('CORPIX.s-split', size.toString())}\n        >\n          <PaneContent>\n            <List>\n              {props.allowCustomTypes ? (\n                <SplitPane\n                  className=\"dataPanes\"\n                  split=\"horizontal\"\n                  minSize={100}\n                  defaultSize={parseInt(\n                    localStorage.getItem('CORPIX.s1-split-tools') || '280px',\n                    10\n                  )}\n                  onChange={(size: number) =>\n                    localStorage.setItem('CORPIX.s1-split-tools', size.toString())\n                  }\n                >\n                  <DatasetElements\n                    schema={context.schema}\n                    types={context.types}\n                    owner={context.data}\n                  />\n                  <DatasetTypes schema={context.schema} types={context.types} />\n                </SplitPane>\n              ) : (\n                <DatasetElements\n                  schema={context.schema}\n                  types={context.types}\n                  owner={context.data}\n                />\n              )}\n            </List>\n          </PaneContent>\n          <PropertyEditor />\n        </SplitPane>\n      </EditorContext.Provider>\n    </DynamicComponent>\n  );\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { SchemaDataSet } from '../form_store';\nimport { BuildLayer } from './dataset_layer';\nimport { BuildLayerFolder } from './dataset_folder';\nimport { PaneContent, ToolBox } from '../editor_styles';\nimport { AddSchema } from './dataset_modals';\nimport { Dropdown, Modal, Header, Button, Table } from 'semantic-ui-react';\nimport { DataSet } from '@tomino/dynamic-form';\nimport { EditorContext, EditorContextType } from '../editor_context';\nimport { toJS } from '../../common';\n\ntype Props = {\n  schema: SchemaDataSet;\n  selectedSchema?: SchemaDataSet;\n  owner: DataSet;\n};\n\nfunction addCondition(schema: SchemaDataSet, collection: string, editorState: EditorContextType) {\n  (schema || editorState.project.state.selectedSchema).addRow(collection, { type: 'object' });\n}\n\nexport const RootElement: React.FC<Props> = ({ schema }) => {\n  const editorState = React.useContext(EditorContext);\n\n  return (\n    <a\n      onClick={() => editorState.project.state.setSchema(schema, '')}\n      className={`${schema === editorState.project.state.selectedSchema ? 'selected' : ''}`}\n    >\n      ROOT\n    </a>\n  );\n};\n\nfunction keys(obj: any) {\n  if (obj == null) {\n    return [];\n  }\n  return Object.keys(obj).filter(k => k !== 'errors');\n}\n\nfunction previewValue(value: any) {\n  if (Array.isArray(value)) {\n    if (value.length > 0) {\n      return <ArrayPreview value={value} />;\n    }\n    return null;\n  }\n  if (typeof value === 'object') {\n    return <ObjectPreview value={value} />;\n  }\n  return value;\n}\n\nconst ObjectPreview = ({ value }: any) => (\n  <Table striped>\n    <Table.Header>\n      {keys(value).map((k, i) => (\n        <Table.HeaderCell key={k + i}>{k}</Table.HeaderCell>\n      ))}\n    </Table.Header>\n    <Table.Body>\n      <Table.Row>\n        {keys(value).map((k, i) => (\n          <Table.Cell key={k + i}>{previewValue(k)}</Table.Cell>\n        ))}\n      </Table.Row>\n    </Table.Body>\n  </Table>\n);\n\nconst ArrayPreview = ({ value }: any) => (\n  <Table striped>\n    <Table.Header>\n      {keys(value[0]).map((k, i) => (\n        <Table.HeaderCell key={k + i}>{k}</Table.HeaderCell>\n      ))}\n    </Table.Header>\n    <Table.Body>\n      {value.map((v: any, j: any) => (\n        <Table.Row key={j}>\n          {keys(v).map((k, i) => (\n            <Table.Cell key={k + i}>{previewValue(v[k])}</Table.Cell>\n          ))}\n        </Table.Row>\n      ))}\n    </Table.Body>\n  </Table>\n);\n\nconst DataPrevieModal = observer(() => {\n  const state = React.useContext(EditorContext);\n  const close = React.useCallback(() => (state.previewOpen = false), [state.previewOpen]);\n  return (\n    <Modal open={state.previewOpen} onClose={close}>\n      <Header icon=\"browser\" content=\"Data Preview\" />\n      <Modal.Content>{previewValue(toJS(state.dataPreview))}</Modal.Content>\n      <Modal.Actions>\n        <Button color=\"green\" onClick={close} inverted>\n          Close\n        </Button>\n      </Modal.Actions>\n    </Modal>\n  );\n});\n\nexport const DatasetElements = observer(({ schema, owner }: Props) => {\n  const editorState = React.useContext(EditorContext);\n\n  if (!owner || !owner.getValue) {\n    return <div>Loading ...</div>;\n  }\n  return (\n    <PaneContent>\n      <DataPrevieModal />\n      <div className=\"paneHeader\">\n        {/* <PanelExpander\n          panelClass=\".dataPanes\"\n          storedName=\"CORPIX.h-split-tools\"\n          panelConfig={editorState.leftPanelConfig}\n          panelIndex={1}\n        />\n        <div className=\"text expandable\">Data</div> */}\n        <div className=\"text\">Data</div>\n        <span />\n        <Dropdown\n          button\n          className=\"icon tiny\"\n          icon=\"code branch\"\n          compact\n          size=\"tiny\"\n          pointing=\"top right\"\n        >\n          <Dropdown.Menu>\n            <Dropdown.Item\n              content=\"All Of\"\n              onClick={() => addCondition(schema, 'allOf', editorState)}\n            />\n            <Dropdown.Item\n              content=\"Any Of\"\n              onClick={() => addCondition(schema, 'anyOf', editorState)}\n            />\n            <Dropdown.Item\n              content=\"One Of\"\n              onClick={() => addCondition(schema, 'oneOf', editorState)}\n            />\n          </Dropdown.Menu>\n        </Dropdown>\n\n        <AddSchema schema={schema} property=\"properties\" />\n      </div>\n      <ToolBox>\n        <BuildLayerFolder\n          expanded={true}\n          BuildLayer={BuildLayer}\n          schema={schema}\n          name={'root'}\n          sourcePath={''}\n          owner={owner}\n          index={0}\n        />\n        {/* <BuildLayer\n          schema={schema}\n          items={schema.properties}\n          sourcePath=\"\"\n          BuildLayerFolder={BuildLayerFolder}\n          ignoreConditions={false}\n        /> */}\n      </ToolBox>\n    </PaneContent>\n  );\n});\n\nDatasetElements.displayName = 'DatasetElements';\n","import * as React from 'react';\n\nimport { SchemaDataSet } from '../form_store';\nimport { BuildLayerItem } from './dataset_item';\nimport { IMSTMap, ISimpleType } from 'mobx-state-tree';\nimport { observer } from 'mobx-react';\nimport { BuildLayerFolder } from './dataset_folder';\nimport { List } from 'semantic-ui-react';\nimport { config, DataSet } from '@tomino/dynamic-form';\nimport { EditorContext } from '../editor_context';\nimport { pointer } from '../../common';\n\nexport type LayerProps = {\n  schema: SchemaDataSet;\n  items: IMSTMap<ISimpleType<SchemaDataSet>>;\n  sourcePath: string;\n  name?: string;\n  BuildLayerFolder?: any;\n  ignoreConditions?: boolean;\n  owner?: DataSet;\n};\n\ntype ConditionProps = {\n  name: string;\n  conditions: SchemaDataSet[];\n  sourcePath: string;\n};\n\ntype ConditionParams = {\n  condition: SchemaDataSet;\n  index: number;\n  sourcePath: string;\n};\n\nexport const Condition: React.FC<ConditionParams> = observer(\n  ({ condition: c, index: i, sourcePath }) => {\n    const editorState = React.useContext(EditorContext);\n    return (\n      <List.Item>\n        <List.Icon name={c.properties ? 'folder' : 'folder outline'} color=\"yellow\" />\n        <List.Content>\n          <List.Description\n            as=\"a\"\n            className={\n              pointer + ' ' + (c === editorState.project.state.selectedSchema ? 'selected' : '')\n            }\n            onClick={() => editorState.project.state.setSchema(c, '')}\n          >\n            {c.title || config.i18n`condition ${i + 1}`}\n          </List.Description>\n          {c.type === 'object' && (\n            <List.List>\n              <BuildLayer\n                schema={c}\n                items={c.properties}\n                sourcePath={sourcePath}\n                BuildLayerFolder={BuildLayerFolder}\n                owner={null}\n              />\n            </List.List>\n          )}\n        </List.Content>\n      </List.Item>\n    );\n  }\n);\n\nconst BuildCondition = observer(({ name, conditions, sourcePath }: ConditionProps) => {\n  let [opened, toggleOpen] = React.useState(false);\n\n  if (!conditions || conditions.length == 0) {\n    return null;\n  }\n  return (\n    <List.Item>\n      <List.Icon name=\"code branch\" className={pointer} onClick={() => toggleOpen(!opened)} />\n      <List.Content>\n        <List.Header className={pointer} onClick={() => toggleOpen(!opened)}>\n          {name}\n        </List.Header>\n        {opened && (\n          <List.List>\n            {conditions.map((c, i) => (\n              <Condition key={i} index={i} condition={c} sourcePath={sourcePath} />\n            ))}\n          </List.List>\n        )}\n      </List.Content>\n    </List.Item>\n  );\n});\n\nexport const BuildLayer: React.FC<LayerProps> = observer(\n  ({ schema, items, sourcePath, BuildLayerFolder, ignoreConditions, owner }) => {\n    let controls: JSX.Element[] = [];\n    let keys: string[] = [];\n\n    for (let key of Array.from(items.keys())) {\n      keys.push(key as string);\n    }\n\n    keys = keys.sort((a, b) => {\n      let vA: SchemaDataSet = items.get(a);\n      let vB: SchemaDataSet = items.get(b);\n\n      return (vA.type === 'object' || vA.type === 'array') &&\n        (vB.type !== 'array' && vB.type !== 'object')\n        ? -1\n        : (vB.type === 'object' || vB.type === 'array') &&\n          (vA.type !== 'array' && vA.type !== 'object')\n          ? 1\n          : a.localeCompare(b, 'en-US', { numeric: true });\n    });\n\n    // let sortedOwner = { ...schema, properties: {} as any };\n    // keys.forEach(key => (sortedOwner.properties[key] = items.get(key)));\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      let value: SchemaDataSet = items.get(key);\n      controls.push(\n        value.type === 'object' || (value.items && value.items.type === 'object') ? (\n          <BuildLayerFolder\n            BuildLayer={BuildLayer}\n            key={key}\n            schema={value}\n            name={key}\n            sourcePath={sourcePath + key}\n            owner={owner}\n            index={i}\n          />\n        ) : (\n          <BuildLayerItem\n            key={key}\n            schema={value}\n            name={key}\n            sourcePath={sourcePath + key}\n            parentSchema={schema}\n            owner={owner}\n            index={i}\n          />\n        )\n      );\n    }\n    return (\n      <div>\n        {controls}\n\n        {!ignoreConditions && (\n          <>\n            <BuildCondition name={'oneOf'} conditions={schema.oneOf} sourcePath={sourcePath} />\n            <BuildCondition name={'allOf'} conditions={schema.allOf} sourcePath={sourcePath} />\n            <BuildCondition name={'anyOf'} conditions={schema.anyOf} sourcePath={sourcePath} />\n          </>\n        )}\n      </div>\n    );\n  }\n);\n\nBuildLayer.displayName = 'DatasetLayer';\n","import * as React from 'react';\n\nimport { SemanticCOLORS, Icon } from 'semantic-ui-react';\n\nimport { SchemaDataSet } from '../form_store';\nimport { JSONSchema7Type } from '@tomino/dynamic-form';\nimport { observer } from 'mobx-react';\nimport { DatasetValue } from './dataset_value';\nimport { EditorContext } from '../editor_context';\nimport { dragStart, dragEnd } from './dataset_drag';\n\ntype LayerProps = {\n  schema: SchemaDataSet;\n  name?: string;\n  sourcePath: string;\n  isDragging?: boolean;\n  parentSchema: SchemaDataSet;\n  owner?: any;\n  index: number;\n};\n\nfunction typeToColor(type: JSONSchema7Type): SemanticCOLORS {\n  switch (type) {\n    case 'string':\n      return 'green';\n    case 'integer':\n      return 'orange';\n    case 'number':\n      return 'red';\n    case 'boolean':\n      return 'blue';\n    case 'array':\n      return 'yellow';\n    default:\n      return 'grey';\n  }\n}\n\nexport const BuildLayerItem: React.FC<LayerProps> = observer(\n  ({ schema, name, sourcePath, parentSchema, owner, index }) => {\n    const context = React.useContext(EditorContext);\n    const onDragStart = dragStart(context, schema);\n    const onDragEnd = dragEnd(context);\n    const editorState = React.useContext(EditorContext);\n    const state = editorState.project.state;\n    const value = owner && owner.getValue && owner.getValue(name);\n    return (\n      <div\n        className=\"item single\"\n        data-index={index}\n        draggable={true}\n        onDragStart={onDragStart}\n        onDragEnd={onDragEnd}\n      >\n        <Icon\n          name={schema.type === 'array' ? 'folder' : 'file outline'}\n          className={schema.type}\n          color={typeToColor(schema.type)}\n        />\n        <div\n          className={'link ' + (schema === state.selectedSchema ? 'selected' : '')}\n          onMouseDown={() => {\n            state.setSchema(schema, name);\n            editorState.selectedParentSchema = parentSchema;\n            editorState.selectedSourcePath = sourcePath;\n          }}\n        >\n          {schema.title || name} <DatasetValue value={value} />\n        </div>\n      </div>\n    );\n  }\n);\n","import React from 'react';\nimport { names, pointer } from '../../common';\nimport { EditorContext } from '../editor_context';\n\ntype Props = {\n  value: string;\n};\n\nexport const DatasetValue: React.FC<Props> = ({ value }) => {\n  const state = React.useContext(EditorContext);\n\n  if (!value) {\n    return null;\n  }\n  return (\n    <span\n      className={names('meta', pointer)}\n      onClick={e => {\n        e.preventDefault();\n        e.stopPropagation();\n\n        state.dataPreview = value;\n        state.previewOpen = true;\n      }}\n    >\n      &nbsp;&middot;&nbsp;\n      {Array.isArray(value)\n        ? `Array [${value.length}]`\n        : typeof value === 'object'\n          ? 'Object'\n          : JSON.stringify(value)}\n    </span>\n  );\n};\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport React from 'react';\nimport { EditorContextType } from '../editor_context';\nimport { SchemaDataSet } from '../form_store';\nimport { schemaDatasetToJS } from '../../helpers';\n\nlet currentStack: HTMLDivElement[] = [];\n\nfunction clearStyles(context: EditorContextType) {\n  let item = context.dragItem;\n  if (item && item.node) {\n    item.node.style.visibility = 'visible';\n    item.node.style.height = 'inherit';\n  }\n  context.dragItem = null;\n}\n\nfunction clearStack() {\n  for (let elem of currentStack) {\n    elem.style.outline = '';\n  }\n}\n\nexport function dragStart(context: EditorContextType, owner: SchemaDataSet) {\n  return React.useCallback(\n    (e: React.DragEvent<HTMLDivElement>) => {\n      if (!context.dragItem) {\n        // console.log('Dragging: ' + parseInt(e.currentTarget.getAttribute('data-index')));\n        context.dragItem = {\n          name: owner.title,\n          schema: owner,\n          node: e.currentTarget,\n          id: owner.id,\n          from: parseInt(e.currentTarget.getAttribute('data-index')),\n          type: 'dataset',\n          target: e.currentTarget\n        };\n        let target = e.currentTarget;\n\n        setTimeout(() => {\n          // target.style.visibility = 'hidden';\n          target.style.height = '0px';\n          target.style.visibility = 'hidden';\n          // drag.initialised = false;\n        }, 1);\n      }\n    },\n    [context.dragItem, owner]\n  );\n}\n\nexport function dragEnd(context: EditorContextType) {\n  return React.useCallback(() => {\n    clearStyles(context);\n  }, [context]);\n}\n\nexport function initDrag(context: EditorContextType, owner: SchemaDataSet) {\n  const add = React.useRef(true);\n\n  const onDragOver = React.useCallback((e: React.DragEvent<HTMLDivElement>) => {\n    e.preventDefault();\n\n    if (add.current) {\n      currentStack.push(e.currentTarget);\n      add.current = false;\n    }\n\n    let index = currentStack.indexOf(e.currentTarget);\n    if (index != 0) {\n      return;\n    }\n\n    e.currentTarget.style.outline = 'dashed 2px #DDD';\n  }, []);\n\n  const onDragEnd = React.useCallback(() => {\n    // console.log('Drag end ...');\n    clearStack();\n    clearStyles(context);\n  }, [context]);\n\n  const onDragLeave = React.useCallback(() => {\n    clearStack();\n    currentStack = [];\n    add.current = true;\n  }, []);\n\n  const onDrop = React.useCallback(() => {\n    const item = context.dragItem;\n    if (item === null) {\n      return;\n    }\n\n    // we either move existing element\n    // or we drag element from toolbox\n    if (item.type === 'dataset') {\n      const schema: SchemaDataSet = item.schema;\n      const parent = schema.parent;\n      // const paths = item.name.split('.');\n      // const path = paths[paths.length - 1];\n      const path = item.name;\n\n      const source = parent.reference ? parent.reference : parent;\n      let target = owner.reference ? owner.reference : owner;\n      target =\n        target.type === 'array'\n          ? target.items.reference\n            ? target.items.reference\n            : target.items\n          : target;\n\n      // remove from original\n      const dataset = schemaDatasetToJS(schema, false);\n\n      target.setMapValue('properties', path, dataset);\n      context.project.state.setSchema(\n        target.properties.get(path),\n        context.project.state.selectedSchemaName\n      );\n      source.mapRemove('properties', path);\n    }\n    context.dragItem = null;\n\n    clearStack();\n    clearStyles(context);\n  }, [context, owner]);\n\n  return {\n    onDragOver: onDragOver,\n    onDragEnd: onDragEnd,\n    onDrop: onDrop,\n    onDragLeave: onDragLeave\n  };\n}\n","import * as React from 'react';\n\nimport { Icon } from 'semantic-ui-react';\nimport { observer } from 'mobx-react';\n\nimport { SchemaDataSet } from '../form_store';\nimport { DataSet } from '@tomino/dynamic-form';\nimport { toJS, pointer } from '../../common';\nimport { DatasetValue } from './dataset_value';\nimport { EditorContext } from '../editor_context';\nimport { initDrag } from './dataset_drag';\n\nexport type FolderProps = {\n  schema: SchemaDataSet;\n  sourcePath: string;\n  name?: string;\n  BuildLayer: any;\n  isOver?: boolean;\n  expanded?: boolean;\n  owner: DataSet;\n  index: number;\n};\n\nexport const BuildLayerFolder = observer(\n  ({ schema, name, sourcePath, BuildLayer, expanded, isOver, owner, index }: FolderProps) => {\n    let [opened, toggleOpen] = React.useState(!!expanded);\n\n    const context = React.useContext(EditorContext);\n\n    let item = schema.reference\n      ? schema.reference\n      : schema.items && schema.items.reference\n        ? schema.items.reference\n        : schema.items\n          ? schema.items\n          : schema;\n\n    let properties = item.properties;\n    let icon: any = 'folder'; // item.type !== 'object' ? 'folder outline' : 'folder';\n    let canOpen = item.type === 'object';\n    const editorState = React.useContext(EditorContext);\n\n    const state = editorState.project.state;\n    const value = owner && owner.getValue && toJS(owner.getValue(sourcePath));\n\n    const render = (\n      <div data-index={index}>\n        <div className=\"item\" {...initDrag(context, schema)}>\n          <Icon\n            name=\"caret right\"\n            className=\"treeCaret\"\n            onClick={() => canOpen && toggleOpen(!opened)}\n          />\n          <Icon\n            className={\n              pointer +\n              ' ' +\n              (schema.type === 'array'\n                ? 'array'\n                : schema.$ref\n                  ? 'reference'\n                  : schema.$import\n                    ? 'import'\n                    : '')\n            }\n            title={\n              schema.items\n                ? 'Array'\n                : schema.$ref\n                  ? 'Local Type'\n                  : schema.$import\n                    ? 'Imported, shared type'\n                    : undefined\n            }\n            name={opened ? `${icon} open` : icon}\n            onClick={() => canOpen && toggleOpen(!opened)}\n            color={'yellow'} // {schema.items ? 'yellow' : 'orange'}\n          />\n          <div className=\"content\">\n            <a\n              className={`folder  ${schema === state.selectedSchema ? 'selected' : ''} ${\n                isOver ? 'over' : ''\n              }`}\n              onClick={() => {\n                state.setSchema(schema, name);\n                editorState.selectedSourcePath = sourcePath;\n              }}\n            >\n              {schema.title || name}\n\n              <DatasetValue value={value} />\n              {/* <Label content={config.i18n`Import`} size=\"tiny\" color=\"yellow\" /> */}\n            </a>\n          </div>\n        </div>\n\n        {properties && opened && (\n          <div className=\"itemContent\">\n            <BuildLayer\n              schema={schema}\n              items={properties}\n              sourcePath={sourcePath ? sourcePath + '.' : ''}\n              BuildLayerFolder={BuildLayerFolder}\n              owner={owner}\n            />\n          </div>\n        )}\n      </div>\n    );\n\n    return render;\n  }\n);\n\nBuildLayerFolder.displayName = 'DatasetFolder';\n","import * as React from 'react';\nimport { SchemaDataSet } from '../form_store';\nimport { observer } from 'mobx-react';\nimport { BuildLayer } from './dataset_layer';\nimport { BuildLayerFolder } from './dataset_folder';\nimport { AddSchema, ImportSchema } from './dataset_modals';\nimport { SchemaRecord } from '../editor_types';\nimport { ToolBox, PaneContent } from '../editor_styles';\ntype Props = {\n  schema: SchemaDataSet;\n  types: SchemaRecord[];\n};\n\nexport const DatasetTypes = observer(({ schema, types }: Props) => {\n  return (\n    <PaneContent>\n      <div className=\"paneHeader\">\n        {/* <PanelExpander\n          panelClass=\".dataPanes\"\n          storedName=\"CORPIX.h-split-tools\"\n          panelConfig={editorState.leftPanelConfig}\n          panelIndex={2}\n        />\n        <div className=\"text expandable\">Custom Types</div> */}\n        <div className=\"text\">Custom Types</div>\n        <span />\n\n        <ImportSchema schema={schema} types={types} />\n        <AddSchema schema={schema} property=\"definitions\" />\n      </div>\n      <ToolBox className={'paneBody'}>\n        <BuildLayer\n          schema={schema}\n          items={schema.definitions}\n          sourcePath=\"\"\n          BuildLayerFolder={BuildLayerFolder}\n          ignoreConditions={true}\n        />\n      </ToolBox>\n\n      {/* <div className={'header secondary'}>\n        <span>SHARED</span>\n        <ImportSchema schema={schema} types={types} />\n      </div>\n\n      <BuildLayer\n        schema={schema}\n        items={schema.imports}\n        sourcePath=\"\"\n        BuildLayerFolder={BuildLayerFolder}\n        ignoreConditions={true}\n      /> */}\n    </PaneContent>\n  );\n});\n\nDatasetTypes.displayName = 'DatasetTypes';\n","import React from 'react';\n\nimport { EditorComponent, FormComponentProps, JSONSchema, FormElement } from '@tomino/dynamic-form';\n\nimport { FormEditor } from './form_editor';\nimport { EditorState } from './editor_state';\nimport { EditorContext } from './editor_context';\nimport { propGroup, boundProp, prop, handlerProp } from './editor_common';\nimport { handle, sourceValue } from '../common';\nimport { debounce } from '@tomino/toolbelt';\nimport { onSnapshot } from 'mobx-state-tree';\nimport { schemaDatasetToJS, formDatasetToJS, setValue, getValue, simpleHandle } from '../helpers';\nimport { DynamicComponent } from '../wrapper';\nimport { white } from './themes/white';\nimport { black } from './themes/black';\n\nexport type FormEditorProps = {\n  showTopMenu: boolean;\n  theme: string;\n  editorHeight: string;\n  formSource: string;\n  formSaveHandler: string;\n  schemaSource: string;\n  schemaSaveHandler: string;\n  dataSource: string;\n  maximiseHandler: string;\n};\n\nconst FormEditorComponent = (props: FormComponentProps<FormEditorProps>) => {\n  const context = React.useContext(EditorContext);\n  const controlProps = props.formElement.props;\n  const ref = React.useRef(null);\n\n  // SAVE\n\n  const saveSchema = React.useCallback(\n    debounce((snap: JSONSchema) => {\n      const serialised = JSON.stringify(schemaDatasetToJS(snap, false));\n\n      if (controlProps.schemaSaveHandler) {\n        simpleHandle(props, controlProps.schemaSaveHandler, context, { schema: serialised });\n      } else if (sourceValue(controlProps.schemaSource)) {\n        setValue(props, context, serialised, 'schemaSource');\n      }\n    }, 1000),\n    [controlProps.schemaSaveHandler, controlProps.schemaSource, props.handlers, props.owner]\n  );\n\n  const saveForm = React.useCallback(\n    debounce((snap: FormElement) => {\n      const serialised = JSON.stringify(formDatasetToJS(snap));\n\n      if (controlProps.formSaveHandler) {\n        handle(\n          props.handlers,\n          controlProps.formSaveHandler,\n          props.owner,\n          props,\n          props.formElement,\n          context,\n          { form: serialised }\n        );\n      } else if (controlProps.formSource) {\n        setValue(props, context, serialised, 'formSource');\n      }\n    }, 1000),\n    [controlProps.formSaveHandler, controlProps.formSource, props.handlers, props.owner]\n  );\n\n  if (!controlProps.schemaSource || !controlProps.formSource) {\n    return (\n      <DynamicComponent {...props}>\n        Please bind the editor to form and schema sources or implement their handlers.\n      </DynamicComponent>\n    );\n  }\n\n  if (controlProps.maximiseHandler) {\n    (window as any)[controlProps.maximiseHandler] = function() {\n      const style = ref.current.style;\n      if (style.position === 'fixed') {\n        style.position = 'relative';\n      } else {\n        style.position = 'fixed';\n        style.top = '0px';\n        style.left = '0px';\n        style.right = '0px';\n        style.bottom = '0px';\n        style.zIndex = 10000;\n      }\n    };\n  }\n\n  // LOAD\n\n  const newContext = new EditorState(\n    context.componentCatalogue,\n    context.editorCatalogue,\n    context.handlers,\n    context.types,\n    context.manager.storage\n  );\n  const schemaString = getValue(props, context, 'schemaSource');\n  const formString = getValue(props, context, 'formSource');\n\n  const schema = schemaString ? JSON.parse(schemaString) : { type: 'object', properties: {} };\n  const form = formString ? JSON.parse(formString) : { control: 'Form', elements: [] };\n\n  newContext.theme = controlProps.theme === 'light' ? white : black;\n  newContext.load(\n    {\n      schema,\n      form\n    },\n    false\n  );\n\n  // listen to snapshot and save when needed\n  onSnapshot(newContext.schema as any, saveSchema);\n  onSnapshot(newContext.form, saveForm);\n\n  return (\n    <DynamicComponent {...props}>\n      <div\n        ref={ref}\n        style={{\n          minHeight: controlProps.editorHeight || '600px',\n          resize: 'vertical',\n          position: 'relative',\n          border: '1px solid',\n          overflowY: 'scroll'\n        }}\n      >\n        <FormEditor\n          {...props}\n          label=\"Form Editor\"\n          Component={FormEditor}\n          context={newContext}\n          showTopMenu={controlProps.showTopMenu}\n        />\n      </div>\n    </DynamicComponent>\n  );\n};\n\nexport const FormEditorEditor: EditorComponent<FormEditorProps> = {\n  Component: FormEditorComponent,\n  title: 'Form Editor',\n  control: 'FormEditor',\n  icon: 'wpforms',\n  props: propGroup('Form Editor', {\n    formSource: boundProp({}),\n    formSaveHandler: handlerProp({}),\n    schemaSource: boundProp({}),\n    schemaSaveHandler: handlerProp({}),\n    maximiseHandler: prop({}),\n    // dataSource: string;\n    showTopMenu: prop({ type: 'boolean' }),\n    editorHeight: prop({ type: 'string' }),\n    theme: prop({\n      control: 'Select',\n      props: {\n        options: [{ text: 'Light', value: 'light' }, { text: 'Dark', value: 'dark' }]\n      }\n    })\n  })\n};\n\nexport default FormEditorComponent;\n","import * as styles from './editor_styles';\nimport { PaneContent, ToolBox } from './editor_styles';\n\nimport React from 'react';\nimport names from 'classnames';\n\nimport { FormElement } from '@tomino/dynamic-form';\nimport { SplitPane } from 'react-multi-split-pane';\n\nimport { PropertyEditor } from './properties/property_view';\nimport { observer } from 'mobx-react';\nimport { css } from '../common';\nimport { SideBar } from './side_bar';\nimport { EditorContext, EditorContextType } from './editor_context';\nimport { FormComponentView } from './form_editor_form_view';\nimport { FromEditorLeftPanel } from './form_editor_left_panel';\nimport { TopMenu } from './editor_top.menu';\n\ntype Props = {\n  showTopMenu: boolean;\n  fileOperations?: boolean;\n  allowSave?: boolean;\n  context: EditorContextType;\n};\n\nconst editorStyle = css`\n  position: absolute;\n  left: 60px;\n  right: 0px;\n  top: 0px;\n  bottom: 0px;\n  label: editor;\n  background: white;\n`;\n\n@observer\nexport class FormEditor extends React.Component<Props> {\n  elements: FormElement[];\n\n  public render() {\n    const context = this.props.context;\n    return (\n      <EditorContext.Provider value={context}>\n        <SideBar />\n\n        {/* {this.props.showTopMenu && <TopMenu manager={manager} />} */}\n\n        {context.project && (\n          <div className={names(styles.editorGrid, editorStyle)}>\n            <SplitPane\n              className=\"\"\n              split=\"vertical\"\n              minSize={[150, 300, 150]}\n              defaultSizes={JSON.parse(localStorage.getItem('CORPIX.v-split-1')) || [280]}\n              onDragFinished={size =>\n                localStorage.setItem('CORPIX.v-split-1', JSON.stringify(size))\n              }\n            >\n              <PaneContent>\n                <FromEditorLeftPanel />\n              </PaneContent>\n\n              <div>\n                {this.props.showTopMenu && (\n                  <TopMenu\n                    fileOperations={this.props.fileOperations}\n                    allowSave={this.props.allowSave}\n                  />\n                )}\n                <ToolBox hideMenu={!this.props.showTopMenu}>\n                  <FormComponentView />\n                </ToolBox>\n              </div>\n              <PropertyEditor />\n            </SplitPane>\n          </div>\n        )}\n      </EditorContext.Provider>\n    );\n  }\n}\n","import React from 'react';\nimport { Sidebar, Menu, Icon } from 'semantic-ui-react';\n\nimport { css } from '../common';\nimport { EditorContext } from './editor_context';\n\nconst style = css`\n  border-right: solid 1px black !important;\n  position: absolute !important;\n  z-index: 0 !important;\n`;\n\nexport const SideBar = () => {\n  const state = React.useContext(EditorContext);\n\n  return (\n    <Sidebar\n      as={Menu}\n      icon\n      inverted\n      color={state.theme.sideMenuColor}\n      vertical\n      visible={true}\n      width=\"very thin\"\n      className={style}\n    >\n      <Menu.Item as=\"a\" onClick={() => state.project.state.changeLeftPane('pages')}>\n        <Icon name=\"copy outline\" title=\"Forms and Pages\" />\n      </Menu.Item>\n      <Menu.Item as=\"a\" onClick={() => state.project.state.changeLeftPane('data')}>\n        <Icon name=\"database\" title=\"Application Data\" />\n      </Menu.Item>\n      <Menu.Item as=\"a\" onClick={() => state.project.state.changeLeftPane('components')}>\n        <Icon name=\"puzzle\" title=\"Components\" />\n      </Menu.Item>\n      <Menu.Item as=\"a\" onClick={() => state.project.state.changeLeftPane('outline')}>\n        <Icon name=\"list\" title=\"Components\" />\n      </Menu.Item>\n      <Menu.Item as=\"a\" onClick={() => state.project.state.changeLeftPane('all')}>\n        <Icon name=\"globe\" title=\"All\" />\n      </Menu.Item>\n    </Sidebar>\n  );\n};\n","import React from 'react';\nimport { observer } from 'mobx-react';\nimport { FormEditor } from '../form_editor';\nimport { EditorContext } from './editor_context';\nimport { FormDataSet } from './form_store';\nimport { addProviders } from '../common';\n\ntype Props = {\n  form: FormDataSet;\n};\n\nexport const FormView = ({ form }: Props) => {\n  const context = React.useContext(EditorContext);\n\n  const mainForm = context.form;\n  const formElement = addProviders(mainForm, form);\n\n  return (\n    <FormEditor.Component\n      catalogue={context.editorCatalogue}\n      owner={context.data}\n      formElement={formElement}\n      handlers={context.handlers}\n      readOnly={false}\n    />\n  );\n};\n\nexport const FormComponentView = observer(() => {\n  // this will react to ANY changes in the dataset since we are doing\n  //   the datasetToJS which accesses all schema elements\n\n  const context = React.useContext(EditorContext);\n  const currentForm = context.state.selectedForm;\n\n  context.data;\n\n  // if (formElement.parent && formElement.parent.control === 'Form') {\n\n  //   let shared = formElement.parent.pages.find(p => p.label === 'Shared');\n  //   if (shared) {\n  //     while (shared.elements[0] != null) {\n  //       shared = shared.elements[0];\n  //     }\n  //     if (shared.control.indexOf('Provider') === -1) {\n  //       shared = shared.parent;\n  //     }\n  //     if (shared.setValue) {\n  //       shared.setValue('elements', [formElement]);\n  //     } else {\n  //       shared.elements = [formElement];\n  //     }\n  //   }\n  //   formElement = shared;\n  // }\n\n  return <FormView form={currentForm} />;\n});\n","import React from 'react';\nimport { observer } from 'mobx-react';\nimport { SplitPane } from 'react-multi-split-pane';\n\nimport { EditorContext } from './editor_context';\nimport { PagesView } from './pages/pages_view';\nimport { DatasetElements } from './dataset/dataset_elements';\nimport { ToolBox } from './toolbox/tool_box';\nimport { DatasetTypes } from './dataset/dataset_types';\nimport { OutlineView } from './outline/outline_view';\nimport { List } from './editor_styles';\n\n/* =========================================================\n    Component\n   ======================================================== */\n\nexport const FromEditorLeftPanel = observer(() => {\n  const context = React.useContext(EditorContext);\n\n  let component: any;\n\n  switch (context.project.state.selectedLeftPane) {\n    case 'pages':\n      component = <PagesView form={context.form} />;\n      break;\n    case 'data':\n      component = (\n        <SplitPane\n          className=\"dataPanes\"\n          split=\"horizontal\"\n          minSize={100}\n          defaultSizes={JSON.parse(localStorage.getItem('CORPIX.h-split-tools')) || [280]}\n          onDragFinished={size =>\n            localStorage.setItem('CORPIX.h-split-tools', JSON.stringify(size))\n          }\n        >\n          <DatasetElements schema={context.schema} types={context.types} owner={context.data} />\n          <DatasetTypes schema={context.schema} types={context.types} />\n        </SplitPane>\n      );\n      break;\n    case 'components':\n      component = <ToolBox catalogue={context.editorCatalogue} />;\n      break;\n    case 'outline':\n      component = <OutlineView />;\n      break;\n    case 'all':\n      component = (\n        <SplitPane\n          className=\"dataPanes\"\n          split=\"horizontal\"\n          minSize={40}\n          defaultSizes={JSON.parse(localStorage.getItem('CORPIX.all-split'))}\n          onDragFinished={size => localStorage.setItem('CORPIX.all-split', JSON.stringify(size))}\n        >\n          <PagesView form={context.form} />\n          <OutlineView />\n          <DatasetElements schema={context.schema} types={context.types} owner={context.data} />\n          <ToolBox catalogue={context.editorCatalogue} />\n        </SplitPane>\n      );\n  }\n\n  return <List>{component}</List>;\n});\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { ToolBox, PaneContent } from '../editor_styles';\nimport { names, pointer } from '../../common';\nimport { EditorContext } from '../editor_context';\nimport { Icon, Button } from 'semantic-ui-react';\nimport { FormDataSet } from '../form_store';\nimport { FormElement } from '@tomino/dynamic-form';\nimport { clone, getPropValue } from '../../helpers';\n\ntype Props = {\n  element: FormDataSet;\n};\n\nexport const PageFolder: React.FC<Props> = observer(({ element }) => {\n  const state = React.useContext(EditorContext);\n\n  const onSelect = React.useCallback(() => {\n    localStorage.setItem('CORPIX_SELECTED_FORM', element.uid);\n    state.project.state.setForm(element);\n  }, [element, state.project.state]);\n\n  const label = getPropValue(null, element, state, 'label');\n  const editorLabel = getPropValue(null, element, state, 'editorLabel');\n\n  return (\n    <div className=\"item\">\n      <a className={names(element.isSelected ? 'selected' : '', pointer)} onClick={onSelect}>\n        <Icon name=\"file\" />\n        {label || editorLabel} <span className=\"meta\">Form</span>\n      </a>\n    </div>\n  );\n});\n\nexport const PagesView = observer(() => {\n  const state = React.useContext(EditorContext);\n\n  const onClick = React.useCallback(() => {\n    state.form.addRow('pages', {\n      control: 'Form',\n      label: 'New Form'\n    } as any);\n  }, [state.form]);\n\n  const onDuplicate = React.useCallback(() => {\n    const page: FormElement = clone(state.project.state.selectedForm);\n    page.props.label = page.props.label + ' Clone';\n\n    state.form.addRow('pages', page);\n  }, [state.form, state.project.state.selectedForm]);\n\n  return (\n    <PaneContent>\n      <div className=\"paneHeader\">\n        <div className=\"text\">Pages</div>\n        <span />\n        <Button\n          compact\n          size=\"tiny\"\n          color=\"blue\"\n          icon=\"clone\"\n          title=\"Duplicate\"\n          onClick={onDuplicate}\n        />\n        <Button compact size=\"tiny\" color=\"blue\" icon=\"plus\" onClick={onClick} />\n      </div>\n      <ToolBox>\n        {state.form && <PageFolder element={state.form} />}\n        {state.form &&\n          state.form.pages.map((page, index) => (\n            <PageFolder element={page} key={page.uid + index} />\n          ))}\n      </ToolBox>\n    </PaneContent>\n  );\n});\n\nPagesView.displayName = 'FormElements';\n","import * as React from 'react';\n\nimport { observer } from 'mobx-react';\nimport { ToolBox, PaneContent } from '../editor_styles';\nimport { EditorContext } from '../editor_context';\nimport { OutlineFolder } from './outline_folder';\nimport { Input } from 'semantic-ui-react';\nimport { css, Theme } from '../../common';\n\nconst styledOutline = (theme: Theme) => css`\n  .outlineOn {\n    background-color: ${theme.dragBackground};\n    border: 2px dashed ${theme.dragBorder};\n  }\n\n  .item {\n    margin-top: 2px;\n    margin-bottom: 2px;\n  }\n`;\n\nconst searchInput = css`\n  position: absolute !important;\n  left: 90px;\n  right: 12px;\n  top: 6px;\n  bottom: 6px;\n`;\n\nexport const OutlineView = observer(() => {\n  const state = React.useContext(EditorContext);\n  const [filter, setFilter] = React.useState('');\n\n  return (\n    <PaneContent>\n      <div className=\"paneHeader\">\n        <div className=\"text\">Outline</div>\n        <Input\n          icon=\"search\"\n          placeholder=\"Search ...\"\n          className={searchInput}\n          fluid\n          size=\"mini\"\n          onChange={e => setFilter(e.currentTarget.value)}\n        />\n      </div>\n      <ToolBox className={styledOutline(state.theme)}>\n        {state.form && (\n          <OutlineFolder item={state.project.state.selectedForm} filter={filter} expanded={true} />\n        )}\n      </ToolBox>\n    </PaneContent>\n  );\n});\n\nOutlineView.displayName = 'FormElements';\n","import * as React from 'react';\n\nimport { Icon } from 'semantic-ui-react';\nimport { observer } from 'mobx-react';\n\nimport { FormDataSet } from '../form_store';\nimport { EditorContext } from '../editor_context';\nimport { ToolIcon } from '../toolbox/tool_icon';\nimport { names, pointer } from '../../common';\n\nimport { DragDrop } from '../../layouts/drag_drop';\nimport { processor } from '../editor_common';\nimport { dragDropHandler, dragEndHandler } from '../drag_drop_form_control';\n\nexport type OutlineFolderProps = {\n  item: FormDataSet;\n  expanded?: boolean;\n  folder?: string;\n  indent?: boolean;\n  className?: string;\n  isOver?: boolean;\n  canDrop?: boolean;\n  index?: number;\n  filter?: string;\n  parentDragStart?: any;\n};\n\nexport const OutlineItem = observer(\n  ({ item, folder, indent, className, isOver, canDrop }: OutlineFolderProps) => {\n    const state = React.useContext(EditorContext);\n    const catalogue = state.editorCatalogue;\n    const element = catalogue.components[item.control] || {\n      icon: 'folder',\n      thumbnail: undefined as any\n    };\n    const ref = React.useRef(null);\n\n    const onSelect = React.useCallback(() => {\n      state.project.state.setElement(item, state.schema);\n    }, [item, state.project.state, state.schema]);\n\n    return (\n      <div\n        className={names(indent ? 'contentSimple' : 'content', className, {\n          outlineOn: isOver && canDrop\n        })}\n        ref={ref}\n      >\n        <a\n          className={names(\n            folder,\n            item.isSelected ? 'selected' : '',\n            pointer\n          )}\n          onClick={onSelect}\n        >\n          <ToolIcon icon={element.icon} thumbnail={element.thumbnail} title={item.control} />\n          <span>\n            {item.props.editorLabel ||\n              (typeof item.props.label === 'string' && item.props.label) ||\n              item.props.text}{' '}\n            &nbsp;\n            <span className=\"meta\">{item.control || 'Container'}</span>\n          </span>\n        </a>\n      </div>\n    );\n  }\n);\n\nfunction filterStyle(filter: string, item: FormDataSet) {\n  if (!filter) {\n    return null;\n  }\n  if (item.control.toLowerCase().indexOf(filter.toLowerCase()) >= 0) {\n    return null;\n  }\n  return { style: { opacity: 0.1 } };\n}\n\nexport const OutlineFolder = observer(\n  ({ item, expanded, isOver, canDrop, filter, index, parentDragStart }: OutlineFolderProps) => {\n    let context = React.useContext(EditorContext);\n    let [opened, toggleOpen] = React.useState(!!expanded);\n\n    const indent = (item.control || '').indexOf('Provider') === -1;\n\n    const dropHandler = React.useCallback(dragDropHandler(context, item), [context, item]);\n    const endDragHandler = React.useCallback(dragEndHandler(context), [context.dragItem]);\n\n    const drag = React.useMemo(\n      () =>\n        new DragDrop(\n          'column',\n          item,\n          processor,\n          `color: ${context.theme.textColor}!important;`,\n          'outline',\n          dropHandler,\n          endDragHandler,\n          true,\n          20,\n          context\n        ),\n      [context, dropHandler, endDragHandler, item]\n    );\n\n    const onDragStart = React.useCallback(\n      (e: React.DragEvent<HTMLDivElement>) => {\n        if (!context.dragItem) {\n          // console.log('Dragging: ' + parseInt(e.currentTarget.getAttribute('data-index')));\n          context.dragItem = {\n            name: item.control,\n            element: item,\n            node: e.currentTarget,\n            id: item.uid,\n            drag,\n            from: parseInt(e.currentTarget.getAttribute('data-index')),\n            type: 'outline'\n          };\n          let target = e.currentTarget;\n\n          setTimeout(() => {\n            // target.style.visibility = 'hidden';\n            target.style.height = '0px';\n            target.style.visibility = 'hidden';\n            // drag.initialised = false;\n          }, 1);\n        }\n      },\n      [context.dragItem, drag, item]\n    );\n\n    return (\n      <div\n        draggable={true}\n        onDragStart={parentDragStart}\n        onDragEnd={endDragHandler}\n        data-index={index}\n      >\n        <div className={'item folder'} {...filterStyle(filter, item)}>\n          {indent && (\n            <Icon\n              name={opened ? 'caret down' : 'caret right'}\n              className=\"treeCaret\"\n              onClick={() => toggleOpen(!opened)}\n            />\n          )}\n          <OutlineItem\n            item={item}\n            folder=\"folder\"\n            indent={!indent}\n            filter={filter}\n            className={isOver && canDrop ? 'on' : undefined}\n          />\n        </div>\n\n        <div\n          style={{ display: opened ? '' : 'none' }}\n          className={indent ? 'itemContent' : undefined}\n          {...drag.props()}\n        >\n          {item.elements\n            .filter(e => e && (e.control || (e.elements && e.elements.length)))\n            .map((child, index) => {\n              // if (!child) {\n              //   child = {\n              //     elements: [],\n              //     control: 'Container',\n              //     props: {}\n              //   } as any;\n              // }\n              if (\n                child.elements &&\n                child.elements.filter(e => e && (e.control || (e.elements && e.elements.length)))\n                  .length\n              ) {\n                return (\n                  <React.Fragment key={child.uid}>\n                    <OutlineFolder\n                      key={index + child.uid}\n                      filter={filter}\n                      item={child}\n                      index={index}\n                      parentDragStart={onDragStart}\n                      expanded={true}\n                    />\n                  </React.Fragment>\n                );\n              }\n              return (\n                <React.Fragment key={child.uid}>\n                  <div\n                    className=\"item single\"\n                    data-index={index}\n                    key={index + child.uid}\n                    draggable={true}\n                    onDragStart={onDragStart}\n                    onDragEnd={endDragHandler}\n                    {...filterStyle(filter, child)}\n                  >\n                    <OutlineItem item={child} folder=\"single\" filter={filter} />\n                  </div>\n                </React.Fragment>\n              );\n            })}\n        </div>\n      </div>\n    );\n  }\n);\n","import * as React from 'react';\n\nimport { Menu, Divider } from 'semantic-ui-react';\n\nimport { undoManager } from '@tomino/dynamic-form';\nimport { ModalPreview } from './modal_preview';\nimport { ModalCreate } from './modal_create';\n// import { ModalCode } from './modal_preview_code';\n// import { ModalUpload } from './modal_upload';\nimport { ModalLoad } from './modal_load';\nimport { ModalDuplicate } from './modal_duplicate';\nimport { EditorContext } from './editor_context';\n\nimport { css, Theme } from '../common';\n\ntype Props = {\n  fileOperations: boolean;\n  allowSave: boolean;\n  theme: any;\n};\n\nconst editorMenu = (theme: Theme) => css`\n  position: absolute;\n  top: 0px;\n  left: 0px;\n  right: 0px;\n  border-radius: 0px !important;\n  background-color: ${theme.menuColor}!important;\n  margin-left: -1px !important;\n`;\n\nexport const TopMenu = ({ fileOperations, allowSave }: Props) => {\n  const context = React.useContext(EditorContext);\n  return (\n    <Menu className={editorMenu(context.theme)} inverted={context.theme.inverted}>\n      <Menu.Item icon=\"lightbulb outline\" content=\"Formix\" />\n      {fileOperations && (\n        <>\n          <ModalCreate />\n          <ModalDuplicate />\n          <ModalLoad />\n        </>\n      )}\n      {allowSave && (\n        <Menu.Item icon=\"save\" onClick={() => context.manager.saveProject(context.project)} />\n      )}\n      <Divider />\n      <Menu.Item icon=\"undo\" onClick={undoManager.undo} />\n      <Menu.Item icon=\"redo\" onClick={undoManager.redo} />\n\n      <Menu.Menu position=\"right\">\n        {/* <ModalUpload manager={manager} /> */}\n        <ModalPreview />\n        {/* <ModalCode /> */}\n      </Menu.Menu>\n    </Menu>\n  );\n};\n","import * as React from 'react';\n\nimport { randomData } from './editor_common';\nimport { Modal, Menu } from 'semantic-ui-react';\nimport { FormView } from '../form_view';\nimport { EditorContext } from './editor_context';\nimport { addProviders } from '../common';\n\nexport const Preview = () => {\n  const state = React.useContext(EditorContext);\n  const editorState = React.useContext(EditorContext);\n  const formModel: any = randomData(state);\n\n  const mainForm = state.form;\n  const formElement = addProviders(mainForm, formModel);\n\n  return (\n    <FormView\n      formElement={formElement}\n      owner={formModel.dataSet}\n      readOnly={false}\n      handlers={editorState.handlers}\n      catalogue={editorState.componentCatalogue}\n    />\n  );\n};\n\nexport const ModalPreview = () => {\n  return (\n    <Modal trigger={<Menu.Item icon=\"search\" title=\"Preview Form\" />}>\n      <Modal.Header>Form Preview</Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          <Preview />\n        </Modal.Description>\n      </Modal.Content>\n    </Modal>\n  );\n};\n","import React from 'react';\nimport { Modal, Menu, Button, Input } from 'semantic-ui-react';\nimport { modalActions } from './editor_styles';\nimport { margined } from '../semantic/editor.styles';\nimport { EditorContext } from './editor_context';\n\ntype Props = {\n  duplicate?: boolean;\n};\n\nexport const ModalCreate: React.FC<Props> = () => {\n  const context = React.useContext(EditorContext);\n  const [open, changeOpen] = React.useState(false);\n  const [name, setName] = React.useState('');\n\n  return (\n    <Modal\n      trigger={\n        <Menu.Item\n          icon={'file'}\n          title=\"Create a new Form\"\n          onClick={() => {\n            changeOpen(true);\n          }}\n        />\n      }\n      open={open}\n    >\n      <Modal.Header>Do you wish to create a new form?</Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          <Input\n            fluid\n            label=\"Name:\"\n            labelPosition=\"left\"\n            value={name}\n            onChange={e => setName(e.currentTarget.value)}\n          />\n          <div className={margined}>If you continue, you will lose all unsaved changes.</div>\n          <div className={modalActions}>\n            <Button onClick={() => changeOpen(false)}>Close</Button>\n            <Button\n              onClick={() => {\n                context.createProject(name);\n                changeOpen(false);\n              }}\n              icon=\"file\"\n              color=\"green\"\n              content=\"Create\"\n            />\n          </div>\n        </Modal.Description>\n      </Modal.Content>\n    </Modal>\n  );\n};\n","import { css } from '../common';\n\nexport const margined = css`\n  margin-top: 20px;\n`;\n","import React from 'react';\n\nimport names from 'classnames';\n\nimport { Modal, Menu, Button } from 'semantic-ui-react';\nimport { css } from '../common';\nimport { config } from '@tomino/dynamic-form';\nimport { EditorContext } from './editor_context';\nimport { IProject } from '../storage/common_storage';\n\nconst itemStyle = css`\n  padding: 3px;\n  cursor: pointer;\n  label: item;\n`;\n\nconst selectedStyle = css`\n  ${itemStyle}\n  background-color: #dedede;\n  label: selected;\n`;\n\nconst row = css`\n  display: flex;\n  .name {\n    flex: 2;\n  }\n  .size {\n    flex: 1;\n  }\n  .date {\n    flex: 1;\n  }\n`;\n\nconst header = css`\n  font-weight: bolder;\n`;\n\nexport const ModalLoad: React.FC = () => {\n  const context = React.useContext(EditorContext);\n  const [open, changeOpen] = React.useState(false);\n  const [selected, setSelected] = React.useState(null);\n  const [projects, setProjects] = React.useState<IProject[]>(null);\n\n  function loadForm() {\n    context.load(selected);\n    changeOpen(false);\n  }\n\n  function deleteForm() {\n    if (confirm(config.i18n`Are you sure you want to delete this form?`)) {\n      changeOpen(false);\n      context.manager.deleteProject(selected.id);\n    }\n  }\n\n  if (!projects) {\n    context.manager.listProjects().then(projects => setProjects(projects));\n    return <div>Loading Projects ...</div>;\n  }\n\n  return (\n    <Modal\n      trigger={\n        <Menu.Item\n          icon=\"folder open\"\n          title=\"Open project from storage\"\n          onClick={() => {\n            changeOpen(true);\n          }}\n        />\n      }\n      open={open}\n    >\n      <Modal.Header>Load project from storage</Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          {projects.length === 0 && <div>There are no projects in your storage</div>}\n          <div className={names(row, header)}>\n            <div className=\"name\">{config.i18n`Form Name`}</div>\n            <div className=\"size\">{config.i18n`Size (B)`}</div>\n            <div className=\"date\">{config.i18n`Created`}</div>\n            <div className=\"date\">{config.i18n`Modified`}</div>\n          </div>\n          {projects.map(p => (\n            <div\n              key={p.id}\n              onClick={() => setSelected(p)}\n              className={names(row, selected && p.id === selected.id ? selectedStyle : itemStyle)}\n            >\n              <div className=\"name\">{p.form.props.label}</div>\n              <div className=\"size\">{JSON.stringify(p).length}</div>\n              <div className=\"date\">{p.created ? new Date(p.created).toLocaleString() : '--'}</div>\n              <div className=\"date\">\n                {p.modified ? new Date(p.modified).toLocaleString() : '--'}\n              </div>\n            </div>\n          ))}\n          <br />\n          <br />\n          <div>\n            <Button onClick={() => changeOpen(false)}>Close</Button>\n            {selected && (\n              <>\n                <Button\n                  floated=\"right\"\n                  onClick={loadForm}\n                  icon=\"folder open\"\n                  primary\n                  content=\"Load\"\n                />\n                <Button\n                  floated=\"right\"\n                  onClick={deleteForm}\n                  icon=\"trash\"\n                  color=\"red\"\n                  content=\"Delete\"\n                />\n              </>\n            )}\n          </div>\n        </Modal.Description>\n      </Modal.Content>\n    </Modal>\n  );\n};\n","import React from 'react';\nimport { Modal, Menu, Button, Input } from 'semantic-ui-react';\nimport { modalActions } from './editor_styles';\nimport { config } from '@tomino/dynamic-form';\nimport { EditorContext } from './editor_context';\n\nexport const ModalDuplicate: React.FC = () => {\n  const editorState = React.useContext(EditorContext);\n  const [open, changeOpen] = React.useState(false);\n  const [name, setName] = React.useState(\n    editorState.project ? editorState.project.form.props.label + ' (clone)' : ''\n  );\n\n  return (\n    <Modal\n      trigger={\n        <Menu.Item\n          icon={'clone'}\n          title={config.i18n`Duplicate current form`}\n          onClick={() => {\n            editorState.project && changeOpen(true);\n          }}\n        />\n      }\n      open={open}\n    >\n      <Modal.Header>{config.i18n`Duplicate Current Form`}</Modal.Header>\n      <Modal.Content>\n        <Modal.Description>\n          <Input\n            fluid\n            label=\"Name:\"\n            labelPosition=\"left\"\n            value={name}\n            onChange={e => setName(e.currentTarget.value)}\n          />\n          <div className={modalActions}>\n            <Button onClick={() => changeOpen(false)}>Close</Button>\n            <Button\n              onClick={() => {\n                editorState.duplicateProject(name);\n                changeOpen(false);\n              }}\n              icon=\"file\"\n              color=\"green\"\n              content=\"Duplicate\"\n            />\n          </div>\n        </Modal.Description>\n      </Modal.Content>\n    </Modal>\n  );\n};\n","import { EditorComponentCatalogue } from '@tomino/dynamic-form';\nimport { DatasetEditorComponent } from './dataset/dataset_editor_editor';\nimport { FormEditorEditor } from './form_editor_editor';\n\nexport const catalogueEditor: EditorComponentCatalogue = {\n  components: {\n    DatasetEditor: DatasetEditorComponent,\n    FormEditor: FormEditorEditor\n  },\n  cssClass: ''\n};\n","import { EditorComponent } from '@tomino/dynamic-form';\nimport { DatasetEditor, Props } from './dataset_editor';\nimport { propGroup, prop, handlerProp, boundProp } from '../editor_common';\nimport { observer } from 'mobx-react';\n\nexport const DatasetEditorComponent: EditorComponent<Props> = {\n  Component: observer(DatasetEditor),\n  title: 'Dataset Editor',\n  control: 'DatasetEditor',\n  icon: 'edit',\n  bound: true,\n  props: propGroup('Dataset Editor', {\n    source: boundProp(),\n    theme: prop({\n      control: 'Select',\n      props: {\n        options: [{ value: 'dark', text: 'Dark' }, { value: 'light', text: 'Light' }]\n      }\n    }),\n    height: prop({}),\n    parseHandler: handlerProp({}),\n    allowCustomTypes: prop({ type: 'boolean', label: 'Custom Types' })\n  })\n};\n","import { FormElement } from '@tomino/dynamic-form';\n\nexport const defaultForm: FormElement = {\n  documentation: 'Test Form',\n  elements: []\n};\n\nexport const defaultFormElement: FormElement = {\n  control: null,\n  props: null,\n  elements: null\n};\n\nexport const create = {\n  grid(form: Partial<FormElement> = {}): FormElement {\n    return {\n      control: 'Form',\n      elements: [{ control: 'Grid', ...form, props: { gap: '12px', ...form.props } }]\n    };\n  },\n  stack(form: Partial<FormElement> = {}): FormElement {\n    return {\n      control: 'Form',\n      elements: [\n        {\n          control: 'Stack',\n          ...form,\n          props: {\n            gap: '12px',\n            layout: 'column',\n            final: true,\n            ...form.props\n          }\n        }\n      ]\n    };\n  },\n  formElement(form: Partial<FormElement> = {}): FormElement {\n    return { ...form };\n  }\n};\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\nimport { create } from '../../semantic/tests/form_query_data';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    fake: { type: 'string' },\n    people: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          name: { type: 'string' },\n          sex: { type: 'string' }\n        }\n      }\n    }\n  }\n};\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'ApolloProvider',\n      props: {\n        server: 'http://localhost:4000/graphql',\n        auth: false,\n        disable: true\n      },\n      elements: []\n    },\n    {\n      control: 'ApolloProvider',\n      props: {\n        server: 'http://localhost:4000/graphql',\n        auth: false\n      },\n      elements: [\n        {\n          control: 'Stack',\n          props: {\n            layout: 'column',\n            gap: '3px'\n          },\n          elements: [\n            {\n              control: 'ApolloQuery',\n              props: {\n                query: `query People {\n                people {\n                  name\n                  sex\n                },\n              }`,\n                fakeData: { source: 'fake' },\n                target: 'people',\n                loadingText: 'Loading ...'\n              },\n              elements: [\n                {\n                  control: 'Repeater',\n                  props: {\n                    value: { source: 'people' }\n                  },\n                  elements: [\n                    {\n                      // edit template\n                      control: 'Stack',\n                      props: { layout: 'row' },\n                      elements: [\n                        {\n                          control: 'Text',\n                          props: {\n                            value: { source: 'name' }\n                          }\n                        },\n                        {\n                          control: 'Text',\n                          props: { value: ':\\xa0' }\n                        },\n                        {\n                          control: 'Text',\n                          props: {\n                            value: { source: 'sex' }\n                          }\n                        }\n                      ]\n                    },\n                    null,\n                    null\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  ]\n});\n\nconst formData = {\n  fake: JSON.stringify({\n    people: [{ name: 'Tomas', sex: 'Male' }]\n  })\n};\n\ndescribe('Apollo', () => {\n  describe('Query', () => {\n    return {\n      component: prepareComponent(formDefinition, schema, formData, { addEditor: true })\n      // apollo: {\n      //   // mocked response for the query named PostsForAuthor\n      //   People: {\n      //     resolveWith: {\n      //       people: [\n      //         { __typename: 'Person', name: 'Tomas', sex: 'Male' },\n      //         { __typename: 'Person', name: 'Valeria', sex: 'Female' }\n      //       ]\n      //     }\n      //   }\n      // }\n    };\n  });\n});\n","import * as React from 'react';\n\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    schema: {\n      type: 'string'\n    }\n  }\n};\n\nconst formDefintion: FormElement = {\n  control: 'Stack',\n  props: {\n    gap: '12px'\n  },\n  elements: [\n    {\n      control: 'DatasetEditor',\n      props: {\n        source: { source: 'schema' },\n        theme: 'light',\n        height: '400px'\n      }\n    }\n  ]\n};\n\ndescribe('Dataset Editor', () => {\n  // it('renders correctly', () => {\n  //   const comp = renderer.create(component());\n  //   expect(comp).toMatchSnapshot();\n  // });\n\n  const Component = prepareComponent(\n    formDefintion,\n    schema,\n    {\n      schema: JSON.stringify({\n        type: 'object',\n        properties: {\n          name: { type: 'string', title: 'name' },\n          age: { type: 'number', title: 'age' },\n          car: {\n            type: 'object',\n            title: 'car',\n            properties: {\n              model: { type: 'string', title: 'model' },\n              year: { type: 'number', title: 'year' }\n            }\n          },\n          relatives: {\n            type: 'array',\n            items: {\n              type: 'object',\n              properties: {\n                father: { type: 'string', title: 'father' },\n                mother: { type: 'string', title: 'mother' }\n              }\n            }\n          }\n        }\n      })\n    },\n    {\n      addEditor: true,\n      showReadOnly: false\n    }\n  );\n\n  const Wrapper = () => (\n    <div style={{ height: '600px' }}>\n      <Component />\n    </div>\n  );\n\n  return {\n    component: Wrapper\n  };\n});\n","import * as React from 'react';\n\nimport { prepareComponent } from '../../semantic/tests/common';\nimport { FormElement } from '@tomino/dynamic-form';\nimport { EditorState } from '../editor_state';\nimport { catalogue } from '../catalogue';\nimport { catalogueEditor } from '../../catalogue_editor';\nimport { EditorContext } from '../editor_context';\n\nconst formDefintion: FormElement = {\n  control: 'Stack',\n  props: {\n    gap: '12px'\n  },\n  elements: [\n    {\n      control: 'FormEditor',\n      props: {\n        formSource: { source: 'form' },\n        schemaSource: { source: 'schema' },\n        theme: 'light',\n        editorHeight: '400px'\n      }\n    }\n  ]\n};\n\ndescribe('Form Editor', () => {\n  const Component = prepareComponent(\n    formDefintion,\n    {\n      type: 'object',\n      properties: {\n        schema: { type: 'string' },\n        form: { type: 'string' }\n      }\n    },\n    {\n      form: JSON.stringify({\n        control: 'Form',\n        elements: [{ props: { text: 'Yah!', control: 'Text' }, control: 'Text' }]\n      }),\n      schema: JSON.stringify({\n        type: 'object',\n        properties: {\n          name: { type: 'string', title: 'name' },\n          age: { type: 'number', title: 'age' },\n          car: {\n            type: 'object',\n            title: 'car',\n            properties: {\n              model: { type: 'string', title: 'model' },\n              year: { type: 'number', title: 'year' }\n            }\n          }\n        }\n      })\n    },\n    {\n      addEditor: true,\n      showReadOnly: false\n    }\n  );\n\n  const editorContext = new EditorState(catalogue, catalogueEditor, {});\n\n  const Wrapper = () => (\n    <EditorContext.Provider value={editorContext}>\n      <Component />\n    </EditorContext.Provider>\n  );\n\n  return {\n    component: Wrapper\n  };\n});\n","// import { catalogueEditor } from '../../catalogue_editor';\n// import {\n//   baseForm,\n//   baseSchema,\n//   personSchema,\n//   signatureSchema,\n//   someSchema\n// } from '../../semantic/tests/fixtures';\n// import { catalogue } from '../../catalogue';\n// import { EditorState } from '../editor_state';\n\n// let types = [\n//   {\n//     id: 'p1',\n//     name: 'Person',\n//     description: 'Private records of a person',\n//     schema: personSchema\n//   },\n//   {\n//     id: 's1',\n//     name: 'Signature',\n//     description: 'Description',\n//     schema: signatureSchema\n//   },\n//   {\n//     id: 'o1',\n//     name: 'Other Schema',\n//     description: 'Some other schema',\n//     schema: someSchema\n//   }\n// ];\n\n// describe('Form Store', () => {\n//   // it('creates store with various control props', () => {\n//   //   const state = new EditorState(catalogue, catalogueEditor, null, types);\n//   //   let m = state.buildProject(baseForm, baseSchema);\n//   //   console.log(m.form.elements[0].props.rows);\n//   // });\n// });\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from '../../semantic/tests/common';\nimport { create } from '../../semantic/tests/form_query_data';\n\nfunction elements(): FormElement[] {\n  return [\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 30px; background-color: red;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 50px; background-color: blue;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    }\n  ];\n}\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'Text',\n      props: { value: 'Row Layout', control: 'Text' }\n    },\n    {\n      control: 'Flex',\n      props: {\n        layout: 'row',\n        gap: '0px',\n        alignItems: 'center'\n      },\n      elements: elements()\n    },\n    {\n      control: 'Flex',\n      props: {\n        layout: 'row',\n        gap: '6px',\n        justifyContent: 'space-around'\n      },\n      elements: elements()\n    },\n    {\n      control: 'Text',\n      props: { value: 'Column Layout', control: 'Text', css: { value: 'margin-top: 15px;' } }\n    },\n    {\n      control: 'Flex',\n      props: {\n        layout: 'column',\n        gap: '12px',\n        control: 'Stack'\n      },\n      elements: elements()\n    },\n    {\n      control: 'Flex',\n      props: {\n        layout: 'column',\n        gap: '0px'\n      },\n      elements: elements()\n    }\n  ]\n});\n\nconst formData = {};\nconst schema: JSONSchema = { type: 'object', properties: {} };\n\ndescribe('Flex', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, formData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, formData);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showToolBox: true\n    })\n  };\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from '../../semantic/tests/common';\nimport { create } from '../../semantic/tests/form_query_data';\n\nfunction elements(): FormElement[] {\n  return [\n    {\n      control: 'Text',\n      props: {\n        value: '1',\n        row: 1,\n        column: 1,\n        width: 2,\n        css: `width: 100%; height: 30px; background-color: red;`\n      }\n    },\n    {\n      control: 'Text',\n      props: {\n        value: '1',\n        row: 1,\n        column: 4,\n        width: 1,\n        css: `width: 100%; height: 50px; background-color: blue;`\n      }\n    },\n    {\n      control: 'Text',\n      props: {\n        value: '1',\n        row: 2,\n        column: 2,\n        width: 2,\n        css: `width: 100%; height: 20px; background-color: green;`\n      }\n    },\n    {\n      control: 'Text',\n      props: {\n        value: '1',\n        row: 4,\n        column: 1,\n        width: 1,\n        css: `width: 100%; height: 20px; background-color: green;`\n      }\n    },\n    {\n      control: 'Text',\n      props: {\n        value: '1',\n        row: 4,\n        column: 4,\n        width: 1,\n        css: `width: 100%; height: 20px; background-color: green;`\n      }\n    }\n  ];\n}\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'Text',\n      props: { value: 'Empty Grid', control: 'Text' }\n    },\n    {\n      control: 'Grid',\n      props: {\n        rows: 1,\n        columns: 4\n      },\n      elements: []\n    },\n    {\n      control: 'Text',\n      props: { value: 'With Elements', control: 'Text', css: 'margin-top: 15px;' }\n    },\n    {\n      control: 'Grid',\n      props: {\n        rows: { value: 8 },\n        columns: 4,\n        control: 'Grid'\n      },\n      elements: elements()\n    }\n  ]\n});\n\nconst formData = {};\nconst schema: JSONSchema = { type: 'object', properties: {} };\n\ndescribe('Grid', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, formData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, formData);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showToolBox: true\n    })\n  };\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from '../../semantic/tests/common';\nimport { create } from '../../semantic/tests/form_query_data';\n\nfunction elements(): FormElement[] {\n  return [\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 30px; background-color: red;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 50px; background-color: blue;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    },\n    {\n      control: 'Text',\n      props: { value: '1', css: { value: `width: 100px; height: 20px; background-color: green;` } }\n    }\n  ];\n}\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'Text',\n      props: { value: 'Empty', control: 'Text' }\n    },\n    {\n      control: 'Stack',\n      props: {\n        gap: '12px',\n        layout: 'column'\n      },\n      elements: []\n    },\n    {\n      control: 'Text',\n      props: { value: 'Row Layout', control: 'Text' }\n    },\n    {\n      control: 'Stack',\n      props: {\n        layout: 'row',\n        gap: '0px'\n      },\n      elements: elements()\n    },\n    {\n      control: 'Stack',\n      props: {\n        layout: 'row',\n        gap: '6px'\n      },\n      elements: elements()\n    },\n    {\n      control: 'Text',\n      props: {\n        value: 'Column Layout',\n        control: 'Text',\n        row: 3,\n        column: 1,\n        css: { value: 'margin-top: 15px;' }\n      }\n    },\n    {\n      control: 'Stack',\n      props: {\n        layout: 'column',\n        gap: '12px',\n        control: 'Stack'\n      },\n      elements: elements()\n    },\n    {\n      control: 'Stack',\n      props: {\n        layout: 'column',\n        gap: '0px',\n        row: 5,\n        column: 1\n      },\n      elements: elements()\n    }\n  ]\n});\n\nconst formData = {};\nconst schema: JSONSchema = { type: 'object', properties: {} };\n\ndescribe('Stack', () => {\n  // it('renders correctly', () => {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, formData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, formData);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showToolBox: true\n    })\n  };\n});\n","// import * as renderer from 'react-test-renderer';\n\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    person: {\n      type: 'string'\n    }\n  }\n};\n\nlet elements: FormElement[] = [\n  {\n    control: 'Text',\n    props: { label: 'Param', value: { source: 'person' } }\n  },\n  {\n    control: 'ReactRouterRoute',\n    props: {\n      page: 'page1',\n      path: '/hr/:person'\n    }\n  },\n  {\n    control: 'ReactRouterRoute',\n    props: {\n      page: 'page2',\n      path: '/other'\n    }\n  },\n  {\n    control: 'Text',\n    props: {\n      value: '<b>Switch</b>'\n    }\n  },\n  {\n    control: 'ReactRouterSwitch',\n    props: {\n      config: [\n        {\n          page: 'page1',\n          path: '/hr/:person'\n        },\n        {\n          page: 'page2',\n          path: '/other'\n        }\n      ]\n    }\n  },\n  {\n    control: 'Text',\n    props: {\n      value: 'Link',\n      css: 'font-weight: bold;'\n    }\n  },\n  {\n    control: 'ReactRouterLink',\n    props: {\n      url: '/home/${person}',\n      value: 'Link to: ${person}'\n    }\n  },\n  // {\n  //   control: 'Text',\n  //   props: {\n  //     value: 'Private Route Enabled'\n  //   }\n  // },\n  // {\n  //   control: 'PrivateReactRouterRoute',\n  //   props: {\n  //     page: 'page1',\n  //     path: '/hr/:person'\n  //   }\n  // },\n  {\n    control: 'Text',\n    props: {\n      value: 'Private Route Disabled'\n    }\n  },\n  {\n    control: 'PrivateReactRouterRoute',\n    props: {\n      page: 'page1',\n      path: '/hr/:person',\n      disable: true\n    }\n  }\n];\n\nconst formDefinition: FormElement = {\n  control: 'Form',\n  pages: [\n    {\n      uid: 'page1',\n      props: { label: 'Page 1' },\n      elements: [\n        {\n          control: 'Text',\n          props: { value: 'Page 1' }\n        }\n      ]\n    },\n    {\n      uid: 'page2',\n      props: { label: 'Page 2' },\n      elements: [\n        {\n          control: 'Text',\n          props: { value: 'Page 2' }\n        }\n      ]\n    }\n  ],\n  elements: [\n    {\n      control: 'Stack',\n      props: {\n        gap: '12px',\n        layout: 'column'\n      },\n      elements: [\n        {\n          control: 'Text',\n          props: { value: 'Empty Router' }\n        },\n        {\n          control: 'ReactRouterProvider',\n          elements: []\n        },\n        {\n          control: 'Text',\n          props: { value: 'Router With Routes' }\n        },\n        {\n          control: 'Stack',\n          props: {\n            layout: 'column',\n            gap: '3px'\n          },\n          elements: [\n            {\n              control: 'ReactRouterProvider',\n              props: {\n                testRoute: '/hr/tomas'\n              },\n              elements\n            }\n          ]\n        }\n      ]\n    }\n  ]\n};\n\nconst formData = {};\n\ndescribe('ReactRouter', () => {\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showToolBox: true\n    })\n  };\n});\n","// import * as renderer from 'react-test-renderer';\n\nimport { JSONSchema } from '@tomino/dynamic-form';\nimport { prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    approved: {\n      type: 'boolean'\n    },\n    value: {\n      type: 'string'\n    }\n  },\n  required: ['name']\n};\n\nlet formDefinition = {\n  control: 'Grid',\n  props: {\n    rows: 3,\n    columns: 4\n  },\n  elements: [\n    {\n      control: 'Button',\n      props: {\n        target: 'https://www.google.com',\n        icon: { value: 'anchor' },\n        color: { value: 'teal' },\n        content: { value: 'Google' },\n        row: 1,\n        column: 2,\n        width: 1\n      }\n    }\n  ]\n};\n\nconst formData = {\n  description: 'Some Description'\n};\n\ndescribe('Buttons', () => {\n  // it('renders correctly', () => {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      handlers: {\n        approve: () => console.log('Approve Clicked'),\n        reject: () => console.log('Reject Clicked')\n      }\n    })\n  };\n});\n","import { JSONSchema } from '@tomino/dynamic-form';\n\nimport { create } from './form_query_data';\nimport { prepareComponent, testStandard, testEditor } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    agree: {\n      type: 'boolean'\n    },\n    disagree: {\n      type: 'boolean'\n    },\n    must: {\n      type: 'boolean',\n      errorMessage: 'You must agree to terms and conditions'\n    }\n  },\n  required: ['must']\n};\n\nconst data = { agree: true, disagree: false };\n\nconst formDefinition = create.stack({\n  elements: [\n    {\n      props: { text: 'Agree With Terms and Conditions', value: { source: 'agree' } },\n      control: 'Checkbox'\n    },\n    {\n      control: 'Checkbox',\n      props: {\n        text: 'Disagree With Terms and Conditions',\n        toggle: true,\n        value: { source: 'disagree' }\n      }\n    },\n    {\n      control: 'Checkbox',\n      props: {\n        text: 'Disagree With Terms and Conditions',\n        slider: true,\n        value: { source: 'disagree' }\n      }\n    },\n    {\n      props: { text: 'Must Agree With Terms and Conditions', value: { source: 'must' } },\n      control: 'Checkbox'\n    }\n  ]\n});\n\ndescribe('Checkbox', () => {\n  // just another notation\n\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, data);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, data);\n  });\n\n  // it('renders correctly', () => {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n\n  // it('changes value and all related formulas', () => {\n  //   const wrapper = renderer.create(component());\n  //   const root = wrapper.root;\n  //   const agree = root.findAllByProps({ name: 'agree' })[0];\n  //   agree.props.onChange(null, { checked: false });\n\n  //   const disagree = root.findAllByProps({ name: 'disagree' })[0];\n  //   disagree.props.onChange(null, { checked: true });\n\n  //   const must = root.findAllByProps({ name: 'must' })[0];\n  //   must.props.onChange(null, { checked: true });\n  //   expect(wrapper).toMatchSnapshot();\n\n  //   expect(config.setDirty).called;\n  // });\n\n  return {\n    component: prepareComponent(formDefinition, schema, data, {\n      addEditor: true,\n      showToolBox: false,\n      showStandard: false,\n      validate: true\n    })\n  };\n});\n","import { create } from './form_query_data';\nimport { JSONSchema } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    description: {\n      type: 'string'\n    }\n  },\n  required: ['name']\n};\n\nconst formDefinition = create.stack({\n  elements: [\n    {\n      props: {\n        label: 'Description',\n        icon: 'doctor',\n        color: 'red',\n        content: { source: 'description' }\n      },\n      control: 'Comment'\n    },\n    {\n      props: {\n        label: 'Description',\n        icon: 'comment outline',\n        color: 'yellow',\n        content: 'Direct description',\n        header: 'This is header'\n      },\n      control: 'Comment'\n    }\n  ]\n});\n\nconst data = {\n  description: 'Some Description'\n};\n\ndescribe('Comment', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, data);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, data);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, data, {\n      addEditor: true,\n      showToolBox: false,\n      showStandard: true,\n      validate: true\n    })\n  };\n});\n","import { create } from './form_query_data';\nimport { JSONSchema } from '@tomino/dynamic-form';\nimport { testStandard, testEditor, prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    date: {\n      type: 'string',\n      format: 'date'\n    },\n    range: {\n      type: 'string'\n    }\n  }\n};\n\nconst formDefinition = create.stack({\n  elements: [\n    {\n      props: { type: 'Date', label: 'Date', value: { source: 'date' } },\n      control: 'Date'\n    },\n    // {\n    //   props: { type: 'Time', label: 'Time', value: { source: 'date' } },\n    //   control: 'Date'\n    // },\n    {\n      props: { type: 'DateTime', label: 'Date Time', value: { source: 'date' } },\n      control: 'Date'\n    },\n    {\n      props: { type: 'DateRange', label: 'Date Range', value: { source: 'range' } },\n      control: 'Date'\n    }\n  ]\n});\n\nconst data = {\n  date: '23/2/1980 11:11'\n};\n\ndescribe('DateView', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, data);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, data);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, data, {\n      addEditor: false,\n      showToolBox: false,\n      showStandard: true,\n      validate: true\n    })\n  };\n});\n","import { create } from './form_query_data';\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from './common';\n\nconst countries = [{ text: 'Australia', value: 'AU' }, { text: 'Slovakia', value: 'SK' }];\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    name: {\n      type: 'string'\n    },\n    items: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          text: { type: 'string' },\n          value: { type: 'string' }\n        }\n      }\n    },\n    country: {\n      type: 'string'\n    },\n    city: {\n      type: 'string'\n    },\n    countries: {\n      $enum: countries\n    },\n    cities: {\n      $enum: [\n        { text: 'Sydney', value: 'SYD', country: 'AU' },\n        { text: 'Melbourne', value: 'MEL', country: 'AU' },\n        { text: 'Kosice', value: 'KE', country: 'SK' },\n        { text: 'Bratislava', value: 'BA', country: 'SK' }\n      ]\n    }\n  }\n};\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'Dropdown',\n      props: {\n        text: 'Dropdown'\n      },\n      elements: [\n        {\n          control: 'Text',\n          props: { value: 'First', name: 'first' }\n        },\n        {\n          control: 'Text',\n          props: { value: 'Second', name: 'second' }\n        }\n      ]\n    },\n    {\n      control: 'Text',\n      props: {\n        value: 'Pre-Selected'\n      }\n    },\n    {\n      control: 'Dropdown',\n      props: {\n        selection: true,\n        value: { source: 'name' },\n        options: [\n          {\n            text: 'First',\n            value: 'first'\n          },\n          {\n            text: 'Second',\n            value: 'second'\n          }\n        ]\n      }\n    },\n    {\n      control: 'Text',\n      props: {\n        value: 'Bound'\n      }\n    },\n    {\n      control: 'Dropdown',\n\n      props: {\n        value: { source: 'name' },\n        selection: true,\n        options: { source: 'items' }\n      }\n    },\n    {\n      control: 'Text',\n      props: {\n        value: 'Filtered'\n      }\n    },\n    {\n      props: {\n        schemaSource: 'countries',\n        label: 'Country',\n        selection: true,\n        search: true,\n        value: { source: 'country' }\n      },\n      control: 'Dropdown'\n    },\n    {\n      control: 'Dropdown',\n      props: {\n        filterSource: 'country',\n        filterColumn: 'country',\n        schemaSource: 'cities',\n        search: true,\n        selection: true,\n        value: { source: 'city' },\n        label: 'City'\n      }\n    },\n    {\n      props: {\n        options: { handler: 'syncCountries' },\n        label: 'Sync',\n        value: { source: 'country' },\n        selection: true\n      },\n      control: 'Dropdown'\n    },\n    {\n      props: {\n        asyncOptions: 'asyncCountries',\n        label: 'Async',\n        value: { source: 'country' },\n        selection: true\n      },\n      control: 'Dropdown'\n    },\n    {\n      control: 'Menu',\n      elements: [\n        {\n          control: 'Dropdown',\n          props: {\n            options: { source: 'items' },\n            value: { source: 'name' },\n            item: true\n          }\n        },\n        {\n          control: 'Dropdown',\n          props: {\n            value: { source: 'name' },\n            item: true,\n            elements: []\n          }\n        }\n      ]\n    }\n  ]\n});\n\nconst formData = {\n  name: 'second',\n  items: [{ text: 'Tomi', value: 'first' }, { text: 'Valeria', value: 'second' }],\n  country: 'SK',\n  city: 'KE'\n};\n\ndescribe('Dropdown', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, formData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, formData);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      showReadOnly: true,\n      showToolBox: true,\n      addEditor: true,\n      handlers: {\n        syncCountries() {\n          return countries;\n        },\n        asyncCountries() {\n          return new Promise(resolve => {\n            setTimeout(() => {\n              resolve(countries);\n            }, 1500);\n          });\n        }\n      }\n    })\n  };\n});\n","import { JSONSchema } from '@tomino/dynamic-form';\n\nimport { create } from './form_query_data';\nimport { prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    name: {\n      type: 'string'\n    },\n    age: {\n      type: 'number',\n      minimum: 30\n    },\n    younger: {\n      type: 'string',\n      expression: `console.log(this); return this['age'] - 20`\n    },\n    older: {\n      type: 'string',\n      expression: `this['age'] + 10`\n    }\n  },\n  required: ['name']\n};\n\nconst formDefinition = create.grid({\n  props: {\n    columns: 4,\n    rows: 2\n  },\n  elements: [\n    {\n      control: 'Input',\n      props: {\n        row: 1,\n        column: 1,\n        width: 2,\n        inputLabel: 'Name',\n        label: 'Mimo',\n        value: { source: 'name' }\n      }\n    },\n    {\n      props: { row: 2, column: 1, width: 1, value: { source: 'age' }, label: 'Age: ' },\n      control: 'Input'\n    },\n    {\n      props: { row: 2, column: 3, width: 2, value: { source: 'younger' }, label: 'Younger:' },\n      control: 'Input'\n    }\n    // {\n    //   props: {\n    //     row: 1,\n    //     column: 3,\n    //     width: 2,\n    //     value: { source: 'older' },\n    //     label: 'Older',\n    //     inline: true\n    //   },\n    //   control: 'Input'\n    // }\n  ]\n});\n\nconst formData = {\n  name: 'Tomas',\n  age: 33\n};\n\ndescribe('Input', () => {\n  // it('renders tab menu', () => {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showStandard: true\n    })\n  };\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    name: {\n      type: 'string'\n    }\n  }\n};\n\nconst formDefinition: FormElement = {\n  control: 'Form',\n  elements: [\n    {\n      control: 'Menu',\n      props: {\n        inverted: true,\n        color: 'blue'\n      },\n      elements: []\n    },\n    {\n      control: 'Menu',\n      props: {\n        inverted: true,\n        color: 'red',\n        row: 1,\n        column: 1\n      },\n      elements: [\n        {\n          control: 'MenuItem',\n          props: { content: 'First', name: 'first', icon: 'doctor' }\n        },\n        {\n          control: 'MenuItem',\n          props: {}\n        },\n        {\n          control: 'MenuItem',\n          elements: [\n            {\n              control: 'Icon',\n              props: { name: 'circle' }\n            },\n            {\n              control: 'Text',\n              props: { text: 'Children' }\n            }\n          ]\n        }\n      ]\n    },\n    {\n      control: 'Text',\n      props: {\n        row: 2,\n        column: 1,\n        text: 'Pre-Selected'\n      }\n    },\n    {\n      control: 'Menu',\n      props: {\n        value: { source: 'name' },\n        inverted: true,\n        color: 'green',\n        row: 3,\n        column: 1\n      },\n      elements: [\n        {\n          control: 'MenuItem',\n          props: { content: 'First', name: 'first' }\n        },\n        {\n          control: 'MenuItem',\n          props: { content: 'Second', name: 'second' }\n        }\n      ]\n    }\n  ]\n};\n\nconst formData = {\n  name: 'second'\n};\n\ndescribe('Menu', () => {\n  describe('Standard', () => {\n    // it('renders correctly', () => {\n    //   const wrapper = renderer.create(component());\n    //   expect(wrapper).toMatchSnapshot();\n    // });\n\n    return {\n      component: prepareComponent(formDefinition, schema, formData, {\n        showReadOnly: false,\n        addEditor: true,\n        showOutline: true\n      })\n    };\n  });\n});\n","import { create } from './form_query_data';\nimport { JSONSchema } from '@tomino/dynamic-form';\nimport { prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    religion: {\n      type: 'string'\n    },\n    linedReligion: {\n      type: 'string'\n    },\n    religions: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          text: { type: 'string' },\n          value: { type: 'string' }\n        }\n      },\n      $enum: [\n        { text: 'Christian', value: 'CH' },\n        { text: 'Buddhist', value: 'BU' },\n        { text: 'Jedi', value: 'JE' }\n      ]\n    }\n  }\n};\n\nconst formData = {\n  religion: 'JE',\n  linedReligion: 'BU',\n  religions: [\n    { text: 'Christian', value: 'CH' },\n    { text: 'Buddhist', value: 'BU' },\n    { text: 'Jesus', value: 'JE' }\n  ]\n};\n\nconst formDefinition = create.stack({\n  elements: [\n    {\n      props: {\n        schemaSource: 'religions',\n        label: 'Religions',\n        value: { source: 'religion' },\n        inline: true\n      },\n      control: 'Radio'\n    },\n    {\n      props: {\n        vertical: true,\n        options: [\n          { text: 'Christian', value: 'CH' },\n          { text: 'Buddhist', value: 'BU' },\n          { text: 'Jehova', value: 'JE' }\n        ],\n        label: 'Religions',\n        value: { source: 'linedReligion' }\n      },\n      control: 'Radio'\n    },\n    {\n      props: {\n        options: { source: 'religions' },\n        label: 'Religions',\n        value: { source: 'religion' },\n        inline: true\n      },\n      control: 'Radio'\n    }\n  ]\n});\n\n// just another notation\ndescribe('Radio', () => {\n  // it('renders', function() {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showStandard: true\n    })\n  };\n});\n","import { create } from './form_query_data';\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    country: {\n      type: 'string'\n    },\n    selectedCountry: {\n      type: 'string'\n    }\n  }\n};\n\nconst options = [{ title: 'Australia', value: 'AUS' }, { title: 'Slovakia', value: 'SVK' }];\n\nconst controlledOptions = [\n  { titles: ['Australia', 'Sydney'], value: 'SYD' },\n  { titles: ['Australia', 'Melbourne'], value: 'SYD' },\n  { titles: ['New Zealand', 'Christchurch'], title: 'Kiwis', value: 'SYD' }\n];\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    create.formElement({\n      props: {\n        search: 'search',\n        searchName: 'findCountry',\n        label: 'Country',\n        value: { source: 'country' }\n      },\n      control: 'Search'\n    }),\n    create.formElement({\n      props: {\n        search: 'search',\n        searchName: 'Name',\n        label: 'Country',\n        value: { source: 'country' }\n      },\n      control: 'Search'\n    }),\n    create.formElement({\n      props: {\n        renderTemplate: `<table><tr><td width=\"100\">{0}<!--country--></td><td>{1}<!--city--></td></tr></table>`,\n        search: 'findCountryWithControl',\n        label: 'Country With Control',\n        value: { source: 'country' },\n        searchName: 'Name'\n      },\n\n      control: 'Search'\n    })\n    // create.formElement({\n    //   row: 0,\n    //   column: 12,\n    //   width: 4,\n    //   handler: 'findCountry',\n    //   control: 'Search',\n    //   label: 'Selected',\n    //   source: 'selectedCountry'\n    // })\n  ]\n});\n\nconst formData = { country: 'AUS' };\n\ndescribe('Search', function() {\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      handlers: {\n        search: ({ args: { lookup, value, searchByValue } }: any) => {\n          if (lookup === 'findCountry') {\n            return new Promise(resolve => {\n              setTimeout(() => {\n                resolve(\n                  options.filter(o =>\n                    searchByValue ? o.value === value : o.title.indexOf(value) >= 1\n                  )\n                );\n              }, 100);\n            });\n          } else {\n            return new Promise(resolve => {\n              setTimeout(() => {\n                resolve(\n                  controlledOptions.filter(o =>\n                    searchByValue ? o.value === value : o.titles[0].indexOf(value) >= 1\n                  )\n                );\n              }, 100);\n            });\n          }\n        },\n        findCountryWithControl: () => {\n          return new Promise(resolve => {\n            setTimeout(() => {\n              resolve(controlledOptions);\n            }, 100);\n          });\n        }\n      }\n    })\n  };\n});\n","import { create } from './form_query_data';\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    hide: {\n      type: 'boolean'\n    }\n  }\n};\n\nconst formDefinition: FormElement = create.stack({\n  props: {\n    gap: '12px',\n    layout: 'column'\n  },\n  elements: [\n    {\n      control: 'Text',\n      props: { value: 'Segments' }\n    },\n    {\n      control: 'LinkSelector',\n      props: { text: 'Hide', source: true, target: { source: 'hide' } }\n    },\n    {\n      control: 'LinkSelector',\n      props: { text: 'Show', source: false, target: { source: 'hide' } }\n    },\n    {\n      props: { attached: 'top', hidden: { source: 'hide' }, name: 'A' },\n      control: 'Segment',\n      elements: [\n        {\n          control: 'Text',\n          props: { value: 'SEGMENT A' }\n        }\n      ]\n    },\n    {\n      props: { attached: 'top', name: 'B' },\n      control: 'Segment',\n      elements: [\n        {\n          control: 'Text',\n          props: { value: 'SEGMENT B' }\n        }\n      ]\n    },\n    {\n      props: { color: 'blue', inverted: true },\n      control: 'Segment',\n      elements: []\n    }\n  ]\n});\n\nconst formData = {\n  description: 'Some Description',\n  hide: false\n};\n\ndescribe('Segment', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, formData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, formData);\n  });\n\n  return { component: prepareComponent(formDefinition, schema, formData, { addEditor: true }) };\n});\n","import { JSONSchema, FormElement, config } from '@tomino/dynamic-form';\n\nimport { create } from './form_query_data';\nimport { prepareComponent } from './common';\n\nconst date = new Date('2018-10-15T00:05:32.000Z');\nconst signatureSchema: JSONSchema = {\n  type: 'object',\n  properties: {\n    comment: {},\n    signature: {},\n    verifiedState: {},\n    rejected: {\n      type: 'boolean'\n    },\n    uid: {},\n    name: {},\n    date: {\n      type: 'string',\n      format: 'date-time'\n    }\n  }\n};\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    deanSignature: signatureSchema,\n    supervisorSignature: signatureSchema,\n    supervisorSignature2: signatureSchema,\n    supervisorSignature3: signatureSchema,\n    studentSignature: signatureSchema\n  }\n};\n\nconst signature =\n  'oiuoiu3o4uoi34u43o34kbkjh43jhbiu3y498734h34ln34oiu349873948u3ol4n3l4n3oi4j3o4u394879384yo3hj4oij34o3u94873984739843iou4hk3j4hio3uh4iu3y497834987349873984ho34ihj';\nconst formData = {\n  deanSignature: {\n    comment: 'All wrong',\n    date,\n    rejected: true,\n    name: 'Simeon Simoff'\n  },\n  supervisorSignature: {\n    date,\n    signature,\n    name: 'Alladin Hasan'\n  },\n  supervisorSignature2: {\n    date,\n    signature,\n    name: 'Alladin Hasan'\n  },\n  supervisorSignature3: {\n    date,\n    signature,\n    name: 'Alladin Hasan'\n  },\n  studentSignature: {}\n};\n\nconst formDefinition: FormElement = create.grid({\n  props: { rows: 4, columns: 3, gap: '24px' },\n  elements: [\n    {\n      control: 'Signature',\n      props: {\n        row: 1,\n        column: 1,\n        width: 1,\n        font: 'Pacifico',\n        allowComment: false,\n        label: 'Dean Signature',\n        value: { source: 'deanSignature' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 1,\n        column: 2,\n        width: 1,\n        font: 'Indie Flower',\n        allowComment: false,\n        label: 'Supervisor Signature',\n        value: { source: 'supervisorSignature' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 1,\n        column: 3,\n        width: 1,\n        font: 'Charm',\n        allowComment: false,\n        label: 'Student Signature',\n        value: { source: 'studentSignature' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 2,\n        column: 3,\n        width: 1,\n        font: 'Charm',\n        allowComment: true,\n        submit: true,\n        label: 'Student Signature',\n        value: { source: 'studentSignature' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 2,\n        column: 2,\n        width: 1,\n        font: 'Indie Flower',\n        allowComment: false,\n        label: 'Supervisor Signature',\n        value: { source: 'supervisorSignature2' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 3,\n        column: 2,\n        width: 1,\n        font: 'Indie Flower',\n        allowComment: false,\n        label: 'Supervisor Signature',\n        value: { source: 'supervisorSignature3' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 3,\n        column: 3,\n        width: 1,\n        font: 'Charm',\n        allowComment: false,\n        allowReject: true,\n        label: 'Student Signature',\n        value: { source: 'studentSignature' }\n      }\n    },\n    {\n      control: 'Signature',\n      props: {\n        row: 4,\n        column: 3,\n        width: 1,\n        font: 'Charm',\n        allowComment: true,\n        allowReject: true,\n        label: 'Student Signature',\n        value: { source: 'studentSignature' }\n      }\n    }\n  ]\n});\n\nconst results = ['Pending', 'Verified', 'Rejected'];\nlet ci = 0;\n\ndescribe('Signature', function() {\n  before(() => {\n    config.setDirty = mock.fake();\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      handlers: {\n        sign: () => {\n          return new Promise(resolve =>\n            setTimeout(() => {\n              resolve({\n                date,\n                signature,\n                name: 'Alladin Hasan',\n                verifiedState: 'Verified'\n              } as any);\n            }, 1000)\n          );\n        },\n        verifySignature: () => Promise.resolve(results[ci++ % 3]),\n        signatureFont: () => 'Pacifico',\n        validateForm: () => true\n      }\n    })\n  };\n});\n","import * as React from 'react';\n// import * as renderer from 'react-test-renderer';\n\nimport { create } from './form_query_data';\nimport { JSONSchema, FormModel, FormElement } from '@tomino/dynamic-form';\nimport { TestComponent, prepareComponent } from './common';\nimport { clone } from '@tomino/toolbelt';\n\ndescribe('Tabs', () => {\n  const formData = {\n    description: 'Some Description',\n    people: [\n      {\n        name: 'Tomas Trescak',\n        address: 'Sydney, Slovakia'\n      },\n      {\n        name: 'Valeria Toscani',\n        address: 'Sydney, Italy'\n      },\n      {\n        name: 'Vittoria Trescakova',\n        address: 'Sydney, Australia',\n        title: 'Princess'\n      }\n    ]\n  };\n\n  const schema: JSONSchema = {\n    type: 'object',\n    properties: {\n      people: {\n        type: 'array',\n        items: {\n          type: 'object',\n          properties: {\n            name: { type: 'string' },\n            address: { type: 'string' },\n            title: { type: 'string' }\n          }\n        }\n      }\n    },\n    required: ['name']\n  };\n\n  const formDefinition = create.stack({\n    props: {\n      editable: false\n    },\n    elements: [\n      {\n        control: 'Tabs',\n\n        props: {\n          value: { source: 'people' },\n          valueField: { value: 'name' },\n          textField: { value: 'name' }\n        },\n        elements: [\n          {\n            control: 'Grid',\n            props: {\n              rows: 1,\n              columns: 2,\n              gap: '24px'\n            },\n            elements: [\n              {\n                props: { row: 1, column: 1, value: { source: 'name' }, label: 'Name' },\n                control: 'Input'\n              },\n              {\n                props: { row: 1, column: 2, value: { source: 'address' }, label: 'Address' },\n                control: 'Input'\n              }\n            ]\n          }\n        ]\n      },\n      {\n        control: 'Tabs',\n        props: {},\n        elements: []\n      }\n    ]\n  });\n\n  describe('Tabular Items', () => {\n    let modified: FormElement = clone(formDefinition);\n    let menu = modified.elements[0].elements[0];\n    menu.props.value.source = undefined;\n    menu.props = {\n      menuItems: [\n        {\n          text: 'Tab A',\n          value: 'Tab A'\n        },\n        {\n          text: 'Tab B',\n          value: 'Tab B'\n        },\n        {\n          text: 'Tab C',\n          value: 'Tab C'\n        }\n      ]\n    };\n    menu.elements = [\n      { control: 'Text', props: { text: 'Content A' } },\n      { control: 'Text', props: { text: 'Content B' } }\n    ];\n\n    // it('renders tab menu', () => {\n    //   const wrapper = renderer.create(component());\n    //   expect(wrapper).toMatchSnapshot();\n    // });\n\n    return {\n      component: prepareComponent(modified, schema, formData, {\n        showReadOnly: false,\n        addEditor: true\n      })\n    };\n  });\n\n  describe('Tabular Bound', () => {\n    // it('renders tab menu', () => {\n    //   const wrapper = renderer.create(component());\n    //   expect(wrapper).toMatchSnapshot();\n    // });\n\n    return {\n      component: prepareComponent(formDefinition, schema, formData, {\n        addEditor: true,\n        showStandard: false\n      })\n    };\n  });\n\n  describe('Side Menu', () => {\n    function component() {\n      let modified: FormElement = clone(formDefinition);\n      let menu = modified.elements[0].elements[0];\n      menu.props = {\n        ...menu.props,\n        vertical: true,\n        secondary: true\n      };\n\n      const form = new FormModel(modified, schema, formData);\n\n      // just another notation\n      return <TestComponent form={form} />;\n    }\n\n    // it('renders tab menu', () => {\n    //   const wrapper = renderer.create(component());\n    //   expect(wrapper).toMatchSnapshot();\n    // });\n\n    return { component };\n  });\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\n\nimport { create } from './form_query_data';\nimport { prepareComponent, testStandard, testEditor } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    countries: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          id: {\n            type: 'string'\n          },\n          name: {\n            type: 'string'\n          },\n          capital: {\n            type: 'string'\n          }\n        },\n        required: ['name']\n      }\n    }\n  }\n};\n\nconst controlData = {\n  countries: [\n    { name: 'Slovakia', capital: 'Bratislava' },\n    { name: 'Australia', capital: 'Canberra' }\n  ]\n};\n\nconst formDefinition: FormElement = create.stack({\n  props: { final: true },\n  elements: [\n    {\n      props: {\n        items: [\n          { title: 'Name', source: 'name', type: 'string' },\n          { title: 'Capital', source: 'capital', type: 'string' }\n        ],\n        allowDelete: true,\n        allowEdit: true,\n        allowAdd: true,\n        value: { source: 'countries' }\n      },\n      control: 'Table',\n      elements: [\n        {\n          elements: []\n        },\n        {\n          elements: []\n        },\n        {\n          elements: []\n        }\n        // {},\n        // {\n        //   elements: [\n        //     {\n        //       control: 'Input',\n        //       source: 'name'\n        //     }\n        //   ]\n        // }\n        // {\n        //   control: 'Grid',\n        //   props: {\n        //     rows: 1,\n        //     columns: 3,\n        //     templateColumns: `1fr 1fr auto`,\n        //     templateColumnsReadOnly: `1fr 1fr`,\n        //     gap: '24px'\n        //   },\n        //   elements: [\n        //     create.formElement({\n        //       props: { column: 1 },\n        //       control: 'Input',\n        //       label: 'Name',\n        //       source: 'name'\n        //     }),\n        //     create.formElement({\n        //       props: { column: 2 },\n        //       control: 'Input',\n        //       label: 'Capital',\n        //       source: 'capital'\n        //     }),\n        //     create.formElement({\n        //       props: { column: 3 },\n        //       control: 'DeleteButton',\n        //       label: '\\xa0'\n        //     })\n        //   ]\n        // }\n      ]\n    }\n  ]\n});\n\ndescribe('Table', () => {\n  // function component() {\n  //   config.setDirty = () => console.log('Now it dirty');\n  //   const form = new FormModel(formDefinition, schema, controlData);\n\n  //   // just another notation\n  //   return (\n  //     <>\n  //       <TestComponent form={form} />\n\n  //       <div style={{ marginTop: '20px' }}>\n  //         <Button content=\"Undo\" onClick={() => undoManager.undo()} />\n  //         <Button content=\"Redo\" onClick={() => undoManager.redo()} />\n  //       </div>\n  //     </>\n  //   );\n  // }\n\n  // it('renders correctly', () => {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, controlData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, controlData);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, controlData, { addEditor: true })\n  };\n});\n","import { create } from './form_query_data';\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from './common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    description: {\n      type: 'string'\n    },\n    empty: {\n      type: 'string'\n    }\n  },\n  required: ['name']\n};\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      props: {\n        label: 'Description',\n        value: { source: 'description' }\n      },\n      control: 'Textarea'\n    },\n    {\n      control: 'Textarea',\n      props: {\n        placeholder: 'Render me!',\n        label: 'Description',\n        source: { value: 'empty' }\n      }\n    }\n  ]\n});\n\nconst formData = {\n  description: 'Some Description'\n};\n\ndescribe('Text Area', () => {\n  // it('renders tab menu', () => {\n  //   const wrapper = renderer.create(component());\n  //   expect(wrapper).toMatchSnapshot();\n  // });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showStandard: true\n    })\n  };\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\nimport { create } from '../../semantic/tests/form_query_data';\n\nconst schema: JSONSchema = {\n  type: 'object'\n};\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'ApolloProvider',\n      props: {\n        server: 'http://localhost:4000/graphql',\n        auth: false\n      },\n      elements: [\n        {\n          control: 'AuthItem',\n          elements: []\n        },\n        {\n          control: 'AuthItem',\n          elements: [\n            {\n              control: 'Text',\n              props: { text: 'Authorised' }\n            }\n          ]\n        },\n        {\n          control: 'AuthItem',\n          props: { roles: ['admin'] },\n          elements: [\n            {\n              control: 'Text',\n              props: { text: 'Admin Only' }\n            }\n          ]\n        }\n      ]\n    }\n  ]\n});\n\nconst formData = {};\n\ndescribe('Auth', () => {\n  return {\n    component: prepareComponent(formDefinition, schema, formData, { addEditor: true })\n  };\n});\n","import { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    value: {\n      type: 'boolean'\n    }\n  }\n};\n\nconst formDefintion: FormElement = {\n  control: 'Stack',\n  props: {\n    gap: '12px'\n  },\n  elements: [\n    {\n      control: 'If',\n      props: {\n        value: { source: 'value' },\n        exists: true\n      },\n      elements: [\n        {\n          control: 'Text',\n          props: { text: 'Is TRUE' }\n        },\n        {\n          control: 'Text',\n          props: { text: 'Is FALSE' }\n        }\n      ]\n    },\n    {\n      control: 'If',\n      props: {\n        value: { source: 'value' },\n        notExists: true\n      },\n      elements: [\n        {\n          control: 'Text',\n          props: { text: 'Is TRUE' }\n        },\n        {\n          control: 'Text',\n          props: { text: 'Is FALSE' }\n        }\n      ]\n    }\n  ]\n};\n\ndescribe('If', () => {\n  // it('renders correctly', () => {\n  //   const comp = renderer.create(component());\n  //   expect(comp).toMatchSnapshot();\n  // });\n\n  return {\n    component: prepareComponent(\n      formDefintion,\n      schema,\n      { value: true },\n      {\n        addEditor: true,\n        showReadOnly: false\n      }\n    )\n  };\n});\n","","import { create } from '../../semantic/tests/form_query_data';\nimport { JSONSchema, FormElement } from '@tomino/dynamic-form';\nimport { prepareComponent } from '../../semantic/tests/common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    countries: {\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: {\n          id: {\n            type: 'string'\n          },\n          name: {\n            type: 'string'\n          },\n          capital: {\n            type: 'string'\n          }\n        }\n      }\n    }\n  }\n};\n\nconst controlData = {\n  countries: [\n    { name: 'Slovakia', capital: 'Bratislava' },\n    { name: 'Australia', capital: 'Canberra' }\n  ]\n};\n\nconst editorTemplate: FormElement = {\n  control: 'Grid',\n  props: {\n    rows: 1,\n    templateColumns: `1fr 1fr auto`,\n    templateColumnsReadOnly: `1fr 1fr`,\n    gap: '24px'\n  },\n  elements: [\n    {\n      props: { row: 1, column: 1, value: { source: 'name' }, label: 'Name' },\n      control: 'Input'\n    },\n    {\n      props: { row: 1, column: 2, value: { source: 'capital' }, label: 'Capital' },\n      control: 'Input'\n    },\n    {\n      props: { row: 1, column: 3, onClick: 'deleteRow' },\n      control: 'Button'\n    }\n  ]\n};\n\nconst addTemplate: FormElement = {\n  control: 'Grid',\n  props: {\n    rows: 1,\n    templateColumns: `1fr auto`,\n    templateColumnsReadOnly: `1fr 1fr`,\n    gap: '24px'\n  },\n  elements: [\n    {\n      props: {\n        row: 1,\n        column: 1,\n        placeholder: { value: 'Add row' },\n        value: { source: 'name' },\n        label: 'Name'\n      },\n      control: 'Input'\n    },\n    {\n      props: {\n        row: 1,\n        column: 2,\n        content: { value: 'Add' },\n\n        formAlign: true,\n        color: { value: 'blue' },\n        onClick: 'addRow'\n      },\n      control: 'Button'\n    }\n  ]\n};\n\nconst viewTemplate: FormElement = {\n  control: 'Grid',\n  props: {\n    rows: 1,\n    templateColumns: `1fr 1fr auto`,\n    gap: '24px'\n  },\n  elements: [\n    {\n      props: { row: 1, column: 1, value: { source: 'name' }, label: 'Name' },\n      control: 'Value'\n    },\n    {\n      props: { row: 1, column: 2, value: { source: 'capital' }, label: 'Capital' },\n      control: 'Value'\n    },\n    {\n      props: { row: 1, column: 3, content: { value: 'Edit' }, onClick: 'editRow' },\n      control: 'Button'\n    }\n  ]\n};\n\nconst formDefinition: FormElement = create.stack({\n  elements: [\n    {\n      control: 'Text',\n      props: { text: 'Unbound', css: 'font-size: 18px; font-weight: bold; background-color: #ccc;' }\n    },\n    {\n      control: 'Repeater',\n      elements: []\n    },\n    {\n      control: 'Text',\n      props: { text: 'Full', css: 'font-size: 18px; font-weight: bold; background-color: #ccc;' }\n    },\n    {\n      props: { allowEdit: true, allowAdd: true, value: { source: 'countries' } },\n      control: 'Repeater',\n      elements: [viewTemplate, editorTemplate, addTemplate]\n    },\n    {\n      control: 'Text',\n      props: {\n        text: 'Editor And View',\n        css: 'font-size: 18px; font-weight: bold; background-color: #ccc;'\n      }\n    },\n    {\n      control: 'Repeater',\n      props: { allowEdit: true, allowAdd: false, value: { source: 'countries' } },\n      elements: [viewTemplate, editorTemplate]\n    },\n    {\n      control: 'Text',\n      props: {\n        text: 'View Only',\n        css: 'font-size: 18px; font-weight: bold; background-color: #ccc;'\n      }\n    },\n    {\n      control: 'Repeater',\n      props: { value: { source: 'countries' } },\n      elements: [viewTemplate]\n    }\n  ]\n});\n\ndescribe('Repeater', () => {\n  // it('renders correctly', () => {\n  //   const comp = renderer.create(component());\n  //   expect(comp).toMatchSnapshot();\n  // });\n\n  return {\n    component: prepareComponent(formDefinition, schema, controlData, {\n      addEditor: true,\n      showStandard: true,\n      showReadOnly: false\n    })\n  };\n\n  // it('changes value and all related formulas', () => {\n  //   // const wrapper = renderer.create(data.component);\n  //   // const root = component.root;\n  //   // const agree = root.findByProps({ name: 'agree' });\n  //   // agree.props.onChange(null, { value: false });\n  //   // const disagree = root.findByProps({ name: 'disagree' });\n  //   // disagree.props.onChange(null, { value: true });\n  //   // expect(wrapper).toMatchSnapshot();\n  // });\n});\n","import { create } from '../../semantic/tests/form_query_data';\nimport { JSONSchema } from '@tomino/dynamic-form';\nimport { prepareComponent, testStandard, testEditor } from '../../semantic/tests/common';\n\nconst schema: JSONSchema = {\n  type: 'object',\n  properties: {\n    mother: {\n      type: 'string'\n    },\n    father: {\n      type: 'string'\n    },\n    child: {\n      type: 'string'\n    }\n  },\n  definitions: {\n    person: {\n      type: 'object',\n      properties: {\n        uid: { type: 'string' },\n        name: { type: 'string' }\n      }\n    }\n  }\n};\n\nconst formDefinition = create.grid({\n  props: {\n    rows: 3,\n    columns: 4\n  },\n  elements: [\n    {\n      props: {\n        text: 'Hello ${mother}',\n        url: 'https://www.google.com',\n        row: 1,\n        column: 1,\n        width: 1\n      },\n      control: 'Link'\n    },\n    {\n      props: { row: 1, column: 2, width: 1, value: { source: 'child' } },\n      control: 'Text'\n    },\n    {\n      props: {\n        row: 1,\n        column: 3,\n        width: 1,\n        source: { source: 'mother' },\n        target: { source: 'child' },\n        text: 'Make Mother'\n      },\n      control: 'LinkSelector'\n    },\n    {\n      props: {\n        row: 1,\n        column: 4,\n        width: 1,\n        target: { source: 'child' },\n        source: { source: 'father' },\n        text: 'Make Father'\n      },\n      control: 'LinkSelector'\n    },\n    {\n      props: { row: 3, column: 1, width: 1, value: 'Yah!' },\n      control: 'Text'\n    },\n    {\n      props: {\n        row: 2,\n        column: 2,\n        width: 2,\n        height: 2,\n        imageWidth: { value: '300px' },\n        imageHeight: { value: '40px' },\n        src: { value: 'https://d20xd7mbt7xiju.cloudfront.net/test/wsu/WSU_logo.jpg' }\n      },\n      control: 'Image'\n    },\n    {\n      props: { row: 2, column: 1, width: 1, value: 'TOMAS' },\n      control: 'Text'\n    },\n    {\n      props: {\n        row: 2,\n        column: 4,\n        width: 1,\n        text: 'WSU ${father}',\n        imageWidth: '300px',\n        imageHeight: '40px',\n        url: 'https://www.westernsydney.edu.au'\n      },\n      control: 'Link'\n    }\n  ]\n});\n\nconst formData = {\n  father: 'Tomas',\n  mother: 'Valeria',\n  child: 'Momo'\n};\n\ndescribe('Texts', () => {\n  it('renders standard', () => {\n    testStandard(formDefinition, schema, formData);\n  });\n\n  it('renders editor', () => {\n    testEditor(formDefinition, schema, formData);\n  });\n\n  return {\n    component: prepareComponent(formDefinition, schema, formData, {\n      addEditor: true,\n      showReadOnly: false,\n      showStandard: false,\n      showProperties: false,\n      showToolBox: false\n    })\n  };\n});\n"]}