{"version":3,"file":"index.cjs","sources":["../node_modules/diagram-js/lib/core/EventBus.js","../src/core/Validator.js","../src/core/FormFieldRegistry.js","../src/util/injector.js","../src/util/form.js","../src/util/index.js","../src/import/Importer.js","../src/import/index.js","../src/render/components/Sanitizer.js","../src/render/components/Util.js","../src/render/components/form-fields/Button.js","../src/render/context/FormRenderContext.js","../src/render/context/FormContext.js","../src/render/components/Description.js","../src/render/components/Errors.js","../src/render/components/Label.js","../src/render/components/form-fields/Checkbox.js","../src/render/hooks/useService.js","../src/render/hooks/useValuesAsync.js","../src/render/components/form-fields/Checklist.js","../src/render/components/FormField.js","../src/render/components/form-fields/Default.js","../src/render/components/form-fields/EmailWidget.js","../src/render/components/FormComponent.js","../src/render/components/form-fields/Number.js","../src/render/components/form-fields/Radio.js","../src/render/components/form-fields/Select.js","../src/render/hooks/useKeyDownAction.js","../src/render/components/form-fields/parts/DropdownList.js","../src/render/components/form-fields/Taglist.js","../src/render/components/form-fields/Text.js","../src/render/components/form-fields/Textfield.js","../src/render/components/index.js","../src/render/FormFields.js","../src/render/Renderer.js","../src/render/index.js","../src/core/index.js","../src/Form.js","../src/index.js"],"sourcesContent":["import {\n  isFunction,\n  isArray,\n  isNumber,\n  bind,\n  assign\n} from 'min-dash';\n\nvar FN_REF = '__fn';\n\nvar DEFAULT_PRIORITY = 1000;\n\nvar slice = Array.prototype.slice;\n\n/**\n * A general purpose event bus.\n *\n * This component is used to communicate across a diagram instance.\n * Other parts of a diagram can use it to listen to and broadcast events.\n *\n *\n * ## Registering for Events\n *\n * The event bus provides the {@link EventBus#on} and {@link EventBus#once}\n * methods to register for events. {@link EventBus#off} can be used to\n * remove event registrations. Listeners receive an instance of {@link Event}\n * as the first argument. It allows them to hook into the event execution.\n *\n * ```javascript\n *\n * // listen for event\n * eventBus.on('foo', function(event) {\n *\n *   // access event type\n *   event.type; // 'foo'\n *\n *   // stop propagation to other listeners\n *   event.stopPropagation();\n *\n *   // prevent event default\n *   event.preventDefault();\n * });\n *\n * // listen for event with custom payload\n * eventBus.on('bar', function(event, payload) {\n *   console.log(payload);\n * });\n *\n * // listen for event returning value\n * eventBus.on('foobar', function(event) {\n *\n *   // stop event propagation + prevent default\n *   return false;\n *\n *   // stop event propagation + return custom result\n *   return {\n *     complex: 'listening result'\n *   };\n * });\n *\n *\n * // listen with custom priority (default=1000, higher is better)\n * eventBus.on('priorityfoo', 1500, function(event) {\n *   console.log('invoked first!');\n * });\n *\n *\n * // listen for event and pass the context (`this`)\n * eventBus.on('foobar', function(event) {\n *   this.foo();\n * }, this);\n * ```\n *\n *\n * ## Emitting Events\n *\n * Events can be emitted via the event bus using {@link EventBus#fire}.\n *\n * ```javascript\n *\n * // false indicates that the default action\n * // was prevented by listeners\n * if (eventBus.fire('foo') === false) {\n *   console.log('default has been prevented!');\n * };\n *\n *\n * // custom args + return value listener\n * eventBus.on('sum', function(event, a, b) {\n *   return a + b;\n * });\n *\n * // you can pass custom arguments + retrieve result values.\n * var sum = eventBus.fire('sum', 1, 2);\n * console.log(sum); // 3\n * ```\n */\nexport default function EventBus() {\n  this._listeners = {};\n\n  // cleanup on destroy on lowest priority to allow\n  // message passing until the bitter end\n  this.on('diagram.destroy', 1, this._destroy, this);\n}\n\n\n/**\n * Register an event listener for events with the given name.\n *\n * The callback will be invoked with `event, ...additionalArguments`\n * that have been passed to {@link EventBus#fire}.\n *\n * Returning false from a listener will prevent the events default action\n * (if any is specified). To stop an event from being processed further in\n * other listeners execute {@link Event#stopPropagation}.\n *\n * Returning anything but `undefined` from a listener will stop the listener propagation.\n *\n * @param {string|Array<string>} events\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.on = function(events, priority, callback, that) {\n\n  events = isArray(events) ? events : [ events ];\n\n  if (isFunction(priority)) {\n    that = callback;\n    callback = priority;\n    priority = DEFAULT_PRIORITY;\n  }\n\n  if (!isNumber(priority)) {\n    throw new Error('priority must be a number');\n  }\n\n  var actualCallback = callback;\n\n  if (that) {\n    actualCallback = bind(callback, that);\n\n    // make sure we remember and are able to remove\n    // bound callbacks via {@link #off} using the original\n    // callback\n    actualCallback[FN_REF] = callback[FN_REF] || callback;\n  }\n\n  var self = this;\n\n  events.forEach(function(e) {\n    self._addListener(e, {\n      priority: priority,\n      callback: actualCallback,\n      next: null\n    });\n  });\n};\n\n\n/**\n * Register an event listener that is executed only once.\n *\n * @param {string} event the event name to register for\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback the callback to execute\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.once = function(event, priority, callback, that) {\n  var self = this;\n\n  if (isFunction(priority)) {\n    that = callback;\n    callback = priority;\n    priority = DEFAULT_PRIORITY;\n  }\n\n  if (!isNumber(priority)) {\n    throw new Error('priority must be a number');\n  }\n\n  function wrappedCallback() {\n    wrappedCallback.__isTomb = true;\n\n    var result = callback.apply(that, arguments);\n\n    self.off(event, wrappedCallback);\n\n    return result;\n  }\n\n  // make sure we remember and are able to remove\n  // bound callbacks via {@link #off} using the original\n  // callback\n  wrappedCallback[FN_REF] = callback;\n\n  this.on(event, priority, wrappedCallback);\n};\n\n\n/**\n * Removes event listeners by event and callback.\n *\n * If no callback is given, all listeners for a given event name are being removed.\n *\n * @param {string|Array<string>} events\n * @param {Function} [callback]\n */\nEventBus.prototype.off = function(events, callback) {\n\n  events = isArray(events) ? events : [ events ];\n\n  var self = this;\n\n  events.forEach(function(event) {\n    self._removeListener(event, callback);\n  });\n\n};\n\n\n/**\n * Create an EventBus event.\n *\n * @param {Object} data\n *\n * @return {Object} event, recognized by the eventBus\n */\nEventBus.prototype.createEvent = function(data) {\n  var event = new InternalEvent();\n\n  event.init(data);\n\n  return event;\n};\n\n\n/**\n * Fires a named event.\n *\n * @example\n *\n * // fire event by name\n * events.fire('foo');\n *\n * // fire event object with nested type\n * var event = { type: 'foo' };\n * events.fire(event);\n *\n * // fire event with explicit type\n * var event = { x: 10, y: 20 };\n * events.fire('element.moved', event);\n *\n * // pass additional arguments to the event\n * events.on('foo', function(event, bar) {\n *   alert(bar);\n * });\n *\n * events.fire({ type: 'foo' }, 'I am bar!');\n *\n * @param {string} [name] the optional event name\n * @param {Object} [event] the event object\n * @param {...Object} additional arguments to be passed to the callback functions\n *\n * @return {boolean} the events return value, if specified or false if the\n *                   default action was prevented by listeners\n */\nEventBus.prototype.fire = function(type, data) {\n  var event,\n      firstListener,\n      returnValue,\n      args;\n\n  args = slice.call(arguments);\n\n  if (typeof type === 'object') {\n    data = type;\n    type = data.type;\n  }\n\n  if (!type) {\n    throw new Error('no event type specified');\n  }\n\n  firstListener = this._listeners[type];\n\n  if (!firstListener) {\n    return;\n  }\n\n  // we make sure we fire instances of our home made\n  // events here. We wrap them only once, though\n  if (data instanceof InternalEvent) {\n\n    // we are fine, we alread have an event\n    event = data;\n  } else {\n    event = this.createEvent(data);\n  }\n\n  // ensure we pass the event as the first parameter\n  args[0] = event;\n\n  // original event type (in case we delegate)\n  var originalType = event.type;\n\n  // update event type before delegation\n  if (type !== originalType) {\n    event.type = type;\n  }\n\n  try {\n    returnValue = this._invokeListeners(event, args, firstListener);\n  } finally {\n\n    // reset event type after delegation\n    if (type !== originalType) {\n      event.type = originalType;\n    }\n  }\n\n  // set the return value to false if the event default\n  // got prevented and no other return value exists\n  if (returnValue === undefined && event.defaultPrevented) {\n    returnValue = false;\n  }\n\n  return returnValue;\n};\n\n\nEventBus.prototype.handleError = function(error) {\n  return this.fire('error', { error: error }) === false;\n};\n\n\nEventBus.prototype._destroy = function() {\n  this._listeners = {};\n};\n\nEventBus.prototype._invokeListeners = function(event, args, listener) {\n\n  var returnValue;\n\n  while (listener) {\n\n    // handle stopped propagation\n    if (event.cancelBubble) {\n      break;\n    }\n\n    returnValue = this._invokeListener(event, args, listener);\n\n    listener = listener.next;\n  }\n\n  return returnValue;\n};\n\nEventBus.prototype._invokeListener = function(event, args, listener) {\n\n  var returnValue;\n\n  if (listener.callback.__isTomb) {\n    return returnValue;\n  }\n\n  try {\n\n    // returning false prevents the default action\n    returnValue = invokeFunction(listener.callback, args);\n\n    // stop propagation on return value\n    if (returnValue !== undefined) {\n      event.returnValue = returnValue;\n      event.stopPropagation();\n    }\n\n    // prevent default on return false\n    if (returnValue === false) {\n      event.preventDefault();\n    }\n  } catch (error) {\n    if (!this.handleError(error)) {\n      console.error('unhandled error in event listener', error);\n\n      throw error;\n    }\n  }\n\n  return returnValue;\n};\n\n/*\n * Add new listener with a certain priority to the list\n * of listeners (for the given event).\n *\n * The semantics of listener registration / listener execution are\n * first register, first serve: New listeners will always be inserted\n * after existing listeners with the same priority.\n *\n * Example: Inserting two listeners with priority 1000 and 1300\n *\n *    * before: [ 1500, 1500, 1000, 1000 ]\n *    * after: [ 1500, 1500, (new=1300), 1000, 1000, (new=1000) ]\n *\n * @param {string} event\n * @param {Object} listener { priority, callback }\n */\nEventBus.prototype._addListener = function(event, newListener) {\n\n  var listener = this._getListeners(event),\n      previousListener;\n\n  // no prior listeners\n  if (!listener) {\n    this._setListeners(event, newListener);\n\n    return;\n  }\n\n  // ensure we order listeners by priority from\n  // 0 (high) to n > 0 (low)\n  while (listener) {\n\n    if (listener.priority < newListener.priority) {\n\n      newListener.next = listener;\n\n      if (previousListener) {\n        previousListener.next = newListener;\n      } else {\n        this._setListeners(event, newListener);\n      }\n\n      return;\n    }\n\n    previousListener = listener;\n    listener = listener.next;\n  }\n\n  // add new listener to back\n  previousListener.next = newListener;\n};\n\n\nEventBus.prototype._getListeners = function(name) {\n  return this._listeners[name];\n};\n\nEventBus.prototype._setListeners = function(name, listener) {\n  this._listeners[name] = listener;\n};\n\nEventBus.prototype._removeListener = function(event, callback) {\n\n  var listener = this._getListeners(event),\n      nextListener,\n      previousListener,\n      listenerCallback;\n\n  if (!callback) {\n\n    // clear listeners\n    this._setListeners(event, null);\n\n    return;\n  }\n\n  while (listener) {\n\n    nextListener = listener.next;\n\n    listenerCallback = listener.callback;\n\n    if (listenerCallback === callback || listenerCallback[FN_REF] === callback) {\n      if (previousListener) {\n        previousListener.next = nextListener;\n      } else {\n\n        // new first listener\n        this._setListeners(event, nextListener);\n      }\n    }\n\n    previousListener = listener;\n    listener = nextListener;\n  }\n};\n\n/**\n * A event that is emitted via the event bus.\n */\nfunction InternalEvent() { }\n\nInternalEvent.prototype.stopPropagation = function() {\n  this.cancelBubble = true;\n};\n\nInternalEvent.prototype.preventDefault = function() {\n  this.defaultPrevented = true;\n};\n\nInternalEvent.prototype.init = function(data) {\n  assign(this, data || {});\n};\n\n\n/**\n * Invoke function. Be fast...\n *\n * @param {Function} fn\n * @param {Array<Object>} args\n *\n * @return {Any}\n */\nfunction invokeFunction(fn, args) {\n  return fn.apply(null, args);\n}\n","import { isNil } from 'min-dash';\n\nexport default class Validator {\n\n  validateField(field, value) {\n\n    const { validate } = field;\n\n    let errors = [];\n\n    if (!validate) {\n      return errors;\n    }\n\n    if (validate.pattern && value && !new RegExp(validate.pattern).test(value)) {\n      errors = [\n        ...errors,\n        `Field must match pattern ${ validate.pattern }.`\n      ];\n    }\n\n    if (validate.required && (isNil(value) || value === '')) {\n      errors = [\n        ...errors,\n        'Field is required.'\n      ];\n    }\n\n    if ('min' in validate && value && value < validate.min) {\n      errors = [\n        ...errors,\n        `Field must have minimum value of ${ validate.min }.`\n      ];\n    }\n\n    if ('max' in validate && value && value > validate.max) {\n      errors = [\n        ...errors,\n        `Field must have maximum value of ${ validate.max }.`\n      ];\n    }\n\n    if ('minLength' in validate && value && value.trim().length < validate.minLength) {\n      errors = [\n        ...errors,\n        `Field must have minimum length of ${ validate.minLength }.`\n      ];\n    }\n\n    if ('maxLength' in validate && value && value.trim().length > validate.maxLength) {\n      errors = [\n        ...errors,\n        `Field must have maximum length of ${ validate.maxLength }.`\n      ];\n    }\n\n    return errors;\n  }\n}\n\nValidator.$inject = [];\n","import Ids from 'ids';\n\nexport default class FormFieldRegistry {\n  constructor(eventBus) {\n    this._eventBus = eventBus;\n\n    this._formFields = {};\n\n    eventBus.on('form.clear', () => this.clear());\n\n    this._ids = new Ids([ 32, 36, 1 ]);\n    this._keys = new Ids([ 32, 36, 1 ]);\n  }\n\n  add(formField) {\n    const { id } = formField;\n\n    if (this._formFields[ id ]) {\n      throw new Error(`form field with ID ${ id } already exists`);\n    }\n\n    this._eventBus.fire('formField.add', { formField });\n\n    this._formFields[ id ] = formField;\n  }\n\n  remove(formField) {\n    const { id } = formField;\n\n    if (!this._formFields[ id ]) {\n      return;\n    }\n\n    this._eventBus.fire('formField.remove', { formField });\n\n    delete this._formFields[ id ];\n  }\n\n  get(id) {\n    return this._formFields[ id ];\n  }\n\n  getAll() {\n    return Object.values(this._formFields);\n  }\n\n  forEach(callback) {\n    this.getAll().forEach((formField) => callback(formField));\n  }\n\n  clear() {\n    this._formFields = {};\n\n    this._ids.clear();\n    this._keys.clear();\n  }\n\n}\n\nFormFieldRegistry.$inject = [ 'eventBus' ];","import { Injector } from 'didi';\n\nexport function createInjector(bootstrapModules) {\n\n  const injector = new Injector(bootstrapModules);\n\n  injector.init();\n\n  return injector;\n}","/**\n * @param {string?} prefix\n *\n * @returns Element\n */\nexport function createFormContainer(prefix = 'fjs') {\n  const container = document.createElement('div');\n\n  container.classList.add(`${ prefix }-container`);\n\n  return container;\n}","export * from './injector';\nexport * from './form';\n\nexport function findErrors(errors, path) {\n  return errors[ pathStringify(path) ];\n}\n\nexport function isRequired(field) {\n  return field.required;\n}\n\nexport function pathParse(path) {\n  if (!path) {\n    return [];\n  }\n\n  return path.split('.').map(key => {\n    return isNaN(parseInt(key)) ? key : parseInt(key);\n  });\n}\n\nexport function pathsEqual(a, b) {\n  return (\n    a &&\n    b &&\n    a.length === b.length &&\n    a.every((value, index) => value === b[ index ])\n  );\n}\n\nexport function pathStringify(path) {\n  if (!path) {\n    return '';\n  }\n\n  return path.join('.');\n}\n\nconst indices = {};\n\nexport function generateIndexForType(type) {\n  if (type in indices) {\n    indices[ type ]++;\n  } else {\n    indices[ type ] = 1;\n  }\n\n  return indices[ type ];\n}\n\nexport function generateIdForType(type) {\n  return `${ type }${ generateIndexForType(type) }`;\n}\n\n/**\n * @template T\n * @param {T} data\n * @param {(this: any, key: string, value: any) => any} [replacer]\n * @return {T}\n */\nexport function clone(data, replacer) {\n  return JSON.parse(JSON.stringify(data, replacer));\n}\n\n/**\n * Parse the schema for input variables a form might make use of\n *\n * @param {any} schema\n *\n * @return {string[]}\n */\n\nexport function getSchemaVariables(schema) {\n\n  if (!schema.components) {\n    return [];\n  }\n\n  return schema.components.reduce((variables, component) => {\n\n    const {\n      key,\n      valuesKey,\n      type\n    } = component;\n\n    if ([ 'text', 'button' ].includes(type)) {\n      return variables;\n    }\n\n    if (key) {\n      variables = [ ...variables, key ];\n    }\n\n    if (valuesKey && !variables.includes(valuesKey)) {\n      variables = [ ...variables, valuesKey ];\n    }\n\n    return variables;\n\n  }, []);\n}","import {\n  get,\n  isUndefined\n} from 'min-dash';\n\nimport {\n  clone,\n  generateIdForType\n} from '../util';\n\n\nexport default class Importer {\n\n  /**\n   * @constructor\n   * @param { import('../core').FormFieldRegistry } formFieldRegistry\n   * @param { import('../render/FormFields').default } formFields\n   */\n  constructor(formFieldRegistry, formFields) {\n    this._formFieldRegistry = formFieldRegistry;\n    this._formFields = formFields;\n  }\n\n  /**\n   * Import schema adding `id`, `_parent` and `_path`\n   * information to each field and adding it to the\n   * form field registry.\n   *\n   * @param {any} schema\n   * @param {any} [data]\n   *\n   * @return { { warnings: Array<any>, schema: any, data: any } }\n   */\n  importSchema(schema, data = {}) {\n\n    // TODO: Add warnings - https://github.com/bpmn-io/form-js/issues/289\n    const warnings = [];\n\n    try {\n      const importedSchema = this.importFormField(clone(schema)),\n            importedData = this.importData(clone(data));\n\n      return {\n        warnings,\n        schema: importedSchema,\n        data: importedData\n      };\n    } catch (err) {\n      err.warnings = warnings;\n\n      throw err;\n    }\n  }\n\n  /**\n   * @param {any} formField\n   * @param {string} [parentId]\n   *\n   * @return {any} importedField\n   */\n  importFormField(formField, parentId) {\n    const {\n      components,\n      key,\n      type,\n      id = generateIdForType(type)\n    } = formField;\n\n    if (parentId) {\n\n      // set form field parent\n      formField._parent = parentId;\n    }\n\n    if (!this._formFields.get(type)) {\n      throw new Error(`form field of type <${ type }> not supported`);\n    }\n\n    if (key) {\n\n      // validate <key> uniqueness\n      if (this._formFieldRegistry._keys.assigned(key)) {\n        throw new Error(`form field with key <${ key }> already exists`);\n      }\n\n      this._formFieldRegistry._keys.claim(key, formField);\n\n      // TODO: buttons should not have key\n      if (type !== 'button') {\n\n        // set form field path\n        formField._path = [ key ];\n      }\n    }\n\n    if (id) {\n\n      // validate <id> uniqueness\n      if (this._formFieldRegistry._ids.assigned(id)) {\n        throw new Error(`form field with id <${ id }> already exists`);\n      }\n\n      this._formFieldRegistry._ids.claim(id, formField);\n    }\n\n    // set form field ID\n    formField.id = id;\n\n    this._formFieldRegistry.add(formField);\n\n    if (components) {\n      this.importFormFields(components, id);\n    }\n\n    return formField;\n  }\n\n  importFormFields(components, parentId) {\n    components.forEach((component) => {\n      this.importFormField(component, parentId);\n    });\n  }\n\n  /**\n   * @param {Object} data\n   *\n   * @return {Object} importedData\n   */\n  importData(data) {\n    return this._formFieldRegistry.getAll().reduce((importedData, formField) => {\n      const {\n        defaultValue,\n        _path,\n        type,\n        valuesKey\n      } = formField;\n\n      // get values defined via valuesKey\n\n      if (valuesKey) {\n        importedData = {\n          ...importedData,\n          [ valuesKey ]: get(data, [ valuesKey ])\n        };\n      }\n\n      // try to get value from data\n      // if unavailable - try to get default value from form field\n      // if unavailable - get empty value from form field\n\n      if (_path) {\n\n        const fieldImplementation = this._formFields.get(type);\n        let valueData = get(data, _path);\n\n        if (!isUndefined(valueData) && fieldImplementation.sanitizeValue) {\n          valueData = fieldImplementation.sanitizeValue({ formField, data, value: valueData });\n        }\n\n        const initialFieldValue = !isUndefined(valueData) ? valueData : (!isUndefined(defaultValue) ? defaultValue : fieldImplementation.emptyValue);\n\n        importedData = {\n          ...importedData,\n          [_path[0]]: initialFieldValue,\n        };\n      }\n\n      return importedData;\n\n    }, {});\n  }\n}\n\nImporter.$inject = [ 'formFieldRegistry', 'formFields' ];","import Importer from './Importer';\n\nexport default {\n  importer: [ 'type', Importer ]\n};","const NODE_TYPE_TEXT = 3,\n      NODE_TYPE_ELEMENT = 1;\n\nconst ALLOWED_NODES = [\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'span',\n  'em',\n  'a',\n  'p',\n  'div',\n  'ul',\n  'ol',\n  'li',\n  'hr',\n  'blockquote',\n  'img',\n  'pre',\n  'code',\n  'br',\n  'strong'\n];\n\nconst ALLOWED_ATTRIBUTES = [\n  'align',\n  'alt',\n  'class',\n  'href',\n  'id',\n  'name',\n  'rel',\n  'target',\n  'src'\n];\n\nconst ALLOWED_URI_PATTERN = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst ATTR_WHITESPACE_PATTERN = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g; // eslint-disable-line no-control-regex\n\nconst FORM_ELEMENT = document.createElement('form');\n\n/**\n * Sanitize a HTML string and return the cleaned, safe version.\n *\n * @param {string} html\n * @return {string}\n */\nexport function sanitizeHTML(html) {\n\n  const doc = new DOMParser().parseFromString(\n    `<!DOCTYPE html>\\n<html><body><div>${ html }`,\n    'text/html'\n  );\n\n  doc.normalize();\n\n  const element = doc.body.firstChild;\n\n  if (element) {\n    sanitizeNode(/** @type Element */ (element));\n\n    return new XMLSerializer().serializeToString(element);\n  } else {\n\n    // handle the case that document parsing\n    // does not work at all, due to HTML gibberish\n    return '';\n  }\n}\n\n/**\n * Recursively sanitize a HTML node, potentially\n * removing it, its children or attributes.\n *\n * Inspired by https://github.com/developit/snarkdown/issues/70\n * and https://github.com/cure53/DOMPurify. Simplified\n * for our use-case.\n *\n * @param {Element} node\n */\nfunction sanitizeNode(node) {\n\n  // allow text nodes\n  if (node.nodeType === NODE_TYPE_TEXT) {\n    return;\n  }\n\n  // disallow all other nodes but Element\n  if (node.nodeType !== NODE_TYPE_ELEMENT) {\n    return node.remove();\n  }\n\n  const lcTag = node.tagName.toLowerCase();\n\n  // disallow non-whitelisted tags\n  if (!ALLOWED_NODES.includes(lcTag)) {\n    return node.remove();\n  }\n\n  const attributes = node.attributes;\n\n  // clean attributes\n  for (let i = attributes.length; i--;) {\n    const attribute = attributes[i];\n\n    const name = attribute.name;\n    const lcName = name.toLowerCase();\n\n    // normalize node value\n    const value = attribute.value.trim();\n\n    node.removeAttribute(name);\n\n    const valid = isValidAttribute(lcTag, lcName, value);\n\n    if (valid) {\n      node.setAttribute(name, value);\n    }\n\n  }\n\n  // force noopener on target=\"_blank\" links\n  if (lcTag === 'a' && node.getAttribute('target') === '_blank' && node.getAttribute('rel') !== 'noopener') {\n    node.setAttribute('rel', 'noopener');\n  }\n\n  for (let i = node.childNodes.length; i--;) {\n    sanitizeNode(/** @type Element */ (node.childNodes[i]));\n  }\n}\n\n\n/**\n * Validates attributes for validity.\n *\n * @param {string} lcTag\n * @param {string} lcName\n * @param {string} value\n * @return {boolean}\n */\nfunction isValidAttribute(lcTag, lcName, value) {\n\n  // disallow most attributes based on whitelist\n  if (!ALLOWED_ATTRIBUTES.includes(lcName)) {\n    return false;\n  }\n\n  // disallow \"DOM clobbering\" / polution of document and wrapping form elements\n  if ((lcName === 'id' || lcName === 'name') && (value in document || value in FORM_ELEMENT)) {\n    return false;\n  }\n\n  if (lcName === 'target' && value !== '_blank') {\n    return false;\n  }\n\n  // allow valid url links only\n  if (lcName === 'href' && !ALLOWED_URI_PATTERN.test(value.replace(ATTR_WHITESPACE_PATTERN, ''))) {\n    return false;\n  }\n\n  return true;\n}","import snarkdown from '@bpmn-io/snarkdown';\nimport { get } from 'min-dash';\n\nimport { sanitizeHTML } from './Sanitizer';\n\nexport function formFieldClasses(type, errors = []) {\n  if (!type) {\n    throw new Error('type required');\n  }\n\n  const classes = [\n    'fjs-form-field',\n    `fjs-form-field-${ type }`\n  ];\n\n  if (errors.length) {\n    classes.push('fjs-has-errors');\n  }\n\n  return classes.join(' ');\n}\n\nexport function prefixId(id, formId) {\n  if (formId) {\n    return `fjs-form-${ formId }-${ id }`;\n  }\n\n  return `fjs-form-${ id }`;\n}\n\nexport function markdownToHTML(markdown) {\n  const htmls = markdown\n    .split(/(?:\\r?\\n){2,}/)\n    .map(line =>\n      /^((\\d+.)|[><\\s#-*])/.test(line)\n        ? snarkdown(line)\n        : `<p>${ snarkdown(line) }</p>`,\n    );\n\n  return htmls.join('\\n\\n');\n}\n\n// see https://github.com/developit/snarkdown/issues/70\nexport function safeMarkdown(markdown) {\n  const html = markdownToHTML(markdown);\n\n  return sanitizeHTML(html);\n}\n\nexport function sanitizeSingleSelectValue(options) {\n  const {\n    formField,\n    data,\n    value\n  } = options;\n\n  const {\n    valuesKey,\n    values\n  } = formField;\n\n  try {\n    const validValues = (valuesKey ? get(data, [ valuesKey ]) : values).map(v => v.value) || [];\n    return validValues.includes(value) ? value : null;\n  } catch (error) {\n\n    // use default value in case of formatting error\n    // TODO(@Skaiir): log a warning when this happens - https://github.com/bpmn-io/form-js/issues/289\n    return null;\n  }\n}\n\nexport function sanitizeMultiSelectValue(options) {\n  const {\n    formField,\n    data,\n    value\n  } = options;\n\n  const {\n    valuesKey,\n    values\n  } = formField;\n\n  try {\n    const validValues = (valuesKey ? get(data, [ valuesKey ]) : values).map(v => v.value) || [];\n    return value.filter(v => validValues.includes(v));\n  } catch (error) {\n\n    // use default value in case of formatting error\n    // TODO(@Skaiir): log a warning when this happens - https://github.com/bpmn-io/form-js/issues/289\n    return [];\n  }\n}\n","import { formFieldClasses } from '../Util';\n\nconst type = 'button';\n\n\nexport default function Button(props) {\n  const {\n    disabled,\n    field\n  } = props;\n\n  const { action = 'submit' } = field;\n\n  return <div class={ formFieldClasses(type) }>\n    <button class=\"fjs-button\" type={ action } disabled={ disabled }>{ field.label }</button>\n  </div>;\n}\n\nButton.create = function(options = {}) {\n\n  return {\n    action: 'submit',\n    ...options\n  };\n};\n\nButton.type = type;\nButton.label = 'Button';\nButton.keyed = true;","import { createContext } from 'preact';\n\nconst FormRenderContext = createContext({\n  Empty: (props) => {\n    return null;\n  },\n  Children: (props) => {\n    return props.children;\n  },\n  Element: (props) => {\n    return props.children;\n  }\n});\n\nexport default FormRenderContext;","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nconst FormContext = createContext({\n  getService,\n  formId: null\n});\n\nexport default FormContext;","export default function Description(props) {\n  const { description } = props;\n\n  if (!description) {\n    return null;\n  }\n\n  return <div class=\"fjs-form-field-description\">{ description }</div>;\n}","export default function Errors(props) {\n  const { errors } = props;\n\n  if (!errors.length) {\n    return null;\n  }\n\n  return <div class=\"fjs-form-field-error\">\n    <ul>\n      {\n        errors.map(error => {\n          return <li>{ error }</li>;\n        })\n      }\n    </ul>\n  </div>;\n}","export default function Label(props) {\n  const {\n    id,\n    label,\n    required = false\n  } = props;\n\n  return (\n    <label for={ id } class=\"fjs-form-field-label\">\n      { props.children }\n      { label || '' }\n      {\n        required && <span class=\"fjs-asterix\">*</span>\n      }\n    </label>\n  );\n}","import { useContext } from 'preact/hooks';\n\nimport { FormContext } from '../../context';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId\n} from '../Util';\n\nconst type = 'checkbox';\n\n\nexport default function Checkbox(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value = false\n  } = props;\n\n  const {\n    description,\n    id,\n    label\n  } = field;\n\n  const onChange = ({ target }) => {\n    props.onChange({\n      field,\n      value: target.checked\n    });\n  };\n\n  const { formId } = useContext(FormContext);\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      id={ prefixId(id, formId) }\n      label={ label }\n      required={ false }>\n      <input\n        checked={ value }\n        class=\"fjs-input\"\n        disabled={ disabled }\n        id={ prefixId(id, formId) }\n        type=\"checkbox\"\n        onChange={ onChange } />\n    </Label>\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nCheckbox.create = function(options = {}) {\n  return {\n    ...options\n  };\n};\n\nCheckbox.type = type;\nCheckbox.label = 'Checkbox';\nCheckbox.keyed = true;\nCheckbox.emptyValue = false;\nCheckbox.sanitizeValue = ({ value }) => value === true;","import {\n  useContext\n} from 'preact/hooks';\n\nimport { FormContext } from '../context';\n\n\nexport default function(type, strict) {\n  const {\n    getService\n  } = useContext(FormContext);\n\n  return getService(type, strict);\n}","import { useEffect, useState } from 'preact/hooks';\nimport useService from './useService';\n\n/**\n * @enum { String }\n */\nexport const LOAD_STATES = {\n  LOADING: 'loading',\n  LOADED: 'loaded',\n  ERROR: 'error'\n};\n\n/**\n * @typedef {Object} ValuesGetter\n * @property {Object[]} values - The values data\n * @property {(LOAD_STATES)} state - The values data's loading state, to use for conditional rendering\n */\n\n/**\n * A hook to load values for single and multiselect components.\n *\n * @param {Object} field - The form field to handle values for\n * @return {ValuesGetter} valuesGetter - A values getter object providing loading state and values\n */\nexport default function(field) {\n  const {\n    valuesKey,\n    values: staticValues\n  } = field;\n\n  const [ valuesGetter, setValuesGetter ] = useState({ values: [], error: undefined, state: LOAD_STATES.LOADING });\n  const initialData = useService('form')._getState().initialData;\n\n  useEffect(() => {\n\n    let values = [];\n\n    if (valuesKey !== undefined) {\n\n      const keyedValues = (initialData || {})[ valuesKey ];\n\n      if (keyedValues && Array.isArray(keyedValues)) {\n        values = keyedValues;\n      }\n    }\n    else if (staticValues !== undefined) {\n      values = Array.isArray(staticValues) ? staticValues : [];\n    }\n    else {\n      setValuesGetter(getErrorState('No values source defined in the form definition'));\n      return;\n    }\n\n    setValuesGetter(buildLoadedState(values));\n\n  }, [ valuesKey, staticValues, initialData ]);\n\n  return valuesGetter;\n}\n\nconst getErrorState = (error) => ({ values: [], error, state: LOAD_STATES.ERROR });\n\nconst buildLoadedState = (values) => ({ values, error: undefined, state: LOAD_STATES.LOADED });\n","import { useContext } from 'preact/hooks';\nimport useValuesAsync, { LOAD_STATES } from '../../hooks/useValuesAsync';\n\nimport { FormContext } from '../../context';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId,\n  sanitizeMultiSelectValue\n} from '../Util';\n\nconst type = 'checklist';\n\n\nexport default function Checklist(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value = [],\n  } = props;\n\n  const {\n    description,\n    id,\n    label\n  } = field;\n\n  const toggleCheckbox = (v) => {\n\n    let newValue = [ ...value ];\n\n    if (!newValue.includes(v)) {\n      newValue.push(v);\n    } else {\n      newValue = newValue.filter(x => x != v);\n    }\n\n    props.onChange({\n      field,\n      value: newValue,\n    });\n  };\n\n  const {\n    state: loadState,\n    values: options\n  } = useValuesAsync(field);\n\n  const { formId } = useContext(FormContext);\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      label={ label } />\n    {\n      loadState == LOAD_STATES.LOADED && options.map((v, index) => {\n        return (\n          <Label\n            id={ prefixId(`${id}-${index}`, formId) }\n            key={ `${id}-${index}` }\n            label={ v.label }\n            required={ false }>\n            <input\n              checked={ value.includes(v.value) }\n              class=\"fjs-input\"\n              disabled={ disabled }\n              id={ prefixId(`${id}-${index}`, formId) }\n              type=\"checkbox\"\n              onClick={ () => toggleCheckbox(v.value) } />\n          </Label>\n        );\n      })\n    }\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nChecklist.create = function(options = {}) {\n\n  if (options.valuesKey) return options;\n\n  return {\n    values: [\n      {\n        label: 'Value',\n        value: 'value'\n      }\n    ],\n    ...options\n  };\n};\n\nChecklist.type = type;\nChecklist.label = 'Checklist';\nChecklist.keyed = true;\nChecklist.emptyValue = [];\nChecklist.sanitizeValue = sanitizeMultiSelectValue;","import { useContext } from 'preact/hooks';\n\nimport { get } from 'min-dash';\n\nimport { FormRenderContext } from '../context';\n\nimport useService from '../hooks/useService';\n\nimport { findErrors } from '../../util';\n\nconst noop = () => false;\n\n\nexport default function FormField(props) {\n  const {\n    field,\n    onChange\n  } = props;\n\n  const { _path } = field;\n\n  const formFields = useService('formFields'),\n        form = useService('form');\n\n  const {\n    data,\n    errors,\n    properties\n  } = form._getState();\n\n  const {\n    Element\n  } = useContext(FormRenderContext);\n\n  const FormFieldComponent = formFields.get(field.type);\n\n  if (!FormFieldComponent) {\n    throw new Error(`cannot render field <${field.type}>`);\n  }\n\n  const value = get(data, _path);\n\n  const fieldErrors = findErrors(errors, _path);\n\n  const disabled = properties.readOnly || field.disabled || false;\n\n  return (\n    <Element field={ field }>\n      <FormFieldComponent\n        { ...props }\n        disabled={ disabled }\n        errors={ fieldErrors }\n        onChange={ disabled ? noop : onChange }\n        value={ value } />\n    </Element>\n  );\n}","import { useContext } from 'preact/hooks';\n\nimport FormField from '../FormField';\n\nimport { FormRenderContext } from '../../context';\n\n\nexport default function Default(props) {\n  const {\n    Children,\n    Empty\n  } = useContext(FormRenderContext);\n\n  const { field } = props;\n\n  const { components = [] } = field;\n\n  return <Children class=\"fjs-vertical-layout\" field={ field }>\n    {\n      components.map(childField => {\n        return (\n          <FormField\n            { ...props }\n            key={ childField.id }\n            field={ childField } />\n        );\n      })\n    }\n    {\n      components.length ? null : <Empty />\n    }\n  </Children>;\n}\n\nDefault.create = function(options = {}) {\n  return {\n    components: [],\n    ...options\n  };\n};\n\nDefault.type = 'default';\nDefault.keyed = false;","import { h } from 'preact';\nimport { useEffect, useState, useRef } from 'preact/hooks';\nimport classNames from 'classnames';\nimport Keyboard from 'simple-keyboard';\nimport style from './style.css';\n\n\nconst type=\"EmailWidget\";\n\nexport default function EmailWidget() {\n\n  const [emailValue, setEmailValue] = useState('');\n  const emailValueRef = useRef('');\n  const emailFieldRef = useRef();\n  const keyBoardRef = useRef();\n\n  useEffect(() => {\n    function onKeyPress(button) {\n      if (button !== '{bksp}') {\n        const newValue = `${emailValueRef.current}${button}`;\n        emailValueRef.current = newValue\n        setEmailValue(newValue);\n        setTimeout(() => {\n          emailFieldRef.current.focus();\n        }, 0);\n      } else {\n        if (emailValueRef.current.length > 0) {\n          const newValue = emailValueRef.current.substring(0, emailValueRef.current.length - 1);\n          emailValueRef.current = newValue\n          setEmailValue(newValue);\n        }\n        setTimeout(() => {\n          emailFieldRef.current.focus();\n        }, 0)\n      }\n    }\n\n    if (!keyBoardRef.current) {\n      const keyboard = new Keyboard({\n        onKeyPress: button => onKeyPress(button),\n        layout: {\n          default: [\n            '1 2 3 4 5 6 7 8 9 0',\n            'Q W E R T Y U I O P',\n            'A S D F G H J K L @',\n            'Z X C V B N M . - _',\n            '{bksp}'\n          ]\n        },\n        theme: \"hg-theme-default hg-layout-numeric numeric-theme\"\n      });\n      keyBoardRef.current = keyboard;\n    }\n\n  }, []);\n\n  const renderFields = () => {\n    return (\n      <div class={style.fieldsContainer}>\n        <div class={style.fields}>\n          <input\n            type=\"text\"\n            class={style.emailField}\n            minlength=\"4\"\n            maxlength=\"50\"\n            size=\"35\"\n            value={emailValue}\n            ref={emailFieldRef}\n          />\n        </div>\n      </div>\n    );\n  };\n\n  const renderKeyboard = () => {\n    return (\n      <div class={style.keyboardContainer}>\n        <div class={style.keyboard}>\n          <div className={classNames('simple-keyboard')} />\n        </div>\n      </div>\n    );\n  };\n\n  return (\n    <>\n      <div class={style.header}>\n        <div class={style.title}>Update Email Address</div>\n      </div>\n      {renderFields()}\n      {renderKeyboard()}\n    </>\n  );\n}\n\nEmailWidget.create = function(options = {}) {\n\n  return {\n     ...options\n  };\n};\n\nEmailWidget.type = type;\nEmailWidget.label = 'Email Address';\nEmailWidget.keyed = true;","import FormField from './FormField';\n\nimport PoweredBy from './PoweredBy';\n\nimport useService from '../hooks/useService';\n\nconst noop = () => {};\n\nexport default function FormComponent(props) {\n  const form = useService('form');\n\n  const { schema } = form._getState();\n\n  const {\n    onSubmit = noop,\n    onReset = noop,\n    onChange = noop,\n  } = props;\n\n  const handleSubmit = (event) => {\n    event.preventDefault();\n\n    onSubmit();\n  };\n\n  const handleReset = (event) => {\n    event.preventDefault();\n\n    onReset();\n  };\n\n  return (\n    <form\n      class=\"fjs-form\"\n      onSubmit={ handleSubmit }\n      onReset={ handleReset }\n    >\n      <FormField\n        field={ schema }\n        onChange={ onChange }\n      />\n\n    </form>\n  );\n}","import { useContext } from 'preact/hooks';\n\nimport { FormContext } from '../../context';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId\n} from '../Util';\n\nconst type = 'number';\n\n\nexport default function Number(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value\n  } = props;\n\n  const {\n    description,\n    id,\n    label,\n    validate = {}\n  } = field;\n\n  const { required } = validate;\n\n  const onChange = ({ target }) => {\n    props.onChange({\n      field,\n      value: Number.sanitizeValue({ value: target.value })\n    });\n  };\n\n  const { formId } = useContext(FormContext);\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      id={ prefixId(id, formId) }\n      label={ label }\n      required={ required } />\n    <input\n      class=\"fjs-input\"\n      disabled={ disabled }\n      id={ prefixId(id, formId) }\n      onInput={ onChange }\n      type=\"number\"\n      value={ value || '' } />\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nNumber.create = function(options = {}) {\n  return {\n    ...options\n  };\n};\n\nNumber.sanitizeValue = ({ value }) => {\n  const parsedValue = parseInt(value, 10);\n  return isNaN(parsedValue) ? null : parsedValue;\n};\n\nNumber.type = type;\nNumber.keyed = true;\nNumber.label = 'Number';\nNumber.emptyValue = null;","import { useContext } from 'preact/hooks';\nimport useValuesAsync, { LOAD_STATES } from '../../hooks/useValuesAsync';\n\nimport { FormContext } from '../../context';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId,\n  sanitizeSingleSelectValue\n} from '../Util';\n\nconst type = 'radio';\n\n\nexport default function Radio(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value\n  } = props;\n\n  const {\n    description,\n    id,\n    label,\n    validate = {}\n  } = field;\n\n  const { required } = validate;\n\n  const onChange = (v) => {\n    props.onChange({\n      field,\n      value: v\n    });\n  };\n\n  const {\n    state: loadState,\n    values: options\n  } = useValuesAsync(field);\n\n  const { formId } = useContext(FormContext);\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      label={ label }\n      required={ required } />\n    {\n      loadState == LOAD_STATES.LOADED && options.map((option, index) => {\n        return (\n          <Label\n            id={ prefixId(`${ id }-${ index }`, formId) }\n            key={ `${ id }-${ index }` }\n            label={ option.label }\n            required={ false }>\n            <input\n              checked={ option.value === value }\n              class=\"fjs-input\"\n              disabled={ disabled }\n              id={ prefixId(`${ id }-${ index }`, formId) }\n              type=\"radio\"\n              onClick={ () => onChange(option.value) } />\n          </Label>\n        );\n      })\n    }\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nRadio.create = function(options = {}) {\n\n  if (options.valuesKey) return options;\n\n  return {\n    values: [\n      {\n        label: 'Value',\n        value: 'value'\n      }\n    ],\n    ...options\n  };\n};\n\nRadio.type = type;\nRadio.label = 'Radio';\nRadio.keyed = true;\nRadio.emptyValue = null;\nRadio.sanitizeValue = sanitizeSingleSelectValue;","import { useContext } from 'preact/hooks';\nimport useOptionsAsync, { LOAD_STATES } from '../../hooks/useValuesAsync';\n\nimport { FormContext } from '../../context';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId,\n  sanitizeSingleSelectValue\n} from '../Util';\n\nconst type = 'select';\n\nexport default function Select(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value\n  } = props;\n\n  const {\n    description,\n    id,\n    label,\n    validate = {}\n  } = field;\n\n  const { required } = validate;\n\n  const onChange = ({ target }) => {\n    props.onChange({\n      field,\n      value: target.value === '' ? null : target.value\n    });\n  };\n\n  const {\n    state: loadState,\n    values: options\n  } = useOptionsAsync(field);\n\n  const { formId } = useContext(FormContext);\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      id={ prefixId(id, formId) }\n      label={ label }\n      required={ required } />\n    <select\n      class=\"fjs-select\"\n      disabled={ disabled }\n      id={ prefixId(id, formId) }\n      onChange={ onChange }\n      value={ value || '' }>\n      <option value=\"\"></option>\n      {\n        loadState == LOAD_STATES.LOADED && options.map((option, index) => {\n          return (\n            <option\n              key={ `${ id }-${ index }` }\n              value={ option.value }>\n              { option.label }\n            </option>\n          );\n        })\n      }\n    </select>\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nSelect.create = function(options = {}) {\n\n  if (options.valuesKey) return options;\n\n  return {\n    values: [\n      {\n        label: 'Value',\n        value: 'value'\n      }\n    ],\n    ...options\n  };\n};\n\nSelect.type = type;\nSelect.label = 'Select';\nSelect.keyed = true;\nSelect.emptyValue = null;\nSelect.sanitizeValue = sanitizeSingleSelectValue;","import { useEffect } from 'preact/hooks';\n\nexport default function useKeyDownAction(targetKey, action, listenerElement = window) {\n\n  function downHandler({ key }) {\n    if (key === targetKey) {\n      action();\n    }\n  }\n\n  useEffect(() => {\n    listenerElement.addEventListener('keydown', downHandler);\n\n    return () => {\n      listenerElement.removeEventListener('keydown', downHandler);\n    };\n  });\n}","import { useState, useEffect, useCallback, useRef, useMemo } from 'preact/hooks';\nimport useKeyDownAction from '../../../hooks/useKeyDownAction';\n\nconst DEFAULT_LABEL_GETTER = (value) => value;\nconst NOOP = () => {};\n\nexport default function DropdownList(props) {\n\n  const {\n    keyEventsListener = window,\n    values = [],\n    getLabel = DEFAULT_LABEL_GETTER,\n    onValueSelected = NOOP,\n    height = 235,\n    emptyListMessage = 'No results',\n  } = props;\n\n  const [ mouseControl, setMouseControl ] = useState(true);\n  const [ focusedValueIndex, setFocusedValueIndex ] = useState(0);\n  const dropdownContainer = useRef();\n  const mouseScreenPos = useRef();\n\n  const focusedItem = useMemo(() => values.length ? values[focusedValueIndex] : null, [ focusedValueIndex, values ]);\n\n  const changeFocusedValueIndex = useCallback((delta) => {\n    setFocusedValueIndex(x => Math.min(Math.max(0, x + delta), values.length - 1));\n  }, [ values.length ]);\n\n  useEffect(() => {\n    if (focusedValueIndex === 0) return;\n\n    if (!focusedValueIndex || !values.length) {\n      setFocusedValueIndex(0);\n    }\n    else if (focusedValueIndex >= values.length) {\n      setFocusedValueIndex(values.length - 1);\n    }\n  }, [ focusedValueIndex, values.length ]);\n\n  useKeyDownAction('ArrowUp', () => {\n    if (values.length) {\n      changeFocusedValueIndex(-1);\n      setMouseControl(false);\n    }\n  }, keyEventsListener);\n\n  useKeyDownAction('ArrowDown', () => {\n    if (values.length) {\n      changeFocusedValueIndex(1);\n      setMouseControl(false);\n    }\n  }, keyEventsListener);\n\n  useKeyDownAction('Enter', () => {\n    if (focusedItem) {\n      onValueSelected(focusedItem);\n    }\n  }, keyEventsListener);\n\n  useEffect(() => {\n    const individualEntries = dropdownContainer.current.children;\n    if (individualEntries.length && !mouseControl) {\n      individualEntries[focusedValueIndex].scrollIntoView({ block: 'nearest', inline: 'nearest' });\n    }\n  }, [ focusedValueIndex, mouseControl ]);\n\n  const mouseMove = (e, i) => {\n    const userMoved = !mouseScreenPos.current || mouseScreenPos.current.x !== e.screenX && mouseScreenPos.current.y !== e.screenY;\n\n    if (userMoved) {\n      mouseScreenPos.current = { x: e.screenX, y: e.screenY };\n\n      if (!mouseControl) {\n        setMouseControl(true);\n        setFocusedValueIndex(i);\n      }\n    }\n  };\n\n  return <div\n    ref={ dropdownContainer }\n    tabIndex={ -1 }\n    class=\"fjs-dropdownlist\"\n    style={ { maxHeight: height } }>\n    {\n      !!values.length && values.map((v, i) => {\n        return (\n          <div\n            class={ 'fjs-dropdownlist-item' + (focusedValueIndex === i ? ' focused' : '') }\n            onMouseMove={ (e) => mouseMove(e, i) }\n            onMouseEnter={ mouseControl ? () => setFocusedValueIndex(i) : undefined }\n            onMouseDown={ (e) => { e.preventDefault(); onValueSelected(v); } }>\n            {getLabel(v)}\n          </div>\n        );\n      })\n    }\n    {\n      !values.length && <div class=\"fjs-dropdownlist-empty\">{ emptyListMessage }</div>\n    }\n  </div>;\n}","import { useContext, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport useValuesAsync, { LOAD_STATES } from '../../hooks/useValuesAsync';\n\nimport { FormContext } from '../../context';\n\nimport CloseIcon from './icons/Close.svg';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId,\n  sanitizeMultiSelectValue\n} from '../Util';\n\nimport classNames from 'classnames';\n\nimport DropdownList from './parts/DropdownList';\n\nconst type = 'taglist';\n\n\nexport default function Taglist(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value : values = []\n  } = props;\n\n  const {\n    description,\n    id,\n    label\n  } = field;\n\n  const { formId } = useContext(FormContext);\n  const [ filter, setFilter ] = useState('');\n  const [ filteredOptions, setFilteredOptions ] = useState([]);\n  const [ isDropdownExpanded, setIsDropdownExpanded ] = useState(false);\n  const [ hasOptionsLeft, setHasOptionsLeft ] = useState(true);\n  const [ isEscapeClosed, setIsEscapeClose ] = useState(false);\n  const searchbarRef = useRef();\n\n  const {\n    state: loadState,\n    values: options\n  } = useValuesAsync(field);\n\n  // We cache a map of option values to their index so that we don't need to search the whole options array every time to correlate the label\n  const valueToOptionMap = useMemo(() => Object.assign({}, ...options.map((o, x) => ({ [o.value]:  options[x] }))), [ options ]);\n\n  // Usage of stringify is necessary here because we want this effect to only trigger when there is a value change to the array\n  useEffect(() => {\n    if (loadState === LOAD_STATES.LOADED) {\n      setFilteredOptions(options.filter((o) => o.label && o.value && (o.label.toLowerCase().includes(filter.toLowerCase())) && !values.includes(o.value)));\n    }\n    else {\n      setFilteredOptions([]);\n    }\n  }, [ filter, JSON.stringify(values), options, loadState ]);\n\n  useEffect(() => {\n    setHasOptionsLeft(options.length > values.length);\n  }, [ options.length, values.length ]);\n\n  const onFilterChange = ({ target }) => {\n    setIsEscapeClose(false);\n    setFilter(target.value);\n  };\n\n  const selectValue = (value) => {\n    if (filter) {\n      setFilter('');\n    }\n\n    // Ensure values cannot be double selected due to latency\n    if (values.at(-1) === value) {\n      return;\n    }\n\n    props.onChange({ value: [ ...values, value ], field });\n  };\n\n  const deselectValue = (value) => {\n    props.onChange({ value: values.filter((v) => v != value), field });\n  };\n\n  const onInputKeyDown = (e) => {\n\n    switch (e.key) {\n    case 'ArrowUp':\n    case 'ArrowDown':\n\n      // We do not want the cursor to seek in the search field when we press up and down\n      e.preventDefault();\n      break;\n    case 'Backspace':\n      if (!filter && values.length) {\n        deselectValue(values[values.length - 1]);\n      }\n      break;\n    case 'Escape':\n      setIsEscapeClose(true);\n      break;\n    case 'Enter':\n      if (isEscapeClosed) {\n        setIsEscapeClose(false);\n      }\n      break;\n    }\n  };\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      label={ label }\n      id={ prefixId(id, formId) } />\n    <div class={ classNames('fjs-taglist', { 'disabled': disabled }) }>\n      {!disabled && loadState === LOAD_STATES.LOADED &&\n        values.map((v) => {\n          return (\n            <div class=\"fjs-taglist-tag\" onMouseDown={ (e) => e.preventDefault() }>\n              <span class=\"fjs-taglist-tag-label\">\n                {valueToOptionMap[v] ? valueToOptionMap[v].label : `unexpected value{${v}}`}\n              </span>\n              <span class=\"fjs-taglist-tag-remove\" onMouseDown={ () => deselectValue(v) }><CloseIcon /></span>\n            </div>\n          );\n        })\n      }\n      <input\n        disabled={ disabled }\n        class=\"fjs-taglist-input\"\n        ref={ searchbarRef }\n        id={ prefixId(`${id}-search`, formId) }\n        onChange={ onFilterChange }\n        type=\"text\"\n        value={ filter }\n        placeholder={ 'Search' }\n        autoComplete=\"off\"\n        onKeyDown={ (e) => onInputKeyDown(e) }\n        onMouseDown={ () => setIsEscapeClose(false) }\n        onFocus={ () => setIsDropdownExpanded(true) }\n        onBlur={ () => { setIsDropdownExpanded(false); setFilter(''); } } />\n    </div>\n    <div class=\"fjs-taglist-anchor\">\n      {!disabled && loadState === LOAD_STATES.LOADED && isDropdownExpanded && !isEscapeClosed && <DropdownList\n        values={ filteredOptions }\n        getLabel={ (o) => o.label }\n        onValueSelected={ (o) => selectValue(o.value) }\n        emptyListMessage={ hasOptionsLeft ? 'No results' : 'All values selected' }\n        listenerElement={ searchbarRef.current } />}\n    </div>\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nTaglist.create = function(options = {}) {\n\n  if (options.valuesKey) return options;\n\n  return {\n    values: [\n      {\n        label: 'Value',\n        value: 'value'\n      }\n    ],\n    ...options\n  };\n};\n\nTaglist.type = type;\nTaglist.label = 'Taglist';\nTaglist.keyed = true;\nTaglist.emptyValue = [];\nTaglist.sanitizeValue = sanitizeMultiSelectValue;","import Markup from 'preact-markup';\n\nimport {\n  formFieldClasses,\n  safeMarkdown\n} from '../Util';\n\nconst type = 'text';\n\n\nexport default function Text(props) {\n  const { field } = props;\n\n  const { text = '' } = field;\n\n  return <div class={ formFieldClasses(type) }>\n    <Markup markup={ safeMarkdown(text) } trim={ false } />\n  </div>;\n}\n\nText.create = function(options = {}) {\n  return {\n    text: '# Text',\n    ...options\n  };\n};\n\nText.type = type;\nText.keyed = false;","import { isArray, isObject } from 'min-dash';\nimport { useContext } from 'preact/hooks';\n\nimport { FormContext } from '../../context';\n\nimport Description from '../Description';\nimport Errors from '../Errors';\nimport Label from '../Label';\n\nimport {\n  formFieldClasses,\n  prefixId\n} from '../Util';\n\nconst type = 'textfield';\n\n\nexport default function Textfield(props) {\n  const {\n    disabled,\n    errors = [],\n    field,\n    value = ''\n  } = props;\n\n  const {\n    description,\n    id,\n    label,\n    validate = {}\n  } = field;\n\n  const { required } = validate;\n\n  const onChange = ({ target }) => {\n    props.onChange({\n      field,\n      value: target.value\n    });\n  };\n\n  const { formId } = useContext(FormContext);\n\n  return <div class={ formFieldClasses(type, errors) }>\n    <Label\n      id={ prefixId(id, formId) }\n      label={ label }\n      required={ required } />\n    <input\n      class=\"fjs-input\"\n      disabled={ disabled }\n      id={ prefixId(id, formId) }\n      onInput={ onChange }\n      type=\"text\"\n      value={ value } />\n    <Description description={ description } />\n    <Errors errors={ errors } />\n  </div>;\n}\n\nTextfield.create = function(options = {}) {\n  return {\n    ...options\n  };\n};\n\nTextfield.type = type;\nTextfield.label = 'Text Field';\nTextfield.keyed = true;\nTextfield.emptyValue = '';\nTextfield.sanitizeValue = ({ value }) => (isArray(value) || isObject(value)) ? null : String(value);","import Button from './form-fields/Button';\nimport Checkbox from './form-fields/Checkbox';\nimport Checklist from './form-fields/Checklist';\nimport Default from './form-fields/Default';\nimport EmailWidget from './form-fields/EmailWidget';\nimport FormComponent from './FormComponent';\nimport Number from './form-fields/Number';\nimport Radio from './form-fields/Radio';\nimport Select from './form-fields/Select';\nimport Taglist from './form-fields/Taglist';\nimport Text from './form-fields/Text';\nimport Textfield from './form-fields/Textfield';\n\nexport {\n  Button,\n  Checkbox,\n  Checklist,\n  Default,\n  EmailWidget,\n  FormComponent,\n  Number,\n  Radio,\n  Select,\n  Taglist,\n  Text,\n  Textfield\n};\n\nexport const formFields = [\n  Button,\n  Checkbox,\n  Checklist,\n  Default,\n  EmailWidget,\n  Number,\n  Radio,\n  Select,\n  Taglist,\n  Text,\n  Textfield\n];","import { formFields } from './components';\n\nexport default class FormFields {\n  constructor() {\n    this._formFields = {};\n\n    formFields.forEach((formField) => {\n      const { type } = formField;\n\n      this.register(type, formField);\n    });\n  }\n\n  register(type, formField) {\n    this._formFields[ type ] = formField;\n  }\n\n  get(type) {\n    return this._formFields[ type ];\n  }\n}","import { render } from 'preact';\nimport { useCallback, useState } from 'preact/hooks';\n\nimport FormComponent from './components/FormComponent';\n\nimport { FormContext } from './context';\n\n/**\n * @typedef { { container } } Config\n * @typedef { import('didi').Injector } Injector\n * @typedef { import('../core/EventBus').default } EventBus\n * @typedef { import('../Form').default } Form\n */\n\n/**\n * @param {Config} config\n * @param {EventBus} eventBus\n * @param {Form} form\n * @param {Injector} injector\n */\nexport default function Renderer(config, eventBus, form, injector) {\n\n  const App = () => {\n    const [ state, setState ] = useState(form._getState());\n\n    const formContext = {\n      getService(type, strict = true) {\n        return injector.get(type, strict);\n      },\n      formId: form._id\n    };\n\n    eventBus.on('changed', (newState) => {\n      setState(newState);\n    });\n\n    const onChange = useCallback((update) => form._update(update), [ form ]);\n\n    const { properties } = state;\n\n    const { readOnly } = properties;\n\n    const onSubmit = useCallback(() => {\n      if (!readOnly) {\n        form.submit();\n      }\n    }, [ form, readOnly ]);\n\n    const onReset = useCallback(() => form.reset(), [ form ]);\n\n    const { schema } = state;\n\n    if (!schema) {\n      return null;\n    }\n\n    return (\n      <FormContext.Provider value={ formContext }>\n        <FormComponent\n          onChange={ onChange }\n          onSubmit={ onSubmit }\n          onReset={ onReset } />\n      </FormContext.Provider>\n    );\n  };\n\n  const { container } = config;\n\n  eventBus.on('form.init', () => {\n    render(<App />, container);\n  });\n\n  eventBus.on('form.destroy', () => {\n    render(null, container);\n  });\n}\n\nRenderer.$inject = [ 'config.renderer', 'eventBus', 'form', 'injector' ];","import FormFields from './FormFields';\nimport Renderer from './Renderer';\n\nexport { FormFields };\n\nexport * from './components';\nexport * from './context';\n\nexport default {\n  __init__: [ 'formFields', 'renderer' ],\n  formFields: [ 'type', FormFields ],\n  renderer: [ 'type', Renderer ]\n};","import EventBus from './EventBus';\nimport Validator from './Validator';\nimport FormFieldRegistry from './FormFieldRegistry';\n\nimport importModule from '../import';\nimport renderModule from '../render';\n\nexport { FormFieldRegistry };\n\nexport default {\n  __depends__: [ importModule, renderModule ],\n  eventBus: [ 'type', EventBus ],\n  formFieldRegistry: [ 'type', FormFieldRegistry ],\n  validator: [ 'type', Validator ]\n};","import Ids from 'ids';\r\nimport { get, isString, set } from 'min-dash';\r\n\r\nimport core from './core';\r\n\r\nimport { clone, createFormContainer, createInjector, pathStringify } from './util';\r\n\r\n/**\r\n * @typedef { import('./types').Injector } Injector\r\n * @typedef { import('./types').Data } Data\r\n * @typedef { import('./types').Errors } Errors\r\n * @typedef { import('./types').Schema } Schema\r\n * @typedef { import('./types').FormProperties } FormProperties\r\n * @typedef { import('./types').FormProperty } FormProperty\r\n * @typedef { import('./types').FormEvent } FormEvent\r\n * @typedef { import('./types').FormOptions } FormOptions\r\n *\r\n * @typedef { {\r\n *   data: Data,\r\n *   initialData: Data,\r\n *   errors: Errors,\r\n *   properties: FormProperties,\r\n *   schema: Schema\r\n * } } State\r\n *\r\n * @typedef { (type:FormEvent, priority:number, handler:Function) => void } OnEventWithPriority\r\n * @typedef { (type:FormEvent, handler:Function) => void } OnEventWithOutPriority\r\n * @typedef { OnEventWithPriority & OnEventWithOutPriority } OnEventType\r\n */\r\n\r\nconst ids = new Ids([ 32, 36, 1 ]);\r\n\r\n/**\r\n * The form.\r\n */\r\nexport default class Form {\r\n\r\n  /**\r\n   * @constructor\r\n   * @param {FormOptions} options\r\n   */\r\n  constructor(options = {}) {\r\n\r\n    /**\r\n     * @public\r\n     * @type {OnEventType}\r\n     */\r\n    this.on = this._onEvent;\r\n\r\n    /**\r\n     * @public\r\n     * @type {String}\r\n     */\r\n    this._id = ids.next();\r\n\r\n    /**\r\n     * @private\r\n     * @type {Element}\r\n     */\r\n    this._container = createFormContainer();\r\n\r\n    const {\r\n      container,\r\n      injector = this._createInjector(options, this._container),\r\n      properties = {}\r\n    } = options;\r\n\r\n    /**\r\n     * @private\r\n     * @type {State}\r\n     */\r\n    this._state = {\r\n      initialData: null,\r\n      data: null,\r\n      properties,\r\n      errors: {},\r\n      schema: null\r\n    };\r\n\r\n    this.get = injector.get;\r\n\r\n    this.invoke = injector.invoke;\r\n\r\n    this.get('eventBus').fire('form.init');\r\n\r\n    if (container) {\r\n      this.attachTo(container);\r\n    }\r\n  }\r\n\r\n  clear() {\r\n\r\n    // clear form services\r\n    this._emit('diagram.clear');\r\n\r\n    // clear diagram services (e.g. EventBus)\r\n    this._emit('form.clear');\r\n  }\r\n\r\n  /**\r\n   * Destroy the form, removing it from DOM,\r\n   * if attached.\r\n   */\r\n  destroy() {\r\n\r\n    // destroy form services\r\n    this.get('eventBus').fire('form.destroy');\r\n\r\n    // destroy diagram services (e.g. EventBus)\r\n    this.get('eventBus').fire('diagram.destroy');\r\n\r\n    this._detach(false);\r\n  }\r\n\r\n  /**\r\n   * Open a form schema with the given initial data.\r\n   *\r\n   * @param {Schema} schema\r\n   * @param {Data} [data]\r\n   *\r\n   * @return Promise<{ warnings: Array<any> }>\r\n   */\r\n  importSchema(schema, data = {}) {\r\n    return new Promise((resolve, reject) => {\r\n      try {\r\n        this.clear();\r\n\r\n        const {\r\n          schema: importedSchema,\r\n          data: importedData,\r\n          warnings\r\n        } = this.get('importer').importSchema(schema, data);\r\n\r\n        this._setState({\r\n          data: importedData,\r\n          errors: {},\r\n          schema: importedSchema,\r\n          initialData: clone(importedData)\r\n        });\r\n\r\n        this._emit('import.done', { warnings });\r\n\r\n        return resolve({ warnings });\r\n      } catch (error) {\r\n        this._emit('import.done', {\r\n          error,\r\n          warnings: error.warnings || []\r\n        });\r\n\r\n        return reject(error);\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Submit the form, triggering all field validations.\r\n   *\r\n   * @returns { { data: Data, errors: Errors } }\r\n   */\r\n  submit() {\r\n\r\n    const {\r\n      properties\r\n    } = this._getState();\r\n\r\n    if (properties.readOnly) {\r\n      throw new Error('form is read-only');\r\n    }\r\n\r\n    const formFieldRegistry = this.get('formFieldRegistry');\r\n\r\n    const data = formFieldRegistry.getAll().reduce((data, field) => {\r\n      const {\r\n        disabled,\r\n        _path\r\n      } = field;\r\n\r\n      // do not submit disabled form fields\r\n      if (disabled || !_path) {\r\n        return data;\r\n      }\r\n\r\n      const value = get(this._getState().data, _path);\r\n\r\n      return {\r\n        ...data,\r\n        [ _path[ 0 ] ]: value\r\n      };\r\n    }, {});\r\n\r\n    const errors = this.validate();\r\n\r\n    this._emit('submit', {\r\n      data,\r\n      errors\r\n    });\r\n\r\n    return {\r\n      data,\r\n      errors\r\n    };\r\n  }\r\n\r\n  reset() {\r\n    this._emit('reset');\r\n\r\n    this._setState({\r\n      data: clone(this._state.initialData),\r\n      errors: {}\r\n    });\r\n  }\r\n\r\n  /**\r\n   * @returns {Errors}\r\n   */\r\n  validate() {\r\n    const formFieldRegistry = this.get('formFieldRegistry'),\r\n          validator = this.get('validator');\r\n\r\n    const { data } = this._getState();\r\n\r\n    const errors = formFieldRegistry.getAll().reduce((errors, field) => {\r\n      const {\r\n        disabled,\r\n        _path\r\n      } = field;\r\n\r\n      if (disabled) {\r\n        return errors;\r\n      }\r\n\r\n      const value = get(data, _path);\r\n\r\n      const fieldErrors = validator.validateField(field, value);\r\n\r\n      return set(errors, [ pathStringify(_path) ], fieldErrors.length ? fieldErrors : undefined);\r\n    }, /** @type {Errors} */ ({}));\r\n\r\n    this._setState({ errors });\r\n\r\n    return errors;\r\n  }\r\n\r\n  /**\r\n   * @param {Element|string} parentNode\r\n   */\r\n  attachTo(parentNode) {\r\n    if (!parentNode) {\r\n      throw new Error('parentNode required');\r\n    }\r\n\r\n    this.detach();\r\n\r\n    if (isString(parentNode)) {\r\n      parentNode = document.querySelector(parentNode);\r\n    }\r\n\r\n    const container = this._container;\r\n\r\n    parentNode.appendChild(container);\r\n\r\n    this._emit('attach');\r\n  }\r\n\r\n  detach() {\r\n    this._detach();\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   *\r\n   * @param {boolean} [emit]\r\n   */\r\n  _detach(emit = true) {\r\n    const container = this._container,\r\n          parentNode = container.parentNode;\r\n\r\n    if (!parentNode) {\r\n      return;\r\n    }\r\n\r\n    if (emit) {\r\n      this._emit('detach');\r\n    }\r\n\r\n    parentNode.removeChild(container);\r\n  }\r\n\r\n  /**\r\n   * @param {FormProperty} property\r\n   * @param {any} value\r\n   */\r\n  setProperty(property, value) {\r\n    const properties = set(this._getState().properties, [ property ], value);\r\n\r\n    this._setState({ properties });\r\n  }\r\n\r\n  /**\r\n   * @param {FormEvent} type\r\n   * @param {Function} handler\r\n   */\r\n  off(type, handler) {\r\n    this.get('eventBus').off(type, handler);\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   *\r\n   * @param {FormOptions} options\r\n   * @param {Element} container\r\n   *\r\n   * @returns {Injector}\r\n   */\r\n  _createInjector(options, container) {\r\n    const {\r\n      additionalModules = [],\r\n      modules = []\r\n    } = options;\r\n\r\n    const config = {\r\n      renderer: {\r\n        container\r\n      }\r\n    };\r\n\r\n    return createInjector([\r\n      { config: [ 'value', config ] },\r\n      { form: [ 'value', this ] },\r\n      core,\r\n      ...modules,\r\n      ...additionalModules\r\n    ]);\r\n  }\r\n\r\n  /**\r\n   * @private\r\n   */\r\n  _emit(type, data) {\r\n    this.get('eventBus').fire(type, data);\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   *\r\n   * @param { { add?: boolean, field: any, remove?: number, value?: any } } update\r\n   */\r\n  _update(update) {\r\n    const {\r\n      field,\r\n      value\r\n    } = update;\r\n\r\n    const { _path } = field;\r\n\r\n    let {\r\n      data,\r\n      errors\r\n    } = this._getState();\r\n\r\n    const validator = this.get('validator');\r\n\r\n    const fieldErrors = validator.validateField(field, value);\r\n\r\n    set(data, _path, value);\r\n\r\n    set(errors, [ pathStringify(_path) ], fieldErrors.length ? fieldErrors : undefined);\r\n\r\n    this._setState({\r\n      data: clone(data),\r\n      errors: clone(errors)\r\n    });\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  _getState() {\r\n    return this._state;\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  _setState(state) {\r\n    this._state = {\r\n      ...this._state,\r\n      ...state\r\n    };\r\n\r\n    this._emit('changed', this._getState());\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  _onEvent(type, priority, handler) {\r\n    this.get('eventBus').on(type, priority, handler);\r\n  }\r\n\r\n}","import Form from './Form';\r\n\r\nexport { FormFieldRegistry } from './core';\r\nexport * from './render';\r\nexport * from './util';\r\n\r\nconst schemaVersion = 5;\r\n\r\nexport {\r\n  Form,\r\n  schemaVersion\r\n};\r\n\r\n/**\r\n * @typedef { import('./types').CreateFormOptions } CreateFormOptions\r\n */\r\n\r\n/**\r\n * Create a form.\r\n *\r\n * @param {CreateFormOptions} options\r\n *\r\n * @return {Promise<Form>}\r\n */\r\nexport function createForm(options) {\r\n  const {\r\n    data,\r\n    schema,\r\n    ...rest\r\n  } = options;\r\n\r\n  const form = new Form(rest);\r\n\r\n  return form.importSchema(schema, data).then(function() {\r\n    return form;\r\n  });\r\n}"],"names":["FN_REF","DEFAULT_PRIORITY","slice","Array","prototype","EventBus","_listeners","on","_destroy","events","priority","callback","that","isArray","isFunction","isNumber","Error","actualCallback","bind","self","forEach","e","_addListener","next","once","event","wrappedCallback","__isTomb","result","apply","arguments","off","_removeListener","createEvent","data","InternalEvent","init","fire","type","firstListener","returnValue","args","call","originalType","_invokeListeners","undefined","defaultPrevented","handleError","error","listener","cancelBubble","_invokeListener","invokeFunction","stopPropagation","preventDefault","console","newListener","_getListeners","previousListener","_setListeners","name","nextListener","listenerCallback","assign","fn","Validator","validateField","field","value","validate","errors","pattern","RegExp","test","required","isNil","min","max","trim","length","minLength","maxLength","$inject","FormFieldRegistry","constructor","eventBus","_eventBus","_formFields","clear","_ids","Ids","_keys","add","formField","id","remove","get","getAll","Object","values","createInjector","bootstrapModules","injector","Injector","createFormContainer","prefix","container","document","createElement","classList","findErrors","path","pathStringify","isRequired","pathParse","split","map","key","isNaN","parseInt","pathsEqual","a","b","every","index","join","indices","generateIndexForType","generateIdForType","clone","replacer","JSON","parse","stringify","getSchemaVariables","schema","components","reduce","variables","component","valuesKey","includes","Importer","formFieldRegistry","formFields","_formFieldRegistry","importSchema","warnings","importedSchema","importFormField","importedData","importData","err","parentId","_parent","assigned","claim","_path","importFormFields","defaultValue","fieldImplementation","valueData","isUndefined","sanitizeValue","initialFieldValue","emptyValue","importer","NODE_TYPE_TEXT","NODE_TYPE_ELEMENT","ALLOWED_NODES","ALLOWED_ATTRIBUTES","ALLOWED_URI_PATTERN","ATTR_WHITESPACE_PATTERN","FORM_ELEMENT","sanitizeHTML","html","doc","DOMParser","parseFromString","normalize","element","body","firstChild","sanitizeNode","XMLSerializer","serializeToString","node","nodeType","lcTag","tagName","toLowerCase","attributes","i","attribute","lcName","removeAttribute","valid","isValidAttribute","setAttribute","getAttribute","childNodes","replace","formFieldClasses","classes","push","prefixId","formId","markdownToHTML","markdown","htmls","line","snarkdown","safeMarkdown","sanitizeSingleSelectValue","options","validValues","v","sanitizeMultiSelectValue","filter","Button","props","disabled","action","_jsx","label","create","keyed","FormRenderContext","createContext","Empty","Children","children","Element","getService","strict","FormContext","Description","description","Errors","Label","_jsxs","Checkbox","onChange","target","checked","useContext","LOAD_STATES","LOADING","LOADED","ERROR","staticValues","valuesGetter","setValuesGetter","useState","state","initialData","useService","_getState","useEffect","keyedValues","getErrorState","buildLoadedState","Checklist","toggleCheckbox","newValue","x","loadState","useValuesAsync","noop","FormField","form","properties","FormFieldComponent","fieldErrors","readOnly","Default","childField","_createElement","EmailWidget","emailValue","setEmailValue","emailValueRef","useRef","emailFieldRef","keyBoardRef","onKeyPress","button","current","setTimeout","focus","substring","keyboard","Keyboard","layout","default","theme","renderFields","style","fieldsContainer","fields","emailField","renderKeyboard","keyboardContainer","classNames","_Fragment","header","title","FormComponent","onSubmit","onReset","handleSubmit","handleReset","Number","parsedValue","Radio","option","Select","useOptionsAsync","useKeyDownAction","targetKey","listenerElement","window","downHandler","addEventListener","removeEventListener","DEFAULT_LABEL_GETTER","NOOP","DropdownList","keyEventsListener","getLabel","onValueSelected","height","emptyListMessage","mouseControl","setMouseControl","focusedValueIndex","setFocusedValueIndex","dropdownContainer","mouseScreenPos","focusedItem","useMemo","changeFocusedValueIndex","useCallback","delta","Math","individualEntries","scrollIntoView","block","inline","mouseMove","userMoved","screenX","y","screenY","maxHeight","Taglist","setFilter","filteredOptions","setFilteredOptions","isDropdownExpanded","setIsDropdownExpanded","hasOptionsLeft","setHasOptionsLeft","isEscapeClosed","setIsEscapeClose","searchbarRef","valueToOptionMap","o","onFilterChange","selectValue","at","deselectValue","onInputKeyDown","Text","text","Markup","Textfield","isObject","String","FormFields","register","Renderer","config","App","setState","formContext","_id","newState","update","_update","submit","reset","render","__init__","renderer","__depends__","importModule","renderModule","validator","ids","Form","_onEvent","_container","_createInjector","_state","invoke","attachTo","_emit","destroy","_detach","Promise","resolve","reject","_setState","set","parentNode","detach","isString","querySelector","appendChild","emit","removeChild","setProperty","property","handler","additionalModules","modules","core","schemaVersion","createForm","rest","then"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAIA,MAAM,GAAG,MAAb,CAAA;AAEA,IAAIC,gBAAgB,GAAG,IAAvB,CAAA;AAEA,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAN,CAAgBF,KAA5B,CAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASG,QAAT,GAAoB;AACjC,EAAA,IAAA,CAAKC,UAAL,GAAkB,EAAlB,CADiC;AAIjC;;EACA,IAAKC,CAAAA,EAAL,CAAQ,iBAAR,EAA2B,CAA3B,EAA8B,IAAA,CAAKC,QAAnC,EAA6C,IAA7C,CAAA,CAAA;AACD,CAAA;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAH,QAAQ,CAACD,SAAT,CAAmBG,EAAnB,GAAwB,UAASE,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,EAAqCC,IAArC,EAA2C;EAEjEH,MAAM,GAAGI,eAAO,CAACJ,MAAD,CAAP,GAAkBA,MAAlB,GAA2B,CAAEA,MAAF,CAApC,CAAA;;AAEA,EAAA,IAAIK,kBAAU,CAACJ,QAAD,CAAd,EAA0B;AACxBE,IAAAA,IAAI,GAAGD,QAAP,CAAA;AACAA,IAAAA,QAAQ,GAAGD,QAAX,CAAA;AACAA,IAAAA,QAAQ,GAAGT,gBAAX,CAAA;AACD,GAAA;;AAED,EAAA,IAAI,CAACc,gBAAQ,CAACL,QAAD,CAAb,EAA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"}