{"version":3,"file":"index.cjs","sources":["../src/components/Modal.js","../src/components/EmbedModal.js","../src/components/autocompletion/VariablesFacet.js","../src/components/autocompletion/index.js","../src/components/JSONEditor.js","../src/components/Section.js","../src/components/PlaygroundRoot.js","../src/Playground.js"],"sourcesContent":["import { useEffect } from 'preact/hooks';\n\nexport function Modal(props) {\n  useEffect(() => {\n    function handleKey(event) {\n      if (event.key === 'Escape') {\n        event.stopPropagation();\n\n        props.onClose();\n      }\n    }\n\n    document.addEventListener('keydown', handleKey);\n\n    return () => {\n      document.removeEventListener('keydown', handleKey);\n    };\n  });\n\n  return (\n    <div class=\"fjs-pgl-modal\">\n      <div class=\"fjs-pgl-modal-backdrop\" onClick={props.onClose}></div>\n      <div class=\"fjs-pgl-modal-content\">\n        <h1 class=\"fjs-pgl-modal-header\">{props.name}</h1>\n        <div class=\"fjs-pgl-modal-body\">{props.children}</div>\n        <div class=\"fjs-pgl-modal-footer\">\n          <button type=\"button\" class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={props.onClose}>\n            Close\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nimport { Modal } from './Modal';\n\nexport function EmbedModal(props) {\n  const schema = serializeValue(props.schema);\n  const data = serializeValue(props.data || {});\n\n  const fieldRef = useRef();\n\n  const snippet = `<!-- styles needed for rendering -->\n<link rel=\"stylesheet\" href=\"https://unpkg.com/@bpmn-io/form-js@0.2.4/dist/assets/form-js.css\">\n\n<!-- container to render the form into -->\n<div class=\"fjs-pgl-form-container\"></div>\n\n<!-- scripts needed for embedding -->\n<script src=\"https://unpkg.com/@bpmn-io/form-js@0.2.4/dist/form-viewer.umd.js\"></script>\n\n<!-- actual script to instantiate the form and load form schema + data -->\n<script>\n  const data = JSON.parse(${data});\n  const schema = JSON.parse(${schema});\n\n  const form = new FormViewer.Form({\n    container: document.querySelector(\".fjs-pgl-form-container\")\n  });\n\n  form.on(\"submit\", (event) => {\n    console.log(event.data, event.errors);\n  });\n\n  form.importSchema(schema, data).catch(err => {\n    console.error(\"Failed to render form\", err);\n  });\n</script>\n  `.trim();\n\n  useEffect(() => {\n    fieldRef.current.select();\n  });\n\n  return (\n    <Modal name=\"Embed form\" onClose={props.onClose}>\n      <p>\n        Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:\n      </p>\n\n      <textarea spellCheck=\"false\" ref={fieldRef}>\n        {snippet}\n      </textarea>\n    </Modal>\n  );\n}\n\n// helpers ///////////\n\nfunction serializeValue(obj) {\n  return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","import { Facet } from '@codemirror/state';\n\n/**\n * @type {Facet<import('..').Variables>} Variables\n */\nexport const variablesFacet = Facet.define();\n","import { autocompletion } from '@codemirror/autocomplete';\nimport { variablesFacet } from './VariablesFacet';\n\nimport { syntaxTree } from '@codemirror/language';\n\nexport function autocompletionExtension() {\n  return [\n    autocompletion({\n      override: [completions],\n    }),\n  ];\n}\n\n/**\n * @param {import('@codemirror/autocomplete').CompletionContext} context\n */\nfunction completions(context) {\n  const variables = context.state.facet(variablesFacet)[0];\n  /** @type {import('@codemirror/autocomplete').Completion[]} */\n  const objectOptions = variables.map((label) => ({\n    displayLabel: `\"${label}\"`,\n    label: `\"${label}\": `,\n    type: 'variable',\n    apply: (view, completion, from, to) => {\n      const doc = view.state.doc;\n      const beforeChar = doc.sliceString(from - 1, from);\n      const line = doc.lineAt(from);\n      const indentation = /^\\s*/.exec(line.text)[0];\n      const baseInsert = completion.label;\n\n      if (beforeChar === '{') {\n        const insert = `\\n  ${indentation}${baseInsert},\\n`;\n        view.dispatch({\n          changes: {\n            from,\n            to,\n            insert,\n          },\n          selection: {\n            anchor: from + insert.length - 2,\n          },\n        });\n      } else if (beforeChar === ',') {\n        const insert = `\\n${indentation}${baseInsert},`;\n        view.dispatch({\n          changes: {\n            from,\n            to,\n            insert,\n          },\n          selection: {\n            anchor: from + insert.length - 1,\n          },\n        });\n      } else {\n        const insert = `${baseInsert},`;\n        view.dispatch({\n          changes: {\n            from,\n            to,\n            insert,\n          },\n          selection: {\n            anchor: from + insert.length - 1,\n          },\n        });\n      }\n    },\n  }));\n  /** @type {import('@codemirror/autocomplete').Completion[]} */\n  const propertyNameOptions = variables.map((label) => ({\n    label,\n    type: 'variable',\n  }));\n  /** @type {import('@codemirror/autocomplete').Completion[]} */\n  const propertyValueOptions = [\n    {\n      label: 'true',\n      type: 'constant keyword',\n      boost: 3,\n    },\n    {\n      label: 'false',\n      type: 'constant keyword',\n      boost: 2,\n    },\n    {\n      label: 'null',\n      type: 'constant keyword',\n      boost: 1,\n    },\n    {\n      displayLabel: '[ .. ]',\n      label: '[  ]',\n      apply: (view, completion, from, to) => {\n        view.dispatch({\n          changes: { from, to, insert: completion.label },\n          selection: { anchor: from + 2 },\n        });\n      },\n    },\n    {\n      displayLabel: '{ .. }',\n      label: '{  }',\n      apply: (view, completion, from, to) => {\n        view.dispatch({\n          changes: { from, to, insert: completion.label },\n          selection: { anchor: from + 2 },\n        });\n      },\n    },\n  ];\n  let finalOptions = [];\n  let nodeBefore = syntaxTree(context.state).resolve(context.pos, -1);\n  let word = context.matchBefore(/\\w*/);\n\n  if (['Object', '{'].includes(nodeBefore.type.name)) {\n    finalOptions = objectOptions;\n  }\n\n  if (nodeBefore.type.name === ',' && nodeBefore.parent?.type.name === 'Object') {\n    finalOptions = objectOptions;\n  }\n\n  if (nodeBefore.type.name === 'PropertyName') {\n    context.explicit = true;\n    finalOptions = propertyNameOptions;\n  }\n\n  if (['Property', '[', 'Array'].includes(nodeBefore.type.name)) {\n    finalOptions = propertyValueOptions;\n  }\n\n  if (nodeBefore.type.name === ':' && nodeBefore.parent?.type.name === 'Property') {\n    finalOptions = propertyValueOptions;\n  }\n\n  if (word.from == word.to && !context.explicit) {\n    return null;\n  }\n\n  return {\n    from: word.from,\n    options: finalOptions,\n  };\n}\n","import mitt from 'mitt';\nimport { basicSetup } from 'codemirror';\nimport { EditorView, keymap, placeholder } from '@codemirror/view';\nimport { EditorState, Compartment } from '@codemirror/state';\nimport { lintGutter, linter } from '@codemirror/lint';\nimport { json, jsonParseLinter } from '@codemirror/lang-json';\nimport { indentWithTab } from '@codemirror/commands';\nimport { autocompletionExtension } from './autocompletion/index';\nimport { variablesFacet } from './autocompletion/VariablesFacet';\nimport { classes as domClasses } from 'min-dom';\n\nconst NO_LINT_CLS = 'fjs-cm-no-lint';\n\n/**\n * @param {object} options\n * @param {boolean} [options.readonly]\n * @param {object} [options.contentAttributes]\n * @param {string | HTMLElement} [options.placeholder]\n */\nexport function JSONEditor(options = {}) {\n  const { contentAttributes = {}, placeholder: editorPlaceholder, readonly = false } = options;\n  const emitter = mitt();\n\n  const languageCompartment = new Compartment().of(json());\n  const tabSizeCompartment = new Compartment().of(EditorState.tabSize.of(2));\n  const autocompletionConfCompartment = new Compartment();\n  const placeholderLinterExtension = createPlaceholderLinterExtension();\n\n  let container = null;\n\n  function createState(doc, variables = []) {\n    const extensions = [\n      basicSetup,\n      languageCompartment,\n      tabSizeCompartment,\n      lintGutter(),\n      linter(jsonParseLinter()),\n      placeholderLinterExtension,\n      autocompletionConfCompartment.of(variablesFacet.of(variables)),\n      autocompletionExtension(),\n      keymap.of([indentWithTab]),\n      editorPlaceholder ? placeholder(editorPlaceholder) : [],\n      EditorState.readOnly.of(readonly),\n      EditorView.updateListener.of((update) => {\n        if (update.docChanged) {\n          emitter.emit('changed', { value: update.state.doc.toString() });\n        }\n      }),\n      EditorView.contentAttributes.of(contentAttributes),\n    ];\n\n    return EditorState.create({ doc, extensions });\n  }\n\n  const view = new EditorView({\n    state: createState(''),\n  });\n\n  this.setValue = function (newValue) {\n    const oldValue = view.state.doc.toString();\n\n    const diff = findDiff(oldValue, newValue);\n\n    if (diff) {\n      view.dispatch({\n        changes: { from: diff.start, to: diff.end, insert: diff.text },\n        selection: { anchor: diff.start + diff.text.length },\n      });\n    }\n  };\n\n  this.getValue = function () {\n    return view.state.doc.toString();\n  };\n\n  this.setVariables = function (variables) {\n    view.dispatch({ effects: autocompletionConfCompartment.reconfigure(variablesFacet.of(variables)) });\n  };\n\n  this.getView = function () {\n    return view;\n  };\n\n  this.on = emitter.on;\n  this.off = emitter.off;\n  this.emit = emitter.emit;\n\n  this.attachTo = function (_container) {\n    container = _container;\n    container.appendChild(view.dom);\n    domClasses(container, document.body).add('fjs-json-editor');\n  };\n\n  this.destroy = function () {\n    if (container && view.dom) {\n      container.removeChild(view.dom);\n      domClasses(container, document.body).remove('fjs-json-editor');\n    }\n    view.destroy();\n  };\n\n  function createPlaceholderLinterExtension() {\n    return linter((view) => {\n      if (!container) {\n        return [];\n      }\n\n      const placeholders = view.dom.querySelectorAll('.cm-placeholder');\n      if (placeholders.length > 0) {\n        domClasses(container, document.body).add(NO_LINT_CLS);\n      } else {\n        domClasses(container, document.body).remove(NO_LINT_CLS);\n      }\n      return [];\n    });\n  }\n}\n\nfunction findDiff(oldStr, newStr) {\n  if (oldStr === newStr) {\n    return null;\n  }\n\n  oldStr = oldStr || '';\n  newStr = newStr || '';\n\n  let minLength = Math.min(oldStr.length, newStr.length);\n  let start = 0;\n\n  while (start < minLength && oldStr[start] === newStr[start]) {\n    start++;\n  }\n\n  if (start === minLength) {\n    return {\n      start: start,\n      text: newStr.slice(start),\n      end: oldStr.length,\n    };\n  }\n\n  let endOld = oldStr.length;\n  let endNew = newStr.length;\n\n  while (endOld > start && endNew > start && oldStr[endOld - 1] === newStr[endNew - 1]) {\n    endOld--;\n    endNew--;\n  }\n\n  return {\n    start: start,\n    text: newStr.slice(start, endNew),\n    end: endOld,\n  };\n}\n","export function Section(props) {\n  const elements = Array.isArray(props.children) ? props.children : [props.children];\n\n  const { headerItems, children } = elements.reduce(\n    (_, child) => {\n      const bucket = child.type === Section.HeaderItem ? _.headerItems : _.children;\n\n      bucket.push(child);\n\n      return _;\n    },\n    { headerItems: [], children: [] },\n  );\n\n  return (\n    <div class=\"fjs-pgl-section\">\n      <h1 class=\"header\">\n        {props.name} {headerItems.length ? <span class=\"header-items\">{headerItems}</span> : null}\n      </h1>\n      <div class=\"body\">{children}</div>\n    </div>\n  );\n}\n\nSection.HeaderItem = function (props) {\n  return props.children;\n};\n","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\nimport { isFunction } from 'min-dash';\nimport download from 'downloadjs';\n\nimport classNames from 'classnames';\n\nimport { Form, getSchemaVariables } from '@bpmn-io/form-js-viewer';\n\nimport { FormEditor } from '@bpmn-io/form-js-editor';\n\nimport { EmbedModal } from './EmbedModal';\nimport { JSONEditor } from './JSONEditor';\nimport { Section } from './Section';\n\nimport './FileDrop.css';\nimport './PlaygroundRoot.css';\n\nexport function PlaygroundRoot(config) {\n  const {\n    additionalModules, // goes into both editor + viewer\n    actions: actionsConfig,\n    emit,\n    exporter: exporterConfig,\n    viewerProperties,\n    editorProperties,\n    viewerAdditionalModules,\n    editorAdditionalModules,\n    editorSlots,\n    propertiesPanel: propertiesPanelConfig,\n    apiLinkTarget,\n    onInit,\n  } = config;\n\n  const { display: displayActions = true } = actionsConfig || {};\n\n  const editorContainerRef = useRef();\n  const paletteContainerRef = useRef();\n  const propertiesPanelContainerRef = useRef();\n  const viewerContainerRef = useRef();\n  const inputDataContainerRef = useRef();\n  const outputDataContainerRef = useRef();\n\n  const formEditorRef = useRef();\n  const formViewerRef = useRef();\n  const inputDataRef = useRef();\n  const outputDataRef = useRef();\n\n  const [showEmbed, setShowEmbed] = useState(false);\n  const [schema, setSchema] = useState();\n  const [data, setData] = useState();\n\n  const load = useCallback((schema, data) => {\n    formEditorRef.current.importSchema(schema, data);\n    inputDataRef.current.setValue(toString(data));\n    setData(data);\n  }, []);\n\n  // initialize and link the editors\n  useEffect(() => {\n    const inputDataEditor = (inputDataRef.current = new JSONEditor({\n      contentAttributes: { 'aria-label': 'Form Input', tabIndex: 0 },\n      placeholder: createDataEditorPlaceholder(),\n    }));\n\n    const outputDataEditor = (outputDataRef.current = new JSONEditor({\n      readonly: true,\n      contentAttributes: { 'aria-label': 'Form Output', tabIndex: 0 },\n    }));\n\n    const formViewer = (formViewerRef.current = new Form({\n      container: viewerContainerRef.current,\n      additionalModules: [...(additionalModules || []), ...(viewerAdditionalModules || [])],\n      properties: {\n        ...(viewerProperties || {}),\n        ariaLabel: 'Form Preview',\n      },\n    }));\n\n    const formEditor = (formEditorRef.current = new FormEditor({\n      container: editorContainerRef.current,\n      renderer: {\n        compact: true,\n      },\n      palette: {\n        parent: paletteContainerRef.current,\n      },\n      propertiesPanel: {\n        parent: propertiesPanelContainerRef.current,\n        ...(propertiesPanelConfig || {}),\n      },\n      exporter: exporterConfig,\n      properties: {\n        ...(editorProperties || {}),\n        ariaLabel: 'Form Definition',\n      },\n      additionalModules: [...(additionalModules || []), ...(editorAdditionalModules || [])],\n      ...(editorSlots ? { slots: editorSlots } : {}),\n    }));\n\n    formEditor.on('formField.add', ({ formField }) => {\n      const formFields = formEditor.get('formFields');\n      const { config } = formFields.get(formField.type);\n      const { generateInitialDemoData } = config;\n      const { id } = formField;\n\n      if (!isFunction(generateInitialDemoData)) {\n        return;\n      }\n\n      const initialDemoData = generateInitialDemoData(formField);\n\n      if ([initialDemoData, id].includes(undefined)) {\n        return;\n      }\n\n      setData((currentData) => {\n        const newData = {\n          ...currentData,\n          [id]: initialDemoData,\n        };\n\n        inputDataRef.current.setValue(toString(newData));\n\n        return newData;\n      });\n    });\n\n    formEditor.on('changed', () => {\n      setSchema(formEditor.getSchema());\n    });\n\n    formEditor.on('formEditor.rendered', () => {\n      // notify interested parties after render\n      emit('formPlayground.rendered');\n    });\n\n    const updateOutputData = () => {\n      const submitData = formViewer._getSubmitData();\n      outputDataEditor.setValue(toString(submitData));\n    };\n\n    // pipe viewer changes to output data editor\n    formViewer.on('changed', updateOutputData);\n    formViewer.on('formFieldInstance.added', updateOutputData);\n    formViewer.on('formFieldInstance.removed', updateOutputData);\n\n    inputDataEditor.on('changed', (event) => {\n      try {\n        setData(JSON.parse(event.value));\n      } catch (error) {\n        // notify interested about input data error\n        emit('formPlayground.inputDataError', error);\n      }\n    });\n\n    inputDataEditor.attachTo(inputDataContainerRef.current);\n    outputDataEditor.attachTo(outputDataContainerRef.current);\n\n    return () => {\n      inputDataEditor.destroy();\n      outputDataEditor.destroy();\n      formViewer.destroy();\n      formEditor.destroy();\n    };\n  }, [\n    additionalModules,\n    editorAdditionalModules,\n    editorProperties,\n    editorSlots,\n    emit,\n    exporterConfig,\n    propertiesPanelConfig,\n    viewerAdditionalModules,\n    viewerProperties,\n  ]);\n\n  // initialize data through props\n  useEffect(() => {\n    if (!config.initialSchema) {\n      return;\n    }\n\n    load(config.initialSchema, config.initialData || {});\n  }, [config.initialSchema, config.initialData, load]);\n\n  useEffect(() => {\n    schema && formViewerRef.current.importSchema(schema, data);\n  }, [schema, data]);\n\n  useEffect(() => {\n    if (schema && inputDataContainerRef.current) {\n      const variables = getSchemaVariables(schema);\n      inputDataRef.current.setVariables(variables);\n    }\n  }, [schema]);\n\n  // exposes api to parent\n  useEffect(() => {\n    if (!apiLinkTarget) {\n      return;\n    }\n\n    apiLinkTarget.api = {\n      attachDataContainer: (node) => inputDataRef.current.attachTo(node),\n      attachResultContainer: (node) => outputDataRef.current.attachTo(node),\n      attachFormContainer: (node) => formViewerRef.current.attachTo(node),\n      attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\n      attachPaletteContainer: (node) => formEditorRef.current.get('palette').attachTo(node),\n      attachPropertiesPanelContainer: (node) => formEditorRef.current.get('propertiesPanel').attachTo(node),\n      get: (name, strict) => formEditorRef.current.get(name, strict),\n      getDataEditor: () => inputDataRef.current,\n      getEditor: () => formEditorRef.current,\n      getForm: () => formViewerRef.current,\n      getResultView: () => outputDataRef.current,\n      getSchema: () => formEditorRef.current.getSchema(),\n      saveSchema: () => formEditorRef.current.saveSchema(),\n      setSchema: (newSchema) => {\n        return formEditorRef.current.importSchema(newSchema);\n      },\n      setData: setData,\n    };\n\n    onInit();\n  }, [apiLinkTarget, onInit]);\n\n  // separate effect for state to avoid re-creating the api object every time\n  useEffect(() => {\n    if (!apiLinkTarget) {\n      return;\n    }\n\n    apiLinkTarget.api.getState = () => ({ schema, data });\n    apiLinkTarget.api.load = load;\n  }, [apiLinkTarget, schema, data, load]);\n\n  const handleDownload = useCallback(() => {\n    download(JSON.stringify(schema, null, '  '), 'form.json', 'text/json');\n  }, [schema]);\n\n  const hideEmbedModal = useCallback(() => {\n    setShowEmbed(false);\n  }, []);\n\n  const showEmbedModal = useCallback(() => {\n    setShowEmbed(true);\n  }, []);\n\n  return (\n    <div class={classNames('fjs-container', 'fjs-pgl-root')}>\n      <div class=\"fjs-pgl-modals\">\n        {showEmbed ? <EmbedModal schema={schema} data={data} onClose={hideEmbedModal} /> : null}\n      </div>\n      <div class=\"fjs-pgl-palette-container\" ref={paletteContainerRef} />\n      <div class=\"fjs-pgl-main\">\n        <Section name=\"Form Definition\">\n          {displayActions && (\n            <Section.HeaderItem>\n              <button type=\"button\" class=\"fjs-pgl-button\" title=\"Download form definition\" onClick={handleDownload}>\n                Download\n              </button>\n            </Section.HeaderItem>\n          )}\n\n          {displayActions && (\n            <Section.HeaderItem>\n              <button type=\"button\" class=\"fjs-pgl-button\" onClick={showEmbedModal}>\n                Embed\n              </button>\n            </Section.HeaderItem>\n          )}\n\n          <div ref={editorContainerRef} class=\"fjs-pgl-form-container\"></div>\n        </Section>\n        <Section name=\"Form Preview\">\n          <div ref={viewerContainerRef} class=\"fjs-pgl-form-container\"></div>\n        </Section>\n        <Section name=\"Form Input\">\n          <div ref={inputDataContainerRef} class=\"fjs-pgl-text-container\"></div>\n        </Section>\n        <Section name=\"Form Output\">\n          <div ref={outputDataContainerRef} class=\"fjs-pgl-text-container\"></div>\n        </Section>\n      </div>\n      <div class=\"fjs-pgl-properties-container\" ref={propertiesPanelContainerRef} />\n    </div>\n  );\n}\n\n// helpers ///////////////\n\nfunction toString(obj) {\n  return JSON.stringify(obj, null, '  ');\n}\n\nfunction createDataEditorPlaceholder() {\n  const element = document.createElement('p');\n\n  element.innerHTML =\n    'Use this panel to simulate the form input, such as process variables.\\nThis helps to test the form by populating the preview.\\n\\n' +\n    'Follow the JSON format like this:\\n\\n' +\n    '{\\n  \"variable\": \"value\"\\n}';\n\n  return element;\n}\n","import { render } from 'preact';\n\nimport fileDrop from 'file-drops';\n\nimport mitt from 'mitt';\n\nimport { PlaygroundRoot } from './components/PlaygroundRoot';\n\n/**\n * @typedef { import('@bpmn-io/form-js-viewer/dist/types/types').FormProperties } FormProperties\n * @typedef { import('@bpmn-io/form-js-editor/dist/types/types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n *  actions?: { display: Boolean }\n *  additionalModules?: Array<any>\n *  container?: Element\n *  data: any\n *  editor?: { inlinePropertiesPanel: Boolean }\n *  editorAdditionalModules?: Array<any>\n *  editorProperties?: FormEditorProperties\n *  editorSlots?: Object\n *  exporter?: { name: String, version: String }\n *  propertiesPanel?: { parent: Element, feelPopupContainer: Element }\n *  schema: any\n *  viewerAdditionalModules?: Array<any>\n *  viewerProperties?: FormProperties\n * } } FormPlaygroundOptions\n */\n\n/**\n * @param {FormPlaygroundOptions} options\n */\nfunction Playground(options) {\n  const { container: parent, schema: initialSchema, data: initialData, ...rest } = options;\n\n  const emitter = mitt();\n\n  const container = document.createElement('div');\n\n  container.classList.add('fjs-pgl-parent');\n\n  if (parent) {\n    parent.appendChild(container);\n  }\n\n  const handleDrop = fileDrop('Drop a form file', function (files) {\n    const file = files[0];\n\n    if (file) {\n      try {\n        this.api.setSchema(JSON.parse(file.contents));\n      } catch (err) {\n        // TODO(nikku): indicate JSON parse error\n      }\n    }\n  });\n\n  const safe = function (fn) {\n    return function (...args) {\n      if (!this.api) {\n        throw new Error('Playground is not initialized.');\n      }\n\n      return fn(...args);\n    };\n  };\n\n  const onInit = function () {\n    emitter.emit('formPlayground.init');\n  };\n\n  container.addEventListener('dragover', handleDrop);\n\n  render(\n    <PlaygroundRoot\n      initialSchema={initialSchema}\n      initialData={initialData}\n      emit={emitter.emit}\n      apiLinkTarget={this}\n      onInit={onInit}\n      {...rest}\n    />,\n    container,\n  );\n\n  this.on = emitter.on;\n  this.off = emitter.off;\n\n  this.emit = emitter.emit;\n\n  this.on('destroy', () => {\n    render(null, container);\n    parent.removeChild(container);\n  });\n\n  this.destroy = () => this.emit('destroy');\n\n  this.getState = safe(() => this.api.getState());\n\n  this.getSchema = safe(() => this.api.getSchema());\n\n  this.setSchema = safe((schema) => this.api.setSchema(schema));\n\n  this.saveSchema = safe(() => this.api.saveSchema());\n\n  this.get = safe((name, strict) => this.api.get(name, strict));\n\n  this.getDataEditor = safe(() => this.api.getDataEditor());\n\n  this.getEditor = safe(() => this.api.getEditor());\n\n  this.getForm = safe((name, strict) => this.api.getForm(name, strict));\n\n  this.getResultView = safe(() => this.api.getResultView());\n\n  this.attachEditorContainer = safe((node) => this.api.attachEditorContainer(node));\n\n  this.attachPreviewContainer = safe((node) => this.api.attachFormContainer(node));\n\n  this.attachDataContainer = safe((node) => this.api.attachDataContainer(node));\n\n  this.attachResultContainer = safe((node) => this.api.attachResultContainer(node));\n\n  this.attachPaletteContainer = safe((node) => this.api.attachPaletteContainer(node));\n\n  this.attachPropertiesPanelContainer = safe((node) => this.api.attachPropertiesPanelContainer(node));\n}\n\nexport { Playground };\n"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","type","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletionExtension","autocompletion","override","completions","context","variables","state","facet","objectOptions","map","label","displayLabel","apply","view","completion","from","to","doc","beforeChar","sliceString","line","lineAt","indentation","exec","text","baseInsert","insert","dispatch","changes","selection","anchor","length","propertyNameOptions","propertyValueOptions","boost","finalOptions","nodeBefore","syntaxTree","resolve","pos","word","matchBefore","includes","parent","explicit","options","NO_LINT_CLS","JSONEditor","contentAttributes","placeholder","editorPlaceholder","readonly","emitter","mitt","languageCompartment","Compartment","of","json","tabSizeCompartment","EditorState","tabSize","autocompletionConfCompartment","placeholderLinterExtension","createPlaceholderLinterExtension","container","createState","extensions","basicSetup","lintGutter","linter","jsonParseLinter","keymap","indentWithTab","readOnly","EditorView","updateListener","update","docChanged","emit","value","toString","create","setValue","newValue","oldValue","diff","findDiff","start","end","getValue","setVariables","effects","reconfigure","getView","on","off","attachTo","_container","appendChild","dom","domClasses","body","add","destroy","removeChild","remove","placeholders","querySelectorAll","oldStr","newStr","minLength","Math","min","slice","endOld","endNew","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","PlaygroundRoot","config","additionalModules","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","editorSlots","propertiesPanel","propertiesPanelConfig","apiLinkTarget","onInit","display","displayActions","editorContainerRef","paletteContainerRef","propertiesPanelContainerRef","viewerContainerRef","inputDataContainerRef","outputDataContainerRef","formEditorRef","formViewerRef","inputDataRef","outputDataRef","showEmbed","setShowEmbed","useState","setSchema","setData","load","useCallback","importSchema","inputDataEditor","tabIndex","createDataEditorPlaceholder","outputDataEditor","formViewer","Form","properties","ariaLabel","formEditor","FormEditor","renderer","compact","palette","slots","formField","formFields","get","generateInitialDemoData","id","isFunction","initialDemoData","undefined","currentData","newData","getSchema","updateOutputData","submitData","_getSubmitData","parse","error","initialSchema","initialData","getSchemaVariables","api","attachDataContainer","node","attachResultContainer","attachFormContainer","attachEditorContainer","attachPaletteContainer","attachPropertiesPanelContainer","strict","getDataEditor","getEditor","getForm","getResultView","saveSchema","newSchema","getState","handleDownload","download","hideEmbedModal","showEmbedModal","classNames","title","element","createElement","innerHTML","Playground","rest","classList","handleDrop","fileDrop","files","file","contents","err","safe","fn","args","Error","render","attachPreviewContainer"],"mappings":"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"}