{"version":3,"file":"index.cjs","sources":["../../../node_modules/diagram-js/lib/core/EventBus.js","../src/core/Debounce.js","../src/core/FormFieldRegistry.js","../src/core/FormLayoutValidator.js","../src/render/components/Util.js","../src/render/components/editor-form-fields/EditorIFrame.js","../src/render/context/DragAndDropContext.js","../src/render/context/FormEditorContext.js","../src/render/hooks/useService.js","../src/render/hooks/usePrevious.js","../src/render/hooks/useDebounce.js","../src/render/components/icons/Close.svg","../src/render/components/icons/Delete.svg","../src/render/components/icons/Draggable.svg","../src/render/components/icons/Search.svg","../src/render/components/icons/EmptyForm.svg","../src/render/components/editor-form-fields/EditorText.js","../src/render/components/editor-form-fields/EditorHtml.js","../src/render/components/editor-form-fields/EditorTable.js","../src/render/components/editor-form-fields/EditorExpressionField.js","../src/render/components/editor-form-fields/EditorDocumentPreview.js","../src/render/components/editor-form-fields/index.js","../src/render/EditorFormFields.js","../src/render/components/ModularSection.js","../src/features/render-injection/slot-fill/FillContext.js","../src/features/render-injection/slot-fill/Fill.js","../src/features/render-injection/slot-fill/SlotContext.js","../src/features/render-injection/slot-fill/Slot.js","../src/features/render-injection/slot-fill/SlotFillRoot.js","../src/features/palette/components/PaletteEntry.js","../src/features/palette/components/Palette.js","../src/features/render-injection/components/InjectedRendersRoot.js","../src/render/util/Cursor.js","../src/features/dragging/Dragging.js","../src/render/components/FieldDragPreview.js","../src/render/components/FieldResizer.js","../src/render/components/FormEditor.js","../src/render/Renderer.js","../src/render/index.js","../src/core/index.js","../../../node_modules/diagram-js/lib/features/editor-actions/EditorActions.js","../../../node_modules/diagram-js/lib/features/editor-actions/index.js","../src/features/editor-actions/FormEditorActions.js","../src/features/editor-actions/index.js","../src/features/expression-language/EditorTemplating.js","../src/features/expression-language/index.js","../../../node_modules/diagram-js/lib/features/keyboard/KeyboardUtil.js","../../../node_modules/diagram-js/lib/features/keyboard/Keyboard.js","../../../node_modules/diagram-js/lib/features/keyboard/KeyboardBindings.js","../../../node_modules/diagram-js/lib/features/keyboard/index.js","../src/features/keyboard/FormEditorKeyboardBindings.js","../src/features/keyboard/index.js","../src/features/dragging/index.js","../../../node_modules/diagram-js/lib/command/CommandStack.js","../../../node_modules/diagram-js/lib/command/index.js","../../../node_modules/diagram-js/lib/command/CommandInterceptor.js","../src/features/modeling/behavior/IdBehavior.js","../src/features/modeling/behavior/KeyBehavior.js","../src/features/modeling/behavior/PathBehavior.js","../src/features/modeling/behavior/ValidateBehavior.js","../src/features/modeling/behavior/OptionsSourceBehavior.js","../src/features/modeling/behavior/ColumnsSourceBehavior.js","../src/features/modeling/behavior/TableDataSourceBehavior.js","../src/features/modeling/behavior/index.js","../src/features/modeling/cmd/Util.js","../src/features/modeling/FormLayoutUpdater.js","../src/features/modeling/cmd/AddFormFieldHandler.js","../src/features/modeling/cmd/EditFormFieldHandler.js","../src/features/modeling/cmd/MoveFormFieldHandler.js","../src/features/modeling/cmd/RemoveFormFieldHandler.js","../src/features/modeling/cmd/UpdateIdClaimHandler.js","../src/features/modeling/cmd/UpdateKeyClaimHandler.js","../src/features/modeling/cmd/UpdatePathClaimHandler.js","../src/features/modeling/Modeling.js","../src/features/modeling/index.js","../src/features/selection/Selection.js","../src/features/selection/SelectionBehavior.js","../src/features/selection/index.js","../src/features/SectionModuleBase.js","../src/features/palette/PaletteRenderer.js","../src/features/palette/index.js","../../../node_modules/@bpmn-io/properties-panel/dist/index.esm.js","../src/features/properties-panel/context/FormPropertiesPanelContext.js","../src/features/properties-panel/PropertiesPanelHeaderProvider.js","../src/features/properties-panel/PropertiesPanelPlaceholderProvider.js","../src/features/properties-panel/PropertiesPanel.js","../src/features/properties-panel/PropertiesPanelRenderer.js","../src/features/properties-panel/entries/ActionEntry.js","../src/features/properties-panel/hooks/usePropertiesPanelService.js","../src/features/properties-panel/hooks/useVariables.js","../src/features/properties-panel/entries/AltTextEntry.js","../src/features/properties-panel/entries/ColumnsEntry.js","../src/features/properties-panel/Util.js","../src/features/properties-panel/entries/DescriptionEntry.js","../src/features/properties-panel/entries/DefaultValueEntry.js","../src/features/properties-panel/entries/DisabledEntry.js","../src/features/properties-panel/entries/IdEntry.js","../src/features/properties-panel/entries/KeyEntry.js","../src/features/properties-panel/entries/PathEntry.js","../src/features/properties-panel/entries/factories/simpleBoolEntryFactory.js","../src/features/properties-panel/entries/factories/simpleSelectEntryFactory.js","../src/features/properties-panel/entries/factories/simpleRangeIntegerEntryFactory.js","../src/features/properties-panel/entries/GroupAppearanceEntry.js","../src/features/properties-panel/entries/LabelEntry.js","../src/features/properties-panel/entries/HeightEntry.js","../src/features/properties-panel/entries/IFrameHeightEntry.js","../src/features/properties-panel/entries/IFrameUrlEntry.js","../src/features/properties-panel/entries/ImageSourceEntry.js","../src/features/properties-panel/entries/TextEntry.js","../src/features/properties-panel/entries/HtmlEntry.js","../src/features/properties-panel/entries/NumberEntries.js","../src/features/properties-panel/entries/ExpressionFieldEntries.js","../src/features/properties-panel/entries/NumberSerializationEntry.js","../src/features/properties-panel/entries/DateTimeEntry.js","../src/features/properties-panel/entries/DateTimeConstraintsEntry.js","../src/features/properties-panel/entries/DateTimeFormatEntry.js","../src/features/properties-panel/entries/SelectEntries.js","../src/features/properties-panel/entries/ValueEntry.js","../src/features/properties-panel/entries/CustomValueEntry.js","../src/features/properties-panel/components/AutoFocusSelect.js","../src/features/properties-panel/entries/OptionsSourceSelectEntry.js","../src/features/properties-panel/entries/InputKeyOptionsSourceEntry.js","../src/features/properties-panel/entries/StaticOptionsSourceEntry.js","../src/features/properties-panel/entries/AdornerEntry.js","../src/features/properties-panel/entries/ReadonlyEntry.js","../src/features/properties-panel/entries/LayouterAppearanceEntry.js","../src/features/properties-panel/entries/RepeatableEntry.js","../src/features/properties-panel/entries/ConditionEntry.js","../src/features/properties-panel/entries/OptionsExpressionEntry.js","../src/features/properties-panel/entries/TableDataSourceEntry.js","../src/features/properties-panel/entries/PaginationEntry.js","../src/features/properties-panel/entries/RowCountEntry.js","../src/features/properties-panel/entries/HeadersSourceSelectEntry.js","../src/features/properties-panel/entries/ColumnsExpressionEntry.js","../src/features/properties-panel/entries/ColumnEntry.js","../src/features/properties-panel/entries/StaticColumnsSourceEntry.js","../src/features/properties-panel/entries/VersionTagEntry.js","../src/features/properties-panel/entries/AcceptEntry.js","../src/features/properties-panel/entries/MultipleEntry.js","../src/features/properties-panel/entries/DocumentsDataSource.js","../src/features/properties-panel/entries/MaxHeightEntry.js","../src/features/properties-panel/groups/GeneralGroup.js","../src/features/properties-panel/groups/SerializationGroup.js","../src/features/properties-panel/groups/ConstraintsGroup.js","../src/features/properties-panel/groups/ValidationGroup.js","../src/features/properties-panel/groups/OptionsGroups.js","../src/features/properties-panel/groups/CustomPropertiesGroup.js","../src/features/properties-panel/groups/AppearanceGroup.js","../src/features/properties-panel/groups/LayoutGroup.js","../src/features/properties-panel/groups/SecurityAttributesGroup.js","../src/features/properties-panel/groups/ConditionGroup.js","../src/features/properties-panel/groups/TableHeaderGroups.js","../src/features/properties-panel/PropertiesProvider.js","../src/features/properties-panel/index.js","../src/features/render-injection/RenderInjector.js","../src/features/render-injection/SlotFillManager.js","../src/features/render-injection/index.js","../src/render/components/icons/Repeat.svg","../src/features/repeat-render/EditorRepeatRenderManager.js","../src/features/repeat-render/index.js","../src/FormEditor.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 * @typedef { {\n *   stopPropagation(): void;\n *   preventDefault(): void;\n *   cancelBubble: boolean;\n *   defaultPrevented: boolean;\n *   returnValue: any;\n * } } Event\n */\n\n/**\n * @template E\n *\n * @typedef { (event: E & Event, ...any) => any } EventBusEventCallback\n */\n\n/**\n * @typedef { {\n *  priority: number;\n *  next: EventBusListener | null;\n *  callback: EventBusEventCallback<any>;\n * } } EventBusListener\n */\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 *\n * @template [EventMap=null]\n */\nexport default function EventBus() {\n\n  /**\n   * @type { Record<string, EventBusListener> }\n   */\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 * @overlord\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 * @template T\n *\n * @param {string|string[]} events to subscribe to\n * @param {number} [priority=1000] listen priority\n * @param {EventBusEventCallback<T>} callback\n * @param {any} [that] callback context\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 * @template {keyof EventMap} EventName\n *\n * @param {EventName} events to subscribe to\n * @param {number} [priority=1000] listen priority\n * @param {EventBusEventCallback<EventMap[EventName]>} callback\n * @param {any} [that] callback context\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 * @overlord\n *\n * Register an event listener that is called only once.\n *\n * @template T\n *\n * @param {string|string[]} events to subscribe to\n * @param {number} [priority=1000] the listen priority\n * @param {EventBusEventCallback<T>} callback\n * @param {any} [that] callback context\n */\n/**\n * Register an event listener that is called only once.\n *\n * @template {keyof EventMap} EventName\n *\n * @param {EventName} events to subscribe to\n * @param {number} [priority=1000] listen priority\n * @param {EventBusEventCallback<EventMap[EventName]>} callback\n * @param {any} [that] callback context\n */\nEventBus.prototype.once = function(events, 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(events, 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(events, 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|string[]} events\n * @param {EventBusEventCallback<unknown>} [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 event recognized be the event bus.\n *\n * @param {Object} data Event data.\n *\n * @return {Event} An event that will be recognized by the event bus.\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 an event.\n *\n * @example\n *\n * ```javascript\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 *\n * @param {string} [type] event type\n * @param {Object} [data] event or event data\n * @param {...any} [args] additional arguments the callback will be called with.\n *\n * @return {any} The return value. Will be set to `false` if the default was prevented.\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/**\n * Handle an error by firing an event.\n *\n * @param {Error} error The error to be handled.\n *\n * @return {boolean} Whether the error was handled.\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\n/**\n * @param {Event} event\n * @param {any[]} args\n * @param {EventBusListener} listener\n *\n * @return {any}\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\n/**\n * @param {Event} event\n * @param {any[]} args\n * @param {EventBusListener} listener\n *\n * @return {any}\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 {EventBusListener} newListener\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\n/**\n * @param {string} name\n *\n * @return {EventBusListener}\n */\nEventBus.prototype._getListeners = function(name) {\n  return this._listeners[name];\n};\n\n/**\n * @param {string} name\n * @param {EventBusListener} listener\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 {any[]} args\n *\n * @return {any}\n */\nfunction invokeFunction(fn, args) {\n  return fn.apply(null, args);\n}\n","import { debounce } from 'min-dash';\n\n/**\n * A factory to create a configurable debouncer.\n *\n * @param {number|boolean} [config=true]\n */\nexport function DebounceFactory(config = true) {\n  const timeout = typeof config === 'number' ? config : config ? 300 : 0;\n\n  if (timeout) {\n    return (fn) => debounce(fn, timeout);\n  } else {\n    return (fn) => fn;\n  }\n}\n\nDebounceFactory.$inject = ['config.debounce'];\n","import { FormFieldRegistry as BaseFieldRegistry } from '@bpmn-io/form-js-viewer';\n\nexport class FormFieldRegistry extends BaseFieldRegistry {\n  /**\n   * Updates a form fields id.\n   *\n   * @param {Object} formField\n   * @param {string} newId\n   */\n  updateId(formField, newId) {\n    this._validateId(newId);\n\n    this._eventBus.fire('formField.updateId', {\n      formField,\n      newId: newId,\n    });\n\n    this.remove(formField);\n\n    formField.id = newId;\n\n    this.add(formField);\n\n    // TODO(nikku): make this a proper object graph so we\n    // do not have to deal with IDs this way...\n    if ('components' in formField) {\n      for (const component of formField.components) {\n        component._parent = newId;\n      }\n    }\n  }\n\n  /**\n   * Validate the suitability of the given id and signals a problem\n   * with an exception.\n   *\n   * @param {string} id\n   *\n   * @throws {Error} if id is empty or already assigned\n   */\n  _validateId(id) {\n    if (!id) {\n      throw new Error('formField must have an id');\n    }\n\n    if (this.get(id)) {\n      throw new Error('formField with id ' + id + ' already added');\n    }\n  }\n}\n","export const MAX_COLUMNS_PER_ROW = 16;\nexport const MAX_COLUMNS = 16;\nexport const MIN_COLUMNS = 2;\nexport const MAX_FIELDS_PER_ROW = 4;\n\nexport class FormLayoutValidator {\n  /**\n   * @constructor\n   *\n   * @param { import('./FormLayouter').FormLayouter } formLayouter\n   * @param { import('./FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   */\n  constructor(formLayouter, formFieldRegistry) {\n    this._formLayouter = formLayouter;\n    this._formFieldRegistry = formFieldRegistry;\n  }\n\n  validateField(field = {}, columns, row) {\n    // allow empty (auto columns)\n    if (Number.isInteger(columns)) {\n      // allow minimum cols\n      if (columns < MIN_COLUMNS) {\n        return `Minimum ${MIN_COLUMNS} columns are allowed`;\n      }\n\n      // allow maximum cols\n      if (columns > MAX_COLUMNS) {\n        return `Maximum ${MAX_COLUMNS} columns are allowed`;\n      }\n    }\n\n    if (!row) {\n      row = this._formLayouter.getRowForField(field);\n    }\n\n    // calculate columns with and without updated field\n    let sumColumns = parseInt(columns) || 0;\n    let sumFields = 1;\n    let sumAutoCols = columns ? 0 : 1;\n\n    row.components.forEach((id) => {\n      if (field.id === id) {\n        return;\n      }\n\n      const component = this._formFieldRegistry.get(id);\n\n      const cols = (component.layout || {}).columns;\n\n      if (!cols) {\n        sumAutoCols++;\n      }\n\n      sumColumns += parseInt(cols) || 0;\n      sumFields++;\n    });\n\n    // do not allow overflows\n    if (\n      sumColumns > MAX_COLUMNS_PER_ROW ||\n      (sumAutoCols > 0 && sumColumns > calculateMaxColumnsWithAuto(sumAutoCols)) ||\n      (columns === MAX_COLUMNS_PER_ROW && sumFields > 1)\n    ) {\n      return `New value exceeds the maximum of ${MAX_COLUMNS_PER_ROW} columns per row`;\n    }\n\n    if (sumFields > MAX_FIELDS_PER_ROW) {\n      return `Maximum ${MAX_FIELDS_PER_ROW} fields per row are allowed`;\n    }\n\n    return null;\n  }\n}\n\nFormLayoutValidator.$inject = ['formLayouter', 'formFieldRegistry'];\n\n// helper //////////////////////\n\n// on normal screen sizes, auto columns take minimum 2 columns\nfunction calculateMaxColumnsWithAuto(autoCols) {\n  return MAX_COLUMNS_PER_ROW - autoCols * 2;\n}\n","import classNames from 'classnames';\n\nconst emptyImage = createEmptyImage();\n\nexport function editorFormFieldClasses(type, { disabled = false } = {}) {\n  if (!type) {\n    throw new Error('type required');\n  }\n\n  return classNames('fjs-form-field', `fjs-form-field-${type}`, {\n    'fjs-disabled': disabled,\n  });\n}\n\n/**\n * Add a dragger that calls back the passed function with\n * { event, delta } on drag.\n *\n * @example\n *\n * function dragMove(event, delta) {\n *   // we are dragging (!!)\n * }\n *\n * domElement.addEventListener('dragstart', dragger(dragMove));\n *\n * @param {Function} fn\n *\n * @return {Function} drag start callback function\n */\nexport function createDragger(fn) {\n  let self;\n\n  let startX, startY;\n\n  /** drag start */\n  function onDragStart(event) {\n    self = this;\n\n    startX = event.clientX;\n    startY = event.clientY;\n\n    // (1) hide drag preview image\n    if (event.dataTransfer) {\n      event.dataTransfer.setDragImage(emptyImage, 0, 0);\n    }\n\n    // (2) setup drag listeners\n\n    // attach drag + cleanup event\n    document.addEventListener('dragover', onDrag);\n    document.addEventListener('dragend', onEnd);\n    document.addEventListener('drop', preventDefault);\n  }\n\n  function onDrag(event) {\n    const delta = {\n      x: event.clientX - startX,\n      y: event.clientY - startY,\n    };\n\n    // call provided fn with event, delta\n    return fn.call(self, event, delta);\n  }\n\n  function onEnd() {\n    document.removeEventListener('dragover', onDrag);\n    document.removeEventListener('dragend', onEnd);\n    document.removeEventListener('drop', preventDefault);\n  }\n\n  return onDragStart;\n}\n\n/**\n * Throttle function call according UI update cycle.\n *\n * @param  {Function} fn\n *\n * @return {Function} throttled fn\n */\nexport function throttle(fn) {\n  let active = false;\n\n  let lastArgs = [];\n  let lastThis = undefined;\n\n  return function (...args) {\n    lastArgs = args;\n    lastThis = this;\n\n    if (active) {\n      return;\n    }\n\n    active = true;\n\n    fn.apply(lastThis, lastArgs);\n\n    window.requestAnimationFrame(function () {\n      lastArgs = lastThis = active = undefined;\n    });\n  };\n}\n\nfunction preventDefault(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\n\nfunction createEmptyImage() {\n  const img = new Image();\n  img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n  return img;\n}\n","import { iconsByType, IFrame, Label } from '@bpmn-io/form-js-viewer';\n\nimport { editorFormFieldClasses } from '../Util';\n\nexport function EditorIFrame(props) {\n  const { field, domId } = props;\n\n  const { label } = field;\n\n  const Icon = iconsByType(field.type);\n\n  return (\n    <div class={editorFormFieldClasses(field.type)}>\n      <Label id={domId} label={label} />\n      <div class=\"fjs-iframe-placeholder\" id={domId}>\n        <p class=\"fjs-iframe-placeholder-text\">\n          <Icon width=\"32\" height=\"24\" viewBox=\"0 0 56 56\" />\n          iFrame\n        </p>\n      </div>\n    </div>\n  );\n}\n\nEditorIFrame.config = IFrame.config;\n","import { createContext } from 'preact';\n\nexport const DragAndDropContext = createContext({\n  drake: null,\n});\n","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nexport const FormEditorContext = createContext({\n  getService,\n});\n","import { useContext } from 'preact/hooks';\n\nimport { FormEditorContext } from '../context';\n\nexport function useService(type, strict) {\n  const { getService } = useContext(FormEditorContext);\n\n  return getService(type, strict);\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nexport function usePrevious(value, defaultValue = null) {\n  const ref = useRef(defaultValue);\n\n  useEffect(() => (ref.current = value), [value]);\n\n  return ref.current;\n}\n","import { useMemo, useEffect } from 'preact/hooks';\n\nimport { useService } from './useService';\n\n/**\n * @param {Function} fn - function to debounce\n */\nexport function useDebounce(fn) {\n  const debounce = useService('debounce');\n\n  const callback = useMemo(() => {\n    return debounce(fn);\n  }, [debounce, fn]);\n\n  // cleanup async side-effect if callback #flush is provided.\n  useEffect(() => {\n    return () => {\n      typeof callback.flush === 'function' && callback.flush();\n    };\n  }, [callback]);\n\n  return callback;\n}\n","<svg width=\"16\" height=\"16\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"m12 4.7-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8 12 4.7Z\" fill=\"currentColor\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\"><rect width=\"16\" height=\"16\" x=\".536\" fill=\"#fff\" rx=\"3\" style=\"mix-blend-mode:multiply\"/><path fill=\"#fff\" d=\"M0 0h16v16H0z\" style=\"mix-blend-mode:multiply\" transform=\"translate(.536)\"/><path fill=\"currentcolor\" d=\"M7.536 6h-1v6h1V6ZM10.536 6h-1v6h1V6Z\"/><path fill=\"currentcolor\" d=\"M2.536 3v1h1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4h1V3h-12Zm2 11V4h8v10h-8ZM10.536 1h-4v1h4V1Z\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" width=\"16\" height=\"16\" fill=\"currentcolor\" viewBox=\"0 0 32 32\"><path d=\"M10 6h4v4h-4zm8 0h4v4h-4zm-8 8h4v4h-4zm8 0h4v4h-4zm-8 8h4v4h-4zm8 0h4v4h-4z\"/><path d=\"M0 0h32v32H0z\" style=\"fill:none\"/></svg>\n","<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M14.5 13.793L10.7239 10.0169C11.6313 8.92758 12.0838 7.53039 11.9872 6.11596C11.8907 4.70154 11.2525 3.37879 10.2055 2.42289C9.15855 1.46699 7.78335 0.951523 6.366 0.983731C4.94865 1.01594 3.59828 1.59334 2.59581 2.59581C1.59333 3.59829 1.01593 4.94866 0.983723 6.36601C0.951515 7.78336 1.46698 9.15856 2.42288 10.2055C3.37879 11.2525 4.70153 11.8907 6.11596 11.9872C7.53038 12.0838 8.92758 11.6313 10.0169 10.724L13.7929 14.5L14.5 13.793ZM2 6.5C2 5.60999 2.26392 4.73996 2.75838 3.99994C3.25285 3.25992 3.95565 2.68314 4.77792 2.34255C5.60019 2.00195 6.50499 1.91284 7.3779 2.08647C8.25082 2.2601 9.05264 2.68869 9.68198 3.31802C10.3113 3.94736 10.7399 4.74918 10.9135 5.6221C11.0872 6.49501 10.998 7.39981 10.6575 8.22208C10.3169 9.04435 9.74008 9.74715 9.00006 10.2416C8.26004 10.7361 7.39001 11 6.5 11C5.30693 10.9987 4.1631 10.5241 3.31948 9.68052C2.47585 8.8369 2.00132 7.69307 2 6.5Z\" fill=\"currentColor\"/>\n</svg>\n","<svg width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M70 78V86C70 87.6569 68.6569 89 67 89H59V84H65V78H70ZM70 62H65V46H70V62ZM70 30H65V24H59V19H67C68.6569 19 70 20.3431 70 22V30ZM43 19V24H27V19H43ZM11 19V24H5V30H0V22C0 20.3431 1.34315 19 3 19H11ZM0 46H5V62H0V46ZM0 78H5V84H11V89H3C1.34315 89 0 87.6569 0 86V78ZM27 89V84H43V89H27Z\" fill=\"#FF832B\"/>\n<rect width=\"70\" height=\"70\" rx=\"3\" transform=\"matrix(-1 0 0 1 94 0)\" fill=\"#E5E5E5\"/>\n<mask id=\"path-3-inside-1_728_13414\" fill=\"white\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M87.0851 88.684L75.4297 45.1851L118.929 56.8406L107.885 64.9126L116.442 73.4693L103.714 86.1973L95.1572 77.6405L87.0851 88.684Z\"/>\n</mask>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M87.0851 88.684L75.4297 45.1851L118.929 56.8406L107.885 64.9126L116.442 73.4693L103.714 86.1973L95.1572 77.6405L87.0851 88.684Z\" fill=\"#393939\"/>\n<path d=\"M75.4297 45.1851L70.6 46.4792L68.3586 38.114L76.7238 40.3555L75.4297 45.1851ZM87.0851 88.684L91.1218 91.6345L84.9586 100.066L82.2555 89.9781L87.0851 88.684ZM118.929 56.8406L120.223 52.011L130.311 54.7141L121.879 60.8772L118.929 56.8406ZM107.885 64.9126L104.35 68.4482L100.222 64.3206L104.935 60.876L107.885 64.9126ZM116.442 73.4693L119.977 69.9338L123.513 73.4693L119.977 77.0049L116.442 73.4693ZM103.714 86.1973L107.25 89.7328L103.714 93.2683L100.178 89.7328L103.714 86.1973ZM95.1572 77.6405L91.1206 74.69L94.5652 69.9774L98.6928 74.105L95.1572 77.6405ZM80.2593 43.891L91.9148 87.3899L82.2555 89.9781L70.6 46.4792L80.2593 43.891ZM117.634 61.6702L74.1356 50.0147L76.7238 40.3555L120.223 52.011L117.634 61.6702ZM104.935 60.876L115.978 52.804L121.879 60.8772L110.836 68.9492L104.935 60.876ZM112.906 77.0049L104.35 68.4482L111.421 61.3771L119.977 69.9338L112.906 77.0049ZM100.178 82.6617L112.906 69.9338L119.977 77.0049L107.25 89.7328L100.178 82.6617ZM98.6928 74.105L107.25 82.6617L100.178 89.7328L91.6217 81.1761L98.6928 74.105ZM83.0485 85.7334L91.1206 74.69L99.1939 80.5911L91.1218 91.6345L83.0485 85.7334Z\" fill=\"#393939\" mask=\"url(#path-3-inside-1_728_13414)\"/>\n<line x1=\"1.5\" y1=\"-1.5\" x2=\"14.5\" y2=\"-1.5\" transform=\"matrix(-0.707107 -0.707107 -0.707107 0.707107 69.431 41.2843)\" stroke=\"black\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n<line x1=\"1.5\" y1=\"-1.5\" x2=\"9.5\" y2=\"-1.5\" transform=\"matrix(-1 -4.21468e-08 0 1 68.2132 50.1234)\" stroke=\"black\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n<line x1=\"78.9695\" y1=\"36.3671\" x2=\"78.9695\" y2=\"28.3671\" stroke=\"black\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n</svg>\n","import { Text } from '@bpmn-io/form-js-viewer';\nimport { editorFormFieldClasses } from '../Util';\nimport { useService } from '../../hooks';\n\nimport { iconsByType } from '../icons';\n\nexport function EditorText(props) {\n  const { type, text = '' } = props.field;\n\n  const Icon = iconsByType('text');\n\n  const templating = useService('templating');\n  const expressionLanguage = useService('expressionLanguage');\n\n  if (!text || !text.trim()) {\n    return (\n      <div class={editorFormFieldClasses(type)}>\n        <div class=\"fjs-form-field-placeholder\">\n          <Icon viewBox=\"0 0 54 54\" />\n          Text view is empty\n        </div>\n      </div>\n    );\n  }\n\n  if (expressionLanguage.isExpression(text)) {\n    return (\n      <div class={editorFormFieldClasses(type)}>\n        <div class=\"fjs-form-field-placeholder\">\n          <Icon viewBox=\"0 0 54 54\" />\n          Text view is populated by an expression\n        </div>\n      </div>\n    );\n  }\n\n  if (templating.isTemplate(text)) {\n    return (\n      <div class={editorFormFieldClasses(type)}>\n        <div class=\"fjs-form-field-placeholder\">\n          <Icon viewBox=\"0 0 54 54\" />\n          Text view is templated\n        </div>\n      </div>\n    );\n  }\n\n  return <Text {...{ ...props, disableLinks: true }} />;\n}\n\nEditorText.config = Text.config;\n","import { Html } from '@bpmn-io/form-js-viewer';\nimport { editorFormFieldClasses } from '../Util';\nimport { useService } from '../../hooks';\n\nimport { iconsByType } from '../icons';\n\nexport function EditorHtml(props) {\n  const { type, content = '' } = props.field;\n\n  const Icon = iconsByType(type);\n\n  const templating = useService('templating');\n  const expressionLanguage = useService('expressionLanguage');\n\n  if (!content || !content.trim()) {\n    return (\n      <div class={editorFormFieldClasses(type)}>\n        <div class=\"fjs-form-field-placeholder\">\n          <Icon viewBox=\"0 0 54 54\" />\n          Html view is empty\n        </div>\n      </div>\n    );\n  }\n\n  if (expressionLanguage.isExpression(content)) {\n    return (\n      <div class={editorFormFieldClasses(type)}>\n        <div class=\"fjs-form-field-placeholder\">\n          <Icon viewBox=\"0 0 54 54\" />\n          Html view is populated by an expression\n        </div>\n      </div>\n    );\n  }\n\n  if (templating.isTemplate(content)) {\n    return (\n      <div class={editorFormFieldClasses(type)}>\n        <div class=\"fjs-form-field-placeholder\">\n          <Icon viewBox=\"0 0 54 54\" />\n          Html view is templated\n        </div>\n      </div>\n    );\n  }\n\n  return <Html {...{ ...props, disableLinks: true }} />;\n}\n\nEditorHtml.config = Html.config;\n","import { Label, Table } from '@bpmn-io/form-js-viewer';\nimport { editorFormFieldClasses } from '../Util';\nimport classNames from 'classnames';\n\n/**\n * @param {import('@bpmn-io/form-js-viewer/src/render/components/form-fields/Table').Props} props\n * @returns {import(\"preact\").JSX.Element}\n */\nexport function EditorTable(props) {\n  const { columnsExpression, columns, id, label } = props.field;\n  const shouldUseMockColumns =\n    (typeof columnsExpression === 'string' && columnsExpression.length > 0) ||\n    (Array.isArray(columns) && columns.length === 0);\n  const editorColumns = shouldUseMockColumns\n    ? [\n        { key: '1', label: 'Column 1' },\n        { key: '2', label: 'Column 2' },\n        { key: '3', label: 'Column 3' },\n      ]\n    : columns;\n  const prefixId = `fjs-form-${id}`;\n\n  return (\n    <div class={editorFormFieldClasses('table', { disabled: true })}>\n      <Label id={prefixId} label={label} />\n      <div class=\"fjs-table-middle-container\">\n        <div class=\"fjs-table-inner-container\">\n          <table class={classNames('fjs-table', 'fjs-disabled')} id={prefixId}>\n            <thead class=\"fjs-table-head\">\n              <tr class=\"fjs-table-tr\">\n                {editorColumns.map(({ key, label }) => (\n                  <th key={key} class=\"fjs-table-th\">\n                    {label}\n                  </th>\n                ))}\n              </tr>\n            </thead>\n            <tbody class=\"fjs-table-body\">\n              <tr class=\"fjs-table-tr\">\n                {editorColumns.map(({ key }) => (\n                  <td class=\"fjs-table-td\" key={key}>\n                    Content\n                  </td>\n                ))}\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nEditorTable.config = Table.config;\n","import { ExpressionField, iconsByType } from '@bpmn-io/form-js-viewer';\nimport { editorFormFieldClasses } from '../Util';\nimport { useService } from '../../hooks';\n\nconst type = 'expression';\n\nexport function EditorExpressionField(props) {\n  const { field } = props;\n  const { expression = '', key } = field;\n\n  const Icon = iconsByType('expression');\n  const expressionLanguage = useService('expressionLanguage');\n\n  let placeholderContent = 'Expression is empty';\n\n  if (expression.trim() && expressionLanguage.isExpression(expression)) {\n    placeholderContent = `Expression for '${key}'`;\n  }\n\n  return (\n    <div class={editorFormFieldClasses(type)}>\n      <div class=\"fjs-form-field-placeholder\">\n        <Icon viewBox=\"0 0 54 54\" />\n        {placeholderContent}\n      </div>\n    </div>\n  );\n}\n\nEditorExpressionField.config = {\n  ...ExpressionField.config,\n  escapeGridRender: false,\n};\n","import { iconsByType, DocumentPreview, Label } from '@bpmn-io/form-js-viewer';\n\nimport { editorFormFieldClasses } from '../Util';\n\nexport function EditorDocumentPreview(props) {\n  const { field, domId } = props;\n\n  const { label } = field;\n\n  const Icon = iconsByType(field.type);\n\n  return (\n    <div class={editorFormFieldClasses(field.type)}>\n      <Label id={domId} label={label} />\n      <div class=\"fjs-documentPreview-placeholder\" id={domId}>\n        <p class=\"fjs-documentPreview-placeholder-text\">\n          <Icon width=\"32\" height=\"24\" viewBox=\"0 0 56 56\" />\n          Document preview\n        </p>\n      </div>\n    </div>\n  );\n}\n\nEditorDocumentPreview.config = DocumentPreview.config;\n","import { EditorIFrame } from './EditorIFrame';\nimport { EditorText } from './EditorText';\nimport { EditorHtml } from './EditorHtml';\nimport { EditorTable } from './EditorTable';\nimport { EditorExpressionField } from './EditorExpressionField';\nimport { EditorDocumentPreview } from './EditorDocumentPreview';\n\nexport const editorFormFields = [\n  EditorIFrame,\n  EditorText,\n  EditorHtml,\n  EditorTable,\n  EditorExpressionField,\n  EditorDocumentPreview,\n];\n","import { FormFields } from '@bpmn-io/form-js-viewer';\nimport { editorFormFields } from './components/editor-form-fields/';\n\nexport class EditorFormFields extends FormFields {\n  constructor() {\n    super();\n    editorFormFields.forEach((formField) => {\n      this.register(formField.config.type, formField);\n    });\n  }\n}\n","import { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { createPortal } from 'preact/compat';\nimport { useService } from '../hooks';\n\nexport const ModularSection = (props) => {\n  const { rootClass, RootElement, section, children } = props;\n\n  const eventBus = useService('eventBus');\n  const sectionConfig = useService(`config.${section}`);\n\n  const [parent, setParent] = useState((sectionConfig && sectionConfig.parent) || null);\n  const [shouldRender, setShouldRender] = useState(true);\n\n  const ParentElement = useMemo(() => {\n    if (parent === null) {\n      return null;\n    }\n\n    if (typeof parent === 'string') {\n      const element = document.querySelector(parent);\n\n      if (!element) {\n        throw new Error(`Target root element with selector '${parent}' not found for section '${section}'`);\n      }\n\n      return document.querySelector(parent);\n    }\n\n    // @ts-ignore\n    if (!(parent instanceof Element)) {\n      throw new Error(`Target root element for section '${section}' must be a valid selector or DOM element`);\n    }\n\n    return parent;\n  }, [section, parent]);\n\n  useEffect(() => {\n    const onAttach = ({ container }) => {\n      setParent(container);\n      setShouldRender(true);\n    };\n\n    const onDetach = () => {\n      setParent(null);\n      setShouldRender(false);\n    };\n\n    const onReset = () => {\n      setParent(null);\n      setShouldRender(true);\n    };\n\n    eventBus.on(`${section}.attach`, onAttach);\n    eventBus.on(`${section}.detach`, onDetach);\n    eventBus.on(`${section}.reset`, onReset);\n    eventBus.fire(`${section}.section.rendered`);\n\n    return () => {\n      eventBus.off(`${section}.attach`, onAttach);\n      eventBus.off(`${section}.detach`, onDetach);\n      eventBus.off(`${section}.reset`, onReset);\n      eventBus.fire(`${section}.section.destroyed`);\n    };\n  }, [eventBus, section]);\n\n  useEffect(() => {\n    if (shouldRender) {\n      eventBus.fire(`${section}.rendered`, { element: ParentElement });\n      return () => {\n        eventBus.fire(`${section}.destroyed`, { element: ParentElement });\n      };\n    }\n  }, [eventBus, section, shouldRender, ParentElement]);\n\n  const Root = useCallback(\n    ({ children }) =>\n      RootElement ? <RootElement>{children}</RootElement> : <div className={rootClass}>{children}</div>,\n    [rootClass, RootElement],\n  );\n\n  return shouldRender ? parent ? createPortal(<Root>{children}</Root>, ParentElement) : <Root>{children}</Root> : null;\n};\n","import { createContext } from 'preact';\n\nexport const FillContext = createContext({\n  addFill(uid, props) {\n    throw new Error('FillContext.addFill() uninitialized');\n  },\n  removeFill(uid) {\n    throw new Error('FillContext.addFill() uninitialized');\n  },\n});\n","import { FillContext } from './FillContext';\nimport { useContext, useEffect, useRef } from 'preact/compat';\n\nexport const Fill = (props) => {\n  const uid = useRef(Symbol('fill_uid'));\n  const fillContext = useContext(FillContext);\n\n  useEffect(() => {\n    if (!fillContext) {\n      return;\n    }\n\n    fillContext.addFill({ id: uid, ...props });\n    return () => {\n      fillContext.removeFill(uid);\n    };\n  }, [fillContext, props]);\n\n  return null;\n};\n","import { createContext } from 'preact';\n\nexport const SlotContext = createContext({ fills: [] });\n","import { Fragment } from 'preact';\nimport { useContext, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { SlotContext } from './SlotContext';\nimport { FormEditorContext } from '../../../render/context';\n\n/**\n * Functional component for rendering slot fills.\n *\n * @param {Object} props Component properties\n * @param {string} props.name Slot name\n * @param {Function} [props.fillRoot] Function for creating a fill root element\n * @param {Function} [props.groupFn] Function for grouping slot fills\n * @param {Function} [props.separatorFn] Function for creating separator elements between groups\n * @param {number} [props.limit] Limit on the number of slot fills to render\n * @returns {import('preact').VNode} Fragment containing rendered slot fills\n */\nexport const Slot = (props) => {\n  const { name, fillRoot = FillFragment, groupFn = _groupByGroupName, separatorFn = (key) => null, limit } = props;\n\n  const { fills } = useContext(SlotContext);\n\n  const filtered = useMemo(() => fills.filter((fill) => fill.slot === name), [fills, name]);\n\n  const cropped = useMemo(() => (limit ? filtered.slice(0, limit) : filtered), [filtered, limit]);\n\n  const groups = useMemo(() => groupFn(cropped), [cropped, groupFn]);\n\n  const fillsAndSeparators = useMemo(() => {\n    return buildFills(groups, fillRoot, separatorFn);\n  }, [groups, fillRoot, separatorFn]);\n\n  // Framework-agnostic fills from SlotFillManager\n  const editorContext = useContext(FormEditorContext);\n  const slotFillManager = editorContext ? editorContext.getService('slotFillManager', false) : null;\n  const eventBus = editorContext ? editorContext.getService('eventBus', false) : null;\n\n  const [managerFills, setManagerFills] = useState([]);\n\n  useEffect(() => {\n    if (!eventBus || !slotFillManager) {\n      return;\n    }\n\n    setManagerFills(slotFillManager.getFills(name));\n\n    const onChange = () => setManagerFills(slotFillManager.getFills(name));\n\n    eventBus.on('slotFillManager.changed', onChange);\n\n    return () => eventBus.off('slotFillManager.changed', onChange);\n  }, [eventBus, slotFillManager, name]);\n\n  return (\n    <Fragment>\n      {fillsAndSeparators}\n      {managerFills.map((fill) => (\n        <FillContainer key={fill.fillId} fill={fill} />\n      ))}\n    </Fragment>\n  );\n};\n\n/**\n * Creates a Fragment for a fill.\n *\n * @param {Object} fill Fill to be rendered\n * @returns {Object} Preact Fragment containing fill's children\n */\nconst FillFragment = (fill) => <Fragment key={fill.id}>{fill.children}</Fragment>;\n\n/**\n * Mounts a single SlotFillManager fill's render callback into a DOM container.\n */\nfunction FillContainer({ fill }) {\n  const containerRef = useRef(null);\n  const cleanupRef = useRef(null);\n\n  useEffect(() => {\n    const container = containerRef.current;\n\n    if (!container) {\n      return;\n    }\n\n    cleanupRef.current = fill.render(container) || null;\n\n    return () => {\n      if (typeof cleanupRef.current === 'function') {\n        cleanupRef.current();\n        cleanupRef.current = null;\n      }\n\n      container.innerHTML = '';\n    };\n  }, [fill]);\n\n  return <div ref={containerRef} data-slot-fill={fill.fillId} />;\n}\n\n/**\n * Creates an array of fills, with separators inserted between groups.\n *\n * @param {Array} groups Groups of fills\n * @param {Function} fillRenderer Function to create a fill\n * @param {Function} separatorRenderer Function to create a separator\n * @returns {Array} Array of fills and separators\n */\nconst buildFills = (groups, fillRenderer, separatorRenderer) => {\n  const result = [];\n\n  groups.forEach((array, idx) => {\n    if (idx !== 0) {\n      const separator = separatorRenderer(`__separator_${idx}`);\n\n      if (separator) {\n        result.push(separator);\n      }\n    }\n\n    array.forEach((fill) => {\n      result.push(fillRenderer(fill));\n    });\n  });\n\n  return result;\n};\n\n/**\n * Groups fills by group name property.\n */\nconst _groupByGroupName = (fills) => {\n  const groups = [];\n\n  const groupsById = {};\n\n  fills.forEach(function (fill) {\n    const { group: groupName = 'z_default' } = fill;\n\n    let group = groupsById[groupName];\n\n    if (!group) {\n      groupsById[groupName] = group = [];\n      groups.push(group);\n    }\n\n    group.push(fill);\n  });\n\n  groups.forEach((group) => group.sort(_comparePriority));\n\n  return Object.keys(groupsById)\n    .sort()\n    .map((id) => groupsById[id]);\n};\n\n/**\n * Compares fills by priority.\n */\nconst _comparePriority = (a, b) => {\n  return (b.priority || 0) - (a.priority || 0);\n};\n","import { FillContext } from './FillContext';\nimport { SlotContext } from './SlotContext';\nimport { useMemo, useState } from 'preact/hooks';\n\nconst noop = () => {};\n\nexport const SlotFillRoot = (props) => {\n  const [fills, setFills] = useState([]);\n\n  const { onSetFill = noop, onRemoveFill = noop } = props;\n\n  const fillContext = useMemo(\n    () => ({\n      addFill: (fill) => {\n        setFills((fills) => [...fills.filter((f) => f.id !== fill.id), fill]);\n        onSetFill(fill);\n      },\n      removeFill: (id) => {\n        setFills((fills) => fills.filter((f) => f.id !== id));\n        onRemoveFill(id);\n      },\n    }),\n    [onRemoveFill, onSetFill],\n  );\n\n  const slotContext = useMemo(() => ({ fills }), [fills]);\n\n  return (\n    <SlotContext.Provider value={slotContext}>\n      {/* @ts-expect-error */}\n      <FillContext.Provider value={fillContext}>{props.children}</FillContext.Provider>\n    </SlotContext.Provider>\n  );\n};\n","import { useService } from '../../../render/hooks';\n\nexport function PaletteEntry(props) {\n  const { type, label, icon, iconUrl, getPaletteIcon } = props;\n\n  const modeling = useService('modeling');\n  const formEditor = useService('formEditor');\n\n  const Icon = getPaletteIcon({ icon, iconUrl, label, type });\n\n  const onKeyDown = (event) => {\n    if (event.code === 'Enter') {\n      const { fieldType: type } = event.target.dataset;\n\n      const { schema } = formEditor._getState();\n\n      // add new form field to last position\n      modeling.addFormField({ type }, schema, schema.components.length);\n    }\n  };\n\n  return (\n    <button\n      type=\"button\"\n      class=\"fjs-palette-field fjs-drag-copy fjs-no-drop\"\n      data-field-type={type}\n      title={`Create ${getIndefiniteArticle(type)} ${label} element`}\n      onKeyDown={onKeyDown}>\n      {Icon ? <Icon class=\"fjs-palette-field-icon\" width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" /> : null}\n      <span class=\"fjs-palette-field-text\">{label}</span>\n    </button>\n  );\n}\n\n// helpers ///////////\n\nfunction getIndefiniteArticle(type) {\n  if (['image'].includes(type)) {\n    return 'an';\n  }\n\n  return 'a';\n}\n","import { useCallback, useEffect, useRef, useState } from 'preact/hooks';\n\nimport { useService } from '../../../render/hooks';\nimport { sanitizeImageSource } from '@bpmn-io/form-js-viewer';\n\nimport { CloseIcon, SearchIcon, iconsByType } from '../../../render/components/icons';\nimport { Slot } from '../../render-injection/slot-fill';\nimport { PaletteEntry } from './PaletteEntry';\n\n/**\n * @typedef { import('@bpmn-io/form-js-viewer').FormFields } FormFields\n *\n * @typedef { {\n *  label: string,\n *  type: string,\n *  group: ('basic-input'|'selection'|'presentation'|'action'),\n *  icon: preact.FunctionalComponent,\n *  iconUrl: string\n * } } PaletteEntry\n */\n\nexport const PALETTE_GROUPS = [\n  {\n    label: 'Input',\n    id: 'basic-input',\n  },\n  {\n    label: 'Selection',\n    id: 'selection',\n  },\n  {\n    label: 'Presentation',\n    id: 'presentation',\n  },\n  {\n    label: 'Containers',\n    id: 'container',\n  },\n  {\n    label: 'Action',\n    id: 'action',\n  },\n];\n\nexport function Palette(props) {\n  const formFields = useService('formFields');\n\n  const initialPaletteEntries = useRef(collectPaletteEntries(formFields));\n\n  const [paletteEntries, setPaletteEntries] = useState(initialPaletteEntries.current);\n\n  const [searchTerm, setSearchTerm] = useState('');\n\n  /** @type {import(\"preact\").RefObject<HTMLInputElement>} */\n  const inputRef = useRef();\n\n  const groups = groupEntries(paletteEntries);\n\n  const simplifyString = useCallback((str) => {\n    return str.toLowerCase().replace(/\\s+/g, '');\n  }, []);\n\n  const filter = useCallback(\n    (entry) => {\n      const simplifiedSearchTerm = simplifyString(searchTerm);\n\n      if (!simplifiedSearchTerm) {\n        return true;\n      }\n\n      const simplifiedEntryLabel = simplifyString(entry.label);\n      const simplifiedEntryType = simplifyString(entry.type);\n\n      return simplifiedEntryLabel.includes(simplifiedSearchTerm) || simplifiedEntryType.includes(simplifiedSearchTerm);\n    },\n    [searchTerm, simplifyString],\n  );\n\n  // filter entries on search change\n  useEffect(() => {\n    const entries = initialPaletteEntries.current.filter(filter);\n    setPaletteEntries(entries);\n  }, [filter, searchTerm]);\n\n  const handleInput = useCallback(\n    (event) => {\n      setSearchTerm(() => event.target.value);\n    },\n    [setSearchTerm],\n  );\n\n  const handleClear = useCallback(\n    (event) => {\n      setSearchTerm('');\n      inputRef.current.focus();\n    },\n    [inputRef, setSearchTerm],\n  );\n\n  return (\n    <div class=\"fjs-palette\">\n      <div class=\"fjs-palette-header\" title=\"Components\">\n        Components\n      </div>\n      <div class=\"fjs-palette-search-container\">\n        <span class=\"fjs-palette-search-icon\">\n          <SearchIcon></SearchIcon>\n        </span>\n        <input\n          class=\"fjs-palette-search\"\n          ref={inputRef}\n          type=\"text\"\n          placeholder=\"Search components\"\n          value={searchTerm}\n          onInput={handleInput}\n        />\n        {searchTerm && (\n          <button type=\"button\" title=\"Clear content\" class=\"fjs-palette-search-clear\" onClick={handleClear}>\n            <CloseIcon></CloseIcon>\n          </button>\n        )}\n      </div>\n      <div class=\"fjs-palette-entries\">\n        {groups.map(({ label, entries, id }) => (\n          <div class=\"fjs-palette-group\" data-group-id={id} key={id}>\n            <span class=\"fjs-palette-group-title\">{label}</span>\n            <div class=\"fjs-palette-fields fjs-drag-container fjs-no-drop\">\n              {entries.map((entry) => {\n                return <PaletteEntry key={entry.type} getPaletteIcon={getPaletteIcon} {...entry} />;\n              })}\n            </div>\n          </div>\n        ))}\n        {groups.length == 0 && <div class=\"fjs-palette-no-entries\">No components found.</div>}\n      </div>\n      <div class=\"fjs-palette-footer\">\n        <Slot name=\"editor-palette__footer\" fillRoot={FillRoot} />\n      </div>\n    </div>\n  );\n}\n\nconst FillRoot = (fill) => <div className=\"fjs-palette-footer-fill\">{fill.children}</div>;\n\n// helpers ///////\n\nfunction groupEntries(entries) {\n  const groups = PALETTE_GROUPS.map((group) => {\n    return {\n      ...group,\n      entries: [],\n    };\n  });\n\n  const getGroup = (id) => groups.find((group) => id === group.id);\n\n  entries.forEach((entry) => {\n    const { group } = entry;\n    getGroup(group).entries.push(entry);\n  });\n\n  return groups.filter((g) => g.entries.length);\n}\n\n/**\n * Returns a list of palette entries.\n *\n * @param {FormFields} formFields\n * @returns {Array<PaletteEntry>}\n */\nexport function collectPaletteEntries(formFields) {\n  return Object.entries(formFields._formFields)\n    .map(([type, formField]) => {\n      const { config: fieldConfig } = formField;\n\n      return {\n        // fieldConfig.label is used to maintain backwards compatibility with custom form fields\n        label: fieldConfig.name || fieldConfig.label,\n        type: type,\n        group: fieldConfig.group,\n        icon: fieldConfig.icon,\n        iconUrl: fieldConfig.iconUrl,\n      };\n    })\n    .filter(({ type }) => type !== 'default');\n}\n\n/**\n * There are various options to specify an icon for a palette entry.\n *\n * a) via `iconUrl` property in a form field config\n * b) via `icon` property in a form field config\n * c) via statically defined iconsByType (fallback)\n */\nexport function getPaletteIcon(entry) {\n  const { icon, iconUrl, type, label } = entry;\n\n  let Icon;\n\n  if (iconUrl) {\n    Icon = function Icon() {\n      return (\n        <img\n          class=\"fjs-field-icon-image\"\n          width={36}\n          style={{ margin: 'auto' }}\n          alt={label}\n          src={sanitizeImageSource(iconUrl)}\n        />\n      );\n    };\n  } else {\n    Icon = icon || iconsByType(type);\n  }\n\n  return Icon;\n}\n","import { Fragment } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport { useService } from '../../../render/hooks';\nimport { Fill, Slot } from '../slot-fill';\n\n/**\n * A functional component that holds all injected renderers.\n * @returns {any} The rendered component.\n */\nexport const InjectedRendersRoot = () => {\n  const renderInjector = useService('renderInjector');\n\n  const injectedRenderers = renderInjector.fetchRenderers();\n\n  const injectedProps = useMemo(\n    () => ({\n      useService,\n      components: {\n        Fill,\n        Slot,\n      },\n    }),\n    [],\n  );\n\n  return (\n    <Fragment>\n      {injectedRenderers.map(({ Renderer }, index) => (\n        <Renderer key={index} {...injectedProps} />\n      ))}\n    </Fragment>\n  );\n};\n","import { classes as domClasses } from 'min-dom';\n\nconst CURSOR_CLS_PATTERN = /^fjs-cursor-.*$/;\n\nexport function set(mode) {\n  const classes = domClasses(document.body);\n\n  classes.removeMatching(CURSOR_CLS_PATTERN);\n\n  if (mode) {\n    classes.add('fjs-cursor-' + mode);\n  }\n}\n\nexport function unset() {\n  set(null);\n}\n\nexport function has(mode) {\n  const classes = domClasses(document.body);\n\n  return classes.has('fjs-cursor-' + mode);\n}\n","import dragula from '@bpmn-io/draggle';\n\nimport { set as setCursor } from '../../render/util/Cursor';\nimport { getAncestryList } from '@bpmn-io/form-js-viewer';\n\nexport const DRAG_CONTAINER_CLS = 'fjs-drag-container';\nexport const DROP_CONTAINER_VERTICAL_CLS = 'fjs-drop-container-vertical';\nexport const DROP_CONTAINER_HORIZONTAL_CLS = 'fjs-drop-container-horizontal';\nexport const DRAG_MOVE_CLS = 'fjs-drag-move';\nexport const DRAG_ROW_MOVE_CLS = 'fjs-drag-row-move';\nexport const DRAG_COPY_CLS = 'fjs-drag-copy';\nexport const DRAG_NO_DROP_CLS = 'fjs-no-drop';\nexport const DRAG_NO_MOVE_CLS = 'fjs-no-move';\nexport const ERROR_DROP_CLS = 'fjs-error-drop';\n\n/**\n * @typedef { { id: String, components: Array<any> } } FormRow\n */\n\nexport class Dragging {\n  /**\n   * @constructor\n   *\n   * @param { import('../../core/FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   * @param { import('../../core/FormLayouter').FormLayouter } formLayouter\n   * @param { import('../../core/FormLayoutValidator').FormLayoutValidator } formLayoutValidator\n   * @param { import('../../core/EventBus').EventBus } eventBus\n   * @param { import('../modeling/Modeling').Modeling } modeling\n   * @param { import('@bpmn-io/form-js-viewer').PathRegistry } pathRegistry\n   */\n  constructor(formFieldRegistry, formLayouter, formLayoutValidator, eventBus, modeling, pathRegistry) {\n    this._formFieldRegistry = formFieldRegistry;\n    this._formLayouter = formLayouter;\n    this._formLayoutValidator = formLayoutValidator;\n    this._eventBus = eventBus;\n    this._modeling = modeling;\n    this._pathRegistry = pathRegistry;\n  }\n\n  /**\n   * Calculates position in form schema given the dropped place.\n   *\n   * @param { FormRow } targetRow\n   * @param { any } targetFormField\n   * @param { HTMLElement } sibling\n   * @returns { number }\n   */\n  getTargetIndex(targetRow, targetFormField, sibling) {\n    /** @type HTMLElement */\n    const siblingFormFieldNode = sibling && sibling.querySelector('.fjs-element');\n    const siblingFormField = siblingFormFieldNode && this._formFieldRegistry.get(siblingFormFieldNode.dataset.id);\n\n    // (1) dropped before existing field => place before\n    if (siblingFormField) {\n      return getFormFieldIndex(targetFormField, siblingFormField);\n    }\n\n    // (2) dropped in row => place at the end of row (after last field in row)\n    if (targetRow) {\n      return (\n        getFormFieldIndex(\n          targetFormField,\n          this._formFieldRegistry.get(targetRow.components[targetRow.components.length - 1]),\n        ) + 1\n      );\n    }\n\n    // (3) dropped as last item\n    return targetFormField.components.length;\n  }\n\n  validateDrop(element, target) {\n    const formFieldNode = element.querySelector('.fjs-element');\n    const targetRow = this._formLayouter.getRow(target.dataset.rowId);\n\n    let columns;\n    let formField;\n    let targetParentId;\n\n    if (formFieldNode) {\n      formField = this._formFieldRegistry.get(formFieldNode.dataset.id);\n\n      if (!formField) {\n        return 'No associated form field in the registry';\n      }\n\n      columns = (formField.layout || {}).columns;\n\n      // (1) check for row constraints\n      if (isRow(target)) {\n        targetParentId = getFormParent(target).dataset.id;\n        const rowError = this._formLayoutValidator.validateField(formField, columns, targetRow);\n        if (rowError) {\n          return rowError;\n        }\n      } else {\n        targetParentId = target.dataset.id;\n      }\n\n      // (2) check target is a valid parent\n      if (!targetParentId) {\n        return 'Drop is not a valid target';\n      }\n\n      // (3) check  for path collisions\n      const targetParentFormField = this._formFieldRegistry.get(targetParentId);\n      const currentParentFormField = this._formFieldRegistry.get(formField._parent);\n\n      if (targetParentFormField !== currentParentFormField) {\n        const targetParentPath = this._pathRegistry.getValuePath(targetParentFormField);\n        const currentParentPath = this._pathRegistry.getValuePath(currentParentFormField);\n\n        if (targetParentPath.join('.') !== currentParentPath.join('.')) {\n          const isDropAllowedByPathRegistry = this._pathRegistry.executeRecursivelyOnFields(\n            formField,\n            ({ field, isClosed, isRepeatable }) => {\n              const options = {\n                cutoffNode: currentParentFormField.id,\n              };\n\n              const fieldPath = this._pathRegistry.getValuePath(field, options);\n              return this._pathRegistry.canClaimPath([...targetParentPath, ...fieldPath], {\n                isClosed,\n                isRepeatable,\n                knownAncestorIds: getAncestryList(targetParentId, this._formFieldRegistry),\n              });\n            },\n          );\n\n          if (!isDropAllowedByPathRegistry) {\n            return 'Drop not allowed by path registry';\n          }\n        }\n      }\n    }\n  }\n\n  moveField(element, source, targetRow, targetFormField, targetIndex) {\n    const formFieldNode = element.querySelector('.fjs-element');\n    const formField = this._formFieldRegistry.get(formFieldNode.dataset.id);\n\n    const sourceParent = getFormParent(source);\n    const sourceFormField = this._formFieldRegistry.get(sourceParent.dataset.id);\n    const sourceIndex = getFormFieldIndex(sourceFormField, formField);\n    const sourceRow = this._formLayouter.getRowForField(formField);\n\n    this._modeling.moveFormField(\n      formField,\n      sourceFormField,\n      targetFormField,\n      sourceIndex,\n      targetIndex,\n      sourceRow,\n      targetRow,\n    );\n  }\n\n  createNewField(element, targetRow, targetFormField, targetIndex) {\n    const type = element.dataset.fieldType;\n\n    let attrs = {\n      type,\n    };\n\n    attrs = {\n      ...attrs,\n      _parent: targetFormField.id,\n      layout: {\n        row: targetRow ? targetRow.id : this._formLayouter.nextRowId(),\n\n        // enable auto columns\n        columns: null,\n      },\n    };\n\n    this._modeling.addFormField(attrs, targetFormField, targetIndex);\n  }\n\n  handleRowDrop(el, target, source, sibling) {\n    const targetFormField = this._formFieldRegistry.get(target.dataset.id);\n    const rowNode = el.querySelector('.fjs-layout-row');\n    const row = this._formLayouter.getRow(rowNode.dataset.rowId);\n\n    // move each field in the row before first field of sibling row\n    row.components.forEach((id, index) => {\n      const formField = this._formFieldRegistry.get(id);\n\n      const sourceParent = getFormParent(source);\n      const sourceFormField = this._formFieldRegistry.get(sourceParent.dataset.id);\n\n      const siblingRowNode = sibling && sibling.querySelector('.fjs-layout-row');\n      const siblingRow = siblingRowNode && this._formLayouter.getRow(siblingRowNode.dataset.rowId);\n      const siblingFormField = sibling && this._formFieldRegistry.get(siblingRow.components[0]);\n\n      const sourceIndex = getFormFieldIndex(sourceFormField, formField);\n      const targetIndex =\n        (siblingRowNode ? getFormFieldIndex(targetFormField, siblingFormField) : targetFormField.components.length) +\n        index;\n\n      this._modeling.moveFormField(formField, sourceFormField, targetFormField, sourceIndex, targetIndex, row, row);\n    });\n  }\n\n  handleElementDrop(el, target, source, sibling, drake) {\n    // (1) detect drop target\n    const targetFormField = this._formFieldRegistry.get(getFormParent(target).dataset.id);\n\n    let targetRow;\n\n    // (2.1) dropped in existing row\n    if (isRow(target)) {\n      targetRow = this._formLayouter.getRow(target.dataset.rowId);\n    }\n\n    // (2.2) validate whether drop is allowed\n    const validationError = this.validateDrop(el, target);\n\n    if (validationError) {\n      return drake.cancel(true);\n    }\n\n    drake.remove();\n\n    // (3) detect position to drop field in schema order\n    const targetIndex = this.getTargetIndex(targetRow, targetFormField, sibling);\n\n    // (4) create new field or move existing\n    if (isPalette(source)) {\n      this.createNewField(el, targetRow, targetFormField, targetIndex);\n    } else {\n      this.moveField(el, source, targetRow, targetFormField, targetIndex);\n    }\n  }\n\n  /**\n   * @param { { container: Array<string>, direction: string, mirrorContainer: string } } options\n   */\n  createDragulaInstance(options) {\n    const { container, mirrorContainer } = options || {};\n\n    let dragulaOptions = {\n      direction: function (el, target) {\n        if (isRow(target)) {\n          return 'horizontal';\n        }\n\n        return 'vertical';\n      },\n      mirrorContainer,\n      isContainer(el) {\n        return container.some((cls) => el.classList.contains(cls));\n      },\n      moves(el, source, handle) {\n        return (\n          !handle.classList.contains(DRAG_NO_MOVE_CLS) &&\n          (el.classList.contains(DRAG_MOVE_CLS) ||\n            el.classList.contains(DRAG_COPY_CLS) ||\n            el.classList.contains(DRAG_ROW_MOVE_CLS))\n        );\n      },\n      copy(el) {\n        return el.classList.contains(DRAG_COPY_CLS);\n      },\n\n      accepts: (el, target) => {\n        unsetDropNotAllowed(target);\n\n        // allow dropping rows only between rows\n        if (el.classList.contains(DRAG_ROW_MOVE_CLS)) {\n          return !target.classList.contains(DROP_CONTAINER_HORIZONTAL_CLS);\n        }\n\n        // validate field drop\n        const validationError = this.validateDrop(el, target);\n\n        if (validationError) {\n          // set error feedback to row\n          setDropNotAllowed(target);\n        }\n\n        return !target.classList.contains(DRAG_NO_DROP_CLS);\n      },\n\n      transformOffset: (offset, event, element) => {\n        if (element.classList.contains(DRAG_ROW_MOVE_CLS)) {\n          const rowOffset = {\n            x: -5,\n            y: -60,\n          };\n\n          return {\n            left: event.clientX + rowOffset.x,\n            top: event.clientY + rowOffset.y,\n          };\n        }\n\n        if (element.classList.contains(DRAG_MOVE_CLS)) {\n          const iconOffset = {\n            x: -5,\n            y: -15,\n          };\n\n          return {\n            left: event.clientX + iconOffset.x,\n            top: event.clientY + iconOffset.y,\n          };\n        }\n\n        return offset;\n      },\n\n      slideFactorX: 10,\n      slideFactorY: 5,\n    };\n\n    const dragulaInstance = dragula(dragulaOptions);\n\n    // bind life cycle events\n    dragulaInstance.on('drag', (element, source) => {\n      this.emit('drag.start', { element, source });\n    });\n\n    dragulaInstance.on('dragend', (element) => {\n      this.emit('drag.end', { element });\n    });\n\n    dragulaInstance.on('drop', (element, target, source, sibling) => {\n      this.emit('drag.drop', { element, target, source, sibling });\n    });\n\n    dragulaInstance.on('over', (element, container, source) => {\n      this.emit('drag.hover', { element, container, source });\n    });\n\n    dragulaInstance.on('out', (element, container, source) => {\n      this.emit('drag.out', { element, container, source });\n    });\n\n    dragulaInstance.on('cancel', (element, container, source) => {\n      this.emit('drag.cancel', { element, container, source });\n    });\n\n    dragulaInstance.on('drop', (el, target, source, sibling) => {\n      if (!target) {\n        dragulaInstance.remove();\n        return;\n      }\n\n      // (1) handle row drop\n      if (isDragRow(el)) {\n        this.handleRowDrop(el, target, source, sibling);\n      } else {\n        // (2) handle form field drop\n        this.handleElementDrop(el, target, source, sibling, dragulaInstance);\n      }\n    });\n\n    this.emit('dragula.created', dragulaInstance);\n\n    return dragulaInstance;\n  }\n\n  emit(event, context) {\n    this._eventBus.fire(event, context);\n  }\n}\n\nDragging.$inject = ['formFieldRegistry', 'formLayouter', 'formLayoutValidator', 'eventBus', 'modeling', 'pathRegistry'];\n\n// helper //////////\n\nfunction getFormFieldIndex(parent, formField) {\n  let fieldFormIndex = parent.components.length;\n\n  parent.components.forEach(({ id }, index) => {\n    if (id === formField.id) {\n      fieldFormIndex = index;\n    }\n  });\n\n  return fieldFormIndex;\n}\n\nfunction isRow(node) {\n  return node.classList.contains('fjs-layout-row');\n}\n\nfunction isDragRow(node) {\n  return node.classList.contains(DRAG_ROW_MOVE_CLS);\n}\n\nfunction isPalette(node) {\n  return node.classList.contains('fjs-palette-fields');\n}\n\nfunction getFormParent(node) {\n  return node.closest('.fjs-element');\n}\n\nfunction setDropNotAllowed(node) {\n  node.classList.add(ERROR_DROP_CLS);\n  setCursor('not-allowed');\n}\n\nfunction unsetDropNotAllowed(node) {\n  node.classList.remove(ERROR_DROP_CLS);\n  setCursor('grabbing');\n}\n","import classNames from 'classnames';\n\nexport function FieldDragPreview(props) {\n  const { class: className, Icon, label } = props;\n\n  return (\n    <div class={classNames('fjs-field-preview', className)}>\n      <Icon class=\"fjs-field-preview-icon\" width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" />\n      <span class=\"fjs-field-preview-text\">{label}</span>\n    </div>\n  );\n}\n","import { useRef } from 'preact/hooks';\n\nimport { classes, query as domQuery } from 'min-dom';\n\nimport { useService } from '../hooks';\n\nimport { createDragger, throttle } from './Util';\n\nimport { DRAG_NO_MOVE_CLS } from '../../features/dragging/Dragging';\n\nimport classNames from 'classnames';\n\nconst COLUMNS_REGEX = /^cds--col(-lg)?/;\n\nconst ELEMENT_RESIZING_CLS = 'fjs-element-resizing';\n\nconst GRID_OFFSET_PX = 16;\n\nexport function FieldResizer(props) {\n  const { field, position } = props;\n\n  const ref = useRef(null);\n\n  const formLayoutValidator = useService('formLayoutValidator');\n  const modeling = useService('modeling');\n\n  // we can't use state as we need to\n  // manipulate this inside dragging events\n  const context = useRef({\n    startColumns: 0,\n    newColumns: 0,\n  });\n\n  const onResize = throttle((_, delta) => {\n    const { x: dx } = delta;\n\n    const { layout = {} } = field;\n\n    const newColumns = calculateNewColumns(ref.current, layout.columns || context.current.startColumns, dx, position);\n\n    const errorMessage = formLayoutValidator.validateField(field, newColumns);\n\n    if (!errorMessage) {\n      context.current.newColumns = newColumns;\n\n      // make visual updates to preview change\n      const columnNode = ref.current.closest('.fjs-layout-column');\n      removeMatching(columnNode, COLUMNS_REGEX);\n      columnNode.classList.add(`cds--col-lg-${newColumns}`);\n    }\n  });\n\n  const onResizeStart = (event) => {\n    const target = getElementNode(field);\n    const parent = getParent(target);\n\n    // initialize drag handler\n    const onDragStart = createDragger(onResize);\n    onDragStart(event);\n\n    // mitigate auto columns on the grid that\n    // has a offset of 16px (1rem) to both side\n    const columnNode = getColumnNode(target);\n    const startWidth = columnNode.getBoundingClientRect().width + GRID_OFFSET_PX;\n    context.current.startColumns = asColumns(startWidth, parent);\n\n    setResizing(target, position);\n  };\n\n  const onResizeEnd = () => {\n    const { layout = {} } = field;\n\n    if (context.current.newColumns) {\n      modeling.editFormField(field, 'layout', {\n        ...layout,\n        columns: context.current.newColumns,\n      });\n    }\n\n    const target = getElementNode(field);\n    unsetResizing(target, position);\n\n    context.current.newColumns = null;\n  };\n\n  if (field.type === 'default') {\n    return null;\n  }\n\n  return (\n    <div\n      ref={ref}\n      class={classNames('fjs-field-resize-handle', 'fjs-field-resize-handle-' + position, DRAG_NO_MOVE_CLS)}\n      draggable\n      onDragStart={onResizeStart}\n      onDragEnd={onResizeEnd}></div>\n  );\n}\n\n// helper //////\n\nfunction asColumns(width, parent) {\n  const totalWidth = parent.getBoundingClientRect().width;\n\n  const oneColumn = (1 / 16) * totalWidth;\n\n  return Math.round(width / oneColumn);\n}\n\nfunction calculateNewColumns(node, currentColumns, deltaX, position) {\n  const parent = getParent(node);\n\n  // invert delta if we are resizing from the left\n  if (position === 'left') {\n    deltaX = deltaX * -1;\n  }\n\n  const deltaColumns = asColumns(deltaX, parent);\n\n  return currentColumns + deltaColumns;\n}\n\nfunction getParent(node) {\n  return node.closest('.fjs-layout-row');\n}\n\nfunction removeMatching(node, regex) {\n  return classes(node).removeMatching(regex);\n}\n\nfunction getColumnNode(node) {\n  return node.closest('.fjs-layout-column');\n}\n\nfunction getElementNode(field) {\n  return domQuery('.fjs-element[data-id=\"' + field.id + '\"]');\n}\n\nfunction setResizing(node, position) {\n  classes(node).add(ELEMENT_RESIZING_CLS + '-' + position);\n}\n\nfunction unsetResizing(node, position) {\n  classes(node).remove(ELEMENT_RESIZING_CLS + '-' + position);\n}\n","import { render } from 'preact';\nimport { useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'preact/hooks';\n\nimport { FormComponent, FormContext, FormRenderContext, getScrollContainer } from '@bpmn-io/form-js-viewer';\n\nimport { EmptyFormIcon } from './icons';\n\nimport classNames from 'classnames';\n\nimport { useService } from '../hooks/useService';\n\nimport { DragAndDropContext } from '../context';\n\nimport { DeleteIcon, DraggableIcon } from './icons';\n\nimport { ModularSection } from './ModularSection';\nimport { Palette, collectPaletteEntries, getPaletteIcon } from '../../features/palette/components/Palette';\nimport { InjectedRendersRoot } from '../../features/render-injection/components/InjectedRendersRoot';\n\nimport { Slot, SlotFillRoot } from '../../features/render-injection/slot-fill';\n\nimport {\n  DRAG_CONTAINER_CLS,\n  DROP_CONTAINER_HORIZONTAL_CLS,\n  DROP_CONTAINER_VERTICAL_CLS,\n  DRAG_MOVE_CLS,\n  DRAG_ROW_MOVE_CLS,\n} from '../../features/dragging/Dragging';\n\nimport { FieldDragPreview } from './FieldDragPreview';\n\nimport { FieldResizer } from './FieldResizer';\n\nimport { set as setCursor, unset as unsetCursor } from '../util/Cursor';\n\nfunction ContextPad(props) {\n  if (!props.children) {\n    return null;\n  }\n\n  return <div class=\"fjs-context-pad\">{props.children}</div>;\n}\n\nfunction EmptyGroup() {\n  return (\n    <div class=\"fjs-empty-component\">\n      <span class=\"fjs-empty-component-text\">Drag and drop components here.</span>\n    </div>\n  );\n}\n\nfunction EmptyForm() {\n  return (\n    <div class=\"fjs-empty-editor\">\n      <div class=\"fjs-empty-editor-card\">\n        <EmptyFormIcon />\n        <h2>Build your form</h2>\n        <span>Drag and drop components here to start designing.</span>\n        <span>Use the preview window to test your form.</span>\n        <Slot name=\"editor-empty-state__footer\" />\n      </div>\n    </div>\n  );\n}\n\nfunction Empty(props) {\n  if (['group', 'dynamiclist'].includes(props.field.type)) {\n    return <EmptyGroup />;\n  }\n\n  if (props.field.type === 'default') {\n    return <EmptyForm />;\n  }\n\n  return null;\n}\n\nfunction Element(props) {\n  const eventBus = useService('eventBus'),\n    formFieldRegistry = useService('formFieldRegistry'),\n    formFields = useService('formFields'),\n    modeling = useService('modeling'),\n    selection = useService('selection');\n\n  const { hoverInfo } = useContext(FormRenderContext);\n\n  const { field } = props;\n\n  const { id, type, showOutline } = field;\n\n  /** @type {import(\"preact\").RefObject<HTMLDivElement>} */\n  const ref = useRef();\n\n  const [hovered, setHovered] = useState(false);\n\n  useEffect(() => {\n    function scrollIntoView({ selection }) {\n      const scrollContainer = getScrollContainer(ref.current);\n      if (!selection || selection.type === 'default' || selection.id !== id || !scrollContainer || !ref.current) {\n        return;\n      }\n\n      const elementBounds = ref.current.getBoundingClientRect();\n      const scrollContainerBounds = scrollContainer.getBoundingClientRect();\n      const isElementLarger = elementBounds.height > scrollContainerBounds.height;\n      const isNotFullyVisible =\n        elementBounds.bottom > scrollContainerBounds.bottom || elementBounds.top < scrollContainerBounds.top;\n\n      if (isNotFullyVisible && !isElementLarger) {\n        ref.current.scrollIntoView({ behavior: 'auto', block: 'nearest' });\n      }\n    }\n\n    eventBus.on('selection.changed', scrollIntoView);\n\n    return () => eventBus.off('selection.changed', scrollIntoView);\n  }, [eventBus, id]);\n\n  useLayoutEffect(() => {\n    if (selection.isSelected(field)) {\n      ref.current.focus();\n    }\n  }, [selection, field]);\n\n  const onClick = useCallback(\n    (event) => {\n      // TODO(nikku): refactor this to use proper DOM delegation\n      const fieldEl = event.target.closest('[data-id]');\n\n      if (!fieldEl) {\n        return;\n      }\n\n      const id = fieldEl.dataset.id;\n\n      if (id === field.id) {\n        selection.toggle(field);\n      }\n    },\n    [field, selection],\n  );\n\n  const isSelected = selection.isSelected(field);\n\n  const classString = useMemo(() => {\n    const classes = [];\n\n    if (props.class) {\n      classes.push(...props.class.split(' '));\n    }\n\n    if (isSelected) {\n      classes.push('fjs-editor-selected');\n    }\n\n    const grouplike = ['group', 'dynamiclist'].includes(type);\n\n    if (grouplike) {\n      classes.push(showOutline ? 'fjs-outlined' : 'fjs-dashed-outlined');\n    }\n\n    if (hovered) {\n      classes.push('fjs-editor-hovered');\n    }\n\n    return classes.join(' ');\n  }, [hovered, isSelected, props.class, showOutline, type]);\n\n  const onRemove = (event) => {\n    event.stopPropagation();\n\n    const parentField = formFieldRegistry.get(field._parent);\n\n    const index = getFormFieldIndex(parentField, field);\n\n    modeling.removeFormField(field, parentField, index);\n  };\n\n  const onKeyPress = (event) => {\n    if (event.key === 'Enter') {\n      event.stopPropagation();\n      selection.toggle(field);\n    }\n  };\n\n  return (\n    <div\n      class={classString}\n      data-id={id}\n      data-field-type={type}\n      tabIndex={type === 'default' ? -1 : 0}\n      onClick={onClick}\n      onKeyPress={onKeyPress}\n      onMouseOver={(e) => {\n        if (hoverInfo.cleanup) {\n          hoverInfo.cleanup();\n        }\n\n        setHovered(true);\n        hoverInfo.cleanup = () => setHovered(false);\n        e.stopPropagation();\n      }}\n      ref={ref}>\n      <DebugColumns field={field} />\n      <ContextPad>\n        {selection.isSelected(field) && field.type !== 'default' ? (\n          <button\n            type=\"button\"\n            title={getRemoveButtonTitle(field, formFields)}\n            class=\"fjs-context-pad-item\"\n            onClick={onRemove}>\n            <DeleteIcon />\n          </button>\n        ) : null}\n      </ContextPad>\n      {props.children}\n      <FieldResizer position=\"left\" field={field}></FieldResizer>\n      <FieldResizer position=\"right\" field={field}></FieldResizer>\n    </div>\n  );\n}\n\nfunction DebugColumns(props) {\n  const { field } = props;\n\n  const debugColumnsConfig = useService('config.debugColumns');\n\n  if (!debugColumnsConfig || field.type == 'default') {\n    return null;\n  }\n\n  return (\n    <div\n      style=\"width: fit-content;\n        padding: 2px 6px;\n        height: 16px;\n        background: var(--color-blue-205-100-95);\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        position: absolute;\n        bottom: -2px;\n        z-index: 2;\n        font-size: 10px;\n        right: 3px;\"\n      class=\"fjs-debug-columns\">\n      {(field.layout || {}).columns || 'auto'}\n    </div>\n  );\n}\n\nfunction Children(props) {\n  const { field } = props;\n\n  const { id } = field;\n\n  const classes = ['fjs-children', DROP_CONTAINER_VERTICAL_CLS];\n\n  if (props.class) {\n    classes.push(...props.class.split(' '));\n  }\n\n  return (\n    <div class={classes.join(' ')} data-id={id}>\n      {props.children}\n    </div>\n  );\n}\n\nfunction Row(props) {\n  const { row } = props;\n\n  const { id } = row;\n\n  const classes = [DROP_CONTAINER_HORIZONTAL_CLS];\n\n  if (props.class) {\n    classes.push(...props.class.split(' '));\n  }\n\n  return (\n    <div class={classNames(DRAG_ROW_MOVE_CLS)}>\n      <span class=\"fjs-row-dragger\">\n        <DraggableIcon></DraggableIcon>\n      </span>\n      <div class={classes.join(' ')} style={props.style} data-row-id={id}>\n        {props.children}\n      </div>\n    </div>\n  );\n}\n\nfunction Column(props) {\n  const { field } = props;\n\n  const classes = [DRAG_MOVE_CLS];\n\n  if (field.type === 'default') {\n    return props.children;\n  }\n\n  if (props.class) {\n    classes.push(...props.class.split(' '));\n  }\n\n  return (\n    <div data-field-type={field.type} class={classes.join(' ')}>\n      {props.children}\n    </div>\n  );\n}\n\nexport function FormEditor() {\n  const dragging = useService('dragging'),\n    eventBus = useService('eventBus'),\n    formEditor = useService('formEditor'),\n    injector = useService('injector'),\n    selection = useService('selection'),\n    propertiesPanel = useService('propertiesPanel'),\n    propertiesPanelConfig = useService('config.propertiesPanel');\n\n  const { schema, properties } = formEditor._getState();\n\n  const { ariaLabel } = properties;\n\n  const formContainerRef = useRef(null);\n\n  const propertiesPanelRef = useRef(null);\n\n  const [, setSelection] = useState(schema);\n\n  const [hasInitialized, setHasInitialized] = useState(false);\n\n  useEffect(() => {\n    function handleSelectionChanged(event) {\n      setSelection(event.selection || schema);\n    }\n\n    eventBus.on('selection.changed', handleSelectionChanged);\n\n    return () => {\n      eventBus.off('selection.changed', handleSelectionChanged);\n    };\n  }, [eventBus, schema]);\n\n  useEffect(() => {\n    setSelection(selection.get() || schema);\n  }, [selection, schema]);\n\n  const [drake, setDrake] = useState(null);\n\n  const dragAndDropContext = {\n    drake,\n  };\n\n  useEffect(() => {\n    let dragulaInstance = dragging.createDragulaInstance({\n      container: [DRAG_CONTAINER_CLS, DROP_CONTAINER_VERTICAL_CLS, DROP_CONTAINER_HORIZONTAL_CLS],\n      mirrorContainer: formContainerRef.current,\n    });\n\n    setDrake(dragulaInstance);\n\n    const onDetach = () => {\n      if (dragulaInstance) {\n        dragulaInstance.destroy();\n        eventBus.fire('dragula.destroyed');\n      }\n    };\n\n    const onAttach = () => {\n      onDetach();\n\n      dragulaInstance = dragging.createDragulaInstance({\n        container: [DRAG_CONTAINER_CLS, DROP_CONTAINER_VERTICAL_CLS, DROP_CONTAINER_HORIZONTAL_CLS],\n        mirrorContainer: formContainerRef.current,\n      });\n      setDrake(dragulaInstance);\n    };\n\n    const onCreate = (drake) => {\n      setDrake(drake);\n    };\n\n    const onDragStart = () => {\n      setCursor('grabbing');\n    };\n\n    const onDragEnd = () => {\n      unsetCursor();\n    };\n\n    eventBus.on('attach', onAttach);\n    eventBus.on('detach', onDetach);\n    eventBus.on('dragula.created', onCreate);\n    eventBus.on('drag.start', onDragStart);\n    eventBus.on('drag.end', onDragEnd);\n\n    return () => {\n      onDetach();\n\n      eventBus.off('attach', onAttach);\n      eventBus.off('detach', onDetach);\n      eventBus.off('dragula.created', onCreate);\n      eventBus.off('drag.start', onDragStart);\n      eventBus.off('drag.end', onDragEnd);\n    };\n  }, [dragging, eventBus]);\n\n  // fire event after render to notify interested parties\n  useEffect(() => {\n    if (hasInitialized) {\n      return;\n    }\n\n    setHasInitialized(true);\n    eventBus.fire('rendered');\n\n    // keep deprecated event to ensure backward compatibility\n    eventBus.fire('formEditor.rendered');\n  }, [eventBus, hasInitialized]);\n\n  const formRenderContext = useMemo(\n    () => ({\n      Children,\n      Column,\n      Element,\n      Empty,\n      Row,\n      hoverInfo: {},\n      applyVisibilityConditions: false,\n    }),\n    [],\n  );\n\n  const formContext = useMemo(\n    () => ({\n      getService(type, strict = true) {\n        // TODO(philippfromme): clean up\n        if (type === 'form') {\n          return {\n            _getState() {\n              return {\n                data: {},\n                errors: {},\n                properties: {\n                  ariaLabel,\n                  disabled: true,\n                },\n                schema,\n              };\n            },\n          };\n        }\n\n        return injector.get(type, strict);\n      },\n      formId: formEditor._id,\n    }),\n    [ariaLabel, formEditor, injector, schema],\n  );\n\n  const onSubmit = useCallback(() => {}, []);\n\n  const onReset = useCallback(() => {}, []);\n\n  // attach default properties panel\n  const hasDefaultPropertiesPanel = defaultPropertiesPanel(propertiesPanelConfig);\n\n  useEffect(() => {\n    if (hasDefaultPropertiesPanel) {\n      propertiesPanel.attachTo(propertiesPanelRef.current);\n    }\n  }, [propertiesPanelRef, propertiesPanel, hasDefaultPropertiesPanel]);\n\n  return (\n    <div class=\"fjs-form-editor\">\n      <SlotFillRoot>\n        <DragAndDropContext.Provider value={dragAndDropContext}>\n          <ModularSection rootClass=\"fjs-palette-container\" section=\"palette\">\n            <Palette />\n          </ModularSection>\n          <div ref={formContainerRef} class=\"fjs-form-container\">\n            <FormContext.Provider value={formContext}>\n              <FormRenderContext.Provider\n                // @ts-ignore\n                value={formRenderContext}>\n                <FormComponent onSubmit={onSubmit} onReset={onReset} />\n              </FormRenderContext.Provider>\n            </FormContext.Provider>\n          </div>\n          <CreatePreview />\n        </DragAndDropContext.Provider>\n        {hasDefaultPropertiesPanel && <div class=\"fjs-editor-properties-container\" ref={propertiesPanelRef} />}\n        <ModularSection rootClass=\"fjs-render-injector-container\" section=\"renderInjector\">\n          <InjectedRendersRoot />\n        </ModularSection>\n      </SlotFillRoot>\n    </div>\n  );\n}\n\nfunction getFormFieldIndex(parent, formField) {\n  let fieldFormIndex = parent.components.length;\n\n  parent.components.forEach(({ id }, index) => {\n    if (id === formField.id) {\n      fieldFormIndex = index;\n    }\n  });\n\n  return fieldFormIndex;\n}\n\nfunction CreatePreview(props) {\n  const { drake } = useContext(DragAndDropContext);\n\n  const formFields = useService('formFields');\n\n  useEffect(() => {\n    if (!drake) {\n      return;\n    }\n\n    function handleCloned(clone, original, type) {\n      const fieldType = clone.dataset.fieldType;\n\n      // (1) field preview\n      if (fieldType) {\n        const paletteEntry = findPaletteEntry(fieldType, formFields);\n\n        if (!paletteEntry) {\n          return;\n        }\n\n        const { label } = paletteEntry;\n\n        const Icon = getPaletteIcon(paletteEntry);\n\n        clone.innerHTML = '';\n\n        clone.class = 'gu-mirror';\n        clone.classList.add('fjs-field-preview-container');\n\n        if (original.classList.contains('fjs-palette-field')) {\n          // default to auto columns when creating from palette\n          clone.classList.add('cds--col');\n        }\n\n        // todo(pinussilvestrus): dragula, how to mitigate cursor position\n        // https://github.com/bevacqua/dragula/issues/285\n        render(<FieldDragPreview label={label} Icon={Icon} />, clone);\n      } else {\n        // (2) row preview\n\n        // remove elements from copy (context pad, row dragger, ...)\n        ['fjs-context-pad', 'fjs-row-dragger', 'fjs-debug-columns'].forEach((cls) => {\n          const cloneNode = clone.querySelectorAll('.' + cls);\n          cloneNode.length && cloneNode.forEach((e) => e.remove());\n        });\n\n        // mirror grid\n        clone.classList.add('cds--grid');\n        clone.classList.add('cds--grid--condensed');\n      }\n    }\n\n    drake.on('cloned', handleCloned);\n\n    return () => drake.off('cloned', handleCloned);\n  }, [drake, formFields]);\n\n  return null;\n}\n\n// helper //////\n\nfunction findPaletteEntry(type, formFields) {\n  return collectPaletteEntries(formFields).find((entry) => entry.type === type);\n}\n\nfunction defaultPropertiesPanel(propertiesPanelConfig) {\n  return !(propertiesPanelConfig && propertiesPanelConfig.parent);\n}\n\nfunction getRemoveButtonTitle(formField, formFields) {\n  const entry = findPaletteEntry(formField.type, formFields);\n\n  if (!entry) {\n    return 'Remove form field';\n  }\n\n  return `Remove ${entry.label}`;\n}\n","import { render } from 'preact';\nimport { useState } from 'preact/hooks';\n\nimport { FormEditor } from './components/FormEditor';\n\nimport { FormEditorContext } from './context';\n\n/**\n * @typedef { { container: Element, compact?: boolean } } RenderConfig\n * @typedef { import('didi').Injector } Injector\n * @typedef { import('../core/EventBus').EventBus } EventBus\n * @typedef { import('../FormEditor').FormEditor } FormEditor\n */\n\n/**\n * @param {RenderConfig} renderConfig\n * @param {EventBus} eventBus\n * @param {FormEditor} formEditor\n * @param {Injector} injector\n */\nexport class Renderer {\n  constructor(renderConfig, eventBus, formEditor, injector) {\n    const { container, compact = false } = renderConfig;\n\n    eventBus.on('form.init', function () {\n      // emit <canvas.init> so dependent components can hook in\n      // this is required to register keyboard bindings\n      eventBus.fire('canvas.init', {\n        svg: container,\n        viewport: null,\n      });\n    });\n\n    // focus container on over if no selection\n    container.addEventListener('mouseover', function () {\n      if (document.activeElement === document.body) {\n        container.focus({ preventScroll: true });\n      }\n    });\n\n    // ensure we focus the container if the users clicks\n    // inside; this follows input focus handling closely\n    container.addEventListener('click', function (event) {\n      // force focus when clicking container\n      if (!container.contains(document.activeElement)) {\n        container.focus({ preventScroll: true });\n      }\n    });\n\n    const App = () => {\n      const [state, setState] = useState(formEditor._getState());\n\n      const formEditorContext = {\n        getService(type, strict = true) {\n          return injector.get(type, strict);\n        },\n      };\n\n      formEditor.on('changed', (newState) => {\n        setState(newState);\n      });\n\n      const { schema } = state;\n\n      if (!schema) {\n        return null;\n      }\n\n      return (\n        <div class={`fjs-container fjs-editor-container ${compact ? 'fjs-editor-compact' : ''}`}>\n          <FormEditorContext.Provider value={formEditorContext}>\n            <FormEditor />\n          </FormEditorContext.Provider>\n        </div>\n      );\n    };\n\n    eventBus.on('form.init', () => {\n      render(<App />, container);\n    });\n\n    eventBus.on('form.destroy', () => {\n      render(null, container);\n    });\n  }\n}\n\nRenderer.$inject = ['config.renderer', 'eventBus', 'formEditor', 'injector'];\n","import { EditorFormFields } from './EditorFormFields';\nimport { Renderer } from './Renderer';\n\nexport const RenderModule = {\n  __init__: ['formFields', 'renderer'],\n  formFields: ['type', EditorFormFields],\n  renderer: ['type', Renderer],\n};\n","import { FieldFactory, Importer, PathRegistry } from '@bpmn-io/form-js-viewer';\n\nimport { EventBus } from './EventBus';\nimport { DebounceFactory } from './Debounce';\nimport { FormFieldRegistry } from './FormFieldRegistry';\nimport { FormLayouter } from './FormLayouter';\nimport { FormLayoutValidator } from './FormLayoutValidator';\n\nimport { RenderModule } from '../render';\n\nexport const CoreModule = {\n  __depends__: [RenderModule],\n  debounce: ['factory', DebounceFactory],\n  eventBus: ['type', EventBus],\n  importer: ['type', Importer],\n  formFieldRegistry: ['type', FormFieldRegistry],\n  pathRegistry: ['type', PathRegistry],\n  formLayouter: ['type', FormLayouter],\n  formLayoutValidator: ['type', FormLayoutValidator],\n  fieldFactory: ['type', FieldFactory],\n};\n","import {\n  forEach,\n  isArray\n} from 'min-dash';\n\n/**\n * @typedef {import('didi').Injector} Injector\n *\n * @typedef {import('../../core/EventBus').default} EventBus\n */\n\nvar NOT_REGISTERED_ERROR = 'is not a registered action',\n    IS_REGISTERED_ERROR = 'is already registered';\n\n\n/**\n * An interface that provides access to modeling actions by decoupling\n * the one who requests the action to be triggered and the trigger itself.\n *\n * It's possible to add new actions by registering them with ´registerAction´\n * and likewise unregister existing ones with ´unregisterAction´.\n *\n *\n * ## Life-Cycle and configuration\n *\n * The editor actions will wait for diagram initialization before\n * registering default actions _and_ firing an `editorActions.init` event.\n *\n * Interested parties may listen to the `editorActions.init` event with\n * low priority to check, which actions got registered. Other components\n * may use the event to register their own actions via `registerAction`.\n *\n * @param {EventBus} eventBus\n * @param {Injector} injector\n */\nexport default function EditorActions(eventBus, injector) {\n\n  // initialize actions\n  this._actions = {};\n\n  var self = this;\n\n  eventBus.on('diagram.init', function() {\n\n    // all diagram modules got loaded; check which ones\n    // are available and register the respective default actions\n    self._registerDefaultActions(injector);\n\n    // ask interested parties to register available editor\n    // actions on diagram initialization\n    eventBus.fire('editorActions.init', {\n      editorActions: self\n    });\n  });\n\n}\n\nEditorActions.$inject = [\n  'eventBus',\n  'injector'\n];\n\n/**\n * Register default actions.\n *\n * @param {Injector} injector\n */\nEditorActions.prototype._registerDefaultActions = function(injector) {\n\n  // (1) retrieve optional components to integrate with\n\n  var commandStack = injector.get('commandStack', false);\n  var modeling = injector.get('modeling', false);\n  var selection = injector.get('selection', false);\n  var zoomScroll = injector.get('zoomScroll', false);\n  var copyPaste = injector.get('copyPaste', false);\n  var canvas = injector.get('canvas', false);\n  var rules = injector.get('rules', false);\n  var keyboardMove = injector.get('keyboardMove', false);\n  var keyboardMoveSelection = injector.get('keyboardMoveSelection', false);\n\n  // (2) check components and register actions\n\n  if (commandStack) {\n    this.register('undo', function() {\n      commandStack.undo();\n    });\n\n    this.register('redo', function() {\n      commandStack.redo();\n    });\n  }\n\n  if (copyPaste && selection) {\n    this.register('copy', function() {\n      var selectedElements = selection.get();\n\n      if (selectedElements.length) {\n        return copyPaste.copy(selectedElements);\n      }\n    });\n  }\n\n  if (copyPaste && selection) {\n    this.register('duplicate', function() {\n      var selectedElements = selection.get();\n\n      if (selectedElements.length) {\n        return copyPaste.duplicate(selectedElements);\n      }\n    });\n  }\n\n  if (copyPaste) {\n    this.register('paste', function() {\n      copyPaste.paste();\n    });\n  }\n\n  if (copyPaste && selection && rules) {\n    this.register('cut', function() {\n      var selectedElements = selection.get();\n\n      if (!selectedElements.length) {\n        return;\n      }\n\n      var allowed = rules.allowed('elements.delete', { elements: selectedElements });\n\n      if (allowed === false) {\n        return;\n      }\n\n      var cuttableElements = isArray(allowed) ? allowed : selectedElements;\n      return copyPaste.cut(cuttableElements.slice());\n    });\n  }\n\n  if (zoomScroll) {\n    this.register('stepZoom', function(opts) {\n      zoomScroll.stepZoom(opts.value);\n    });\n  }\n\n  if (canvas) {\n    this.register('zoom', function(opts) {\n      canvas.zoom(opts.value);\n    });\n  }\n\n  if (modeling && selection && rules) {\n    this.register('removeSelection', function() {\n\n      var selectedElements = selection.get();\n\n      if (!selectedElements.length) {\n        return;\n      }\n\n      var allowed = rules.allowed('elements.delete', { elements: selectedElements }),\n          removableElements;\n\n      if (allowed === false) {\n        return;\n      }\n      else if (isArray(allowed)) {\n        removableElements = allowed;\n      }\n      else {\n        removableElements = selectedElements;\n      }\n\n      if (removableElements.length) {\n        modeling.removeElements(removableElements.slice());\n      }\n    });\n  }\n\n  if (keyboardMove) {\n    this.register('moveCanvas', function(opts) {\n      keyboardMove.moveCanvas(opts);\n    });\n  }\n\n  if (keyboardMoveSelection) {\n    this.register('moveSelection', function(opts) {\n      keyboardMoveSelection.moveSelection(opts.direction, opts.accelerated);\n    });\n  }\n\n};\n\n\n/**\n * Triggers a registered action\n *\n * @param {string} action\n * @param {Object} opts\n *\n * @return {unknown} Returns what the registered listener returns\n */\nEditorActions.prototype.trigger = function(action, opts) {\n  if (!this._actions[action]) {\n    throw error(action, NOT_REGISTERED_ERROR);\n  }\n\n  return this._actions[action](opts);\n};\n\n\n/**\n * Registers a collections of actions.\n * The key of the object will be the name of the action.\n *\n * @example\n *\n * ```javascript\n * var actions = {\n *   spaceTool: function() {\n *     spaceTool.activateSelection();\n *   },\n *   lassoTool: function() {\n *     lassoTool.activateSelection();\n *   }\n * ];\n *\n * editorActions.register(actions);\n *\n * editorActions.isRegistered('spaceTool'); // true\n * ```\n *\n * @param {Object} actions\n */\nEditorActions.prototype.register = function(actions, listener) {\n  var self = this;\n\n  if (typeof actions === 'string') {\n    return this._registerAction(actions, listener);\n  }\n\n  forEach(actions, function(listener, action) {\n    self._registerAction(action, listener);\n  });\n};\n\n/**\n * Registers a listener to an action key\n *\n * @param {string} action\n * @param {Function} listener\n */\nEditorActions.prototype._registerAction = function(action, listener) {\n  if (this.isRegistered(action)) {\n    throw error(action, IS_REGISTERED_ERROR);\n  }\n\n  this._actions[action] = listener;\n};\n\n/**\n * Unregister an existing action\n *\n * @param {string} action\n */\nEditorActions.prototype.unregister = function(action) {\n  if (!this.isRegistered(action)) {\n    throw error(action, NOT_REGISTERED_ERROR);\n  }\n\n  this._actions[action] = undefined;\n};\n\n/**\n * Returns the identifiers of all currently registered editor actions\n *\n * @return {string[]}\n */\nEditorActions.prototype.getActions = function() {\n  return Object.keys(this._actions);\n};\n\n/**\n * Checks wether the given action is registered\n *\n * @param {string} action\n *\n * @return {boolean}\n */\nEditorActions.prototype.isRegistered = function(action) {\n  return !!this._actions[action];\n};\n\n\nfunction error(action, message) {\n  return new Error(action + ' ' + message);\n}\n","import EditorActions from './EditorActions';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n  __init__: [ 'editorActions' ],\n  editorActions: [ 'type', EditorActions ]\n};\n","import EditorActions from 'diagram-js/lib/features/editor-actions/EditorActions';\n\nexport class FormEditorActions extends EditorActions {\n  constructor(eventBus, injector) {\n    super(eventBus, injector);\n\n    eventBus.on('form.init', () => {\n      this._registerDefaultActions(injector);\n\n      eventBus.fire('editorActions.init', {\n        editorActions: this,\n      });\n    });\n  }\n\n  _registerDefaultActions(injector) {\n    const commandStack = injector.get('commandStack', false),\n      formFieldRegistry = injector.get('formFieldRegistry', false),\n      selection = injector.get('selection', false);\n\n    if (commandStack) {\n      // @ts-ignore\n      this.register('undo', () => {\n        commandStack.undo();\n      });\n\n      // @ts-ignore\n      this.register('redo', () => {\n        commandStack.redo();\n      });\n    }\n\n    if (formFieldRegistry && selection) {\n      // @ts-ignore\n      this.register('selectFormField', (options = {}) => {\n        const { id } = options;\n\n        if (!id) {\n          return;\n        }\n\n        const formField = formFieldRegistry.get(id);\n\n        if (formField) {\n          selection.set(formField);\n        }\n      });\n    }\n  }\n}\n\nFormEditorActions.$inject = ['eventBus', 'injector'];\n","import BaseEditorActionsModule from 'diagram-js/lib/features/editor-actions';\n\nimport { FormEditorActions } from './FormEditorActions';\n\nexport const EditorActionsModule = {\n  __depends__: [BaseEditorActionsModule],\n  editorActions: ['type', FormEditorActions],\n};\n","import { isString } from 'min-dash';\n\nexport class EditorTemplating {\n  // same rules as viewer templating\n  isTemplate(value) {\n    return isString(value) && (value.startsWith('=') || /{{/.test(value));\n  }\n\n  // return the template raw, as we usually just want to display that\n  evaluate(template) {\n    return template;\n  }\n}\n\nEditorTemplating.$inject = [];\n","import { FeelExpressionLanguage } from '@bpmn-io/form-js-viewer';\nimport { EditorTemplating } from './EditorTemplating';\n\nexport const EditorExpressionLanguageModule = {\n  __init__: ['expressionLanguage', 'templating'],\n  expressionLanguage: ['type', FeelExpressionLanguage],\n  templating: ['type', EditorTemplating],\n};\n","import { isArray } from 'min-dash';\r\n\r\nexport var KEYS_COPY = [ 'c', 'C' ];\r\nexport var KEYS_PASTE = [ 'v', 'V' ];\r\nexport var KEYS_DUPLICATE = [ 'd', 'D' ];\r\nexport var KEYS_CUT = [ 'x', 'X' ];\r\nexport var KEYS_REDO = [ 'y', 'Y' ];\r\nexport var KEYS_UNDO = [ 'z', 'Z' ];\r\n\r\n/**\r\n * Returns true if event was triggered with any modifier\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function hasModifier(event) {\r\n  return (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n * @return {boolean}\r\n */\r\nexport function isCmd(event) {\r\n\r\n  // ensure we don't react to AltGr\r\n  // (mapped to CTRL + ALT)\r\n  if (event.altKey) {\r\n    return false;\r\n  }\r\n\r\n  return event.ctrlKey || event.metaKey;\r\n}\r\n\r\n/**\r\n * Checks if key pressed is one of provided keys.\r\n *\r\n * @param {string|string[]} keys\r\n * @param {KeyboardEvent} event\r\n * @return {boolean}\r\n */\r\nexport function isKey(keys, event) {\r\n  keys = isArray(keys) ? keys : [ keys ];\r\n\r\n  return keys.indexOf(event.key) !== -1 || keys.indexOf(event.code) !== -1;\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isShift(event) {\r\n  return event.shiftKey;\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isCopy(event) {\r\n  return isCmd(event) && isKey(KEYS_COPY, event);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isPaste(event) {\r\n  return isCmd(event) && isKey(KEYS_PASTE, event);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isDuplicate(event) {\r\n  return isCmd(event) && isKey(KEYS_DUPLICATE, event);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isCut(event) {\r\n  return isCmd(event) && isKey(KEYS_CUT, event);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isUndo(event) {\r\n  return isCmd(event) && !isShift(event) && isKey(KEYS_UNDO, event);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isRedo(event) {\r\n  return isCmd(event) && (\r\n    isKey(KEYS_REDO, event) || (\r\n      isKey(KEYS_UNDO, event) && isShift(event)\r\n    )\r\n  );\r\n}\r\n","import {\n  isFunction\n} from 'min-dash';\n\nimport {\n  event as domEvent\n} from 'min-dom';\n\nimport {\n  hasModifier,\n  isCmd,\n  isKey,\n  isShift\n} from './KeyboardUtil';\n\n/**\n * @typedef {import('../../core/EventBus').default} EventBus\n *\n * @typedef {({ keyEvent: KeyboardEvent }) => any} Listener\n */\n\nvar KEYDOWN_EVENT = 'keyboard.keydown',\n    KEYUP_EVENT = 'keyboard.keyup';\n\nvar DEFAULT_PRIORITY = 1000;\n\nvar compatMessage = 'Keyboard binding is now implicit; explicit binding to an element got removed. For more information, see https://github.com/bpmn-io/diagram-js/issues/661';\n\n\n/**\n * A keyboard abstraction that may be activated and\n * deactivated by users at will, consuming global key events\n * and triggering diagram actions.\n *\n * For keys pressed down, keyboard fires `keyboard.keydown` event.\n * The event context contains one field which is `KeyboardEvent` event.\n *\n * The implementation fires the following key events that allow\n * other components to hook into key handling:\n *\n *  - keyboard.bind\n *  - keyboard.unbind\n *  - keyboard.init\n *  - keyboard.destroy\n *\n * All events contain one field which is node.\n *\n * Specify the initial keyboard binding state via the\n * `keyboard.bind=true|false` configuration option.\n *\n * @param {Object} config\n * @param {boolean} [config.bind]\n * @param {EventBus} eventBus\n */\nexport default function Keyboard(config, eventBus) {\n  var self = this;\n\n  this._config = config = config || {};\n\n  this._eventBus = eventBus;\n\n  this._keydownHandler = this._keydownHandler.bind(this);\n  this._keyupHandler = this._keyupHandler.bind(this);\n\n  // properly clean dom registrations\n  eventBus.on('diagram.destroy', function() {\n    self._fire('destroy');\n\n    self.unbind();\n  });\n\n  if (config.bindTo) {\n    console.error('unsupported configuration <keyboard.bindTo>', new Error(compatMessage));\n  }\n\n  var bind = config && config.bind !== false;\n\n  eventBus.on('canvas.init', function(event) {\n    self._target = event.svg;\n\n    if (bind) {\n      self.bind();\n    }\n\n    self._fire('init');\n  });\n\n}\n\nKeyboard.$inject = [\n  'config.keyboard',\n  'eventBus'\n];\n\nKeyboard.prototype._keydownHandler = function(event) {\n  this._keyHandler(event, KEYDOWN_EVENT);\n};\n\nKeyboard.prototype._keyupHandler = function(event) {\n  this._keyHandler(event, KEYUP_EVENT);\n};\n\nKeyboard.prototype._keyHandler = function(event, type) {\n  var eventBusResult;\n\n  if (this._isEventIgnored(event)) {\n    return;\n  }\n\n  var context = {\n    keyEvent: event\n  };\n\n  eventBusResult = this._eventBus.fire(type || KEYDOWN_EVENT, context);\n\n  if (eventBusResult) {\n    event.preventDefault();\n  }\n};\n\nKeyboard.prototype._isEventIgnored = function(event) {\n  return false;\n};\n\n/**\n * Bind keyboard events to the given DOM node.\n *\n * @overlord\n * @deprecated No longer in use since version 15.0.0.\n *\n * @param {EventTarget} node\n */\n/**\n * Bind keyboard events to the canvas node.\n */\nKeyboard.prototype.bind = function(node) {\n\n  // legacy <node> argument provided\n  if (node) {\n    console.error('unsupported argument <node>', new Error(compatMessage));\n  }\n\n  // make sure that the keyboard is only bound once to the DOM\n  this.unbind();\n\n  node = this._node = this._target;\n\n  // bind key events\n  domEvent.bind(node, 'keydown', this._keydownHandler);\n  domEvent.bind(node, 'keyup', this._keyupHandler);\n\n  this._fire('bind');\n};\n\n/**\n * @return {EventTarget}\n */\nKeyboard.prototype.getBinding = function() {\n  return this._node;\n};\n\nKeyboard.prototype.unbind = function() {\n  var node = this._node;\n\n  if (node) {\n    this._fire('unbind');\n\n    // unbind key events\n    domEvent.unbind(node, 'keydown', this._keydownHandler);\n    domEvent.unbind(node, 'keyup', this._keyupHandler);\n  }\n\n  this._node = null;\n};\n\n/**\n * @param {string} event\n */\nKeyboard.prototype._fire = function(event) {\n  this._eventBus.fire('keyboard.' + event, { node: this._node });\n};\n\n/**\n * Add a listener function that is notified with `KeyboardEvent` whenever\n * the keyboard is bound and the user presses a key. If no priority is\n * provided, the default value of 1000 is used.\n *\n * @param {number} [priority]\n * @param {Listener} listener\n * @param {string} [type='keyboard.keydown']\n */\nKeyboard.prototype.addListener = function(priority, listener, type) {\n  if (isFunction(priority)) {\n    type = listener;\n    listener = priority;\n    priority = DEFAULT_PRIORITY;\n  }\n\n  this._eventBus.on(type || KEYDOWN_EVENT, priority, listener);\n};\n\n/**\n * Remove a listener function.\n *\n * @param {Listener} listener\n * @param {string} [type='keyboard.keydown']\n */\nKeyboard.prototype.removeListener = function(listener, type) {\n  this._eventBus.off(type || KEYDOWN_EVENT, listener);\n};\n\nKeyboard.prototype.hasModifier = hasModifier;\nKeyboard.prototype.isCmd = isCmd;\nKeyboard.prototype.isShift = isShift;\nKeyboard.prototype.isKey = isKey;\n","import {\n  isCmd,\n  isKey,\n  isCopy,\n  isPaste,\n  isDuplicate,\n  isCut,\n  isUndo,\n  isRedo,\n  KEYS_COPY,\n  KEYS_PASTE,\n  KEYS_UNDO,\n  KEYS_REDO\n} from './KeyboardUtil';\n\n/**\n * @typedef {import('../editor-actions/EditorActions').default} EditorActions\n * @typedef {import('../../core/EventBus').default} EventBus\n * @typedef {import('./Keyboard').default} Keyboard\n */\n\nexport {\n  KEYS_COPY,\n  KEYS_PASTE,\n  KEYS_UNDO,\n  KEYS_REDO\n};\n\n\nvar LOW_PRIORITY = 500;\n\n\n/**\n * Adds default keyboard bindings.\n *\n * This does not pull in any features will bind only actions that\n * have previously been registered against the editorActions component.\n *\n * @param {EventBus} eventBus\n * @param {Keyboard} keyboard\n */\nexport default function KeyboardBindings(eventBus, keyboard) {\n\n  var self = this;\n\n  eventBus.on('editorActions.init', LOW_PRIORITY, function(event) {\n\n    var editorActions = event.editorActions;\n\n    self.registerBindings(keyboard, editorActions);\n  });\n}\n\nKeyboardBindings.$inject = [\n  'eventBus',\n  'keyboard'\n];\n\n\n/**\n * Register available keyboard bindings.\n *\n * @param {Keyboard} keyboard\n * @param {EditorActions} editorActions\n */\nKeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) {\n\n  /**\n   * Add keyboard binding if respective editor action\n   * is registered.\n   *\n   * @param {string} action name\n   * @param {Function} fn that implements the key binding\n   */\n  function addListener(action, fn) {\n\n    if (editorActions.isRegistered(action)) {\n      keyboard.addListener(fn);\n    }\n  }\n\n\n  // undo\n  // (CTRL|CMD) + Z\n  addListener('undo', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isUndo(event)) {\n      editorActions.trigger('undo');\n\n      return true;\n    }\n  });\n\n  // redo\n  // CTRL + Y\n  // CMD + SHIFT + Z\n  addListener('redo', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isRedo(event)) {\n      editorActions.trigger('redo');\n\n      return true;\n    }\n  });\n\n  // copy\n  // CTRL/CMD + C\n  addListener('copy', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isCopy(event)) {\n      editorActions.trigger('copy');\n\n      return true;\n    }\n  });\n\n  // paste\n  // CTRL/CMD + V\n  addListener('paste', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isPaste(event)) {\n      editorActions.trigger('paste');\n\n      return true;\n    }\n  });\n\n  // duplicate\n  // CTRL/CMD + D\n  addListener('duplicate', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isDuplicate(event)) {\n      editorActions.trigger('duplicate');\n\n      return true;\n    }\n  });\n\n  // cut\n  // CTRL/CMD + X\n  addListener('cut', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isCut(event)) {\n      editorActions.trigger('cut');\n\n      return true;\n    }\n  });\n\n\n  // zoom in one step\n  // CTRL/CMD + +\n  addListener('stepZoom', function(context) {\n\n    var event = context.keyEvent;\n\n    // quirk: it has to be triggered by `=` as well to work on international keyboard layout\n    // cf: https://github.com/bpmn-io/bpmn-js/issues/1362#issuecomment-722989754\n    if (isKey([ '+', 'Add', '=' ], event) && isCmd(event)) {\n      editorActions.trigger('stepZoom', { value: 1 });\n\n      return true;\n    }\n  });\n\n  // zoom out one step\n  // CTRL + -\n  addListener('stepZoom', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isKey([ '-', 'Subtract' ], event) && isCmd(event)) {\n      editorActions.trigger('stepZoom', { value: -1 });\n\n      return true;\n    }\n  });\n\n  // zoom to the default level\n  // CTRL + 0\n  addListener('zoom', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isKey('0', event) && isCmd(event)) {\n      editorActions.trigger('zoom', { value: 1 });\n\n      return true;\n    }\n  });\n\n  // delete selected element\n  // DEL\n  addListener('removeSelection', function(context) {\n\n    var event = context.keyEvent;\n\n    if (isKey([ 'Backspace', 'Delete', 'Del' ], event)) {\n      editorActions.trigger('removeSelection');\n\n      return true;\n    }\n  });\n};","import Keyboard from './Keyboard';\nimport KeyboardBindings from './KeyboardBindings';\n\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n  __init__: [ 'keyboard', 'keyboardBindings' ],\n  keyboard: [ 'type', Keyboard ],\n  keyboardBindings: [ 'type', KeyboardBindings ]\n};\n","import { isUndo, isRedo } from 'diagram-js/lib/features/keyboard/KeyboardUtil';\n\nconst LOW_PRIORITY = 500;\n\nexport class FormEditorKeyboardBindings {\n  constructor(eventBus, keyboard) {\n    eventBus.on('editorActions.init', LOW_PRIORITY, (event) => {\n      const { editorActions } = event;\n\n      this.registerBindings(keyboard, editorActions);\n    });\n  }\n\n  registerBindings(keyboard, editorActions) {\n    function addListener(action, fn) {\n      if (editorActions.isRegistered(action)) {\n        keyboard.addListener(fn);\n      }\n    }\n\n    // undo\n    // (CTRL|CMD) + Z\n    addListener('undo', (context) => {\n      const { keyEvent } = context;\n\n      if (isUndo(keyEvent)) {\n        editorActions.trigger('undo');\n\n        return true;\n      }\n    });\n\n    // redo\n    // CTRL + Y\n    // CMD + SHIFT + Z\n    addListener('redo', (context) => {\n      const { keyEvent } = context;\n\n      if (isRedo(keyEvent)) {\n        editorActions.trigger('redo');\n\n        return true;\n      }\n    });\n  }\n}\n\nFormEditorKeyboardBindings.$inject = ['eventBus', 'keyboard'];\n","import KeyboardModule from 'diagram-js/lib/features/keyboard';\n\nimport { FormEditorKeyboardBindings } from './FormEditorKeyboardBindings';\n\nexport const FormEditorKeyboardModule = {\n  __depends__: [KeyboardModule],\n  __init__: ['keyboardBindings'],\n  keyboardBindings: ['type', FormEditorKeyboardBindings],\n};\n","import { Dragging } from './Dragging';\n\nexport const DraggingModule = {\n  __init__: ['dragging'],\n  dragging: ['type', Dragging],\n};\n","import {\n  uniqueBy,\n  isArray\n} from 'min-dash';\n\n/**\n * @typedef {import('didi').Injector} Injector\n *\n * @typedef {import('../core/Types').ElementLike} ElementLike\n *\n * @typedef {import('../core/EventBus').default} EventBus\n * @typedef {import('./CommandHandler').default} CommandHandler\n *\n * @typedef { any } CommandContext\n * @typedef { {\n *   new (...args: any[]) : CommandHandler\n * } } CommandHandlerConstructor\n * @typedef { {\n *   [key: string]: CommandHandler;\n * } } CommandHandlerMap\n * @typedef { {\n *   command: string;\n *   context: any;\n *   id?: any;\n * } } CommandStackAction\n * @typedef { {\n *   actions: CommandStackAction[];\n *   dirty: ElementLike[];\n *   trigger: 'execute' | 'undo' | 'redo' | 'clear' | null;\n *   atomic?: boolean;\n * } } CurrentExecution\n */\n\n/**\n * A service that offers un- and redoable execution of commands.\n *\n * The command stack is responsible for executing modeling actions\n * in a un- and redoable manner. To do this it delegates the actual\n * command execution to {@link CommandHandler}s.\n *\n * Command handlers provide {@link CommandHandler#execute(ctx)} and\n * {@link CommandHandler#revert(ctx)} methods to un- and redo a command\n * identified by a command context.\n *\n *\n * ## Life-Cycle events\n *\n * In the process the command stack fires a number of life-cycle events\n * that other components to participate in the command execution.\n *\n *    * preExecute\n *    * preExecuted\n *    * execute\n *    * executed\n *    * postExecute\n *    * postExecuted\n *    * revert\n *    * reverted\n *\n * A special event is used for validating, whether a command can be\n * performed prior to its execution.\n *\n *    * canExecute\n *\n * Each of the events is fired as `commandStack.{eventName}` and\n * `commandStack.{commandName}.{eventName}`, respectively. This gives\n * components fine grained control on where to hook into.\n *\n * The event object fired transports `command`, the name of the\n * command and `context`, the command context.\n *\n *\n * ## Creating Command Handlers\n *\n * Command handlers should provide the {@link CommandHandler#execute(ctx)}\n * and {@link CommandHandler#revert(ctx)} methods to implement\n * redoing and undoing of a command.\n *\n * A command handler _must_ ensure undo is performed properly in order\n * not to break the undo chain. It must also return the shapes that\n * got changed during the `execute` and `revert` operations.\n *\n * Command handlers may execute other modeling operations (and thus\n * commands) in their `preExecute(d)` and `postExecute(d)` phases. The command\n * stack will properly group all commands together into a logical unit\n * that may be re- and undone atomically.\n *\n * Command handlers must not execute other commands from within their\n * core implementation (`execute`, `revert`).\n *\n *\n * ## Change Tracking\n *\n * During the execution of the CommandStack it will keep track of all\n * elements that have been touched during the command's execution.\n *\n * At the end of the CommandStack execution it will notify interested\n * components via an 'elements.changed' event with all the dirty\n * elements.\n *\n * The event can be picked up by components that are interested in the fact\n * that elements have been changed. One use case for this is updating\n * their graphical representation after moving / resizing or deletion.\n *\n * @see CommandHandler\n *\n * @param {EventBus} eventBus\n * @param {Injector} injector\n */\nexport default function CommandStack(eventBus, injector) {\n\n  /**\n   * A map of all registered command handlers.\n   *\n   * @type {CommandHandlerMap}\n   */\n  this._handlerMap = {};\n\n  /**\n   * A stack containing all re/undoable actions on the diagram\n   *\n   * @type {CommandStackAction[]}\n   */\n  this._stack = [];\n\n  /**\n   * The current index on the stack\n   *\n   * @type {number}\n   */\n  this._stackIdx = -1;\n\n  /**\n   * Current active commandStack execution\n   *\n   * @type {CurrentExecution}\n   */\n  this._currentExecution = {\n    actions: [],\n    dirty: [],\n    trigger: null\n  };\n\n  /**\n   * @type {Injector}\n   */\n  this._injector = injector;\n\n  /**\n   * @type EventBus\n   */\n  this._eventBus = eventBus;\n\n  /**\n   * @type { number }\n   */\n  this._uid = 1;\n\n  eventBus.on([\n    'diagram.destroy',\n    'diagram.clear'\n  ], function() {\n    this.clear(false);\n  }, this);\n}\n\nCommandStack.$inject = [ 'eventBus', 'injector' ];\n\n\n/**\n * Execute a command.\n *\n * @param {string} command The command to execute.\n * @param {CommandContext} context The context with which to execute the command.\n */\nCommandStack.prototype.execute = function(command, context) {\n  if (!command) {\n    throw new Error('command required');\n  }\n\n  this._currentExecution.trigger = 'execute';\n\n  const action = { command: command, context: context };\n\n  this._pushAction(action);\n  this._internalExecute(action);\n  this._popAction();\n};\n\n\n/**\n * Check whether a command can be executed.\n *\n * Implementors may hook into the mechanism on two ways:\n *\n *   * in event listeners:\n *\n *     Users may prevent the execution via an event listener.\n *     It must prevent the default action for `commandStack.(<command>.)canExecute` events.\n *\n *   * in command handlers:\n *\n *     If the method {@link CommandHandler#canExecute} is implemented in a handler\n *     it will be called to figure out whether the execution is allowed.\n *\n * @param {string} command The command to execute.\n * @param {CommandContext} context The context with which to execute the command.\n *\n * @return {boolean} Whether the command can be executed with the given context.\n */\nCommandStack.prototype.canExecute = function(command, context) {\n\n  const action = { command: command, context: context };\n\n  const handler = this._getHandler(command);\n\n  let result = this._fire(command, 'canExecute', action);\n\n  // handler#canExecute will only be called if no listener\n  // decided on a result already\n  if (result === undefined) {\n    if (!handler) {\n      return false;\n    }\n\n    if (handler.canExecute) {\n      result = handler.canExecute(context);\n    }\n  }\n\n  return result;\n};\n\n\n/**\n * Clear the command stack, erasing all undo / redo history.\n *\n * @param {boolean} [emit=true] Whether to fire an event. Defaults to `true`.\n */\nCommandStack.prototype.clear = function(emit) {\n  this._stack.length = 0;\n  this._stackIdx = -1;\n\n  if (emit !== false) {\n    this._fire('changed', { trigger: 'clear' });\n  }\n};\n\n\n/**\n * Undo last command(s)\n */\nCommandStack.prototype.undo = function() {\n  let action = this._getUndoAction(),\n      next;\n\n  if (action) {\n    this._currentExecution.trigger = 'undo';\n\n    this._pushAction(action);\n\n    while (action) {\n      this._internalUndo(action);\n      next = this._getUndoAction();\n\n      if (!next || next.id !== action.id) {\n        break;\n      }\n\n      action = next;\n    }\n\n    this._popAction();\n  }\n};\n\n\n/**\n * Redo last command(s)\n */\nCommandStack.prototype.redo = function() {\n  let action = this._getRedoAction(),\n      next;\n\n  if (action) {\n    this._currentExecution.trigger = 'redo';\n\n    this._pushAction(action);\n\n    while (action) {\n      this._internalExecute(action, true);\n      next = this._getRedoAction();\n\n      if (!next || next.id !== action.id) {\n        break;\n      }\n\n      action = next;\n    }\n\n    this._popAction();\n  }\n};\n\n\n/**\n * Register a handler instance with the command stack.\n *\n * @param {string} command Command to be executed.\n * @param {CommandHandler} handler Handler to execute the command.\n */\nCommandStack.prototype.register = function(command, handler) {\n  this._setHandler(command, handler);\n};\n\n\n/**\n * Register a handler type with the command stack  by instantiating it and\n * injecting its dependencies.\n *\n * @param {string} command Command to be executed.\n * @param {CommandHandlerConstructor} handlerCls Constructor to instantiate a {@link CommandHandler}.\n */\nCommandStack.prototype.registerHandler = function(command, handlerCls) {\n\n  if (!command || !handlerCls) {\n    throw new Error('command and handlerCls must be defined');\n  }\n\n  const handler = this._injector.instantiate(handlerCls);\n  this.register(command, handler);\n};\n\n/**\n * @return {boolean}\n */\nCommandStack.prototype.canUndo = function() {\n  return !!this._getUndoAction();\n};\n\n/**\n * @return {boolean}\n */\nCommandStack.prototype.canRedo = function() {\n  return !!this._getRedoAction();\n};\n\n// stack access  //////////////////////\n\nCommandStack.prototype._getRedoAction = function() {\n  return this._stack[this._stackIdx + 1];\n};\n\n\nCommandStack.prototype._getUndoAction = function() {\n  return this._stack[this._stackIdx];\n};\n\n\n// internal functionality //////////////////////\n\nCommandStack.prototype._internalUndo = function(action) {\n  const command = action.command,\n        context = action.context;\n\n  const handler = this._getHandler(command);\n\n  // guard against illegal nested command stack invocations\n  this._atomicDo(() => {\n    this._fire(command, 'revert', action);\n\n    if (handler.revert) {\n      this._markDirty(handler.revert(context));\n    }\n\n    this._revertedAction(action);\n\n    this._fire(command, 'reverted', action);\n  });\n};\n\n\nCommandStack.prototype._fire = function(command, qualifier, event) {\n  if (arguments.length < 3) {\n    event = qualifier;\n    qualifier = null;\n  }\n\n  const names = qualifier ? [ command + '.' + qualifier, qualifier ] : [ command ];\n  let result;\n\n  event = this._eventBus.createEvent(event);\n\n  for (const name of names) {\n    result = this._eventBus.fire('commandStack.' + name, event);\n\n    if (event.cancelBubble) {\n      break;\n    }\n  }\n\n  return result;\n};\n\nCommandStack.prototype._createId = function() {\n  return this._uid++;\n};\n\nCommandStack.prototype._atomicDo = function(fn) {\n\n  const execution = this._currentExecution;\n\n  execution.atomic = true;\n\n  try {\n    fn();\n  } finally {\n    execution.atomic = false;\n  }\n};\n\nCommandStack.prototype._internalExecute = function(action, redo) {\n  const command = action.command,\n        context = action.context;\n\n  const handler = this._getHandler(command);\n\n  if (!handler) {\n    throw new Error('no command handler registered for <' + command + '>');\n  }\n\n  this._pushAction(action);\n\n  if (!redo) {\n    this._fire(command, 'preExecute', action);\n\n    if (handler.preExecute) {\n      handler.preExecute(context);\n    }\n\n    this._fire(command, 'preExecuted', action);\n  }\n\n  // guard against illegal nested command stack invocations\n  this._atomicDo(() => {\n\n    this._fire(command, 'execute', action);\n\n    if (handler.execute) {\n\n      // actual execute + mark return results as dirty\n      this._markDirty(handler.execute(context));\n    }\n\n    // log to stack\n    this._executedAction(action, redo);\n\n    this._fire(command, 'executed', action);\n  });\n\n  if (!redo) {\n    this._fire(command, 'postExecute', action);\n\n    if (handler.postExecute) {\n      handler.postExecute(context);\n    }\n\n    this._fire(command, 'postExecuted', action);\n  }\n\n  this._popAction();\n};\n\n\nCommandStack.prototype._pushAction = function(action) {\n\n  const execution = this._currentExecution,\n        actions = execution.actions;\n\n  const baseAction = actions[0];\n\n  if (execution.atomic) {\n    throw new Error('illegal invocation in <execute> or <revert> phase (action: ' + action.command + ')');\n  }\n\n  if (!action.id) {\n    action.id = (baseAction && baseAction.id) || this._createId();\n  }\n\n  actions.push(action);\n};\n\n\nCommandStack.prototype._popAction = function() {\n  const execution = this._currentExecution,\n        trigger = execution.trigger,\n        actions = execution.actions,\n        dirty = execution.dirty;\n\n  actions.pop();\n\n  if (!actions.length) {\n    this._eventBus.fire('elements.changed', { elements: uniqueBy('id', dirty.reverse()) });\n\n    dirty.length = 0;\n\n    this._fire('changed', { trigger: trigger });\n\n    execution.trigger = null;\n  }\n};\n\n\nCommandStack.prototype._markDirty = function(elements) {\n  const execution = this._currentExecution;\n\n  if (!elements) {\n    return;\n  }\n\n  elements = isArray(elements) ? elements : [ elements ];\n\n  execution.dirty = execution.dirty.concat(elements);\n};\n\n\nCommandStack.prototype._executedAction = function(action, redo) {\n  const stackIdx = ++this._stackIdx;\n\n  if (!redo) {\n    this._stack.splice(stackIdx, this._stack.length, action);\n  }\n};\n\n\nCommandStack.prototype._revertedAction = function(action) {\n  this._stackIdx--;\n};\n\n\nCommandStack.prototype._getHandler = function(command) {\n  return this._handlerMap[command];\n};\n\nCommandStack.prototype._setHandler = function(command, handler) {\n  if (!command || !handler) {\n    throw new Error('command and handler required');\n  }\n\n  if (this._handlerMap[command]) {\n    throw new Error('overriding handler for command <' + command + '>');\n  }\n\n  this._handlerMap[command] = handler;\n};\n","import CommandStack from './CommandStack';\n\n/**\n * @type { import('didi').ModuleDeclaration }\n */\nexport default {\n  commandStack: [ 'type', CommandStack ]\n};\n","import {\n  forEach,\n  isFunction,\n  isArray,\n  isNumber,\n  isObject\n} from 'min-dash';\n\n/**\n * @typedef {import('../core/Types').ElementLike} ElementLike\n * @typedef {import('../core/EventBus').default} EventBus\n * @typedef {import('./CommandStack').CommandContext} CommandContext\n *\n * @typedef {string|string[]} Events\n * @typedef { (context: CommandContext) => ElementLike[] | void } HandlerFunction\n * @typedef { (context: CommandContext) => void } ComposeHandlerFunction\n */\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * A utility that can be used to plug into the command execution for\n * extension and/or validation.\n *\n * @class\n * @constructor\n *\n * @example\n *\n * ```javascript\n * import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n *\n * class CommandLogger extends CommandInterceptor {\n *   constructor(eventBus) {\n *     super(eventBus);\n *\n *   this.preExecute('shape.create', (event) => {\n *     console.log('commandStack.shape-create.preExecute', event);\n *   });\n * }\n * ```\n *\n * @param {EventBus} eventBus\n */\nexport default function CommandInterceptor(eventBus) {\n\n  /**\n   * @type {EventBus}\n   */\n  this._eventBus = eventBus;\n}\n\nCommandInterceptor.$inject = [ 'eventBus' ];\n\nfunction unwrapEvent(fn, that) {\n  return function(event) {\n    return fn.call(that || null, event.context, event.command, event);\n  };\n}\n\n\n/**\n * Intercept a command during one of the phases.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {string} [hook] phase to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.on = function(events, hook, priority, handlerFn, unwrap, that) {\n\n  if (isFunction(hook) || isNumber(hook)) {\n    that = unwrap;\n    unwrap = handlerFn;\n    handlerFn = priority;\n    priority = hook;\n    hook = null;\n  }\n\n  if (isFunction(priority)) {\n    that = unwrap;\n    unwrap = handlerFn;\n    handlerFn = priority;\n    priority = DEFAULT_PRIORITY;\n  }\n\n  if (isObject(unwrap)) {\n    that = unwrap;\n    unwrap = false;\n  }\n\n  if (!isFunction(handlerFn)) {\n    throw new Error('handlerFn must be a function');\n  }\n\n  if (!isArray(events)) {\n    events = [ events ];\n  }\n\n  var eventBus = this._eventBus;\n\n  forEach(events, function(event) {\n\n    // concat commandStack(.event)?(.hook)?\n    var fullEvent = [ 'commandStack', event, hook ].filter(function(e) { return e; }).join('.');\n\n    eventBus.on(fullEvent, priority, unwrap ? unwrapEvent(handlerFn, that) : handlerFn, that);\n  });\n};\n\n/**\n * Add a <canExecute> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.canExecute = createHook('canExecute');\n\n/**\n * Add a <preExecute> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.preExecute = createHook('preExecute');\n\n/**\n * Add a <preExecuted> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.preExecuted = createHook('preExecuted');\n\n/**\n * Add a <execute> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.execute = createHook('execute');\n\n/**\n * Add a <executed> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.executed = createHook('executed');\n\n/**\n * Add a <postExecute> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.postExecute = createHook('postExecute');\n\n/**\n * Add a <postExecuted> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.postExecuted = createHook('postExecuted');\n\n/**\n * Add a <revert> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.revert = createHook('revert');\n\n/**\n * Add a <reverted> phase of command interceptor.\n *\n * @param {Events} [events] command(s) to intercept\n * @param {number} [priority]\n * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n * @param {boolean} [unwrap] whether the event should be unwrapped\n * @param {any} [that]\n */\nCommandInterceptor.prototype.reverted = createHook('reverted');\n\n/*\n * Add prototype methods for each phase of command execution (e.g. execute,\n * revert).\n *\n * @param {string} hook\n *\n * @return { (\n *   events?: Events,\n *   priority?: number,\n *   handlerFn: ComposeHandlerFunction|HandlerFunction,\n *   unwrap?: boolean\n * ) => any }\n */\nfunction createHook(hook) {\n\n  /**\n   * @this {CommandInterceptor}\n   *\n   * @param {Events} [events]\n   * @param {number} [priority]\n   * @param {ComposeHandlerFunction|HandlerFunction} handlerFn\n   * @param {boolean} [unwrap]\n   * @param {any} [that]\n   */\n  const hookFn = function(events, priority, handlerFn, unwrap, that) {\n\n    if (isFunction(events) || isNumber(events)) {\n      that = unwrap;\n      unwrap = handlerFn;\n      handlerFn = priority;\n      priority = events;\n      events = null;\n    }\n\n    this.on(events, hook, priority, handlerFn, unwrap, that);\n  };\n\n  return hookFn;\n}\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport class IdBehavior extends CommandInterceptor {\n  constructor(eventBus, modeling) {\n    super(eventBus);\n\n    this.preExecute(\n      'formField.remove',\n      function (context) {\n        const { formField } = context;\n\n        const { id } = formField;\n\n        modeling.unclaimId(formField, id);\n      },\n      true,\n    );\n\n    this.preExecute(\n      'formField.edit',\n      function (context) {\n        const { formField, properties } = context;\n\n        if ('id' in properties) {\n          modeling.unclaimId(formField, formField.id);\n\n          modeling.claimId(formField, properties.id);\n        }\n      },\n      true,\n    );\n  }\n}\n\nIdBehavior.$inject = ['eventBus', 'modeling'];\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport class KeyBehavior extends CommandInterceptor {\n  constructor(eventBus, modeling, formFields) {\n    super(eventBus);\n\n    this.preExecute(\n      'formField.remove',\n      function (context) {\n        const { formField } = context;\n        const { key, type } = formField;\n        const { config } = formFields.get(type);\n\n        if (config.keyed) {\n          modeling.unclaimKey(formField, key);\n        }\n      },\n      true,\n    );\n\n    this.preExecute(\n      'formField.edit',\n      function (context) {\n        const { formField, properties } = context;\n\n        const { key, type } = formField;\n        const { config } = formFields.get(type);\n\n        if (config.keyed && 'key' in properties) {\n          modeling.unclaimKey(formField, key);\n          modeling.claimKey(formField, properties.key);\n        }\n      },\n      true,\n    );\n  }\n}\n\nKeyBehavior.$inject = ['eventBus', 'modeling', 'formFields'];\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport class PathBehavior extends CommandInterceptor {\n  constructor(eventBus, modeling, formFields) {\n    super(eventBus);\n\n    this.preExecute(\n      'formField.remove',\n      function (context) {\n        const { formField } = context;\n        const { path, type } = formField;\n        const { config } = formFields.get(type);\n\n        if (config.pathed) {\n          modeling.unclaimPath(formField, path);\n        }\n      },\n      true,\n    );\n\n    this.preExecute(\n      'formField.edit',\n      function (context) {\n        const { formField, properties } = context;\n\n        const { path, type } = formField;\n        const { config } = formFields.get(type);\n\n        if (config.pathed && 'path' in properties) {\n          modeling.unclaimPath(formField, path);\n          modeling.claimPath(formField, properties.path);\n        }\n      },\n      true,\n    );\n  }\n}\n\nPathBehavior.$inject = ['eventBus', 'modeling', 'formFields'];\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport class ValidateBehavior extends CommandInterceptor {\n  constructor(eventBus) {\n    super(eventBus);\n\n    /**\n     * Remove custom validation if <validationType> is about to be added.\n     */\n    this.preExecute(\n      'formField.edit',\n      function (context) {\n        const { properties } = context;\n\n        const { validate = {} } = properties;\n\n        if (validate.validationType) {\n          const newValidate = {\n            ...validate,\n          };\n\n          delete newValidate.minLength;\n          delete newValidate.maxLength;\n          delete newValidate.pattern;\n\n          properties['validate'] = newValidate;\n        }\n      },\n      true,\n    );\n  }\n}\n\nValidateBehavior.$inject = ['eventBus'];\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nimport { get } from 'min-dash';\n\nimport { OPTIONS_SOURCES, OPTIONS_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport class OptionsSourceBehavior extends CommandInterceptor {\n  constructor(eventBus) {\n    super(eventBus);\n\n    /**\n     * Cleanup properties on changing the values source.\n     *\n     * 1) Remove other sources, e.g. set `values` => remove `valuesKey` and `valuesExpression`\n     * 2) Remove default values for all other values sources\n     */\n    this.preExecute(\n      'formField.edit',\n      function (context) {\n        const { properties } = context;\n\n        const newProperties = {};\n\n        if (!isValuesSourceUpdate(properties)) {\n          return;\n        }\n\n        // clean up value sources that are not to going to be set\n        Object.values(OPTIONS_SOURCES).forEach((source) => {\n          const path = OPTIONS_SOURCES_PATHS[source];\n          if (get(properties, path) == undefined) {\n            newProperties[OPTIONS_SOURCES_PATHS[source]] = undefined;\n          }\n        });\n\n        // clean up default value\n        if (\n          get(properties, OPTIONS_SOURCES_PATHS[OPTIONS_SOURCES.EXPRESSION]) !== undefined ||\n          get(properties, OPTIONS_SOURCES_PATHS[OPTIONS_SOURCES.INPUT]) !== undefined\n        ) {\n          newProperties['defaultValue'] = undefined;\n        }\n\n        context.properties = {\n          ...properties,\n          ...newProperties,\n        };\n      },\n      true,\n    );\n  }\n}\n\nOptionsSourceBehavior.$inject = ['eventBus'];\n\n// helper ///////////////////\n\nfunction isValuesSourceUpdate(properties) {\n  return Object.values(OPTIONS_SOURCES_PATHS).some((path) => {\n    return get(properties, path) !== undefined;\n  });\n}\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nimport { get, isArray, isDefined, isString } from 'min-dash';\n\nconst COLUMNS_SOURCE_PROPERTIES = {\n  columns: 'columns',\n  columnsExpression: 'columnsExpression',\n};\n\nexport class ColumnsSourceBehavior extends CommandInterceptor {\n  constructor(eventBus) {\n    super(eventBus);\n\n    this.preExecute(\n      'formField.edit',\n      function (context) {\n        const { properties, oldProperties } = context;\n\n        const isColumnSourceUpdate = Object.values(COLUMNS_SOURCE_PROPERTIES).some((path) => {\n          return get(properties, [path]) !== undefined;\n        });\n\n        if (!isColumnSourceUpdate) {\n          return;\n        }\n\n        const columns = get(properties, [COLUMNS_SOURCE_PROPERTIES.columns]);\n        const oldColumns = get(oldProperties, [COLUMNS_SOURCE_PROPERTIES.columns]);\n        const columnsExpression = get(properties, [COLUMNS_SOURCE_PROPERTIES.columnsExpression]);\n        const oldColumnsExpression = get(oldProperties, [COLUMNS_SOURCE_PROPERTIES.columnsExpression]);\n\n        if (isArray(columns) && !isDefined(oldColumns)) {\n          context.properties = {\n            ...properties,\n            columnsExpression: undefined,\n          };\n          return;\n        }\n\n        if (isString(columnsExpression) && !isString(oldColumnsExpression)) {\n          context.properties = {\n            ...properties,\n            columns: undefined,\n          };\n          return;\n        }\n      },\n      true,\n    );\n  }\n}\n\nColumnsSourceBehavior.$inject = ['eventBus'];\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nimport { get } from 'min-dash';\n\nexport class TableDataSourceBehavior extends CommandInterceptor {\n  constructor(eventBus) {\n    super(eventBus);\n\n    this.preExecute(\n      'formField.add',\n      function (context) {\n        const { formField } = context;\n\n        if (get(formField, ['type']) !== 'table') {\n          return;\n        }\n\n        context.formField = {\n          ...formField,\n          dataSource: `=${formField.id}`,\n        };\n      },\n      true,\n    );\n  }\n}\n\nTableDataSourceBehavior.$inject = ['eventBus'];\n","import { IdBehavior } from './IdBehavior';\nimport { KeyBehavior } from './KeyBehavior';\nimport { PathBehavior } from './PathBehavior';\nimport { ValidateBehavior } from './ValidateBehavior';\nimport { OptionsSourceBehavior } from './OptionsSourceBehavior';\nimport { ColumnsSourceBehavior } from './ColumnsSourceBehavior';\nimport { TableDataSourceBehavior } from './TableDataSourceBehavior';\n\nexport const BehaviorModule = {\n  __init__: [\n    'idBehavior',\n    'keyBehavior',\n    'pathBehavior',\n    'validateBehavior',\n    'optionsSourceBehavior',\n    'columnsSourceBehavior',\n    'tableDataSourceBehavior',\n  ],\n  idBehavior: ['type', IdBehavior],\n  keyBehavior: ['type', KeyBehavior],\n  pathBehavior: ['type', PathBehavior],\n  validateBehavior: ['type', ValidateBehavior],\n  optionsSourceBehavior: ['type', OptionsSourceBehavior],\n  columnsSourceBehavior: ['type', ColumnsSourceBehavior],\n  tableDataSourceBehavior: ['type', TableDataSourceBehavior],\n};\n","export function arrayAdd(array, index, item) {\n  array.splice(index, 0, item);\n\n  return array;\n}\n\nexport { arrayMoveMutable as arrayMove } from 'array-move';\n\nexport function arrayRemove(array, index) {\n  array.splice(index, 1);\n\n  return array;\n}\n\nexport function updatePath(formFieldRegistry, formField, index) {\n  const parent = formFieldRegistry.get(formField._parent);\n  refreshPathsRecursively(formField, [...parent._path, 'components', index]);\n  return formField;\n}\n\nexport function refreshPathsRecursively(formField, path) {\n  formField._path = path;\n  const components = formField.components || [];\n\n  components.forEach((component, index) => {\n    refreshPathsRecursively(component, [...path, 'components', index]);\n  });\n}\n\nexport function updateRow(formField, rowId) {\n  formField.layout = {\n    ...(formField.layout || {}),\n    row: rowId,\n  };\n\n  return formField;\n}\n","import { updateRow } from './cmd/Util';\n\nimport CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nimport { clone } from '@bpmn-io/form-js-viewer';\n\nexport class FormLayoutUpdater extends CommandInterceptor {\n  constructor(eventBus, formLayouter, modeling, formEditor) {\n    super(eventBus);\n\n    this._eventBus = eventBus;\n    this._formLayouter = formLayouter;\n    this._modeling = modeling;\n    this._formEditor = formEditor;\n\n    // @ts-ignore\n    this.preExecute(['formField.add', 'formField.remove', 'formField.move', 'id.updateClaim'], (event) =>\n      this.updateRowIds(event),\n    );\n\n    // we need that as the state got updates\n    // on the next tick (not in post execute)\n    eventBus.on('changed', (context) => {\n      const { schema } = context;\n      this.updateLayout(schema);\n    });\n  }\n\n  updateLayout(schema) {\n    this._formLayouter.clear();\n    this._formLayouter.calculateLayout(clone(schema));\n  }\n\n  updateRowIds(event) {\n    const { schema } = this._formEditor._getState();\n\n    const setRowIds = (parent) => {\n      if (!parent.components || !parent.components.length) {\n        return;\n      }\n\n      parent.components.forEach((formField) => {\n        const row = this._formLayouter.getRowForField(formField);\n\n        updateRow(formField, row.id);\n\n        // handle children recursively\n        setRowIds(formField);\n      });\n    };\n\n    // make sure rows are persisted in schema (e.g. for migration case)\n    setRowIds(schema);\n  }\n}\n\nFormLayoutUpdater.$inject = ['eventBus', 'formLayouter', 'modeling', 'formEditor'];\n","import { get } from 'min-dash';\n\nimport { arrayAdd, arrayRemove, updatePath } from './Util';\n\nexport class AddFormFieldHandler {\n  /**\n   * @constructor\n   * @param { import('../../../FormEditor').FormEditor } formEditor\n   * @param { import('../../../core/FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   */\n  constructor(formEditor, formFieldRegistry) {\n    this._formEditor = formEditor;\n    this._formFieldRegistry = formFieldRegistry;\n  }\n\n  execute(context) {\n    const { formField, targetFormField, targetIndex } = context;\n\n    const { schema } = this._formEditor._getState();\n\n    const targetPath = [...targetFormField._path, 'components'];\n\n    formField._parent = targetFormField.id;\n\n    // (1) Add new form field\n    arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n    // (2) Update internal paths of new form field and its siblings (and their children)\n    get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n    // (3) Add new form field to form field registry\n    this._formFieldRegistry.add(formField);\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n  }\n\n  revert(context) {\n    const { formField, targetFormField, targetIndex } = context;\n\n    const { schema } = this._formEditor._getState();\n\n    const targetPath = [...targetFormField._path, 'components'];\n\n    // (1) Remove new form field\n    arrayRemove(get(schema, targetPath), targetIndex);\n\n    // (2) Update internal paths of new form field and its siblings (and their children)\n    get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n    // (3) Remove new form field from form field registry\n    this._formFieldRegistry.remove(formField);\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n  }\n}\n\nAddFormFieldHandler.$inject = ['formEditor', 'formFieldRegistry'];\n","export class EditFormFieldHandler {\n  /**\n   * @constructor\n   * @param { import('../../../FormEditor').FormEditor } formEditor\n   * @param { import('../../../core/FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   */\n  constructor(formEditor, formFieldRegistry) {\n    this._formEditor = formEditor;\n    this._formFieldRegistry = formFieldRegistry;\n  }\n\n  execute(context) {\n    const { formField, properties } = context;\n\n    let { schema } = this._formEditor._getState();\n\n    const oldProperties = {};\n\n    for (let key in properties) {\n      oldProperties[key] = formField[key];\n\n      const property = properties[key];\n\n      if (key === 'id') {\n        if (property !== formField.id) {\n          this._formFieldRegistry.updateId(formField, property);\n        }\n      } else {\n        formField[key] = property;\n      }\n    }\n\n    context.oldProperties = oldProperties;\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n\n    return formField;\n  }\n\n  revert(context) {\n    const { formField, oldProperties } = context;\n\n    let { schema } = this._formEditor._getState();\n\n    for (let key in oldProperties) {\n      const property = oldProperties[key];\n\n      if (key === 'id') {\n        if (property !== formField.id) {\n          this._formFieldRegistry.updateId(formField, property);\n        }\n      } else {\n        formField[key] = property;\n      }\n    }\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n\n    return formField;\n  }\n}\n\nEditFormFieldHandler.$inject = ['formEditor', 'formFieldRegistry'];\n","import { get } from 'min-dash';\n\nimport { arrayAdd, arrayMove, arrayRemove, updatePath, updateRow } from './Util';\n\nexport class MoveFormFieldHandler {\n  /**\n   * @constructor\n   * @param { import('../../../FormEditor').FormEditor } formEditor\n   * @param { import('../../../core/FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   * @param { import('@bpmn-io/form-js-viewer').PathRegistry } pathRegistry\n   * @param { import('@bpmn-io/form-js-viewer').FormLayouter } formLayouter\n   */\n  constructor(formEditor, formFieldRegistry, pathRegistry, formLayouter) {\n    this._formEditor = formEditor;\n    this._formFieldRegistry = formFieldRegistry;\n    this._pathRegistry = pathRegistry;\n    this._formLayouter = formLayouter;\n  }\n\n  execute(context) {\n    this.moveFormField(context);\n  }\n\n  revert(context) {\n    let { sourceFormField, targetFormField, sourceIndex, targetIndex, sourceRow, targetRow } = context;\n\n    this.moveFormField(\n      {\n        sourceFormField: targetFormField,\n        targetFormField: sourceFormField,\n        sourceIndex: targetIndex,\n        targetIndex: sourceIndex,\n        sourceRow: targetRow,\n        targetRow: sourceRow,\n      },\n      true,\n    );\n  }\n\n  moveFormField(context, revert) {\n    let { sourceFormField, targetFormField, sourceIndex, targetIndex, targetRow } = context;\n\n    let { schema } = this._formEditor._getState();\n\n    const sourcePath = [...sourceFormField._path, 'components'];\n\n    if (sourceFormField.id === targetFormField.id) {\n      if (revert) {\n        if (sourceIndex > targetIndex) {\n          sourceIndex--;\n        }\n      } else {\n        if (sourceIndex < targetIndex) {\n          targetIndex--;\n        }\n      }\n\n      const formField = get(schema, [...sourcePath, sourceIndex]);\n\n      // (1) Add to row or create new one\n      updateRow(formField, targetRow ? targetRow.id : this._formLayouter.nextRowId());\n\n      // (2) Move form field\n      arrayMove(get(schema, sourcePath), sourceIndex, targetIndex);\n\n      // (3) Update internal paths of new form field and its siblings (and their children)\n      get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n    } else {\n      const formField = get(schema, [...sourcePath, sourceIndex]);\n\n      // (1) Deregister form field (and children) from path registry\n      this._pathRegistry.executeRecursivelyOnFields(formField, ({ field }) => {\n        this._pathRegistry.unclaimPath(this._pathRegistry.getValuePath(field));\n      });\n\n      formField._parent = targetFormField.id;\n\n      // (2) Remove form field\n      arrayRemove(get(schema, sourcePath), sourceIndex);\n\n      // (3) Update internal paths of siblings (and their children)\n      get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n      const targetPath = [...targetFormField._path, 'components'];\n\n      // (4) Add to row or create new one\n      updateRow(formField, targetRow ? targetRow.id : this._formLayouter.nextRowId());\n\n      // (5) Add form field\n      arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n      // (6) Update internal paths of siblings (and their children)\n      get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n      // (7) Reregister form field (and children) from path registry\n      this._pathRegistry.executeRecursivelyOnFields(formField, ({ field, isClosed, isRepeatable }) => {\n        this._pathRegistry.claimPath(this._pathRegistry.getValuePath(field), {\n          isClosed,\n          isRepeatable,\n          claimerId: field.id,\n        });\n      });\n    }\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n  }\n}\n\nMoveFormFieldHandler.$inject = ['formEditor', 'formFieldRegistry', 'pathRegistry', 'formLayouter'];\n","import { get } from 'min-dash';\n\nimport { arrayAdd, arrayRemove, updatePath } from './Util';\n\nimport { runRecursively } from '@bpmn-io/form-js-viewer';\n\nexport class RemoveFormFieldHandler {\n  /**\n   * @constructor\n   * @param { import('../../../FormEditor').FormEditor } formEditor\n   * @param { import('../../../core/FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   */\n  constructor(formEditor, formFieldRegistry) {\n    this._formEditor = formEditor;\n    this._formFieldRegistry = formFieldRegistry;\n  }\n\n  execute(context) {\n    const { sourceFormField, sourceIndex } = context;\n\n    let { schema } = this._formEditor._getState();\n\n    const sourcePath = [...sourceFormField._path, 'components'];\n\n    const formField = (context.formField = get(schema, [...sourcePath, sourceIndex]));\n\n    // (1) Remove form field\n    arrayRemove(get(schema, sourcePath), sourceIndex);\n\n    // (2) Update internal paths of its siblings (and their children)\n    get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n    // (3) Remove form field and children from form field registry\n    runRecursively(formField, (formField) => this._formFieldRegistry.remove(formField));\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n  }\n\n  revert(context) {\n    const { formField, sourceFormField, sourceIndex } = context;\n\n    let { schema } = this._formEditor._getState();\n\n    const sourcePath = [...sourceFormField._path, 'components'];\n\n    // (1) Add form field\n    arrayAdd(get(schema, sourcePath), sourceIndex, formField);\n\n    // (2) Update internal paths of its siblings (and their children)\n    get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n    // (3) Add form field and children to form field registry\n    runRecursively(formField, (formField) => this._formFieldRegistry.add(formField));\n\n    // TODO: Create updater/change support that automatically updates paths and schema on command execution\n    this._formEditor._setState({ schema });\n  }\n}\n\nRemoveFormFieldHandler.$inject = ['formEditor', 'formFieldRegistry'];\n","export class UpdateIdClaimHandler {\n  /**\n   * @constructor\n   * @param { import('../../../core/FormFieldRegistry').FormFieldRegistry } formFieldRegistry\n   */\n  constructor(formFieldRegistry) {\n    this._formFieldRegistry = formFieldRegistry;\n  }\n\n  execute(context) {\n    const { claiming, formField, id } = context;\n\n    if (claiming) {\n      this._formFieldRegistry._ids.claim(id, formField);\n    } else {\n      this._formFieldRegistry._ids.unclaim(id);\n    }\n  }\n\n  revert(context) {\n    const { claiming, formField, id } = context;\n\n    if (claiming) {\n      this._formFieldRegistry._ids.unclaim(id);\n    } else {\n      this._formFieldRegistry._ids.claim(id, formField);\n    }\n  }\n}\n\nUpdateIdClaimHandler.$inject = ['formFieldRegistry'];\n","export class UpdateKeyClaimHandler {\n  /**\n   * @constructor\n   * @param { import('@bpmn-io/form-js-viewer').PathRegistry } pathRegistry\n   */\n  constructor(pathRegistry) {\n    this._pathRegistry = pathRegistry;\n  }\n\n  execute(context) {\n    const { claiming, formField, key } = context;\n\n    const options = {\n      replacements: {\n        [formField.id]: key,\n      },\n    };\n\n    const valuePath = this._pathRegistry.getValuePath(formField, options);\n\n    if (claiming) {\n      this._pathRegistry.claimPath(valuePath, { isClosed: true, claimerId: formField.id });\n    } else {\n      this._pathRegistry.unclaimPath(valuePath);\n    }\n\n    // cache path for revert\n    context.valuePath = valuePath;\n  }\n\n  revert(context) {\n    const { claiming, formField, valuePath } = context;\n\n    if (claiming) {\n      this._pathRegistry.unclaimPath(valuePath);\n    } else {\n      this._pathRegistry.claimPath(valuePath, { isClosed: true, claimerId: formField.id });\n    }\n  }\n}\n\nUpdateKeyClaimHandler.$inject = ['pathRegistry'];\n","export class UpdatePathClaimHandler {\n  /**\n   * @constructor\n   * @param { import('@bpmn-io/form-js-viewer').PathRegistry } pathRegistry\n   */\n  constructor(pathRegistry) {\n    this._pathRegistry = pathRegistry;\n  }\n\n  execute(context) {\n    const { claiming, formField, path } = context;\n\n    const options = {\n      replacements: {\n        [formField.id]: path,\n      },\n    };\n\n    const valuePaths = [];\n\n    if (claiming) {\n      this._pathRegistry.executeRecursivelyOnFields(formField, ({ field, isClosed, isRepeatable }) => {\n        const valuePath = this._pathRegistry.getValuePath(field, options);\n        valuePaths.push({ valuePath, isClosed, isRepeatable, claimerId: field.id });\n        this._pathRegistry.claimPath(valuePath, { isClosed, isRepeatable, claimerId: field.id });\n      });\n    } else {\n      this._pathRegistry.executeRecursivelyOnFields(formField, ({ field, isClosed, isRepeatable }) => {\n        const valuePath = this._pathRegistry.getValuePath(field, options);\n        valuePaths.push({ valuePath, isClosed, isRepeatable, claimerId: field.id });\n        this._pathRegistry.unclaimPath(valuePath);\n      });\n    }\n\n    // cache path info for revert\n    context.valuePaths = valuePaths;\n  }\n\n  revert(context) {\n    const { claiming, valuePaths } = context;\n\n    if (claiming) {\n      valuePaths.forEach(({ valuePath }) => {\n        this._pathRegistry.unclaimPath(valuePath);\n      });\n    } else {\n      valuePaths.forEach(({ valuePath, isClosed, isRepeatable, claimerId }) => {\n        this._pathRegistry.claimPath(valuePath, {\n          isClosed,\n          isRepeatable,\n          claimerId,\n        });\n      });\n    }\n  }\n}\n\nUpdatePathClaimHandler.$inject = ['pathRegistry'];\n","import { AddFormFieldHandler } from './cmd/AddFormFieldHandler';\nimport { EditFormFieldHandler } from './cmd/EditFormFieldHandler';\nimport { MoveFormFieldHandler } from './cmd/MoveFormFieldHandler';\nimport { RemoveFormFieldHandler } from './cmd/RemoveFormFieldHandler';\nimport { UpdateIdClaimHandler } from './cmd/UpdateIdClaimHandler';\nimport { UpdateKeyClaimHandler } from './cmd/UpdateKeyClaimHandler';\nimport { UpdatePathClaimHandler } from './cmd/UpdatePathClaimHandler';\n\nimport { isObject } from 'min-dash';\n\nexport class Modeling {\n  constructor(commandStack, eventBus, formEditor, formFieldRegistry, fieldFactory) {\n    this._commandStack = commandStack;\n    this._formEditor = formEditor;\n    this._formFieldRegistry = formFieldRegistry;\n    this._fieldFactory = fieldFactory;\n\n    eventBus.on('form.init', () => {\n      this.registerHandlers();\n    });\n  }\n\n  registerHandlers() {\n    Object.entries(this.getHandlers()).forEach(([id, handler]) => {\n      this._commandStack.registerHandler(id, handler);\n    });\n  }\n\n  getHandlers() {\n    return {\n      'formField.add': AddFormFieldHandler,\n      'formField.edit': EditFormFieldHandler,\n      'formField.move': MoveFormFieldHandler,\n      'formField.remove': RemoveFormFieldHandler,\n      'id.updateClaim': UpdateIdClaimHandler,\n      'key.updateClaim': UpdateKeyClaimHandler,\n      'path.updateClaim': UpdatePathClaimHandler,\n    };\n  }\n\n  addFormField(attrs, targetFormField, targetIndex) {\n    const formField = this._fieldFactory.create(attrs);\n\n    const context = {\n      formField,\n      targetFormField,\n      targetIndex,\n    };\n\n    this._commandStack.execute('formField.add', context);\n\n    return formField;\n  }\n\n  editFormField(formField, properties, value) {\n    if (!isObject(properties)) {\n      properties = {\n        [properties]: value,\n      };\n    }\n\n    const context = {\n      formField,\n      properties,\n    };\n\n    this._commandStack.execute('formField.edit', context);\n  }\n\n  moveFormField(formField, sourceFormField, targetFormField, sourceIndex, targetIndex, sourceRow, targetRow) {\n    const context = {\n      formField,\n      sourceFormField,\n      targetFormField,\n      sourceIndex,\n      targetIndex,\n      sourceRow,\n      targetRow,\n    };\n\n    this._commandStack.execute('formField.move', context);\n  }\n\n  removeFormField(formField, sourceFormField, sourceIndex) {\n    const context = {\n      formField,\n      sourceFormField,\n      sourceIndex,\n    };\n\n    this._commandStack.execute('formField.remove', context);\n  }\n\n  claimId(formField, id) {\n    const context = {\n      formField,\n      id,\n      claiming: true,\n    };\n\n    this._commandStack.execute('id.updateClaim', context);\n  }\n\n  unclaimId(formField, id) {\n    const context = {\n      formField,\n      id,\n      claiming: false,\n    };\n\n    this._commandStack.execute('id.updateClaim', context);\n  }\n\n  claimKey(formField, key) {\n    const context = {\n      formField,\n      key,\n      claiming: true,\n    };\n\n    this._commandStack.execute('key.updateClaim', context);\n  }\n\n  unclaimKey(formField, key) {\n    const context = {\n      formField,\n      key,\n      claiming: false,\n    };\n\n    this._commandStack.execute('key.updateClaim', context);\n  }\n\n  claimPath(formField, path) {\n    const context = {\n      formField,\n      path,\n      claiming: true,\n    };\n\n    this._commandStack.execute('path.updateClaim', context);\n  }\n\n  unclaimPath(formField, path) {\n    const context = {\n      formField,\n      path,\n      claiming: false,\n    };\n\n    this._commandStack.execute('path.updateClaim', context);\n  }\n}\n\nModeling.$inject = ['commandStack', 'eventBus', 'formEditor', 'formFieldRegistry', 'fieldFactory'];\n","import commandModule from 'diagram-js/lib/command';\n\nimport { BehaviorModule } from './behavior';\nimport { FormLayoutUpdater } from './FormLayoutUpdater';\nimport { Modeling } from './Modeling';\n\nexport const ModelingModule = {\n  __depends__: [BehaviorModule, commandModule],\n  __init__: ['formLayoutUpdater', 'modeling'],\n  formLayoutUpdater: ['type', FormLayoutUpdater],\n  modeling: ['type', Modeling],\n};\n","export class Selection {\n  constructor(eventBus) {\n    this._eventBus = eventBus;\n    this._selection = null;\n  }\n\n  get() {\n    return this._selection;\n  }\n\n  set(selection) {\n    if (this._selection === selection) {\n      return;\n    }\n\n    this._selection = selection;\n\n    this._eventBus.fire('selection.changed', {\n      selection: this._selection,\n    });\n  }\n\n  toggle(selection) {\n    const newSelection = this._selection === selection ? null : selection;\n\n    this.set(newSelection);\n  }\n\n  clear() {\n    this.set(null);\n  }\n\n  isSelected(formField) {\n    return this._selection === formField;\n  }\n}\n\nSelection.$inject = ['eventBus'];\n","export class SelectionBehavior {\n  constructor(eventBus, selection) {\n    eventBus.on(\n      ['commandStack.formField.add.postExecuted', 'commandStack.formField.move.postExecuted'],\n      ({ context }) => {\n        const { formField } = context;\n\n        selection.set(formField);\n      },\n    );\n\n    eventBus.on('commandStack.formField.remove.postExecuted', ({ context }) => {\n      const { sourceFormField, sourceIndex } = context;\n\n      const formField = sourceFormField.components[sourceIndex] || sourceFormField.components[sourceIndex - 1];\n\n      if (formField) {\n        selection.set(formField);\n      } else {\n        selection.clear();\n      }\n    });\n\n    eventBus.on('formField.remove', ({ formField }) => {\n      if (selection.isSelected(formField)) {\n        selection.clear();\n      }\n    });\n  }\n}\n\nSelectionBehavior.$inject = ['eventBus', 'selection'];\n","import { Selection } from './Selection';\nimport { SelectionBehavior } from './SelectionBehavior';\n\nexport const SelectionModule = {\n  __init__: ['selection', 'selectionBehavior'],\n  selection: ['type', Selection],\n  selectionBehavior: ['type', SelectionBehavior],\n};\n","/**\n * Base class for sectionable UI modules.\n *\n * @property {EventBus} _eventBus - EventBus instance used for event handling.\n * @property {string} managerType - Type of the render manager. Used to form event names.\n *\n * @class SectionModuleBase\n */\nexport class SectionModuleBase {\n  /**\n   * Create a SectionModuleBase instance.\n   *\n   * @param {any} eventBus - The EventBus instance used for event handling.\n   * @param {string} sectionKey - The type of render manager. Used to form event names.\n   *\n   * @constructor\n   */\n  constructor(eventBus, sectionKey) {\n    this._eventBus = eventBus;\n    this._sectionKey = sectionKey;\n    this._eventBus.on(`${this._sectionKey}.section.rendered`, () => {\n      this.isSectionRendered = true;\n    });\n    this._eventBus.on(`${this._sectionKey}.section.destroyed`, () => {\n      this.isSectionRendered = false;\n    });\n  }\n\n  /**\n   * Attach the managed section to a parent node.\n   *\n   * @param {HTMLElement} container - The parent node to attach to.\n   */\n  attachTo(container) {\n    this._onceSectionRendered(() => this._eventBus.fire(`${this._sectionKey}.attach`, { container }));\n  }\n\n  /**\n   * Detach the managed section from its parent node.\n   */\n  detach() {\n    this._onceSectionRendered(() => this._eventBus.fire(`${this._sectionKey}.detach`));\n  }\n\n  /**\n   * Reset the managed section to its initial state.\n   */\n  reset() {\n    this._onceSectionRendered(() => this._eventBus.fire(`${this._sectionKey}.reset`));\n  }\n\n  /**\n   * Circumvents timing issues.\n   */\n  _onceSectionRendered(callback) {\n    if (this.isSectionRendered) {\n      callback();\n    } else {\n      this._eventBus.once(`${this._sectionKey}.section.rendered`, callback);\n    }\n  }\n}\n","import { SectionModuleBase } from '../SectionModuleBase';\n\nexport class PaletteRenderer extends SectionModuleBase {\n  constructor(eventBus) {\n    super(eventBus, 'palette');\n  }\n}\n\nPaletteRenderer.$inject = ['eventBus'];\n","import { PaletteRenderer } from './PaletteRenderer';\n\nexport const PaletteModule = {\n  __init__: ['palette'],\n  palette: ['type', PaletteRenderer],\n};\n","import { useContext, useState, useRef, useEffect, useLayoutEffect, useCallback, useMemo } from '../preact/hooks';\nimport { isFunction, isArray, get, assign, set, isString, isNumber, debounce } from 'min-dash';\nimport { createPortal, forwardRef } from '../preact/compat';\nimport { jsx, jsxs, Fragment } from '../preact/jsx-runtime';\nimport { createContext, createElement as createElement$1, render } from '../preact';\nimport classnames from 'classnames';\nimport { query, domify } from 'min-dom';\nimport { FeelersEditor } from 'feelers';\nimport Editor from '@bpmn-io/feel-editor';\nimport { lineNumbers, EditorView } from '@codemirror/view';\nimport * as focusTrap from 'focus-trap';\n\nvar ArrowIcon = function ArrowIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      fillRule: \"evenodd\",\n      d: \"m11.657 8-4.95 4.95a1 1 0 0 1-1.414-1.414L8.828 8 5.293 4.464A1 1 0 1 1 6.707 3.05L11.657 8Z\"\n    })\n  });\n};\nArrowIcon.defaultProps = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"16\",\n  height: \"16\"\n};\nvar CloseIcon = function CloseIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      fillRule: \"evenodd\",\n      d: \"m12 4.7-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8 12 4.7Z\",\n      fill: \"currentColor\"\n    })\n  });\n};\nCloseIcon.defaultProps = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"16\",\n  height: \"16\"\n};\nvar CreateIcon = function CreateIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      fillRule: \"evenodd\",\n      d: \"M9 13V9h4a1 1 0 0 0 0-2H9V3a1 1 0 1 0-2 0v4H3a1 1 0 1 0 0 2h4v4a1 1 0 0 0 2 0Z\"\n    })\n  });\n};\nCreateIcon.defaultProps = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"16\",\n  height: \"16\"\n};\nvar DeleteIcon = function DeleteIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      fillRule: \"evenodd\",\n      d: \"M12 6v7c0 1.1-.4 1.55-1.5 1.55h-5C4.4 14.55 4 14.1 4 13V6h8Zm-1.5 1.5h-5v4.3c0 .66.5 1.2 1.111 1.2H9.39c.611 0 1.111-.54 1.111-1.2V7.5ZM13 3h-2l-1-1H6L5 3H3v1.5h10V3Z\"\n    })\n  });\n};\nDeleteIcon.defaultProps = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: \"16\",\n  height: \"16\"\n};\nvar DragIcon = function DragIcon(props) {\n  return jsxs(\"svg\", {\n    ...props,\n    children: [jsx(\"path\", {\n      fill: \"#fff\",\n      style: {\n        mixBlendMode: \"multiply\"\n      },\n      d: \"M0 0h16v16H0z\"\n    }), jsx(\"path\", {\n      fill: \"#fff\",\n      style: {\n        mixBlendMode: \"multiply\"\n      },\n      d: \"M0 0h16v16H0z\"\n    }), jsx(\"path\", {\n      d: \"M7 3H5v2h2V3zm4 0H9v2h2V3zM7 7H5v2h2V7zm4 0H9v2h2V7zm-4 4H5v2h2v-2zm4 0H9v2h2v-2z\",\n      fill: \"#161616\"\n    })]\n  });\n};\nDragIcon.defaultProps = {\n  width: \"16\",\n  height: \"16\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n};\nvar ExternalLinkIcon = function ExternalLinkIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      fillRule: \"evenodd\",\n      clipRule: \"evenodd\",\n      d: \"M12.637 12.637v-4.72h1.362v4.721c0 .36-.137.676-.411.95-.275.275-.591.412-.95.412H3.362c-.38 0-.703-.132-.967-.396A1.315 1.315 0 0 1 2 12.638V3.362c0-.38.132-.703.396-.967S2.982 2 3.363 2h4.553v1.363H3.363v9.274h9.274ZM14 2H9.28l-.001 1.362h2.408L5.065 9.984l.95.95 6.622-6.622v2.409H14V2Z\",\n      fill: \"currentcolor\"\n    })\n  });\n};\nExternalLinkIcon.defaultProps = {\n  width: \"16\",\n  height: \"16\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n};\nvar FeelIcon$1 = function FeelIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      d: \"M3.617 11.99c-.137.684-.392 1.19-.765 1.518-.362.328-.882.492-1.558.492H0l.309-1.579h1.264l1.515-7.64h-.912l.309-1.579h.911l.236-1.191c.137-.685.387-1.192.75-1.52C4.753.164 5.277 0 5.953 0h1.294L6.94 1.579H5.675l-.323 1.623h1.264l-.309 1.579H5.043l-1.426 7.208ZM5.605 11.021l3.029-4.155L7.28 3.202h2.073l.706 2.547h.176l1.691-2.547H14l-3.014 4.051 1.338 3.768H10.25l-.706-2.606H9.37L7.678 11.02H5.605Z\",\n      fill: \"currentcolor\"\n    })\n  });\n};\nFeelIcon$1.defaultProps = {\n  width: \"14\",\n  height: \"14\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n};\nvar LaunchIcon = function LaunchIcon(props) {\n  return jsxs(\"svg\", {\n    ...props,\n    children: [jsx(\"path\", {\n      d: \"M26 28H6a2.003 2.003 0 0 1-2-2V6a2.003 2.003 0 0 1 2-2h10v2H6v20h20V16h2v10a2.003 2.003 0 0 1-2 2Z\"\n    }), jsx(\"path\", {\n      d: \"M20 2v2h6.586L18 12.586 19.414 14 28 5.414V12h2V2H20z\"\n    })]\n  });\n};\nLaunchIcon.defaultProps = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n};\nvar OpenPopupIcon = function OpenPopupIcon(props) {\n  return jsx(\"svg\", {\n    ...props,\n    children: jsx(\"path\", {\n      d: \"M6 15v-1H2.7L7 9.7 6.3 9 2 13.3V10H1v5zm4-14v1h3.3L9 6.3l.7.7L14 2.7V6h1V1z\"\n    })\n  });\n};\nOpenPopupIcon.defaultProps = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 16 16\"\n};\n\n/**\n * @typedef { {\n *  getElementLabel: (element: object) => string,\n *  getTypeLabel: (element: object) => string,\n *  getElementIcon: (element: object) => import('preact').Component,\n *  getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nfunction Header(props) {\n  const {\n    element,\n    headerProvider\n  } = props;\n  const {\n    getElementIcon,\n    getDocumentationRef,\n    getElementLabel,\n    getTypeLabel\n  } = headerProvider;\n  const label = getElementLabel(element);\n  const type = getTypeLabel(element);\n  const documentationRef = getDocumentationRef && getDocumentationRef(element);\n  const ElementIcon = getElementIcon(element);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-header\",\n    children: [jsx(\"div\", {\n      class: \"bio-properties-panel-header-icon\",\n      children: ElementIcon && jsx(ElementIcon, {\n        width: \"32\",\n        height: \"32\",\n        viewBox: \"0 0 32 32\"\n      })\n    }), jsxs(\"div\", {\n      class: \"bio-properties-panel-header-labels\",\n      children: [jsx(\"div\", {\n        class: \"bio-properties-panel-header-type\",\n        children: type\n      }), label ? jsx(\"div\", {\n        class: \"bio-properties-panel-header-label\",\n        children: label\n      }) : null]\n    }), jsx(\"div\", {\n      class: \"bio-properties-panel-header-actions\",\n      children: documentationRef ? jsx(\"a\", {\n        rel: \"noreferrer\",\n        class: \"bio-properties-panel-header-link\",\n        href: documentationRef,\n        title: \"Open documentation\",\n        target: \"_blank\",\n        children: jsx(ExternalLinkIcon, {})\n      }) : null\n    })]\n  });\n}\n\nconst DescriptionContext = createContext({\n  description: {},\n  getDescriptionForId: () => {}\n});\n\nconst ErrorsContext = createContext({\n  errors: {}\n});\n\n/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n *   // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nconst EventContext = createContext({\n  eventBus: null\n});\n\n/**\n * @typedef { {\n *   parserDialect?: import('@bpmn-io/feel-editor').ParserDialect,\n *   builtins?: import('@bpmn-io/feel-editor').Variable[],\n *   dialect?: import('@bpmn-io/feel-editor').Dialect\n * } } FeelLanguageContextType\n */\n\n/**\n * @type {import('preact').Context<FeelLanguageContextType>}\n */\nconst FeelLanguageContext = createContext({});\n\nconst LayoutContext = createContext({\n  layout: {},\n  setLayout: () => {},\n  getLayoutForKey: () => {},\n  setLayoutForKey: () => {}\n});\n\nconst TooltipContext = createContext({\n  tooltip: {},\n  getTooltipForId: () => {}\n});\n\n/**\n * Accesses the global TooltipContext and returns a tooltip for a given id and element.\n *\n * @example\n * ```jsx\n * function TextField(props) {\n *   const tooltip = useTooltipContext('input1', element);\n * }\n * ```\n *\n * @param {string} id\n * @param {object} element\n *\n * @returns {string}\n */\nfunction useTooltipContext(id, element) {\n  const {\n    getTooltipForId\n  } = useContext(TooltipContext);\n  return getTooltipForId(id, element);\n}\n\n/**\n * @typedef {Object} TooltipProps\n * @property {Object} [parent] - Parent element ref for portal rendering\n * @property {String} [direction='right'] - Tooltip direction ( 'right', 'top')\n * @property {String} [position] - Custom CSS position override\n * @property {Number} [showDelay=250] - Delay in ms before showing tooltip on hover\n * @property {Number} [hideDelay=250] - Delay in ms before hiding tooltip when mouse leaves, to avoid multiple tooltips from being opened, this should be the same as showDelay\n * @property {*} [children] - Child elements to render inside the tooltip wrapper\n */\n\n/**\n * Tooltip wrapper that provides context-based tooltip content lookup.\n * All props are forwarded to the underlying Tooltip component.\n *\n * @param {TooltipProps & {\n *   forId: String,\n *   value?: String|Object,\n *   element?: Object\n * }} props - Shared tooltip props plus wrapper-specific ones\n */\nfunction TooltipWrapper(props) {\n  const {\n    forId,\n    element\n  } = props;\n  const contextDescription = useTooltipContext(forId, element);\n  const value = props.value || contextDescription;\n  if (!value) {\n    return props.children;\n  }\n  return jsx(Tooltip, {\n    ...props,\n    value: value,\n    forId: `bio-properties-panel-${forId}`\n  });\n}\n\n/**\n * @param {TooltipProps & {\n *   forId: String,\n *   value: String|Object\n * }} props\n */\nfunction Tooltip(props) {\n  const {\n    forId,\n    value,\n    parent,\n    direction = 'right',\n    position,\n    showDelay = 250,\n    hideDelay = 250\n  } = props;\n  const [visible, setVisible] = useState(false);\n  const [tooltipPosition, setTooltipPosition] = useState(null);\n  const [arrowOffset, setArrowOffset] = useState(null);\n  const showTimeoutRef = useRef(null);\n  const hideTimeoutRef = useRef(null);\n  const wrapperRef = useRef(null);\n  const tooltipRef = useRef(null);\n  const show = (_, delay) => {\n    clearTimeout(showTimeoutRef.current);\n    clearTimeout(hideTimeoutRef.current);\n    if (visible) return;\n    if (delay) {\n      showTimeoutRef.current = setTimeout(() => {\n        setVisible(true);\n      }, showDelay);\n    } else {\n      setVisible(true);\n    }\n  };\n  const handleWrapperMouseEnter = e => {\n    show(e, true);\n  };\n  const hide = (delay = false) => {\n    clearTimeout(showTimeoutRef.current);\n    clearTimeout(hideTimeoutRef.current);\n    if (delay) {\n      hideTimeoutRef.current = setTimeout(() => {\n        setVisible(false);\n      }, hideDelay);\n    } else {\n      setVisible(false);\n    }\n  };\n\n  // Cleanup timeouts on unmount\n  useEffect(() => {\n    return () => {\n      clearTimeout(showTimeoutRef.current);\n      clearTimeout(hideTimeoutRef.current);\n    };\n  }, []);\n\n  // Handle click outside to close tooltip for non-focusable elements\n  useEffect(() => {\n    if (!visible) return;\n    const handleClickOutside = e => {\n      // If clicking outside both the wrapper and tooltip, hide it\n      if (wrapperRef.current && !wrapperRef.current.contains(e.target) && tooltipRef.current && !tooltipRef.current.contains(e.target)) {\n        hide(false);\n      }\n    };\n    document.addEventListener('mousedown', handleClickOutside);\n    return () => {\n      document.removeEventListener('mousedown', handleClickOutside);\n    };\n  }, [visible, hide]);\n  useLayoutEffect(() => {\n    if (!visible || position) {\n      setTooltipPosition(null);\n      setArrowOffset(null);\n      return;\n    }\n    if (!wrapperRef.current || !tooltipRef.current) return;\n    const {\n      tooltipPosition: newPosition,\n      arrowOffset: newArrowOffset\n    } = getTooltipPosition(wrapperRef.current, tooltipRef.current, direction);\n    setTooltipPosition(newPosition);\n    setArrowOffset(newArrowOffset);\n  }, [visible, position]);\n  const handleMouseLeave = ({\n    relatedTarget\n  }) => {\n    // Don't hide the tooltip when moving mouse between the wrapper and the tooltip.\n    if (relatedTarget === wrapperRef.current || relatedTarget === tooltipRef.current || relatedTarget?.parentElement === tooltipRef.current) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (selection && selection.toString().length > 0) {\n      // Check if selection is within tooltip content\n      const selectionRange = selection.getRangeAt(0);\n      if (tooltipRef.current?.contains(selectionRange.commonAncestorContainer) || tooltipRef.current?.contains(selection.anchorNode) || tooltipRef.current?.contains(selection.focusNode)) {\n        return; // Keep tooltip open during text selection\n      }\n    }\n    hide(true);\n  };\n  const handleTooltipMouseEnter = () => {\n    clearTimeout(hideTimeoutRef.current);\n  };\n  const handleFocusOut = e => {\n    const {\n      relatedTarget\n    } = e;\n\n    // Don't hide if focus moved to the tooltip or another element within the wrapper\n    if (tooltipRef.current?.contains(relatedTarget) || wrapperRef.current?.contains(relatedTarget)) {\n      return;\n    }\n    hide(false);\n  };\n  const hideTooltipViaEscape = e => {\n    e.code === 'Escape' && hide(false);\n  };\n  const renderTooltip = () => {\n    const tooltipStyle = position || (tooltipPosition ? `right: ${tooltipPosition.right}; top: ${tooltipPosition.top}px;` : undefined);\n    const arrowStyle = arrowOffset != null ? `margin-top: ${arrowOffset}px;` : undefined;\n    return jsxs(\"div\", {\n      class: `bio-properties-panel-tooltip ${direction}`,\n      role: \"tooltip\",\n      id: \"bio-properties-panel-tooltip\",\n      \"aria-labelledby\": forId,\n      style: tooltipStyle,\n      ref: tooltipRef,\n      onClick: e => e.stopPropagation(),\n      onMouseEnter: handleTooltipMouseEnter,\n      onMouseLeave: handleMouseLeave,\n      children: [jsx(\"div\", {\n        class: \"bio-properties-panel-tooltip-content\",\n        children: value\n      }), jsx(\"div\", {\n        class: \"bio-properties-panel-tooltip-arrow\",\n        style: arrowStyle\n      })]\n    });\n  };\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-tooltip-wrapper\",\n    tabIndex: \"0\",\n    ref: wrapperRef,\n    onMouseEnter: handleWrapperMouseEnter,\n    onMouseLeave: handleMouseLeave,\n    onFocus: show,\n    onBlur: handleFocusOut,\n    onKeyDown: hideTooltipViaEscape,\n    children: [props.children, visible ? parent ? createPortal(renderTooltip(), parent.current) : renderTooltip() : null]\n  });\n}\n\n// helper\n\nfunction getTooltipPosition(refElement, tooltipElement, direction) {\n  if (!refElement) {\n    return {\n      tooltipPosition: null,\n      arrowOffset: null\n    };\n  }\n  const refPosition = refElement.getBoundingClientRect();\n  const right = `calc(100% - ${refPosition.x}px)`;\n  let top = refPosition.top - 10;\n  let arrowOffset = null;\n\n  // Ensure that the tooltip is within the viewport, adjust the top position if needed.\n  // This is only relevant for the 'right' direction for now\n  if (tooltipElement && direction === 'right') {\n    const tooltipRect = tooltipElement.getBoundingClientRect();\n    const viewportHeight = window.innerHeight;\n    const minTop = 0;\n    const maxTop = viewportHeight - tooltipRect.height;\n    const originalTop = top;\n    if (top > maxTop) {\n      top = maxTop;\n    }\n    if (top < minTop) {\n      top = minTop;\n    }\n\n    // Adjust the arrow position if the tooltip had to be moved to stay within viewport\n    if (top !== originalTop) {\n      const defaultMarginTop = 16;\n      const topDiff = top - originalTop;\n      arrowOffset = defaultMarginTop - topDiff;\n    }\n  }\n  return {\n    tooltipPosition: {\n      right,\n      top\n    },\n    arrowOffset\n  };\n}\n\n/**\n * Accesses the global DescriptionContext and returns a description for a given id and element.\n *\n * @example\n * ```jsx\n * function TextField(props) {\n *   const description = useDescriptionContext('input1', element);\n * }\n * ```\n *\n * @param {string} id\n * @param {object} element\n *\n * @returns {string}\n */\nfunction useDescriptionContext(id, element) {\n  const {\n    getDescriptionForId\n  } = useContext(DescriptionContext);\n  return getDescriptionForId(id, element);\n}\n\nfunction useDebounce(callback, debounceFn) {\n  const debouncedCallback = useCallback(debounceFn(callback), [callback, debounceFn]);\n\n  // make sure previous call is not stalled\n  useEffect(() => {\n    return () => {\n      debouncedCallback.cancel?.();\n    };\n  }, [debouncedCallback]);\n  return debouncedCallback;\n}\n\nfunction useError(id) {\n  const {\n    errors\n  } = useContext(ErrorsContext);\n  return errors[id];\n}\nfunction useErrors() {\n  const {\n    errors\n  } = useContext(ErrorsContext);\n  return errors;\n}\n\n/**\n * Subscribe to an event immediately. Update subscription after inputs changed.\n *\n * @param {string} event\n * @param {Function} callback\n */\nfunction useEvent(event, callback, eventBus) {\n  const eventContext = useContext(EventContext);\n  if (!eventBus) {\n    ({\n      eventBus\n    } = eventContext);\n  }\n  const didMount = useRef(false);\n\n  // (1) subscribe immediately\n  if (eventBus && !didMount.current) {\n    eventBus.on(event, callback);\n  }\n\n  // (2) update subscription after inputs changed\n  useEffect(() => {\n    if (eventBus && didMount.current) {\n      eventBus.on(event, callback);\n    }\n    didMount.current = true;\n    return () => {\n      if (eventBus) {\n        eventBus.off(event, callback);\n      }\n    };\n  }, [callback, event, eventBus]);\n}\n\n/**\n * Create a persistent key factory for plain objects without id.\n *\n * @example\n * ```jsx\n * function List({ objects }) {\n *   const getKey = useKeyFactory();\n *   return (<ol>{\n *     objects.map(obj => {\n *       const key = getKey(obj);\n *       return <li key={key}>obj.name</li>\n *     })\n *   }</ol>);\n * }\n * ```\n *\n * @param {any[]} dependencies\n * @returns {(element: object) => string}\n */\nfunction useKeyFactory(dependencies = []) {\n  const map = useMemo(() => new Map(), dependencies);\n  const getKey = el => {\n    let key = map.get(el);\n    if (!key) {\n      key = Math.random().toString().slice(-6);\n      map.set(el, key);\n    }\n    return key;\n  };\n  return getKey;\n}\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n *   const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nfunction useLayoutState(path, defaultValue) {\n  const {\n    getLayoutForKey,\n    setLayoutForKey\n  } = useContext(LayoutContext);\n  const layoutForKey = getLayoutForKey(path, defaultValue);\n  const setState = useCallback(newValue => {\n    setLayoutForKey(path, newValue);\n  }, [setLayoutForKey]);\n  return [layoutForKey, setState];\n}\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nfunction usePrevious(value) {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n}\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {string} id\n *\n * @returns {import('preact').Ref}\n */\nfunction useShowEntryEvent(id) {\n  const {\n    onShow\n  } = useContext(LayoutContext);\n  const ref = useRef();\n  const focus = useRef(false);\n  const onShowEntry = useCallback(event => {\n    if (event.id === id) {\n      onShow();\n      if (!focus.current) {\n        focus.current = true;\n      }\n    }\n  }, [id]);\n  useEffect(() => {\n    if (focus.current && ref.current) {\n      if (isFunction(ref.current.focus)) {\n        ref.current.focus();\n      }\n      if (isFunction(ref.current.select)) {\n        ref.current.select();\n      }\n      focus.current = false;\n    }\n  });\n  useEvent('propertiesPanel.showEntry', onShowEntry);\n  return ref;\n}\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nfunction useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n  const [scrollContainer, setScrollContainer] = useState(query(scrollContainerSelector));\n  const updateScrollContainer = useCallback(() => {\n    const newScrollContainer = query(scrollContainerSelector);\n    if (newScrollContainer !== scrollContainer) {\n      setScrollContainer(newScrollContainer);\n    }\n  }, [scrollContainerSelector, scrollContainer]);\n  useEffect(() => {\n    updateScrollContainer();\n  }, [updateScrollContainer]);\n  useEvent('propertiesPanel.attach', updateScrollContainer);\n  useEvent('propertiesPanel.detach', updateScrollContainer);\n  useEffect(() => {\n    const Observer = IntersectionObserver;\n\n    // return early if IntersectionObserver is not available\n    if (!Observer) {\n      return;\n    }\n\n    // TODO(@barmac): test this\n    if (!ref.current || !scrollContainer) {\n      return;\n    }\n    const observer = new Observer(entries => {\n      // scroll container is unmounted, do not update sticky state\n      if (scrollContainer.scrollHeight === 0) {\n        return;\n      }\n      entries.forEach(entry => {\n        if (entry.intersectionRatio < 1) {\n          setSticky(true);\n        } else if (entry.intersectionRatio === 1) {\n          setSticky(false);\n        }\n      });\n    }, {\n      root: scrollContainer,\n      rootMargin: '0px 0px 999999% 0px',\n      // Use bottom margin to avoid stickyness when scrolling out to bottom\n      threshold: [1]\n    });\n    observer.observe(ref.current);\n\n    // Unobserve if unmounted\n    return () => {\n      observer.unobserve(ref.current);\n    };\n  }, [ref.current, scrollContainer, setSticky]);\n}\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * The ref update is deferred to useLayoutEffect to prevent stale-closure\n * bugs when Chrome fires blur on elements removed during re-render.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nfunction useStaticCallback(callback) {\n  const callbackRef = useRef(callback);\n  useLayoutEffect(() => {\n    callbackRef.current = callback;\n  });\n  return useCallback((...args) => callbackRef.current(...args), []);\n}\n\nfunction useElementVisible(element) {\n  const [visible, setVisible] = useState(!!element && !!element.clientHeight);\n  useLayoutEffect(() => {\n    if (!element) return;\n    const resizeObserver = new ResizeObserver(([entry]) => {\n      requestAnimationFrame(() => {\n        const newVisible = !!entry.contentRect.height;\n        if (newVisible !== visible) {\n          setVisible(newVisible);\n        }\n      });\n    });\n    resizeObserver.observe(element);\n    return () => resizeObserver.disconnect();\n  }, [element, visible]);\n  return visible;\n}\n\n/**\n * @param {import('../PropertiesPanel').GroupDefinition} props\n */\nfunction Group(props) {\n  const {\n    element,\n    entries = [],\n    id,\n    label,\n    shouldOpen = false\n  } = props;\n  const groupRef = useRef(null);\n  const [open, setOpen] = useLayoutState(['groups', id, 'open'], shouldOpen);\n  const onShow = useCallback(() => setOpen(true), [setOpen]);\n  const toggleOpen = () => setOpen(!open);\n  const [edited, setEdited] = useState(false);\n  const [sticky, setSticky] = useState(false);\n\n  // set edited state depending on all entries\n  useEffect(() => {\n    // TODO(@barmac): replace with CSS when `:has()` is supported in all major browsers, or rewrite as in https://github.com/camunda/camunda-modeler/issues/3815#issuecomment-1733038161\n    const scheduled = requestAnimationFrame(() => {\n      const hasOneEditedEntry = entries.find(entry => {\n        const {\n          id,\n          isEdited\n        } = entry;\n        const entryNode = query(`[data-entry-id=\"${id}\"]`);\n        if (!isFunction(isEdited) || !entryNode) {\n          return false;\n        }\n        const inputNode = query('.bio-properties-panel-input', entryNode);\n        return isEdited(inputNode);\n      });\n      setEdited(hasOneEditedEntry);\n    });\n    return () => cancelAnimationFrame(scheduled);\n  }, [entries, setEdited]);\n\n  // set error state depending on all entries\n  const allErrors = useErrors();\n  const hasErrors = entries.some(entry => allErrors[entry.id]);\n\n  // set css class when group is sticky to top\n  useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n  const propertiesPanelContext = {\n    ...useContext(LayoutContext),\n    onShow\n  };\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-group\",\n    \"data-group-id\": 'group-' + id,\n    ref: groupRef,\n    children: [jsxs(\"div\", {\n      class: classnames('bio-properties-panel-group-header', edited ? '' : 'empty', open ? 'open' : '', sticky && open ? 'sticky' : ''),\n      onClick: toggleOpen,\n      children: [jsx(\"div\", {\n        class: \"bio-properties-panel-group-header-title\",\n        children: jsx(TooltipWrapper, {\n          value: props.tooltip,\n          forId: 'group-' + id,\n          element: element,\n          parent: groupRef,\n          children: label\n        })\n      }), jsxs(\"div\", {\n        class: \"bio-properties-panel-group-header-buttons\",\n        children: [jsx(DataMarker, {\n          edited: edited,\n          hasErrors: hasErrors\n        }), jsx(\"button\", {\n          type: \"button\",\n          title: \"Toggle section\",\n          class: \"bio-properties-panel-group-header-button bio-properties-panel-arrow\",\n          children: jsx(ArrowIcon, {\n            class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right'\n          })\n        })]\n      })]\n    }), jsx(\"div\", {\n      class: classnames('bio-properties-panel-group-entries', open ? 'open' : ''),\n      children: jsx(LayoutContext.Provider, {\n        value: propertiesPanelContext,\n        children: entries.map(entry => {\n          const {\n            component: Component,\n            id\n          } = entry;\n          return createElement$1(Component, {\n            ...entry,\n            element: element,\n            key: id\n          });\n        })\n      })\n    })]\n  });\n}\nfunction DataMarker(props) {\n  const {\n    edited,\n    hasErrors\n  } = props;\n  if (hasErrors) {\n    return jsx(\"div\", {\n      title: \"Section contains an error\",\n      class: \"bio-properties-panel-dot bio-properties-panel-dot--error\"\n    });\n  }\n  if (edited) {\n    return jsx(\"div\", {\n      title: \"Section contains edits\",\n      class: \"bio-properties-panel-dot\"\n    });\n  }\n  return null;\n}\n\n/**\n * @typedef { {\n *  text: (element: object) => string,\n *  icon?: (element: Object) => import('preact').Component\n * } } PlaceholderDefinition\n *\n * @param { PlaceholderDefinition } props\n */\nfunction Placeholder(props) {\n  const {\n    text,\n    icon: Icon\n  } = props;\n  return jsx(\"div\", {\n    class: \"bio-properties-panel open\",\n    children: jsxs(\"section\", {\n      class: \"bio-properties-panel-placeholder\",\n      children: [Icon && jsx(Icon, {\n        class: \"bio-properties-panel-placeholder-icon\"\n      }), jsx(\"p\", {\n        class: \"bio-properties-panel-placeholder-text\",\n        children: text\n      })]\n    })\n  });\n}\n\nconst DEFAULT_LAYOUT = {};\nconst DEFAULT_DESCRIPTION = {};\nconst DEFAULT_TOOLTIP = {};\n\n/**\n * @typedef { {\n *    component: import('preact').Component,\n *    id: String,\n *    isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n *    autoFocusEntry: String,\n *    autoOpen?: Boolean,\n *    entries: Array<EntryDefinition>,\n *    id: String,\n *    label: String,\n *    remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n *    add: (event: MouseEvent) => void,\n *    component: import('preact').Component,\n *    element: Object,\n *    id: String,\n *    items: Array<ListItemDefinition>,\n *    label: String,\n *    shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n *    component?: import('preact').Component,\n *    entries: Array<EntryDefinition>,\n *    id: String,\n *    label: String,\n *    shouldOpen?: Boolean\n * } } GroupDefinition\n *\n *  @typedef { {\n *    [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n *  @typedef { {\n *    [id: String]: GetTooltipFunction\n * } } TooltipConfig\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetTooltipFunction\n *\n * @typedef { {\n *  getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\n *  getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\n * } } PlaceholderProvider\n *\n */\n\n/**\n * A basic properties panel component. Describes *how* content will be rendered, accepts\n * data from implementor to describe *what* will be rendered.\n *\n * @param {Object} props\n * @param {Object|Array} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\n * @param {PlaceholderProvider} [props.placeholderProvider]\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\n * @param {Object} [props.layoutConfig]\n * @param {Function} [props.layoutChanged]\n * @param {DescriptionConfig} [props.descriptionConfig]\n * @param {Function} [props.descriptionLoaded]\n * @param {TooltipConfig} [props.tooltipConfig]\n * @param {Function} [props.tooltipLoaded]\n * @param {HTMLElement} [props.feelPopupContainer]\n * @param {Function} [props.getFeelPopupLinks]\n * @param {Object} [props.eventBus]\n */\nfunction PropertiesPanel(props) {\n  const {\n    element,\n    headerProvider,\n    placeholderProvider,\n    groups,\n    layoutConfig,\n    layoutChanged,\n    descriptionConfig,\n    descriptionLoaded,\n    tooltipConfig,\n    tooltipLoaded,\n    eventBus\n  } = props;\n\n  // set-up layout context\n  const [layout, setLayout] = useState(createLayout(layoutConfig));\n\n  // react to external changes in the layout config\n  useUpdateLayoutEffect(() => {\n    const newLayout = createLayout(layoutConfig);\n    setLayout(newLayout);\n  }, [layoutConfig]);\n  useEffect(() => {\n    if (typeof layoutChanged === 'function') {\n      layoutChanged(layout);\n    }\n  }, [layout, layoutChanged]);\n  const getLayoutForKey = (key, defaultValue) => {\n    return get(layout, key, defaultValue);\n  };\n  const setLayoutForKey = (key, config) => {\n    setLayout(prevLayout => {\n      const newLayout = assign({}, prevLayout);\n      set(newLayout, key, config);\n      return newLayout;\n    });\n  };\n  const layoutContext = {\n    layout,\n    setLayout,\n    getLayoutForKey,\n    setLayoutForKey\n  };\n\n  // set-up description context\n  const description = useMemo(() => createDescriptionContext(descriptionConfig), [descriptionConfig]);\n  useEffect(() => {\n    if (typeof descriptionLoaded === 'function') {\n      descriptionLoaded(description);\n    }\n  }, [description, descriptionLoaded]);\n  const getDescriptionForId = (id, element) => {\n    return description[id] && description[id](element);\n  };\n  const descriptionContext = {\n    description,\n    getDescriptionForId\n  };\n\n  // set-up tooltip context\n  const tooltip = useMemo(() => createTooltipContext(tooltipConfig), [tooltipConfig]);\n  useEffect(() => {\n    if (typeof tooltipLoaded === 'function') {\n      tooltipLoaded(tooltip);\n    }\n  }, [tooltip, tooltipLoaded]);\n  const getTooltipForId = (id, element) => {\n    return tooltip[id] && tooltip[id](element);\n  };\n  const tooltipContext = {\n    tooltip,\n    getTooltipForId\n  };\n  const [errors, setErrors] = useState({});\n  const onSetErrors = ({\n    errors\n  }) => setErrors(errors);\n  useEvent('propertiesPanel.setErrors', onSetErrors, eventBus);\n  const errorsContext = {\n    errors\n  };\n  const eventContext = {\n    eventBus\n  };\n  const propertiesPanelContext = {\n    element\n  };\n\n  // empty state\n  if (placeholderProvider && !element) {\n    return jsx(Placeholder, {\n      ...placeholderProvider.getEmpty()\n    });\n  }\n\n  // multiple state\n  if (placeholderProvider && isArray(element)) {\n    return jsx(Placeholder, {\n      ...placeholderProvider.getMultiple()\n    });\n  }\n  return jsx(LayoutContext.Provider, {\n    value: propertiesPanelContext,\n    children: jsx(ErrorsContext.Provider, {\n      value: errorsContext,\n      children: jsx(DescriptionContext.Provider, {\n        value: descriptionContext,\n        children: jsx(TooltipContext.Provider, {\n          value: tooltipContext,\n          children: jsx(LayoutContext.Provider, {\n            value: layoutContext,\n            children: jsx(EventContext.Provider, {\n              value: eventContext,\n              children: jsxs(\"div\", {\n                class: \"bio-properties-panel\",\n                children: [jsx(Header, {\n                  element: element,\n                  headerProvider: headerProvider\n                }), jsx(\"div\", {\n                  class: \"bio-properties-panel-scroll-container\",\n                  children: groups.map(group => {\n                    const {\n                      component: Component = Group,\n                      id\n                    } = group;\n                    return createElement$1(Component, {\n                      ...group,\n                      key: id,\n                      element: element\n                    });\n                  })\n                })]\n              })\n            })\n          })\n        })\n      })\n    })\n  });\n}\n\n// helpers //////////////////\n\nfunction createLayout(overrides = {}, defaults = DEFAULT_LAYOUT) {\n  return {\n    ...defaults,\n    ...overrides\n  };\n}\nfunction createDescriptionContext(overrides = {}) {\n  return {\n    ...DEFAULT_DESCRIPTION,\n    ...overrides\n  };\n}\nfunction createTooltipContext(overrides = {}) {\n  return {\n    ...DEFAULT_TOOLTIP,\n    ...overrides\n  };\n}\n\n// hooks //////////////////\n\n/**\n * This hook behaves like useLayoutEffect, but does not trigger on the first render.\n *\n * @param {Function} effect\n * @param {Array} deps\n */\nfunction useUpdateLayoutEffect(effect, deps) {\n  const isMounted = useRef(false);\n  useLayoutEffect(() => {\n    if (isMounted.current) {\n      return effect();\n    } else {\n      isMounted.current = true;\n    }\n  }, deps);\n}\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nfunction DropdownButton(props) {\n  const {\n    class: className,\n    children,\n    menuItems = []\n  } = props;\n  const dropdownRef = useRef(null);\n  const menuRef = useRef(null);\n  const [open, setOpen] = useState(false);\n  const close = () => setOpen(false);\n  function onDropdownToggle(event) {\n    if (menuRef.current && menuRef.current.contains(event.target)) {\n      return;\n    }\n    event.stopPropagation();\n    setOpen(open => !open);\n  }\n  function onActionClick(event, action) {\n    event.stopPropagation();\n    close();\n    action();\n  }\n  useGlobalClick([dropdownRef.current], () => close());\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-dropdown-button', {\n      open\n    }, className),\n    onClick: onDropdownToggle,\n    ref: dropdownRef,\n    children: [children, jsx(\"div\", {\n      class: \"bio-properties-panel-dropdown-button__menu\",\n      ref: menuRef,\n      children: menuItems.map((item, index) => jsx(MenuItem, {\n        onClick: onActionClick,\n        item: item\n      }, index))\n    })]\n  });\n}\nfunction MenuItem({\n  item,\n  onClick\n}) {\n  if (item.separator) {\n    return jsx(\"div\", {\n      class: \"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\"\n    });\n  }\n  if (item.action) {\n    return jsx(\"button\", {\n      type: \"button\",\n      class: \"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\",\n      onClick: event => onClick(event, item.action),\n      children: item.entry\n    });\n  }\n  return jsx(\"div\", {\n    class: \"bio-properties-panel-dropdown-button__menu-item\",\n    children: item.entry\n  });\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n  useEffect(() => {\n    /**\n     * @param {MouseEvent} event\n     */\n    function listener(event) {\n      if (ignoredElements.some(element => element && element.contains(event.target))) {\n        return;\n      }\n      callback();\n    }\n    document.addEventListener('click', listener, {\n      capture: true\n    });\n    return () => document.removeEventListener('click', listener, {\n      capture: true\n    });\n  }, [...ignoredElements, callback]);\n}\n\nfunction HeaderButton(props) {\n  const {\n    children = null,\n    class: classname,\n    onClick = () => {},\n    ...otherProps\n  } = props;\n  return jsx(\"button\", {\n    type: \"button\",\n    ...otherProps,\n    onClick: onClick,\n    class: classnames('bio-properties-panel-group-header-button', classname),\n    children: children\n  });\n}\n\n/**\n * @typedef { {\n *   [key: string]: string;\n * } } TranslateReplacements\n */\n\n/**\n * A simple translation stub to be used for multi-language support.\n * Can be easily replaced with a more sophisticated solution.\n *\n * @param {string} template to interpolate\n * @param {TranslateReplacements} [replacements] a map with substitutes\n *\n * @return {string} the translated string\n */\nfunction translateFallback(template, replacements) {\n  replacements = replacements || {};\n  return template.replace(/{([^}]+)}/g, function (_, key) {\n    return replacements[key] || '{' + key + '}';\n  });\n}\n\nfunction CollapsibleEntry(props) {\n  const {\n    element,\n    entries = [],\n    id,\n    label,\n    open: shouldOpen,\n    remove,\n    translate = translateFallback\n  } = props;\n  const [open, setOpen] = useState(shouldOpen);\n  const toggleOpen = () => setOpen(!open);\n  const {\n    onShow\n  } = useContext(LayoutContext);\n  const propertiesPanelContext = {\n    ...useContext(LayoutContext),\n    onShow: useCallback(() => {\n      setOpen(true);\n      if (isFunction(onShow)) {\n        onShow();\n      }\n    }, [onShow, setOpen])\n  };\n  const placeholderLabel = translate('<empty>');\n  return jsxs(\"div\", {\n    \"data-entry-id\": id,\n    class: classnames('bio-properties-panel-collapsible-entry', open ? 'open' : ''),\n    children: [jsxs(\"div\", {\n      class: \"bio-properties-panel-collapsible-entry-header\",\n      onClick: toggleOpen,\n      children: [jsx(\"div\", {\n        class: classnames('bio-properties-panel-collapsible-entry-header-title', !label && 'empty'),\n        children: label || placeholderLabel\n      }), jsx(\"button\", {\n        type: \"button\",\n        title: translate('Toggle list item'),\n        class: \"bio-properties-panel-arrow  bio-properties-panel-collapsible-entry-arrow\",\n        children: jsx(ArrowIcon, {\n          class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right'\n        })\n      }), remove ? jsx(\"button\", {\n        type: \"button\",\n        title: translate('Delete item'),\n        class: \"bio-properties-panel-remove-entry\",\n        onClick: remove,\n        children: jsx(DeleteIcon, {})\n      }) : null]\n    }), jsx(\"div\", {\n      class: classnames('bio-properties-panel-collapsible-entry-entries', open ? 'open' : ''),\n      children: jsx(LayoutContext.Provider, {\n        value: propertiesPanelContext,\n        children: entries.map(entry => {\n          const {\n            component: Component,\n            id\n          } = entry;\n          return createElement$1(Component, {\n            ...entry,\n            element: element,\n            key: id\n          });\n        })\n      })\n    })]\n  });\n}\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nfunction ListItem(props) {\n  const {\n    autoFocusEntry,\n    autoOpen,\n    translate = translateFallback\n  } = props;\n\n  // focus specified entry on auto open\n  useEffect(() => {\n    if (autoOpen && autoFocusEntry) {\n      const entry = query(`[data-entry-id=\"${autoFocusEntry}\"]`);\n      const focusableInput = query('.bio-properties-panel-input', entry);\n      if (focusableInput) {\n        if (isFunction(focusableInput.select)) {\n          focusableInput.select();\n        } else if (isFunction(focusableInput.focus)) {\n          focusableInput.focus();\n        }\n        focusableInput.scrollIntoView();\n      }\n    }\n  }, [autoOpen, autoFocusEntry]);\n  return jsx(\"div\", {\n    class: \"bio-properties-panel-list-item\",\n    children: jsx(CollapsibleEntry, {\n      ...props,\n      open: autoOpen,\n      translate: translate\n    })\n  });\n}\n\nconst noop$6 = () => {};\n\n/**\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\n */\nfunction ListGroup(props) {\n  const {\n    add,\n    element,\n    id,\n    items,\n    label,\n    shouldOpen = false,\n    translate = translateFallback\n  } = props;\n  useEffect(() => {\n    if (props.shouldSort != undefined) {\n      console.warn('the property \\'shouldSort\\' is no longer supported');\n    }\n  }, [props.shouldSort]);\n  const groupRef = useRef(null);\n  const [open, setOpen] = useLayoutState(['groups', id, 'open'], shouldOpen);\n  const [sticky, setSticky] = useState(false);\n  const onShow = useCallback(() => setOpen(true), [setOpen]);\n  const [localItems, setLocalItems] = useState([]);\n\n  // Flag to mark that add button was clicked in the last render cycle\n  const [addTriggered, setAddTriggered] = useState(false);\n  const prevElement = usePrevious(element);\n  const toggleOpen = useCallback(() => setOpen(!open), [open]);\n  const openItemIds = element === prevElement && open && addTriggered ? getNewItemIds(items, localItems) : [];\n\n  // reset local state after items changed\n  useEffect(() => {\n    setLocalItems(items);\n    setAddTriggered(false);\n  }, [items]);\n\n  // set css class when group is sticky to top\n  useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n  const hasItems = !!items.length;\n  const propertiesPanelContext = {\n    ...useContext(LayoutContext),\n    onShow\n  };\n  const handleAddClick = e => {\n    setAddTriggered(true);\n    setOpen(true);\n    add(e);\n  };\n  const allErrors = useErrors();\n  const hasError = items.some(item => {\n    if (allErrors[item.id]) {\n      return true;\n    }\n    if (!item.entries) {\n      return;\n    }\n\n    // also check if the error is nested, e.g. for name-value entries\n    return item.entries.some(entry => allErrors[entry.id]);\n  });\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-group\",\n    \"data-group-id\": 'group-' + id,\n    ref: groupRef,\n    children: [jsxs(\"div\", {\n      class: classnames('bio-properties-panel-group-header', hasItems ? '' : 'empty', hasItems && open ? 'open' : '', sticky && open ? 'sticky' : ''),\n      onClick: hasItems ? toggleOpen : noop$6,\n      children: [jsx(\"div\", {\n        class: \"bio-properties-panel-group-header-title\",\n        children: jsx(TooltipWrapper, {\n          value: props.tooltip,\n          forId: 'group-' + id,\n          element: element,\n          parent: groupRef,\n          children: label\n        })\n      }), jsxs(\"div\", {\n        class: \"bio-properties-panel-group-header-buttons\",\n        children: [add ? jsxs(\"button\", {\n          type: \"button\",\n          title: translate('Create new list item'),\n          class: \"bio-properties-panel-group-header-button bio-properties-panel-add-entry\",\n          onClick: handleAddClick,\n          children: [jsx(CreateIcon, {}), !hasItems ? jsx(\"span\", {\n            class: \"bio-properties-panel-add-entry-label\",\n            children: translate('Create')\n          }) : null]\n        }) : null, hasItems ? jsx(\"div\", {\n          title: translate(`List contains {numOfItems} item${items.length != 1 ? 's' : ''}`, {\n            numOfItems: items.length\n          }),\n          class: classnames('bio-properties-panel-list-badge', hasError ? 'bio-properties-panel-list-badge--error' : ''),\n          children: items.length\n        }) : null, hasItems ? jsx(\"button\", {\n          type: \"button\",\n          title: translate('Toggle section'),\n          class: \"bio-properties-panel-group-header-button bio-properties-panel-arrow\",\n          children: jsx(ArrowIcon, {\n            class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right'\n          })\n        }) : null]\n      })]\n    }), jsx(\"div\", {\n      class: classnames('bio-properties-panel-list', open && hasItems ? 'open' : ''),\n      children: jsx(LayoutContext.Provider, {\n        value: propertiesPanelContext,\n        children: items.map((item, index) => {\n          if (!item) {\n            return;\n          }\n          const {\n            id\n          } = item;\n\n          // if item was added, open it\n          // existing items will not be affected as autoOpen\n          // is only applied on first render\n          const autoOpen = openItemIds.includes(item.id);\n          return createElement$1(ListItem, {\n            ...item,\n            autoOpen: autoOpen,\n            element: element,\n            index: index,\n            key: id,\n            translate: translate\n          });\n        })\n      })\n    })]\n  });\n}\nfunction getNewItemIds(newItems, oldItems) {\n  const newIds = newItems.map(item => item.id);\n  const oldIds = oldItems.map(item => item.id);\n  return newIds.filter(itemId => !oldIds.includes(itemId));\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.forId - id of the entry the description is used for\n * @param {String} props.value\n */\nfunction Description(props) {\n  const {\n    element,\n    forId,\n    value\n  } = props;\n  const contextDescription = useDescriptionContext(forId, element);\n  const description = value || contextDescription;\n  if (description) {\n    return jsx(\"div\", {\n      class: \"bio-properties-panel-description\",\n      children: description\n    });\n  }\n}\n\nfunction Checkbox(props) {\n  const {\n    id,\n    label,\n    onChange,\n    disabled,\n    value = false,\n    onFocus,\n    onBlur,\n    tooltip\n  } = props;\n  const [localValue, setLocalValue] = useState(value);\n  const handleChangeCallback = ({\n    target\n  }) => {\n    onChange(target.checked);\n  };\n  const handleChange = e => {\n    handleChangeCallback(e);\n    setLocalValue(e.target.value);\n  };\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  const ref = useShowEntryEvent(id);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-checkbox\",\n    children: [jsx(\"input\", {\n      ref: ref,\n      id: prefixId$8(id),\n      name: id,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      type: \"checkbox\",\n      class: \"bio-properties-panel-input\",\n      onChange: handleChange,\n      checked: localValue,\n      disabled: disabled\n    }), jsx(\"label\", {\n      for: prefixId$8(id),\n      class: \"bio-properties-panel-label\",\n      children: jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      })\n    })]\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n * @param {boolean} [props.disabled]\n */\nfunction CheckboxEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    label,\n    getValue,\n    setValue,\n    disabled,\n    onFocus,\n    onBlur,\n    tooltip\n  } = props;\n  const value = getValue(element);\n  const error = useError(id);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-entry bio-properties-panel-checkbox-entry\",\n    \"data-entry-id\": id,\n    children: [jsx(Checkbox, {\n      disabled: disabled,\n      id: id,\n      label: label,\n      onChange: setValue,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      value: value,\n      tooltip: tooltip,\n      element: element\n    }, element), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction isEdited$8(node) {\n  return node && !!node.checked;\n}\n\n// helpers /////////////////\n\nfunction prefixId$8(id) {\n  return `bio-properties-panel-${id}`;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.label\n * @param {Array<{label: String, value: *}>} props.options\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {String} [props.description]\n * @param {string|import('preact').Component} [props.tooltip]\n * @param {boolean} [props.disabled]\n * @param {Function} [props.onFocus]\n * @param {Function} [props.onBlur]\n */\nfunction CheckboxGroup(props) {\n  const {\n    element,\n    id,\n    label,\n    description,\n    tooltip,\n    options = [],\n    getValue,\n    setValue,\n    disabled,\n    onFocus,\n    onBlur\n  } = props;\n  const value = getValue(element) || [];\n  const handleOptionChange = (optionValue, checked) => {\n    const newValue = checked ? [...value, optionValue] : value.filter(v => v !== optionValue);\n    setValue(newValue);\n  };\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-entry bio-properties-panel-checkbox-group\",\n    \"data-entry-id\": id,\n    children: [jsx(\"div\", {\n      class: \"bio-properties-panel-group-header\",\n      children: jsx(\"p\", {\n        class: \"bio-properties-panel-label\",\n        children: jsx(TooltipWrapper, {\n          value: tooltip,\n          forId: id,\n          element: element,\n          children: label\n        })\n      })\n    }), jsx(\"div\", {\n      class: \"bio-properties-panel-checkbox-group-entries\",\n      children: options.map(option => jsx(CheckboxEntry, {\n        id: `${id}-${option.value}`,\n        label: option.label,\n        setValue: checked => handleOptionChange(option.value, checked),\n        getValue: () => value.includes(option.value),\n        disabled: disabled,\n        onFocus: onFocus,\n        onBlur: onBlur,\n        element: element\n      }, option.value))\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\n\n/**\n * Button to open popups.\n *\n * @param {Object} props\n * @param {Function} props.onClick - Callback to trigger when the button is clicked.\n * @param {string} [props.title] - Tooltip text for the button.\n * @param {boolean} [props.disabled] - Whether the button is disabled.\n * @param {string} [props.className] - Additional class names for the button.\n */\nfunction OpenPopupButton({\n  onClick,\n  title = 'Open pop-up editor'\n}) {\n  return jsx(\"button\", {\n    type: \"button\",\n    title: title,\n    class: 'bio-properties-panel-open-feel-popup',\n    onClick: onClick,\n    children: jsx(OpenPopupIcon, {})\n  });\n}\n\nconst noop$5 = () => {};\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus$1 = function (editor, ref) {\n  const [buffer, setBuffer] = useState(undefined);\n  ref.current = useMemo(() => ({\n    focus: offset => {\n      if (editor) {\n        editor.focus(offset);\n      } else {\n        if (typeof offset === 'undefined') {\n          offset = Infinity;\n        }\n        setBuffer(offset);\n      }\n    }\n  }), [editor]);\n  useEffect(() => {\n    if (typeof buffer !== 'undefined' && editor) {\n      editor.focus(buffer);\n      setBuffer(false);\n    }\n  }, [editor, buffer]);\n};\nconst TemplatingEditor = forwardRef((props, ref) => {\n  const {\n    onInput,\n    disabled,\n    tooltipContainer,\n    enableGutters,\n    value,\n    onLint = noop$5,\n    onOpenPopup = noop$5,\n    popupOpen,\n    contentAttributes = {},\n    hostLanguage = null,\n    singleLine = false\n  } = props;\n  const inputRef = useRef();\n  const [editor, setEditor] = useState();\n  const [localValue, setLocalValue] = useState(value || '');\n  useBufferedFocus$1(editor, ref);\n  const handleInput = useStaticCallback(newValue => {\n    onInput(newValue);\n    setLocalValue(newValue);\n  });\n  useEffect(() => {\n    let editor;\n    editor = new FeelersEditor({\n      container: inputRef.current,\n      onChange: handleInput,\n      value: localValue,\n      onLint,\n      contentAttributes,\n      tooltipContainer,\n      enableGutters,\n      hostLanguage,\n      singleLine,\n      lineWrap: true\n    });\n    setEditor(editor);\n    return () => {\n      onLint([]);\n      inputRef.current.innerHTML = '';\n      setEditor(null);\n    };\n  }, []);\n  useEffect(() => {\n    if (!editor) {\n      return;\n    }\n    if (value === localValue) {\n      return;\n    }\n    editor.setValue(value);\n    setLocalValue(value);\n  }, [value]);\n  const handleClick = () => {\n    ref.current.focus();\n  };\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-feelers-editor-container', popupOpen ? 'popupOpen' : null),\n    children: [popupOpen && jsx(\"div\", {\n      class: \"bio-properties-panel-feelers-editor__popup-placeholder\",\n      children: \"Opened in popup\"\n    }), jsx(\"div\", {\n      name: props.name,\n      class: classnames('bio-properties-panel-feelers-editor bio-properties-panel-input', localValue ? 'edited' : null, disabled ? 'disabled' : null),\n      ref: inputRef,\n      onClick: handleClick\n    }), !disabled && jsx(OpenPopupButton, {\n      onClick: () => onOpenPopup('feelers')\n    })]\n  });\n});\n\nconst noop$4 = () => {};\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function (editor, ref) {\n  const [buffer, setBuffer] = useState(undefined);\n  ref.current = useMemo(() => ({\n    focus: offset => {\n      if (editor) {\n        editor.focus(offset);\n      } else {\n        if (typeof offset === 'undefined') {\n          offset = Infinity;\n        }\n        setBuffer(offset);\n      }\n    }\n  }), [editor]);\n  useEffect(() => {\n    if (typeof buffer !== 'undefined' && editor) {\n      editor.focus(buffer);\n      setBuffer(false);\n    }\n  }, [editor, buffer]);\n};\nconst FeelEditor = forwardRef((props, ref) => {\n  const {\n    contentAttributes,\n    enableGutters,\n    value,\n    onInput,\n    onKeyDown: onKeyDownProp = noop$4,\n    onFeelToggle = noop$4,\n    onLint = noop$4,\n    onOpenPopup = noop$4,\n    placeholder,\n    popupOpen,\n    disabled,\n    tooltipContainer,\n    variables,\n    feelLanguageContext\n  } = props;\n  const inputRef = useRef();\n  const [editor, setEditor] = useState();\n  const [localValue, setLocalValue] = useState(value || '');\n  const {\n    builtins,\n    dialect,\n    parserDialect\n  } = feelLanguageContext || {};\n  useBufferedFocus(editor, ref);\n  const handleInput = useStaticCallback(newValue => {\n    onInput(newValue);\n    setLocalValue(newValue);\n  });\n  useEffect(() => {\n    let editor;\n\n    /* Trigger FEEL toggle when\n     *\n     * - `backspace` is pressed\n     * - AND the cursor is at the beginning of the input\n     */\n    const onKeyDown = e => {\n      // Call parent onKeyDown handler first\n      onKeyDownProp(e);\n      if (e.key !== 'Backspace' || !editor) {\n        return;\n      }\n      const selection = editor.getSelection();\n      const range = selection.ranges[selection.mainIndex];\n      if (range.from === 0 && range.to === 0) {\n        onFeelToggle();\n      }\n    };\n    editor = new Editor({\n      container: inputRef.current,\n      onChange: handleInput,\n      onKeyDown: onKeyDown,\n      onLint: onLint,\n      placeholder: placeholder,\n      tooltipContainer: tooltipContainer,\n      value: localValue,\n      variables,\n      builtins,\n      dialect,\n      parserDialect,\n      extensions: [...(enableGutters ? [lineNumbers()] : []), EditorView.lineWrapping],\n      contentAttributes\n    });\n    setEditor(editor);\n    return () => {\n      onLint([]);\n      inputRef.current.innerHTML = '';\n      setEditor(null);\n    };\n  }, []);\n  useEffect(() => {\n    if (!editor) {\n      return;\n    }\n    if (value === localValue) {\n      return;\n    }\n    editor.setValue(value);\n    setLocalValue(value);\n  }, [value]);\n  useEffect(() => {\n    if (!editor) {\n      return;\n    }\n    editor.setVariables(variables);\n  }, [variables]);\n  useEffect(() => {\n    if (!editor) {\n      return;\n    }\n    editor.setPlaceholder(placeholder);\n  }, [placeholder]);\n  const handleClick = () => {\n    ref.current.focus();\n  };\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null, popupOpen ? 'popupOpen' : null),\n    children: [popupOpen && jsx(\"div\", {\n      class: \"bio-properties-panel-feel-editor__open-popup-placeholder\",\n      children: \"Opened in editor\"\n    }), jsx(\"div\", {\n      name: props.name,\n      class: classnames('bio-properties-panel-input', localValue ? 'edited' : null),\n      ref: inputRef,\n      onClick: handleClick\n    }), !disabled && jsx(OpenPopupButton, {\n      onClick: () => onOpenPopup('feel')\n    })]\n  });\n});\n\nfunction FeelIndicator(props) {\n  const {\n    active\n  } = props;\n  if (!active) {\n    return null;\n  }\n  return jsx(\"span\", {\n    class: \"bio-properties-panel-feel-indicator\",\n    children: \"=\"\n  });\n}\n\nconst noop$3 = () => {};\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nfunction FeelIcon(props) {\n  const {\n    feel = false,\n    active,\n    disabled = false,\n    onClick = noop$3\n  } = props;\n  const feelRequiredLabel = 'FEEL expression is mandatory';\n  const feelOptionalLabel = `Click to ${active ? 'remove' : 'set a'} dynamic value with FEEL expression`;\n  const handleClick = e => {\n    onClick(e);\n\n    // when pointer event was created from keyboard, keep focus on button\n    if (!e.pointerType) {\n      e.stopPropagation();\n    }\n  };\n  return jsx(\"button\", {\n    type: \"button\",\n    class: classnames('bio-properties-panel-feel-icon', active ? 'active' : null, feel === 'required' ? 'required' : 'optional'),\n    onClick: handleClick,\n    disabled: feel === 'required' || disabled,\n    title: feel === 'required' ? feelRequiredLabel : feelOptionalLabel,\n    children: jsx(FeelIcon$1, {})\n  });\n}\n\n/**\n * @param {KeyboardEvent} event\n * @return {boolean}\n */\nfunction isCmd(event) {\n  // ensure we don't react to AltGr\n  // (mapped to CTRL + ALT)\n  if (event.altKey) {\n    return false;\n  }\n  return event.ctrlKey || event.metaKey;\n}\nfunction isCmdWithChar(event) {\n  return isCmd(event) && event.key.length === 1 && /^[a-zA-Z]$/.test(event.key);\n}\n\nfunction ToggleSwitch(props) {\n  const {\n    id,\n    label,\n    onInput,\n    value,\n    switcherLabel,\n    inline,\n    onFocus,\n    onBlur,\n    inputRef,\n    tooltip\n  } = props;\n  const [localValue, setLocalValue] = useState(value);\n  const handleInputCallback = async () => {\n    onInput(!value);\n  };\n  const handleInput = e => {\n    handleInputCallback();\n    setLocalValue(e.target.value);\n  };\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-toggle-switch', {\n      inline\n    }),\n    children: [jsx(\"label\", {\n      class: \"bio-properties-panel-label\",\n      for: prefixId$7(id),\n      children: jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      })\n    }), jsxs(\"div\", {\n      class: \"bio-properties-panel-field-wrapper\",\n      children: [jsxs(\"label\", {\n        class: \"bio-properties-panel-toggle-switch__switcher\",\n        children: [jsx(\"input\", {\n          ref: inputRef,\n          id: prefixId$7(id),\n          class: \"bio-properties-panel-input\",\n          type: \"checkbox\",\n          onFocus: onFocus,\n          onBlur: onBlur,\n          name: id,\n          onInput: handleInput,\n          checked: !!localValue\n        }), jsx(\"span\", {\n          class: \"bio-properties-panel-toggle-switch__slider\"\n        })]\n      }), switcherLabel && jsx(\"p\", {\n        class: \"bio-properties-panel-toggle-switch__label\",\n        children: switcherLabel\n      })]\n    })]\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {String} props.switcherLabel\n * @param {Boolean} props.inline\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n */\nfunction ToggleSwitchEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    label,\n    switcherLabel,\n    inline,\n    getValue,\n    setValue,\n    onFocus,\n    onBlur,\n    tooltip\n  } = props;\n  const value = getValue(element);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\",\n    \"data-entry-id\": id,\n    children: [jsx(ToggleSwitch, {\n      id: id,\n      label: label,\n      value: value,\n      onInput: setValue,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      switcherLabel: switcherLabel,\n      inline: inline,\n      tooltip: tooltip,\n      element: element\n    }, element), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction isEdited$7(node) {\n  return node && !!node.checked;\n}\n\n// helpers /////////////////\n\nfunction prefixId$7(id) {\n  return `bio-properties-panel-${id}`;\n}\n\nfunction NumberField(props) {\n  const {\n    debounce,\n    disabled,\n    displayLabel = true,\n    id,\n    inputRef,\n    label,\n    max,\n    min,\n    onInput,\n    step,\n    value = '',\n    onFocus,\n    onBlur,\n    tooltip\n  } = props;\n  const [localValue, setLocalValue] = useState(value);\n  const handleInputCallback = useMemo(() => {\n    return debounce(target => {\n      if (target.validity.valid) {\n        onInput(target.value ? parseFloat(target.value) : undefined);\n      }\n    });\n  }, [onInput, debounce]);\n  const handleInput = e => {\n    handleInputCallback(e.target);\n    setLocalValue(e.target.value);\n  };\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-numberfield\",\n    children: [displayLabel && jsx(\"label\", {\n      for: prefixId$6(id),\n      class: \"bio-properties-panel-label\",\n      children: jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      })\n    }), jsx(\"input\", {\n      id: prefixId$6(id),\n      ref: inputRef,\n      type: \"number\",\n      name: id,\n      spellCheck: \"false\",\n      autoComplete: \"off\",\n      disabled: disabled,\n      class: \"bio-properties-panel-input\",\n      max: max,\n      min: min,\n      onInput: handleInput,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      step: step,\n      value: localValue\n    })]\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Boolean} props.debounce\n * @param {String} props.description\n * @param {Boolean} props.disabled\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {String} props.label\n * @param {String} props.max\n * @param {String} props.min\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {String} props.step\n * @param {Function} props.validate\n */\nfunction NumberFieldEntry(props) {\n  const {\n    debounce,\n    description,\n    disabled,\n    element,\n    getValue,\n    id,\n    label,\n    max,\n    min,\n    setValue,\n    step,\n    onFocus,\n    onBlur,\n    validate,\n    tooltip\n  } = props;\n  const globalError = useError(id);\n  const [localError, setLocalError] = useState(null);\n  let value = getValue(element);\n  useEffect(() => {\n    if (isFunction(validate)) {\n      const newValidationError = validate(value) || null;\n      setLocalError(newValidationError);\n    }\n  }, [value, validate]);\n  const onInput = newValue => {\n    let newValidationError = null;\n    if (isFunction(validate)) {\n      newValidationError = validate(newValue) || null;\n    }\n    setValue(newValue, newValidationError);\n    setLocalError(newValidationError);\n  };\n  const error = globalError || localError;\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-entry', error ? 'has-error' : ''),\n    \"data-entry-id\": id,\n    children: [jsx(NumberField, {\n      debounce: debounce,\n      disabled: disabled,\n      id: id,\n      label: label,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      onInput: onInput,\n      max: max,\n      min: min,\n      step: step,\n      value: value,\n      tooltip: tooltip\n    }, element), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction isEdited$6(node) {\n  return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$6(id) {\n  return `bio-properties-panel-${id}`;\n}\n\nconst noop$2 = () => {};\n\n/**\n * @typedef {'required'|'optional'|'optional-default-enabled'|'static'} FeelType\n */\n\n/**\n * @param {Object} props\n * @param {Boolean} props.debounce\n * @param {String} props.id\n * @param {Object} props.element\n * @param {String} props.label\n * @param {String} props.hostLanguage\n * @param {Function} props.onInput\n * @param {Function} props.onBlur\n * @param {Function} props.onError\n * @param {FeelType} [props.feel]\n * @param {String} props.value\n * @param {Boolean} [props.singleLine]\n * @param {Function} props.tooltipContainer\n * @param {Function | import('preact').Component} props.OptionalComponent\n * @param {Boolean} props.disabled\n * @param {Array} props.variables\n * @param {string} [props.placeholder]\n * @param {string | import('preact').Component} props.tooltip\n */\nfunction FeelTextfield(props) {\n  const {\n    debounce,\n    id,\n    element,\n    label,\n    hostLanguage,\n    onInput: commitValue,\n    onBlur,\n    onError,\n    placeholder,\n    feel,\n    value = '',\n    disabled = false,\n    variables,\n    singleLine,\n    tooltipContainer,\n    OptionalComponent = OptionalFeelInput,\n    tooltip\n  } = props;\n  const [localValue, setLocalValue] = useState(getInitialFeelLocalValue(feel, value));\n  const editorRef = useShowEntryEvent(id);\n  const containerRef = useRef();\n  const onInput = useCallback(newValue => {\n    // we don't commit empty FEEL expressions,\n    // but instead serialize them as <undefined>\n    const newModelValue = newValue === '' || newValue === '=' ? undefined : newValue;\n    commitValue(newModelValue);\n  }, [commitValue]);\n  const feelActive = isFeelActive(feel, localValue);\n  const feelOnlyValue = getFeelValue(localValue);\n  const feelLanguageContext = useContext(FeelLanguageContext);\n  const [focus, _setFocus] = useState(undefined);\n  const {\n    eventBus\n  } = useContext(EventContext);\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const setFocus = (offset = 0) => {\n    const hasFocus = containerRef.current.contains(document.activeElement);\n\n    // Keep caret position if it is already focused, otherwise focus at the end\n    const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n    _setFocus(position + offset);\n  };\n\n  /**\n   * @type { import('min-dash').DebouncedFunction }\n   */\n  const handleInput = useDebounce(onInput, debounce);\n  const handleFeelToggle = useStaticCallback(() => {\n    if (feel === 'required') {\n      return;\n    }\n    if (!feelActive) {\n      setLocalValue('=' + localValue);\n      handleInput('=' + localValue);\n    } else {\n      setLocalValue(feelOnlyValue);\n      handleInput(feelOnlyValue);\n    }\n  });\n  const handleLocalInput = (newValue, useDebounce = true) => {\n    if (feelActive) {\n      newValue = '=' + newValue;\n    }\n    if (newValue === localValue) {\n      return;\n    }\n    setLocalValue(newValue);\n    if (useDebounce) {\n      handleInput(newValue);\n    } else {\n      onInput(newValue);\n    }\n    if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n      // focus is behind `=` sign that will be removed\n      setFocus(-1);\n    }\n  };\n  const handleOnBlur = e => {\n    handleInput.cancel?.();\n    if (e.target.type === 'checkbox') {\n      onInput(e.target.checked);\n    } else {\n      const trimmedValue = e.target.value.trim();\n      handleLocalInput(trimmedValue, false);\n    }\n    if (onBlur) {\n      onBlur(e);\n    }\n  };\n  const handleOnKeyDown = e => {\n    if (isCmdWithChar(e)) {\n      handleInput.flush?.();\n    }\n  };\n  const handleLint = useStaticCallback((lint = []) => {\n    const syntaxError = lint.some(report => report.type === 'Syntax Error');\n    if (syntaxError) {\n      onError('Unparsable FEEL expression.');\n    } else {\n      onError(undefined);\n    }\n  });\n  const handleOpenPopup = (type = 'feel') => {\n    const isOpen = eventBus.fire('propertiesPanel.openPopup', {\n      element,\n      entryId: id,\n      hostLanguage,\n      label,\n      onInput: handleLocalInput,\n      singleLine,\n      sourceElement: editorRef.current,\n      tooltipContainer,\n      type,\n      value: feelOnlyValue,\n      variables,\n      feelLanguageContext\n    });\n    if (isOpen) {\n      eventBus.once('propertiesPanelPopup.close', () => {\n        setIsPopupOpen(false);\n      });\n    }\n    setIsPopupOpen(isOpen === true);\n  };\n  useEffect(() => {\n    if (typeof focus !== 'undefined') {\n      editorRef.current.focus(focus);\n      _setFocus(undefined);\n    }\n  }, [focus]);\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n\n    // External value change removed content => keep FEEL configuration\n    if (!value) {\n      setLocalValue(feelActive ? '=' : '');\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  useEffect(() => {\n    return () => {\n      eventBus.fire('propertiesPanel.closePopup');\n    };\n  }, []);\n\n  // copy-paste integration\n  useEffect(() => {\n    const copyHandler = event => {\n      if (!feelActive) {\n        return;\n      }\n      event.clipboardData.setData('application/FEEL', event.clipboardData.getData('text'));\n    };\n    const pasteHandler = event => {\n      if (feelActive || isPopupOpen) {\n        return;\n      }\n      const feelData = event.clipboardData.getData('application/FEEL');\n      if (feelData) {\n        setTimeout(() => {\n          handleFeelToggle();\n          setFocus();\n        });\n        return;\n      }\n      const input = event.target;\n      const isFieldEmpty = !input.value;\n      const isAllSelected = input.selectionStart === 0 && input.selectionEnd === input.value.length;\n      if (isFieldEmpty || isAllSelected) {\n        const textData = event.clipboardData.getData('text');\n        const trimmedValue = textData.trim();\n        setLocalValue(trimmedValue);\n        handleInput(trimmedValue);\n        if (!feelActive && isString(trimmedValue) && trimmedValue.startsWith('=')) {\n          setFocus(trimmedValue.length - 1);\n        }\n        event.preventDefault();\n      }\n    };\n    containerRef.current.addEventListener('copy', copyHandler);\n    containerRef.current.addEventListener('cut', copyHandler);\n    containerRef.current.addEventListener('paste', pasteHandler);\n    return () => {\n      containerRef.current.removeEventListener('copy', copyHandler);\n      containerRef.current.removeEventListener('cut', copyHandler);\n      containerRef.current.removeEventListener('paste', pasteHandler);\n    };\n  }, [containerRef, feelActive, handleFeelToggle, setFocus]);\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-feel-entry', {\n      'feel-active': feelActive\n    }),\n    children: [jsxs(\"label\", {\n      for: prefixId$5(id),\n      class: \"bio-properties-panel-label\",\n      onClick: () => setFocus(),\n      children: [jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      }), jsx(FeelIcon, {\n        label: label,\n        feel: feel,\n        onClick: handleFeelToggle,\n        active: feelActive\n      })]\n    }), jsxs(\"div\", {\n      class: \"bio-properties-panel-feel-container\",\n      ref: containerRef,\n      children: [jsx(FeelIndicator, {\n        active: feelActive,\n        disabled: !isFeelOptional(feel) || disabled,\n        onClick: handleFeelToggle\n      }), feelActive ? jsx(FeelEditor, {\n        name: id,\n        onInput: handleLocalInput,\n        onKeyDown: handleOnKeyDown,\n        contentAttributes: {\n          'id': prefixId$5(id),\n          'aria-label': label\n        },\n        disabled: disabled,\n        popupOpen: isPopupOpen,\n        onFeelToggle: () => {\n          handleFeelToggle();\n          setFocus(true);\n        },\n        onLint: handleLint,\n        onOpenPopup: handleOpenPopup,\n        placeholder: placeholder,\n        value: feelOnlyValue,\n        variables: variables,\n        feelLanguageContext: feelLanguageContext,\n        ref: editorRef,\n        tooltipContainer: tooltipContainer\n      }) : jsx(OptionalComponent, {\n        ...props,\n        popupOpen: isPopupOpen,\n        onInput: handleLocalInput,\n        onKeyDown: handleOnKeyDown,\n        onBlur: handleOnBlur,\n        contentAttributes: {\n          'id': prefixId$5(id),\n          'aria-label': label\n        },\n        value: localValue,\n        ref: editorRef,\n        onOpenPopup: handleOpenPopup,\n        containerRef: containerRef\n      })]\n    })]\n  });\n}\nconst OptionalFeelInput = forwardRef((props, ref) => {\n  const {\n    id,\n    disabled,\n    onInput,\n    onKeyDown,\n    value,\n    onFocus,\n    onBlur,\n    placeholder\n  } = props;\n  const inputRef = useRef();\n\n  // To be consistent with the FEEL editor, set focus at start of input\n  // this ensures clean editing experience when switching with the keyboard\n  ref.current = {\n    focus: position => {\n      const input = inputRef.current;\n      if (!input) {\n        return;\n      }\n      input.focus();\n      if (typeof position === 'number') {\n        if (position > value.length) {\n          position = value.length;\n        }\n        input.setSelectionRange(position, position);\n      }\n    }\n  };\n  return jsx(\"input\", {\n    id: prefixId$5(id),\n    type: \"text\",\n    ref: inputRef,\n    name: id,\n    spellCheck: \"false\",\n    autoComplete: \"off\",\n    disabled: disabled,\n    class: \"bio-properties-panel-input\",\n    onInput: e => onInput(e.target.value),\n    onFocus: onFocus,\n    onKeyDown: onKeyDown,\n    onBlur: onBlur,\n    placeholder: placeholder,\n    value: value || ''\n  });\n});\nconst OptionalFeelNumberField = forwardRef((props, ref) => {\n  const {\n    id,\n    debounce,\n    disabled,\n    onInput,\n    value,\n    min,\n    max,\n    step,\n    onFocus,\n    onBlur\n  } = props;\n  const inputRef = useRef();\n\n  // To be consistent with the FEEL editor, set focus at start of input\n  // this ensures clean editing experience when switching with the keyboard\n  ref.current = {\n    focus: position => {\n      const input = inputRef.current;\n      if (!input) {\n        return;\n      }\n      input.focus();\n      if (typeof position === 'number' && position !== Infinity) {\n        if (position > value.length) {\n          position = value.length;\n        }\n        input.setSelectionRange(position, position);\n      }\n    }\n  };\n  return jsx(NumberField, {\n    id: id,\n    debounce: debounce,\n    disabled: disabled,\n    displayLabel: false,\n    inputRef: inputRef,\n    max: max,\n    min: min,\n    onInput: onInput,\n    step: step,\n    value: value,\n    onFocus: onFocus,\n    onBlur: onBlur\n  });\n});\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n  const {\n    id,\n    disabled,\n    onInput,\n    value,\n    onFocus,\n    onBlur,\n    placeholder\n  } = props;\n  const inputRef = useRef();\n\n  // To be consistent with the FEEL editor, set focus at start of input\n  // this ensures clean editing experience when switching with the keyboard\n  ref.current = {\n    focus: () => {\n      const input = inputRef.current;\n      if (!input) {\n        return;\n      }\n      input.focus();\n      input.setSelectionRange(0, 0);\n    }\n  };\n  return jsx(\"textarea\", {\n    id: prefixId$5(id),\n    type: \"text\",\n    ref: inputRef,\n    name: id,\n    spellCheck: \"false\",\n    autoComplete: \"off\",\n    disabled: disabled,\n    class: \"bio-properties-panel-input\",\n    onInput: e => onInput(e.target.value),\n    onFocus: onFocus,\n    onBlur: onBlur,\n    placeholder: placeholder,\n    value: value || '',\n    \"data-gramm\": \"false\"\n  });\n});\nconst OptionalFeelToggleSwitch = forwardRef((props, ref) => {\n  const {\n    id,\n    onInput,\n    value,\n    onFocus,\n    onBlur,\n    switcherLabel\n  } = props;\n  const inputRef = useRef();\n\n  // To be consistent with the FEEL editor, set focus at start of input\n  // this ensures clean editing experience when switching with the keyboard\n  ref.current = {\n    focus: () => {\n      const input = inputRef.current;\n      if (!input) {\n        return;\n      }\n      input.focus();\n    }\n  };\n  return jsx(ToggleSwitch, {\n    id: id,\n    value: value,\n    inputRef: inputRef,\n    onInput: onInput,\n    onFocus: onFocus,\n    onBlur: onBlur,\n    switcherLabel: switcherLabel\n  });\n});\nconst OptionalFeelCheckbox = forwardRef((props, ref) => {\n  const {\n    id,\n    disabled,\n    onInput,\n    value,\n    onFocus,\n    onBlur\n  } = props;\n  const inputRef = useRef();\n  const handleChange = ({\n    target\n  }) => {\n    onInput(target.checked);\n  };\n\n  // To be consistent with the FEEL editor, set focus at start of input\n  // this ensures clean editing experience when switching with the keyboard\n  ref.current = {\n    focus: () => {\n      const input = inputRef.current;\n      if (!input) {\n        return;\n      }\n      input.focus();\n    }\n  };\n  return jsx(\"input\", {\n    ref: inputRef,\n    id: prefixId$5(id),\n    name: id,\n    onFocus: onFocus,\n    onBlur: onBlur,\n    type: \"checkbox\",\n    class: \"bio-properties-panel-input\",\n    onChange: handleChange,\n    checked: value,\n    disabled: disabled\n  });\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {FeelType} [props.feel]\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Array} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string} [props.placeholder]\n * @param {string|import('preact').Component} props.tooltip\n */\nfunction FeelEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    debounce,\n    disabled,\n    feel,\n    label,\n    getValue,\n    setValue,\n    tooltipContainer,\n    hostLanguage,\n    singleLine,\n    validate,\n    show = noop$2,\n    example,\n    variables,\n    onFocus,\n    onBlur,\n    placeholder,\n    tooltip\n  } = props;\n  const [validationError, setValidationError] = useState(null);\n  const [localError, setLocalError] = useState(null);\n  let value = getValue(element);\n  useEffect(() => {\n    if (isFunction(validate)) {\n      const newValidationError = validate(value) || null;\n      setValidationError(newValidationError);\n    }\n  }, [value, validate]);\n  const onInput = useStaticCallback(newValue => {\n    const value = getValue(element);\n    let newValidationError = null;\n    if (isFunction(validate)) {\n      newValidationError = validate(newValue) || null;\n    }\n\n    // don't create multiple commandStack entries for the same value\n    if (newValue !== value) {\n      setValue(newValue, newValidationError);\n    }\n    setValidationError(newValidationError);\n  });\n  const onError = useCallback(err => {\n    setLocalError(err);\n  }, []);\n  const temporaryError = useError(id);\n  const error = temporaryError || localError || validationError;\n  return jsxs(\"div\", {\n    class: classnames(props.class, 'bio-properties-panel-entry', error ? 'has-error' : ''),\n    \"data-entry-id\": id,\n    children: [createElement$1(FeelTextfield, {\n      ...props,\n      debounce: debounce,\n      disabled: disabled,\n      feel: feel,\n      id: id,\n      key: element,\n      label: label,\n      onInput: onInput,\n      onError: onError,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      placeholder: placeholder,\n      example: example,\n      hostLanguage: hostLanguage,\n      singleLine: singleLine,\n      show: show,\n      value: value,\n      variables: variables,\n      tooltipContainer: tooltipContainer,\n      OptionalComponent: props.OptionalComponent,\n      tooltip: tooltip\n    }), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.max\n * @param {String} props.min\n * @param {String} props.step\n * @param {FeelType} [props.feel]\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Array} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nfunction FeelNumberEntry(props) {\n  return jsx(FeelEntry, {\n    class: \"bio-properties-panel-feel-number\",\n    OptionalComponent: OptionalFeelNumberField,\n    ...props\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {FeelType} [props.feel]\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Array} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string} [props.placeholder]\n */\nfunction FeelTextAreaEntry(props) {\n  return jsx(FeelEntry, {\n    class: \"bio-properties-panel-feel-textarea\",\n    OptionalComponent: OptionalFeelTextArea,\n    ...props\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {FeelType} [props.feel]\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Array} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nfunction FeelToggleSwitchEntry(props) {\n  return jsx(FeelEntry, {\n    class: \"bio-properties-panel-feel-toggle-switch\",\n    OptionalComponent: OptionalFeelToggleSwitch,\n    ...props\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {FeelType} [props.feel]\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Array} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nfunction FeelCheckboxEntry(props) {\n  return jsx(FeelEntry, {\n    class: \"bio-properties-panel-feel-checkbox\",\n    OptionalComponent: OptionalFeelCheckbox,\n    ...props\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.hostLanguage\n * @param {Boolean} props.singleLine\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {FeelType} [props.feel]\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Array} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nfunction FeelTemplatingEntry(props) {\n  return jsx(FeelEntry, {\n    class: \"bio-properties-panel-feel-templating\",\n    OptionalComponent: TemplatingEditor,\n    ...props\n  });\n}\nfunction isEdited$5(node) {\n  if (!node) {\n    return false;\n  }\n  if (node.type === 'checkbox') {\n    return !!node.checked || node.classList.contains('edited');\n  }\n  return !!node.value || node.classList.contains('edited');\n}\n\n// helpers /////////////////\n\nfunction prefixId$5(id) {\n  return `bio-properties-panel-${id}`;\n}\n\n/**\n * Determine if FEEL is optional for the configured {@link FeelType}.\n *\n * @param {FeelType} feelType\n *\n * @return {boolean}\n */\nfunction isFeelOptional(feelType) {\n  return feelType === 'optional' || feelType === 'optional-default-enabled';\n}\n\n/**\n * Determine if FEEL editing is currently active.\n *\n * @param {FeelType} feelType\n * @param {string} localValue\n *\n * @return {boolean}\n */\nfunction isFeelActive(feelType, localValue) {\n  if (feelType === 'required') {\n    return true;\n  }\n  if (isString(localValue)) {\n    if (localValue.startsWith('=')) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * @template T\n * @param {T} value\n *\n * @return {string|T}\n */\nfunction getFeelValue(value) {\n  if (isString(value) && value.startsWith('=')) {\n    return value.substring(1);\n  }\n  return value;\n}\n\n/**\n * Initialize local FEEL value.\n *\n * `optional-default-enabled` starts in FEEL mode if no value or empty string is provided.\n *\n * @template T\n * @param {FeelType} feelType\n * @param {T} value\n *\n * @return {string|T}\n */\nfunction getInitialFeelLocalValue(feelType, value) {\n  if (feelType === 'optional-default-enabled' && (value === undefined || value === '')) {\n    return '=';\n  }\n  return value;\n}\n\nconst noop$1 = () => {};\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n */\nfunction TemplatingEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    debounce,\n    disabled,\n    label,\n    getValue,\n    setValue,\n    tooltipContainer,\n    validate,\n    show = noop$1\n  } = props;\n  const [validationError, setValidationError] = useState(null);\n  const [localError, setLocalError] = useState(null);\n  let value = getValue(element);\n  useEffect(() => {\n    if (isFunction(validate)) {\n      const newValidationError = validate(value) || null;\n      setValidationError(newValidationError);\n    }\n  }, [value, validate]);\n  const onInput = useStaticCallback(newValue => {\n    let newValidationError = null;\n    if (isFunction(validate)) {\n      newValidationError = validate(newValue) || null;\n    }\n\n    // don't create multiple commandStack entries for the same value\n    if (newValue !== value) {\n      setValue(newValue, newValidationError);\n    }\n    setValidationError(newValidationError);\n  });\n  const onError = useCallback(err => {\n    setLocalError(err);\n  }, []);\n  const temporaryError = useError(id);\n  const error = localError || temporaryError || validationError;\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-entry', error ? 'has-error' : ''),\n    \"data-entry-id\": id,\n    children: [jsx(Templating, {\n      debounce: debounce,\n      disabled: disabled,\n      id: id,\n      label: label,\n      onInput: onInput,\n      onError: onError,\n      show: show,\n      value: value,\n      tooltipContainer: tooltipContainer\n    }, element), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction Templating(props) {\n  const {\n    debounce,\n    id,\n    label,\n    onInput,\n    onError,\n    value = '',\n    disabled = false,\n    tooltipContainer\n  } = props;\n  const [localValue, setLocalValue] = useState(value);\n  const editorRef = useShowEntryEvent(id);\n  const containerRef = useRef();\n  const [focus, _setFocus] = useState(undefined);\n  const setFocus = (offset = 0) => {\n    const hasFocus = containerRef.current.contains(document.activeElement);\n\n    // Keep caret position if it is already focused, otherwise focus at the end\n    const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n    _setFocus(position + offset);\n  };\n  const handleInputCallback = useMemo(() => {\n    return debounce(newValue => onInput(newValue.length ? newValue : undefined));\n  }, [onInput, debounce]);\n  const handleInput = newValue => {\n    handleInputCallback(newValue);\n    setLocalValue(newValue);\n  };\n  const handleLint = useStaticCallback(lint => {\n    const errors = lint && lint.length && lint.filter(e => e.severity === 'error') || [];\n    if (!errors.length) {\n      onError(undefined);\n      return;\n    }\n    const error = lint[0];\n    const message = `${error.source}: ${error.message}`;\n    onError(message);\n  });\n  useEffect(() => {\n    if (typeof focus !== 'undefined') {\n      editorRef.current.focus(focus);\n      _setFocus(undefined);\n    }\n  }, [focus]);\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value ? value : '');\n  }, [value]);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-feelers\",\n    children: [jsx(\"label\", {\n      id: prefixIdLabel(id),\n      class: \"bio-properties-panel-label\",\n      onClick: () => setFocus(),\n      children: label\n    }), jsx(\"div\", {\n      class: \"bio-properties-panel-feelers-input\",\n      ref: containerRef,\n      children: jsx(TemplatingEditor, {\n        name: id,\n        onInput: handleInput,\n        contentAttributes: {\n          'aria-labelledby': prefixIdLabel(id)\n        },\n        disabled: disabled,\n        onLint: handleLint,\n        value: localValue,\n        ref: editorRef,\n        tooltipContainer: tooltipContainer\n      })\n    })]\n  });\n}\nfunction isEdited$4(node) {\n  return node && (!!node.value || node.classList.contains('edited'));\n}\n\n// helpers /////////////////\n\nfunction prefixIdLabel(id) {\n  return `bio-properties-panel-feelers-${id}-label`;\n}\n\n/**\n * Entry for handling lists represented as nested entries.\n *\n * @template Item\n * @param {object} props\n * @param {string} props.id\n * @param {*} props.element\n * @param {Function} props.onAdd\n * @param {import('preact').Component} props.component\n * @param {string} [props.label='<empty>']\n * @param {Function} [props.onRemove]\n * @param {Item[]} [props.items]\n * @param {boolean} [props.open]\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\n * @returns\n */\nfunction List(props) {\n  const {\n    id,\n    element,\n    items = [],\n    component,\n    label = '<empty>',\n    open: shouldOpen,\n    onAdd,\n    onRemove,\n    autoFocusEntry,\n    ...restProps\n  } = props;\n  const entryRef = useRef(null);\n  const [open, setOpen] = useState(!!shouldOpen);\n  const [sticky, setSticky] = useState(false);\n  const hasItems = !!items.length;\n  const toggleOpen = () => hasItems && setOpen(!open);\n  const elementChanged = usePrevious(element) !== element;\n  const newItems = useNewItems(items, elementChanged);\n  useEffect(() => {\n    if (open && !hasItems) {\n      setOpen(false);\n    }\n  }, [open, hasItems]);\n\n  /**\n   * @param {MouseEvent} event\n   */\n  function addItem(event) {\n    event.stopPropagation();\n    onAdd();\n    if (!open) {\n      setOpen(true);\n    }\n  }\n\n  // set css class when entry is sticky to top\n  useStickyIntersectionObserver(entryRef, 'div.bio-properties-panel-scroll-container', setSticky);\n  return jsxs(\"div\", {\n    \"data-entry-id\": id,\n    class: classnames('bio-properties-panel-entry', 'bio-properties-panel-list-entry', hasItems ? '' : 'empty', open ? 'open' : ''),\n    ref: entryRef,\n    children: [jsxs(\"div\", {\n      class: classnames('bio-properties-panel-list-entry-header', sticky && open ? 'sticky' : ''),\n      onClick: toggleOpen,\n      children: [jsx(\"div\", {\n        class: classnames('bio-properties-panel-list-entry-header-title', open && 'open'),\n        children: label\n      }), jsxs(\"div\", {\n        class: \"bio-properties-panel-list-entry-header-buttons\",\n        children: [jsxs(\"button\", {\n          type: \"button\",\n          title: \"Create new list item\",\n          onClick: addItem,\n          class: \"bio-properties-panel-add-entry\",\n          children: [jsx(CreateIcon, {}), !hasItems ? jsx(\"span\", {\n            class: \"bio-properties-panel-add-entry-label\",\n            children: \"Create\"\n          }) : null]\n        }), hasItems && jsx(\"div\", {\n          title: `List contains ${items.length} item${items.length != 1 ? 's' : ''}`,\n          class: \"bio-properties-panel-list-badge\",\n          children: items.length\n        }), hasItems && jsx(\"button\", {\n          type: \"button\",\n          title: \"Toggle list item\",\n          class: \"bio-properties-panel-arrow\",\n          children: jsx(ArrowIcon, {\n            class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right'\n          })\n        })]\n      })]\n    }), hasItems && jsx(ItemsList, {\n      ...restProps,\n      autoFocusEntry: autoFocusEntry,\n      component: component,\n      element: element,\n      id: id,\n      items: items,\n      newItems: newItems,\n      onRemove: onRemove,\n      open: open\n    })]\n  });\n}\nfunction ItemsList(props) {\n  const {\n    autoFocusEntry,\n    component: Component,\n    element,\n    id,\n    items,\n    newItems,\n    onRemove,\n    open,\n    ...restProps\n  } = props;\n  const getKey = useKeyFactory();\n  const newItem = newItems[0];\n  useEffect(() => {\n    if (newItem && autoFocusEntry) {\n      // (0) select the parent entry (containing all list items)\n      const entry = query(`[data-entry-id=\"${id}\"]`);\n\n      // (1) select the first input or a custom element to be focussed\n      const selector = typeof autoFocusEntry === 'boolean' ? '.bio-properties-panel-input' : autoFocusEntry;\n      const focusableInput = query(selector, entry);\n\n      // (2) set focus\n      if (focusableInput) {\n        if (isFunction(focusableInput.select)) {\n          focusableInput.select();\n        } else if (isFunction(focusableInput.focus)) {\n          focusableInput.focus();\n        }\n      }\n    }\n  }, [newItem, autoFocusEntry, id]);\n  return jsx(\"ol\", {\n    class: classnames('bio-properties-panel-list-entry-items', open ? 'open' : ''),\n    children: items.map((item, index) => {\n      const key = getKey(item);\n      return jsxs(\"li\", {\n        class: \"bio-properties-panel-list-entry-item\",\n        children: [jsx(Component, {\n          ...restProps,\n          element: element,\n          id: id,\n          index: index,\n          item: item,\n          open: item === newItem\n        }), onRemove && jsx(\"button\", {\n          type: \"button\",\n          title: \"Delete item\",\n          class: \"bio-properties-panel-remove-entry bio-properties-panel-remove-list-entry\",\n          onClick: () => onRemove && onRemove(item),\n          children: jsx(DeleteIcon, {})\n        })]\n      }, key);\n    })\n  });\n}\nfunction useNewItems(items = [], shouldReset) {\n  const previousItems = usePrevious(items.slice()) || [];\n  if (shouldReset) {\n    return [];\n  }\n  return previousItems ? items.filter(item => !previousItems.includes(item)) : [];\n}\n\n/**\n * @typedef { { value: string, label: string, disabled: boolean, children: { value: string, label: string, disabled: boolean } } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n  const {\n    id,\n    label,\n    onChange,\n    options = [],\n    value = '',\n    disabled,\n    onFocus,\n    onBlur,\n    tooltip\n  } = props;\n  const ref = useShowEntryEvent(id);\n  const [localValue, setLocalValue] = useState(value);\n  const handleChangeCallback = ({\n    target\n  }) => {\n    onChange(target.value);\n  };\n  const handleChange = e => {\n    handleChangeCallback(e);\n    setLocalValue(e.target.value);\n  };\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-select\",\n    children: [jsx(\"label\", {\n      for: prefixId$4(id),\n      class: \"bio-properties-panel-label\",\n      children: jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      })\n    }), jsx(\"select\", {\n      ref: ref,\n      id: prefixId$4(id),\n      name: id,\n      class: \"bio-properties-panel-input\",\n      onInput: handleChange,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      value: localValue,\n      disabled: disabled,\n      children: options.map((option, idx) => {\n        if (option.children) {\n          return jsx(\"optgroup\", {\n            label: option.label,\n            children: option.children.map((child, idx) => jsx(\"option\", {\n              value: child.value,\n              disabled: child.disabled,\n              children: child.label\n            }, idx))\n          }, idx);\n        }\n        return jsx(\"option\", {\n          value: option.value,\n          disabled: option.disabled,\n          children: option.label\n        }, idx);\n      })\n    })]\n  });\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} [props.description]\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Function} props.getOptions\n * @param {boolean} [props.disabled]\n * @param {Function} [props.validate]\n * @param {string|import('preact').Component} props.tooltip\n */\nfunction SelectEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    label,\n    getValue,\n    setValue,\n    getOptions,\n    disabled,\n    onFocus,\n    onBlur,\n    validate,\n    tooltip\n  } = props;\n  const options = getOptions(element);\n  const globalError = useError(id);\n  const [localError, setLocalError] = useState(null);\n  let value = getValue(element);\n  useEffect(() => {\n    if (isFunction(validate)) {\n      const newValidationError = validate(value) || null;\n      setLocalError(newValidationError);\n    }\n  }, [value, validate]);\n  const onChange = newValue => {\n    let newValidationError = null;\n    if (isFunction(validate)) {\n      newValidationError = validate(newValue) || null;\n    }\n    setValue(newValue, newValidationError);\n    setLocalError(newValidationError);\n  };\n  const error = globalError || localError;\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-entry', error ? 'has-error' : ''),\n    \"data-entry-id\": id,\n    children: [jsx(Select, {\n      id: id,\n      label: label,\n      value: value,\n      onChange: onChange,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      options: options,\n      disabled: disabled,\n      tooltip: tooltip,\n      element: element\n    }, element), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction isEdited$3(node) {\n  return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$4(id) {\n  return `bio-properties-panel-${id}`;\n}\n\n/**\n * @param {Object} props\n * @param {Function} props.debounce\n * @param {Boolean} [props.disabled]\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {Function} [props.onBlur]\n * @param {Function} [props.onFocus]\n * @param {Function} props.setValue\n */\nfunction Simple(props) {\n  const {\n    debounce,\n    disabled,\n    element,\n    getValue,\n    id,\n    onBlur,\n    onFocus,\n    setValue\n  } = props;\n  const value = getValue(element);\n  const [localValue, setLocalValue] = useState(value);\n  const handleInputCallback = useMemo(() => {\n    return debounce(target => setValue(target.value.length ? target.value : undefined));\n  }, [setValue, debounce]);\n  const handleInput = e => {\n    handleInputCallback(e.target);\n    setLocalValue(e.target.value);\n  };\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  return jsx(\"div\", {\n    class: \"bio-properties-panel-simple\",\n    children: jsx(\"input\", {\n      id: prefixId$3(id),\n      type: \"text\",\n      name: id,\n      spellCheck: \"false\",\n      autoComplete: \"off\",\n      disabled: disabled,\n      class: \"bio-properties-panel-input\",\n      onInput: handleInput,\n      \"aria-label\": localValue || '<empty>',\n      onFocus: onFocus,\n      onBlur: onBlur,\n      value: localValue\n    }, element)\n  });\n}\nfunction isEdited$2(node) {\n  return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$3(id) {\n  return `bio-properties-panel-${id}`;\n}\n\nfunction resizeToContents(element) {\n  element.style.height = 'auto';\n\n  // a 2px pixel offset is required to prevent scrollbar from\n  // appearing on OS with a full length scroll bar (Windows/Linux)\n  element.style.height = `${element.scrollHeight + 2}px`;\n}\nfunction TextArea(props) {\n  const {\n    id,\n    label,\n    debounce,\n    onInput: commitValue,\n    value = '',\n    disabled,\n    monospace,\n    onFocus,\n    onBlur,\n    onPaste,\n    autoResize = true,\n    placeholder,\n    rows = autoResize ? 1 : 2,\n    tooltip\n  } = props;\n  const [localValue, setLocalValue] = useState(value);\n  const ref = useShowEntryEvent(id);\n  const onInput = useCallback(newValue => {\n    const newModelValue = newValue === '' ? undefined : newValue;\n    commitValue(newModelValue);\n  }, [commitValue]);\n  const visible = useElementVisible(ref.current);\n\n  /**\n   * @type { import('min-dash').DebouncedFunction }\n   */\n  const handleInput = useDebounce(onInput, debounce);\n  const handleLocalInput = e => {\n    autoResize && resizeToContents(e.target);\n    if (e.target.value === localValue) {\n      return;\n    }\n    setLocalValue(e.target.value);\n    handleInput(e.target.value);\n  };\n  const handleOnBlur = e => {\n    const trimmedValue = e.target.value.trim();\n\n    // trim and commit on blur\n    handleInput.cancel?.();\n    onInput(trimmedValue);\n    setLocalValue(trimmedValue);\n    if (onBlur) {\n      onBlur(e);\n    }\n  };\n  const handleOnPaste = e => {\n    const input = e.target;\n    const isFieldEmpty = !input.value;\n    const isAllSelected = input.selectionStart === 0 && input.selectionEnd === input.value.length;\n\n    // Trim and handle paste if field is empty or all content is selected\n    if (isFieldEmpty || isAllSelected) {\n      const trimmedValue = e.clipboardData.getData('text').trim();\n      setLocalValue(trimmedValue);\n      handleInput(trimmedValue);\n      if (onPaste) {\n        onPaste(e);\n      }\n      e.preventDefault();\n      return;\n    }\n\n    // Allow default paste behavior for normal text editing\n    if (onPaste) {\n      onPaste(e);\n    }\n  };\n  const handleOnKeyDown = e => {\n    if (isCmdWithChar(e)) {\n      handleInput.flush?.();\n    }\n  };\n  useLayoutEffect(() => {\n    autoResize && resizeToContents(ref.current);\n  }, []);\n  useLayoutEffect(() => {\n    visible && autoResize && resizeToContents(ref.current);\n  }, [visible]);\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-textarea\",\n    children: [jsx(\"label\", {\n      for: prefixId$2(id),\n      class: \"bio-properties-panel-label\",\n      children: jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      })\n    }), jsx(\"textarea\", {\n      ref: ref,\n      id: prefixId$2(id),\n      name: id,\n      spellCheck: \"false\",\n      class: classnames('bio-properties-panel-input', monospace ? 'bio-properties-panel-input-monospace' : '', autoResize ? 'auto-resize' : ''),\n      onInput: handleLocalInput,\n      onFocus: onFocus,\n      onKeyDown: handleOnKeyDown,\n      onBlur: handleOnBlur,\n      onPaste: handleOnPaste,\n      placeholder: placeholder,\n      rows: rows,\n      value: localValue,\n      disabled: disabled,\n      \"data-gramm\": \"false\"\n    })]\n  });\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} props.description\n * @param {boolean} props.debounce\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Function} props.onPaste\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {Function} [props.validate]\n * @param {boolean} [props.disabled]\n */\nfunction TextAreaEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    debounce,\n    label,\n    getValue,\n    setValue,\n    rows,\n    monospace,\n    disabled,\n    validate,\n    onFocus,\n    onBlur,\n    onPaste,\n    placeholder,\n    autoResize,\n    tooltip\n  } = props;\n  const globalError = useError(id);\n  const [localError, setLocalError] = useState(null);\n  let value = getValue(element);\n  useEffect(() => {\n    if (isFunction(validate)) {\n      const newValidationError = validate(value) || null;\n      setLocalError(newValidationError);\n    }\n  }, [value, validate]);\n  const onInput = useStaticCallback(newValue => {\n    const value = getValue(element);\n    let newValidationError = null;\n    if (isFunction(validate)) {\n      newValidationError = validate(newValue) || null;\n    }\n    if (newValue !== value) {\n      setValue(newValue, newValidationError);\n    }\n    setLocalError(newValidationError);\n  });\n  const error = globalError || localError;\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-entry', error ? 'has-error' : ''),\n    \"data-entry-id\": id,\n    children: [jsx(TextArea, {\n      id: id,\n      label: label,\n      value: value,\n      onInput: onInput,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      onPaste: onPaste,\n      rows: rows,\n      debounce: debounce,\n      monospace: monospace,\n      disabled: disabled,\n      placeholder: placeholder,\n      autoResize: autoResize,\n      tooltip: tooltip,\n      element: element\n    }, element), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction isEdited$1(node) {\n  return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$2(id) {\n  return `bio-properties-panel-${id}`;\n}\n\nfunction Textfield(props) {\n  const {\n    debounce,\n    disabled = false,\n    id,\n    label,\n    onInput: commitValue,\n    onFocus,\n    onBlur,\n    onPaste,\n    placeholder,\n    value = '',\n    tooltip\n  } = props;\n  const [localValue, setLocalValue] = useState(value || '');\n  const ref = useShowEntryEvent(id);\n  const onInput = useCallback(newValue => {\n    const newModelValue = newValue === '' ? undefined : newValue;\n    commitValue(newModelValue);\n  }, [commitValue]);\n\n  /**\n   * @type { import('min-dash').DebouncedFunction }\n   */\n  const handleInput = useDebounce(onInput, debounce);\n  const handleOnBlur = e => {\n    const trimmedValue = e.target.value.trim();\n\n    // trim and commit on blur\n    handleInput.cancel?.();\n    onInput(trimmedValue);\n    setLocalValue(trimmedValue);\n    if (onBlur) {\n      onBlur(e);\n    }\n  };\n  const handleOnPaste = e => {\n    const input = e.target;\n    const isFieldEmpty = !input.value;\n    const isAllSelected = input.selectionStart === 0 && input.selectionEnd === input.value.length;\n\n    // Trim and handle paste if field is empty or all content is selected (overwrite)\n    if (isFieldEmpty || isAllSelected) {\n      const trimmedValue = e.clipboardData.getData('text').trim();\n      setLocalValue(trimmedValue);\n      handleInput(trimmedValue);\n      if (onPaste) {\n        onPaste(e);\n      }\n      e.preventDefault();\n      return;\n    }\n\n    // Allow default paste behavior for normal text editing\n    if (onPaste) {\n      onPaste(e);\n    }\n  };\n  const handleLocalInput = e => {\n    if (e.target.value === localValue) {\n      return;\n    }\n    setLocalValue(e.target.value);\n    handleInput(e.target.value);\n  };\n  useEffect(() => {\n    if (value === localValue) {\n      return;\n    }\n    setLocalValue(value);\n  }, [value]);\n  const handleOnKeyDown = e => {\n    if (isCmdWithChar(e)) {\n      handleInput.flush?.();\n    }\n  };\n  return jsxs(\"div\", {\n    class: \"bio-properties-panel-textfield\",\n    children: [jsx(\"label\", {\n      for: prefixId$1(id),\n      class: \"bio-properties-panel-label\",\n      children: jsx(TooltipWrapper, {\n        value: tooltip,\n        forId: id,\n        element: props.element,\n        children: label\n      })\n    }), jsx(\"input\", {\n      ref: ref,\n      id: prefixId$1(id),\n      type: \"text\",\n      name: id,\n      spellCheck: \"false\",\n      autoComplete: \"off\",\n      disabled: disabled,\n      class: \"bio-properties-panel-input\",\n      onInput: handleLocalInput,\n      onFocus: onFocus,\n      onKeyDown: handleOnKeyDown,\n      onBlur: handleOnBlur,\n      onPaste: handleOnPaste,\n      placeholder: placeholder,\n      value: localValue\n    })]\n  });\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n * @param {Function} props.validate\n */\nfunction TextfieldEntry(props) {\n  const {\n    element,\n    id,\n    description,\n    debounce,\n    disabled,\n    label,\n    getValue,\n    setValue,\n    validate,\n    onFocus,\n    onBlur,\n    onPaste,\n    placeholder,\n    tooltip\n  } = props;\n  const globalError = useError(id);\n  const [localError, setLocalError] = useState(null);\n  let value = getValue(element);\n  useEffect(() => {\n    if (isFunction(validate)) {\n      const newValidationError = validate(value) || null;\n      setLocalError(newValidationError);\n    }\n  }, [value, validate]);\n  const onInput = useStaticCallback(newValue => {\n    const value = getValue(element);\n    let newValidationError = null;\n    if (isFunction(validate)) {\n      newValidationError = validate(newValue) || null;\n    }\n    if (newValue !== value) {\n      setValue(newValue, newValidationError);\n    }\n    setLocalError(newValidationError);\n  });\n  const error = globalError || localError;\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-entry', error ? 'has-error' : ''),\n    \"data-entry-id\": id,\n    children: [jsx(Textfield, {\n      debounce: debounce,\n      disabled: disabled,\n      id: id,\n      label: label,\n      onInput: onInput,\n      onFocus: onFocus,\n      onBlur: onBlur,\n      onPaste: onPaste,\n      placeholder: placeholder,\n      value: value,\n      tooltip: tooltip,\n      element: element\n    }, element), error && jsx(\"div\", {\n      class: \"bio-properties-panel-error\",\n      children: error\n    }), jsx(Description, {\n      forId: id,\n      element: element,\n      value: description\n    })]\n  });\n}\nfunction isEdited(node) {\n  return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$1(id) {\n  return `bio-properties-panel-${id}`;\n}\n\nconst DEFAULT_DEBOUNCE_TIME = 600;\n\n/**\n * Creates a debounced version of a function, delaying its execution based on `debounceDelay`.\n *\n * - If `debounceDelay` is `false`, the function executes immediately without debouncing.\n * - If a number is provided, the function execution is delayed by the given time in milliseconds.\n *\n * @param { Boolean | Number } [debounceDelay=600]\n *\n * @example\n * const debounce = debounceInput();\n * const debouncedFn = debounce(fn);\n *\n * debouncedFn(); // Executes after 300ms (default) if no further calls occur.\n */\nfunction debounceInput(debounceDelay) {\n  /**\n   * Applies debounce to the provided function, with a previously setup delay.\n   *\n   * @template { (...args: any[]) => any } T\n   *\n   * @param {T} fn\n   *\n   * @return { (...p: Parameters<T>) => any }\n   */\n  return function debounce$1(fn) {\n    if (debounceDelay === false) {\n      return fn;\n    }\n    var debounceTime = isNumber(debounceDelay) ? debounceDelay : DEFAULT_DEBOUNCE_TIME;\n    return debounce(fn, debounceTime);\n  };\n}\ndebounceInput.$inject = ['config.debounceInput'];\n\nvar index$1 = {\n  debounceInput: ['factory', debounceInput]\n};\n\n/**\n * Add a dragger that calls back the passed function with\n * { event, delta } on drag.\n *\n * @example\n *\n * function dragMove(event, delta) {\n *   // we are dragging (!!)\n * }\n *\n * domElement.addEventListener('dragstart', dragger(dragMove));\n *\n * @param {Function} fn\n * @param {Element} [dragPreview]\n *\n * @return {Function} drag start callback function\n */\nfunction createDragger(fn, dragPreview) {\n  let self;\n  let startX, startY;\n\n  /** drag start */\n  function onDragStart(event) {\n    self = this;\n    startX = event.clientX;\n    startY = event.clientY;\n\n    // (1) prevent preview image\n    if (event.dataTransfer) {\n      event.dataTransfer.setDragImage(dragPreview || emptyCanvas(), 0, 0);\n    }\n\n    // (2) setup drag listeners\n\n    // attach drag + cleanup event\n    // we need to do this to make sure we track cursor\n    // movements before we reach other drag event handlers,\n    // e.g. in child containers.\n    document.addEventListener('dragover', onDrag, true);\n    document.addEventListener('dragenter', preventDefault, true);\n    document.addEventListener('dragend', onEnd);\n    document.addEventListener('drop', preventDefault);\n  }\n  function onDrag(event) {\n    const delta = {\n      x: event.clientX - startX,\n      y: event.clientY - startY\n    };\n\n    // call provided fn with event, delta\n    return fn.call(self, event, delta);\n  }\n  function onEnd() {\n    document.removeEventListener('dragover', onDrag, true);\n    document.removeEventListener('dragenter', preventDefault, true);\n    document.removeEventListener('dragend', onEnd);\n    document.removeEventListener('drop', preventDefault);\n  }\n  return onDragStart;\n}\nfunction preventDefault(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction emptyCanvas() {\n  return domify('<canvas width=\"0\" height=\"0\" />');\n}\n\nconst noop = () => {};\n\n/**\n * A generic popup component.\n *\n * @param {Object} props\n * @param {string} [props.className]\n * @param {boolean} [props.delayInitialFocus]\n * @param {{top: number, left: number}} [props.position]\n * @param {number} [props.width]\n * @param {number} [props.height]\n * @param {Function} props.onClose\n * @param {Function} [props.onPostActivate]\n * @param {Function} [props.onPostDeactivate]\n * @param {boolean} [props.returnFocus]\n * @param {boolean} [props.closeOnEscape]\n * @param {string} props.title\n * @param {Ref} [ref]\n */\nfunction PopupComponent(props, globalRef) {\n  const {\n    className,\n    delayInitialFocus,\n    position,\n    width,\n    height,\n    onClose,\n    onPostActivate = noop,\n    onPostDeactivate = noop,\n    returnFocus = true,\n    closeOnEscape = true,\n    title\n  } = props;\n  const focusTrapRef = useRef(null);\n  const localRef = useRef(null);\n  const popupRef = globalRef || localRef;\n  const handleKeydown = event => {\n    // do not allow keyboard events to bubble\n    event.stopPropagation();\n    if (closeOnEscape && event.key === 'Escape') {\n      onClose();\n    }\n  };\n\n  // re-activate focus trap on focus\n  const handleFocus = () => {\n    if (focusTrapRef.current) {\n      focusTrapRef.current.activate();\n    }\n  };\n  let style = {};\n  if (position) {\n    style = {\n      ...style,\n      top: position.top + 'px',\n      left: position.left + 'px'\n    };\n  }\n  if (width) {\n    style.width = width + 'px';\n  }\n  if (height) {\n    style.height = height + 'px';\n  }\n  useEffect(() => {\n    if (popupRef.current) {\n      popupRef.current.addEventListener('focusin', handleFocus);\n    }\n    return () => {\n      if (popupRef.current) {\n        popupRef.current.removeEventListener('focusin', handleFocus);\n      }\n    };\n  }, [popupRef]);\n  useEffect(() => {\n    if (popupRef.current) {\n      focusTrapRef.current = focusTrap.createFocusTrap(popupRef.current, {\n        clickOutsideDeactivates: true,\n        delayInitialFocus,\n        fallbackFocus: popupRef.current,\n        onPostActivate,\n        onPostDeactivate,\n        returnFocusOnDeactivate: returnFocus\n      });\n      focusTrapRef.current.activate();\n    }\n    return () => focusTrapRef.current && focusTrapRef.current.deactivate();\n  }, [popupRef]);\n  return jsx(\"div\", {\n    \"aria-label\": title,\n    tabIndex: -1,\n    ref: popupRef,\n    onKeyDown: handleKeydown,\n    role: \"dialog\",\n    class: classnames('bio-properties-panel-popup', className),\n    style: style,\n    children: props.children\n  });\n}\nconst Popup = forwardRef(PopupComponent);\nPopup.Title = Title;\nPopup.Body = Body;\nPopup.Footer = Footer;\nfunction Title(props) {\n  const {\n    children,\n    className,\n    draggable,\n    eventBus,\n    title,\n    showCloseButton = false,\n    closeButtonTooltip = 'Close popup',\n    onClose,\n    ...rest\n  } = props;\n\n  // we can't use state as we need to\n  // manipulate this inside dragging events\n  const context = useRef({\n    startPosition: null,\n    newPosition: null\n  });\n  const dragPreviewRef = useRef();\n  const titleRef = useRef();\n  const onMove = (event, delta) => {\n    cancel(event);\n    const {\n      x: dx,\n      y: dy\n    } = delta;\n    const newPosition = {\n      x: context.current.startPosition.x + dx,\n      y: context.current.startPosition.y + dy\n    };\n    const popupParent = getPopupParent(titleRef.current);\n    popupParent.style.top = newPosition.y + 'px';\n    popupParent.style.left = newPosition.x + 'px';\n    eventBus?.fire('feelPopup.dragover', {\n      newPosition,\n      delta\n    });\n  };\n  const onMoveStart = event => {\n    // initialize drag handler\n    const onDragStart = createDragger(onMove, dragPreviewRef.current);\n    onDragStart(event);\n    event.stopPropagation();\n    const popupParent = getPopupParent(titleRef.current);\n    const bounds = popupParent.getBoundingClientRect();\n    context.current.startPosition = {\n      x: bounds.left,\n      y: bounds.top\n    };\n    eventBus?.fire('feelPopup.dragstart');\n  };\n  const onMoveEnd = () => {\n    context.current.newPosition = null;\n    eventBus?.fire('feelPopup.dragend');\n  };\n  return jsxs(\"div\", {\n    class: classnames('bio-properties-panel-popup__header', draggable && 'draggable', className),\n    ref: titleRef,\n    draggable: draggable,\n    onDragStart: onMoveStart,\n    onDragEnd: onMoveEnd,\n    ...rest,\n    children: [draggable && jsxs(Fragment, {\n      children: [jsx(\"div\", {\n        ref: dragPreviewRef,\n        class: \"bio-properties-panel-popup__drag-preview\"\n      }), jsx(\"div\", {\n        class: \"bio-properties-panel-popup__drag-handle\",\n        children: jsx(DragIcon, {})\n      })]\n    }), jsx(\"div\", {\n      class: \"bio-properties-panel-popup__title\",\n      children: title\n    }), children, showCloseButton && jsx(\"button\", {\n      type: \"button\",\n      title: closeButtonTooltip,\n      class: \"bio-properties-panel-popup__close\",\n      onClick: onClose,\n      children: jsx(CloseIcon, {})\n    })]\n  });\n}\nfunction Body(props) {\n  const {\n    children,\n    className,\n    ...rest\n  } = props;\n  return jsx(\"div\", {\n    class: classnames('bio-properties-panel-popup__body', className),\n    ...rest,\n    children: children\n  });\n}\nfunction Footer(props) {\n  const {\n    children,\n    className,\n    ...rest\n  } = props;\n  return jsx(\"div\", {\n    class: classnames('bio-properties-panel-popup__footer', className),\n    ...rest,\n    children: props.children\n  });\n}\n\n// helpers //////////////////////\n\nfunction getPopupParent(node) {\n  return node.closest('.bio-properties-panel-popup');\n}\nfunction cancel(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\n\n/**\n * @typedef {Object} FeelPopupProps\n * @property {string} entryId\n * @property {Function} onInput\n * @property {Function} onClose\n * @property {string} title\n * @property {'feel'|'feelers'} type\n * @property {string} value\n * @property {Array} [links]\n * @property {Array|Object} [variables]\n * @property {Object} [position]\n * @property {string} [hostLanguage]\n * @property {boolean} [singleLine]\n * @property {HTMLElement} [sourceElement]\n * @property {HTMLElement|string} [tooltipContainer]\n * @property {Object} [eventBus]\n */\n\nconst FEEL_POPUP_WIDTH = 700;\nconst FEEL_POPUP_HEIGHT = 250;\n\n/**\n * FEEL expression editor popup component\n * @param {FeelPopupProps} props\n */\nfunction FeelPopup$1(props) {\n  const {\n    entryId,\n    onInput,\n    onClose,\n    title,\n    type,\n    value,\n    links,\n    variables,\n    position,\n    hostLanguage,\n    singleLine,\n    sourceElement,\n    tooltipContainer,\n    eventBus,\n    feelLanguageContext\n  } = props;\n  const editorRef = useRef();\n  const popupRef = useRef();\n  const isAutoCompletionOpen = useRef(false);\n  const handleSetReturnFocus = () => {\n    sourceElement && sourceElement.focus();\n  };\n  const onKeyDownCapture = event => {\n    // we use capture here to make sure we handle the event before the editor does\n    if (event.key === 'Escape') {\n      isAutoCompletionOpen.current = autoCompletionOpen(event.target);\n    }\n  };\n  const onKeyDown = event => {\n    if (event.key === 'Escape') {\n      // close popup only if auto completion is not open\n      if (!isAutoCompletionOpen.current) {\n        onClose();\n        isAutoCompletionOpen.current = false;\n      }\n    }\n  };\n  useEffect(() => {\n    // set focus on editor when popup is opened\n    if (editorRef.current) {\n      editorRef.current.focus();\n    }\n  }, [editorRef]);\n  return jsxs(Popup, {\n    className: \"bio-properties-panel-feel-popup\",\n    position: position,\n    title: title,\n    returnFocus: false,\n    closeOnEscape: false,\n    delayInitialFocus: false,\n    onPostDeactivate: handleSetReturnFocus,\n    height: FEEL_POPUP_HEIGHT,\n    width: FEEL_POPUP_WIDTH,\n    ref: popupRef,\n    children: [jsx(Popup.Title, {\n      title: title,\n      eventBus: eventBus,\n      showCloseButton: true,\n      closeButtonTooltip: \"Save and close\",\n      onClose: onClose,\n      draggable: true,\n      children: jsx(Fragment, {\n        children: (links || []).map((link, index) => {\n          return jsxs(\"a\", {\n            rel: \"noreferrer\",\n            href: link.href,\n            target: \"_blank\",\n            class: \"bio-properties-panel-feel-popup__title-link\",\n            children: [link.title, jsx(LaunchIcon, {})]\n          }, index);\n        })\n      })\n    }), jsx(Popup.Body, {\n      children: jsxs(\"div\", {\n        onKeyDownCapture: onKeyDownCapture,\n        onKeyDown: onKeyDown,\n        class: \"bio-properties-panel-feel-popup__body\",\n        children: [type === 'feel' && jsx(FeelEditor, {\n          enableGutters: true,\n          id: prefixId(entryId),\n          name: entryId,\n          onInput: onInput,\n          value: value,\n          variables: variables,\n          feelLanguageContext: feelLanguageContext,\n          ref: editorRef,\n          tooltipContainer: tooltipContainer\n        }), type === 'feelers' && jsx(TemplatingEditor, {\n          id: prefixId(entryId),\n          contentAttributes: {\n            'aria-label': title\n          },\n          enableGutters: true,\n          hostLanguage: hostLanguage,\n          name: entryId,\n          onInput: onInput,\n          value: value,\n          ref: editorRef,\n          singleLine: singleLine,\n          tooltipContainer: tooltipContainer\n        })]\n      })\n    })]\n  });\n}\nfunction prefixId(id) {\n  return `bio-properties-panel-${id}`;\n}\nfunction autoCompletionOpen(element) {\n  const editor = element.closest('.cm-editor');\n  return editor ? editor.querySelector('.cm-tooltip-autocomplete') : null;\n}\n\nfunction getPopupTitle({\n  element,\n  label\n}) {\n  let popupTitle = '';\n  if (element && element.type) {\n    popupTitle = `${element.type} / `;\n  }\n  return `${popupTitle}${label}`;\n}\nfunction getPopupPosition() {\n  const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n  const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n  return {\n    left: Math.max(0, (viewportWidth - FEEL_POPUP_WIDTH) / 2),\n    top: Math.max(0, (viewportHeight - FEEL_POPUP_HEIGHT) / 2)\n  };\n}\n\n/**\n * FEEL popup component, built as a singleton.\n *\n * In order to implement a custom replacement, handle the following events:\n * - `propertiesPanel.openPopup`\n * - `propertiesPanel.closePopup`\n * - `propertiesPanel.detach`\n *\n * Within the custom renderer, make sure to emit the following events:\n *  - `feelPopup.open` - fired before the popup is mounted\n *  - `feelPopup.opened` - fired after the popup is mounted. Event context contains the DOM node of the popup as `domNode`\n *  - `feelPopup.close` - fired before the popup is unmounted. Event context contains the DOM node of the popup as `domNode`\n *  - `feelPopup.closed` - fired after the popup is unmounted\n */\nclass FeelPopup {\n  constructor(eventBus, config = {}) {\n    this._eventBus = eventBus;\n    this._config = config;\n    this._isOpen = false;\n    eventBus.on('propertiesPanel.openPopup', (_, context) => {\n      this.open(context.entryId, context, context.sourceElement);\n\n      // return true to indicate that popup was opened\n      return true;\n    });\n    eventBus.on(['propertiesPanel.closePopup', 'propertiesPanel.detach'], () => {\n      this.close();\n    });\n  }\n\n  /**\n   * Check if the FEEL popup is open.\n   * @return {Boolean}\n   */\n  isOpen() {\n    return this._isOpen;\n  }\n\n  /**\n   * Open the FEEL popup.\n   *\n   * @param {String} entryId\n   * @param {Object} popupConfig\n   * @param {HTMLElement} sourceElement\n   */\n  open(entryId, popupConfig, sourceElement) {\n    // close before opening a new one\n    this.close();\n    this._openPopup({\n      ...popupConfig,\n      entryId,\n      sourceElement\n    });\n  }\n\n  /**\n   * Close the FEEL popup.\n   */\n  close() {\n    this._closePopup();\n  }\n  _openPopup(context) {\n    const {\n      element,\n      label,\n      sourceElement,\n      type\n    } = context;\n    this._isOpen = true;\n    this._eventBus.fire('propertiesPanelPopup.open', {\n      container: this._config.feelPopupContainer,\n      config: {\n        ...context,\n        links: this._config.getFeelPopupLinks?.(type) || [],\n        onClose: () => {\n          this._closePopup();\n\n          // setTimeout to ensure the focus happens after the DOM updates make it focusable\n          setTimeout(() => {\n            sourceElement && sourceElement.focus();\n          }, 0);\n        },\n        position: getPopupPosition(),\n        title: getPopupTitle({\n          element,\n          label\n        })\n      }\n    });\n  }\n  _closePopup() {\n    if (this._isOpen) {\n      this._isOpen = false;\n      this._eventBus.fire('propertiesPanelPopup.close');\n    }\n  }\n}\nFeelPopup.$inject = ['eventBus', 'config.propertiesPanel'];\n\nclass FeelPopupRenderer {\n  constructor(eventBus) {\n    this._eventBus = eventBus;\n    this._container = null;\n    this._element = null;\n    eventBus.on('propertiesPanelPopup.open', context => {\n      this._renderPopup(context);\n    });\n    eventBus.on('propertiesPanelPopup.close', () => {\n      this._removePopup();\n    });\n  }\n  _renderPopup(context) {\n    let {\n      container,\n      config\n    } = context;\n    container = this._container = getContainer(container) || document.body;\n    const element = this._element = createElement();\n    container.appendChild(element);\n\n    // TODO(philippfromme): there is no useService in this context, so we need\n    // to pass the event bus as a prop or create a context provider, however,\n    // a custom renderer would have to use that context provider as well to have\n    // access to the event bus and other services\n    this._emit('feelPopup.open');\n    render(jsx(FeelPopup$1, {\n      ...config,\n      eventBus: this._eventBus\n    }), element);\n    this._emit('feelPopup.opened', {\n      domNode: element\n    });\n  }\n  _removePopup() {\n    if (!this._container) {\n      return;\n    }\n    this._emit('feelPopup.close', {\n      domNode: this._element\n    });\n    render(null, this._element);\n    this._container.removeChild(this._element);\n    this._container = null;\n    this._emit('feelPopup.closed');\n  }\n  _emit(event, context) {\n    this._eventBus.fire(event, context);\n  }\n}\nFeelPopupRenderer.$inject = ['eventBus'];\n\n// helpers /////////////////\n\nfunction createElement() {\n  const element = document.createElement('div');\n  element.classList.add('bio-properties-panel-popup-container');\n  return element;\n}\nfunction getContainer(container) {\n  if (isString(container)) {\n    return query(container);\n  }\n  return container;\n}\n\nvar index = {\n  __init__: ['feelPopup', 'feelPopupRenderer'],\n  feelPopup: ['type', FeelPopup],\n  feelPopupRenderer: ['type', FeelPopupRenderer]\n};\n\nexport { ArrowIcon, CheckboxEntry, CheckboxGroup, CloseIcon, CollapsibleEntry, CreateIcon, index$1 as DebounceInputModule, DeleteIcon, DescriptionContext, Description as DescriptionEntry, DragIcon, DropdownButton, ErrorsContext, EventContext, ExternalLinkIcon, FeelCheckboxEntry, FeelEntry, FeelIcon$1 as FeelIcon, FeelLanguageContext, FeelNumberEntry, index as FeelPopupModule, FeelTemplatingEntry, FeelTextAreaEntry, FeelToggleSwitchEntry, Group, Header, HeaderButton, LaunchIcon, LayoutContext, List as ListEntry, ListGroup, ListItem, NumberFieldEntry, OpenPopupIcon, Placeholder, PropertiesPanel, LayoutContext as PropertiesPanelContext, SelectEntry, Simple as SimpleEntry, TemplatingEntry, TextAreaEntry, TextfieldEntry as TextFieldEntry, ToggleSwitchEntry, TooltipContext, TooltipWrapper as TooltipEntry, isEdited$8 as isCheckboxEntryEdited, isEdited$5 as isFeelEntryEdited, isEdited$6 as isNumberFieldEntryEdited, isEdited$3 as isSelectEntryEdited, isEdited$2 as isSimpleEntryEdited, isEdited$4 as isTemplatingEntryEdited, isEdited$1 as isTextAreaEntryEdited, isEdited as isTextFieldEntryEdited, isEdited$7 as isToggleSwitchEntryEdited, useDebounce, useDescriptionContext, useElementVisible, useError, useErrors, useEvent, useKeyFactory, useLayoutState, usePrevious, useShowEntryEvent, useStaticCallback, useStickyIntersectionObserver, useTooltipContext };\n//# sourceMappingURL=index.esm.js.map\n","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nexport const FormPropertiesPanelContext = createContext({\n  getService,\n});\n","import { iconsByType } from '../../render/components/icons';\nimport { getPaletteIcon } from '../palette/components/Palette';\n\nexport function getPropertiesPanelHeaderProvider(options = {}) {\n  const { getDocumentationRef, formFields } = options;\n\n  return {\n    getElementLabel: (field) => {\n      const { type } = field;\n      const fieldDefinition = formFields.get(type).config;\n      return fieldDefinition.getSubheading ? fieldDefinition.getSubheading(field) : field.label;\n    },\n\n    getElementIcon: (field) => {\n      const { type } = field;\n      const fieldDefinition = formFields.get(type).config;\n      const Icon = fieldDefinition.icon || iconsByType(type);\n      if (Icon) {\n        return function IconComponent() {\n          return <Icon width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" />;\n        };\n      } else if (fieldDefinition.iconUrl) {\n        return getPaletteIcon({ iconUrl: fieldDefinition.iconUrl, label: fieldDefinition.label });\n      }\n    },\n\n    getTypeLabel: (field) => {\n      const { type } = field;\n      if (type === 'default') {\n        return 'Form';\n      }\n      const fieldDefinition = formFields.get(type).config;\n      return fieldDefinition.name || fieldDefinition.label || type;\n    },\n\n    getDocumentationRef,\n  };\n}\n","/**\n * Provide placeholders for empty and multiple state.\n */\nexport const PropertiesPanelPlaceholderProvider = {\n  getEmpty: () => {\n    return {\n      text: 'Select a form field to edit its properties.',\n    };\n  },\n\n  getMultiple: () => {\n    return {\n      text: 'Multiple form fields are selected. Select a single form field to edit its properties.',\n    };\n  },\n};\n","import { PropertiesPanel as BasePropertiesPanel } from '@bpmn-io/properties-panel';\n\nimport { useCallback, useMemo, useState, useLayoutEffect } from 'preact/hooks';\n\nimport { reduce, isArray } from 'min-dash';\n\nimport { FormPropertiesPanelContext } from './context';\n\nimport { getPropertiesPanelHeaderProvider } from './PropertiesPanelHeaderProvider';\nimport { PropertiesPanelPlaceholderProvider } from './PropertiesPanelPlaceholderProvider';\n\nconst EMPTY = {};\n\nexport function PropertiesPanel(props) {\n  const { eventBus, getProviders, injector } = props;\n\n  const formEditor = injector.get('formEditor');\n  const modeling = injector.get('modeling');\n  const selectionModule = injector.get('selection');\n  const propertiesPanelConfig = injector.get('config.propertiesPanel') || EMPTY;\n\n  const { feelPopupContainer } = propertiesPanelConfig;\n\n  const [state, setState] = useState({ selectedFormField: selectionModule.get() || formEditor._getState().schema });\n\n  const selectedFormField = state.selectedFormField;\n\n  const refresh = useCallback(\n    (field) => {\n      // TODO(skaiir): rework state management, re-rendering the whole properties panel is not the way to go\n      // https://github.com/bpmn-io/form-js/issues/686\n      setState({ selectedFormField: selectionModule.get() || formEditor._getState().schema });\n\n      // notify interested parties on property panel updates\n      eventBus.fire('propertiesPanel.updated', {\n        formField: field,\n      });\n    },\n    [eventBus, formEditor, selectionModule],\n  );\n\n  useLayoutEffect(() => {\n    /**\n     * TODO(pinussilvestrus): update with actual updated element,\n     * once we have a proper updater/change support\n     */\n    eventBus.on('changed', refresh);\n    eventBus.on('import.done', refresh);\n    eventBus.on('selection.changed', refresh);\n\n    return () => {\n      eventBus.off('changed', refresh);\n      eventBus.off('import.done', refresh);\n      eventBus.off('selection.changed', refresh);\n    };\n  }, [eventBus, refresh]);\n\n  const getService = (type, strict = true) => injector.get(type, strict);\n\n  const propertiesPanelContext = { getService };\n\n  const onFocus = () => eventBus.fire('propertiesPanel.focusin');\n\n  const onBlur = () => eventBus.fire('propertiesPanel.focusout');\n\n  const editField = useCallback((formField, key, value) => modeling.editFormField(formField, key, value), [modeling]);\n\n  // retrieve groups for selected form field\n  const providers = getProviders(selectedFormField);\n\n  const groups = useMemo(() => {\n    return reduce(\n      providers,\n      function (groups, provider) {\n        // do not collect groups for multi element state\n        if (isArray(selectedFormField)) {\n          return [];\n        }\n\n        const updater = provider.getGroups(selectedFormField, editField);\n\n        return updater(groups);\n      },\n      [],\n    );\n  }, [providers, selectedFormField, editField]);\n\n  const formFields = getService('formFields');\n\n  const PropertiesPanelHeaderProvider = useMemo(\n    () =>\n      getPropertiesPanelHeaderProvider({\n        getDocumentationRef: propertiesPanelConfig.getDocumentationRef,\n        formFields,\n      }),\n    [formFields, propertiesPanelConfig],\n  );\n\n  return (\n    <div\n      class=\"fjs-properties-panel\"\n      data-field={selectedFormField && selectedFormField.id}\n      onFocusCapture={onFocus}\n      onBlurCapture={onBlur}>\n      <FormPropertiesPanelContext.Provider value={propertiesPanelContext}>\n        <BasePropertiesPanel\n          element={selectedFormField}\n          eventBus={eventBus}\n          groups={groups}\n          headerProvider={PropertiesPanelHeaderProvider}\n          placeholderProvider={PropertiesPanelPlaceholderProvider}\n          feelPopupContainer={feelPopupContainer}\n        />\n      </FormPropertiesPanelContext.Provider>\n    </div>\n  );\n}\n","import { PropertiesPanel } from './PropertiesPanel';\n\nimport { render } from 'preact';\n\nimport { domify, query as domQuery } from 'min-dom';\n\nconst DEFAULT_PRIORITY = 1000;\n\n/**\n * @typedef { { parent: Element } } PropertiesPanelConfig\n * @typedef { import('../../core/EventBus').EventBus } EventBus\n * @typedef { import('../../types').Injector } Injector\n * @typedef { { getGroups: ({ formField, editFormField }) => ({ groups}) => Array } } PropertiesProvider\n */\n\n/**\n * @param {PropertiesPanelConfig} propertiesPanelConfig\n * @param {Injector} injector\n * @param {EventBus} eventBus\n */\nexport class PropertiesPanelRenderer {\n  constructor(propertiesPanelConfig, injector, eventBus) {\n    const { parent } = propertiesPanelConfig || {};\n\n    this._eventBus = eventBus;\n    this._injector = injector;\n\n    this._container = domify('<div class=\"fjs-properties-container\" input-handle-modified-keys=\"y,z\"></div>');\n\n    if (parent) {\n      this.attachTo(parent);\n    }\n\n    this._eventBus.once('formEditor.rendered', 500, () => {\n      this._render();\n    });\n  }\n\n  /**\n   * Attach the properties panel to a parent node.\n   *\n   * @param {HTMLElement} container\n   */\n  attachTo(container) {\n    if (!container) {\n      throw new Error('container required');\n    }\n\n    if (typeof container === 'string') {\n      container = domQuery(container);\n    }\n\n    // (1) detach from old parent\n    this.detach();\n\n    // (2) append to parent container\n    container.appendChild(this._container);\n\n    // (3) notify interested parties\n    this._eventBus.fire('propertiesPanel.attach');\n  }\n\n  /**\n   * Detach the properties panel from its parent node.\n   */\n  detach() {\n    const parentNode = this._container.parentNode;\n\n    if (parentNode) {\n      parentNode.removeChild(this._container);\n\n      this._eventBus.fire('propertiesPanel.detach');\n    }\n  }\n\n  _render() {\n    render(\n      <PropertiesPanel\n        getProviders={this._getProviders.bind(this)}\n        eventBus={this._eventBus}\n        injector={this._injector}\n      />,\n      this._container,\n    );\n\n    this._eventBus.fire('propertiesPanel.rendered');\n  }\n\n  _destroy() {\n    if (this._container) {\n      render(null, this._container);\n\n      this._eventBus.fire('propertiesPanel.destroyed');\n    }\n  }\n\n  /**\n   * Register a new properties provider to the properties panel.\n   *\n   * @param {PropertiesProvider} provider\n   * @param {Number} [priority]\n   */\n  registerProvider(provider, priority) {\n    if (!priority) {\n      priority = DEFAULT_PRIORITY;\n    }\n\n    if (typeof provider.getGroups !== 'function') {\n      console.error('Properties provider does not implement #getGroups(element) API');\n\n      return;\n    }\n\n    this._eventBus.on('propertiesPanel.getProviders', priority, function (event) {\n      event.providers.push(provider);\n    });\n\n    this._eventBus.fire('propertiesPanel.providersChanged');\n  }\n\n  _getProviders() {\n    const event = this._eventBus.createEvent({\n      type: 'propertiesPanel.getProviders',\n      providers: [],\n    });\n\n    this._eventBus.fire(event);\n\n    return event.providers;\n  }\n}\n\nPropertiesPanelRenderer.$inject = ['config.propertiesPanel', 'injector', 'eventBus'];\n","import { get } from 'min-dash';\n\nimport { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function ActionEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'action',\n    component: Action,\n    editField: editField,\n    field: field,\n    isEdited: isSelectEntryEdited,\n    isDefaultVisible: (field) => field.type === 'button',\n  });\n\n  return entries;\n}\n\nfunction Action(props) {\n  const { editField, field, id } = props;\n\n  const path = ['action'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  const getOptions = () => [\n    {\n      label: 'Submit',\n      value: 'submit',\n    },\n    {\n      label: 'Reset',\n      value: 'reset',\n    },\n  ];\n\n  return SelectEntry({\n    element: field,\n    getOptions,\n    getValue,\n    id,\n    label: 'Action',\n    setValue,\n  });\n}\n","import { useContext } from 'preact/hooks';\n\nimport { FormPropertiesPanelContext } from '../context';\n\nexport function useService(type, strict) {\n  const { getService } = useContext(FormPropertiesPanelContext);\n\n  return getService(type, strict);\n}\n","import { getSchemaVariables } from '@bpmn-io/form-js-viewer';\nimport { useService } from './usePropertiesPanelService';\n\n/**\n * Retrieve list of variables from the form schema.\n *\n * @returns { string[] } list of variables used in form schema\n */\nexport function useVariables() {\n  const form = useService('formEditor');\n  const schema = form.getSchema();\n\n  return getSchemaVariables(schema);\n}\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function AltTextEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'alt',\n    component: AltText,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => ['image'].includes(field.type),\n  });\n\n  return entries;\n}\n\nfunction AltText(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['alt'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue,\n    id,\n    label: 'Alternative text',\n    tooltip: 'Descriptive text for screen reader accessibility.',\n    setValue,\n    singleLine: true,\n    variables,\n  });\n}\n","import { get, set } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { isSelectEntryEdited, SelectEntry } from '@bpmn-io/properties-panel';\n\nimport { MIN_COLUMNS } from '../../../core/FormLayoutValidator';\nimport { useCallback } from 'preact/hooks';\n\nexport const AUTO_OPTION_VALUE = '';\n\nexport function ColumnsEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [\n    {\n      id: 'columns',\n      component: Columns,\n      field,\n      editField,\n      isEdited: isSelectEntryEdited,\n    },\n  ];\n\n  return entries;\n}\n\nfunction Columns(props) {\n  const { field, editField, id } = props;\n\n  const debounce = useService('debounce');\n  const formLayoutValidator = useService('formLayoutValidator');\n\n  const validate = useCallback(\n    (value) => {\n      return formLayoutValidator.validateField(field, value ? parseInt(value) : null);\n    },\n    [field, formLayoutValidator],\n  );\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    const layout = get(field, ['layout'], {});\n\n    const newValue = value ? parseInt(value) : null;\n\n    editField(field, ['layout'], set(layout, ['columns'], newValue));\n  };\n\n  const getValue = () => {\n    return get(field, ['layout', 'columns']);\n  };\n\n  const getOptions = () => {\n    return [\n      {\n        label: 'Auto',\n        value: AUTO_OPTION_VALUE,\n      },\n\n      // todo(pinussilvestrus): make options dependant on field type\n      // cf. https://github.com/bpmn-io/form-js/issues/575\n      ...asArray(16)\n        .filter((i) => i >= MIN_COLUMNS)\n        .map(asOption),\n    ];\n  };\n\n  return SelectEntry({\n    debounce,\n    element: field,\n    id,\n    label: 'Columns',\n    getOptions,\n    getValue,\n    setValue,\n    validate,\n  });\n}\n\n// helper /////////\n\nfunction asOption(number) {\n  return {\n    value: number,\n    label: number.toString(),\n  };\n}\n\nfunction asArray(length) {\n  return Array.from({ length }).map((_, i) => i + 1);\n}\n","import Big from 'big.js';\n\nexport function arrayAdd(array, index, item) {\n  const copy = [...array];\n\n  copy.splice(index, 0, item);\n\n  return copy;\n}\n\nexport function arrayRemove(array, index) {\n  const copy = [...array];\n\n  copy.splice(index, 1);\n\n  return copy;\n}\n\nexport function prefixId(id) {\n  return `fjs-properties-panel-${id}`;\n}\n\nexport function countDecimals(number) {\n  const num = Big(number);\n  if (num.toString() === num.toFixed(0)) return 0;\n  return num.toFixed().split('.')[1].length || 0;\n}\n\n/**\n *\n * @param {unknown} value\n * @returns {boolean}\n */\nexport function isValidNumber(value) {\n  return (typeof value === 'number' || typeof value === 'string') && value !== '' && !isNaN(Number(value));\n}\n\nexport function stopPropagation(listener) {\n  return (event) => {\n    event.stopPropagation();\n\n    listener(event);\n  };\n}\n\n/**\n * @param {string} path\n */\nexport function isValidDotPath(path) {\n  return /^\\w+(\\.\\w+)*$/.test(path);\n}\n\n/**\n * @param {string} path\n */\nexport function isProhibitedPath(path) {\n  const prohibitedSegments = ['__proto__', 'prototype', 'constructor'];\n\n  return path.split('.').some((segment) => prohibitedSegments.includes(segment));\n}\n\nexport const LABELED_NON_INPUTS = ['button', 'group', 'dynamiclist', 'iframe', 'table', 'documentPreview'];\n\nexport const INPUTS = [\n  'checkbox',\n  'checklist',\n  'datetime',\n  'number',\n  'radio',\n  'select',\n  'taglist',\n  'textfield',\n  'textarea',\n  'filepicker',\n];\n\nexport const OPTIONS_INPUTS = ['checklist', 'radio', 'select', 'taglist'];\n\nexport function hasEntryConfigured(formFieldDefinition, entryId) {\n  const { propertiesPanelEntries = [] } = formFieldDefinition;\n\n  if (!propertiesPanelEntries.length) {\n    return false;\n  }\n\n  return propertiesPanelEntries.some((id) => id === entryId);\n}\n\nexport function hasOptionsGroupsConfigured(formFieldDefinition) {\n  const { propertiesPanelEntries = [] } = formFieldDefinition;\n\n  if (!propertiesPanelEntries.length) {\n    return false;\n  }\n\n  return propertiesPanelEntries.some((id) => id === 'values');\n}\n\n/**\n * @param {string} path\n */\nexport function hasIntegerPathSegment(path) {\n  return path.split('.').some((segment) => /^\\d+$/.test(segment));\n}\n\n/**\n * Factory for isEdited functions that check against a default.\n *\n * @param {string} defaultValue The default value to check against.\n * @param {boolean} [includeEmptyAsDefault=true] If true, an empty value (e.g., '') is also considered a default state.\n * @return {(node: HTMLElement) => boolean} A function that returns true if the node's value is edited.\n */\nexport function isEditedFromDefaultFactory(defaultValue, includeEmptyAsDefault = true) {\n  return (node) => {\n    if (!node) {\n      return false;\n    }\n\n    /**\n     * @type {HTMLElement|null}\n     */\n    const codeMirrorContent = node.querySelector('.cm-content');\n    const isCodeMirrorEditor = !!codeMirrorContent;\n\n    const value = isCodeMirrorEditor ? codeMirrorContent.innerText : /** @type {HTMLInputElement} */ (node).value;\n\n    if (includeEmptyAsDefault && !value) {\n      return false;\n    }\n\n    return value !== defaultValue;\n  };\n}\n\nexport function isTrueDefaultToggleSwitchEntryEdited(node) {\n  return node && !node.checked;\n}\n","import { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function DescriptionEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'description',\n    component: Description,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type !== 'filepicker' && INPUTS.includes(field.type),\n  });\n\n  return entries;\n}\n\nfunction Description(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['description'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Field description',\n    singleLine: true,\n    setValue,\n    variables,\n  });\n}\n","import {\n  isSelectEntryEdited,\n  isTextFieldEntryEdited,\n  isTextAreaEntryEdited,\n  SelectEntry,\n  TextFieldEntry,\n  TextAreaEntry,\n} from '@bpmn-io/properties-panel';\n\nimport { get } from 'min-dash';\n\nimport Big from 'big.js';\n\nimport { useService } from '../hooks';\n\nimport { countDecimals, INPUTS, isValidNumber, OPTIONS_INPUTS } from '../Util';\nimport { useCallback } from 'preact/hooks';\n\nexport const EMPTY_OPTION = '';\n\nexport function DefaultValueEntry(props) {\n  const { editField, field } = props;\n\n  const { type } = field;\n\n  const entries = [];\n\n  function isDefaultVisible(matchers) {\n    return (field) => {\n      // Only make default values available when they are statically defined\n      if (!INPUTS.includes(type) || (OPTIONS_INPUTS.includes(type) && !field.values)) {\n        return false;\n      }\n\n      return matchers(field);\n    };\n  }\n\n  const defaultValueBase = {\n    editField,\n    field,\n    id: 'defaultValue',\n    label: 'Default value',\n  };\n\n  entries.push({\n    ...defaultValueBase,\n    component: DefaultValueCheckbox,\n    isEdited: isSelectEntryEdited,\n    isDefaultVisible: isDefaultVisible((field) => field.type === 'checkbox'),\n  });\n\n  entries.push({\n    ...defaultValueBase,\n    component: DefaultValueNumber,\n    isEdited: isTextFieldEntryEdited,\n    isDefaultVisible: isDefaultVisible((field) => field.type === 'number'),\n  });\n\n  entries.push({\n    ...defaultValueBase,\n    component: DefaultValueSingleSelect,\n    isEdited: isSelectEntryEdited,\n    isDefaultVisible: isDefaultVisible((field) => field.type === 'radio' || field.type === 'select'),\n  });\n\n  // todo(Skaiir): implement a multiselect equivalent (cf. https://github.com/bpmn-io/form-js/issues/265)\n\n  entries.push({\n    ...defaultValueBase,\n    component: DefaultValueTextfield,\n    isEdited: isTextFieldEntryEdited,\n    isDefaultVisible: isDefaultVisible((field) => field.type === 'textfield'),\n  });\n\n  entries.push({\n    ...defaultValueBase,\n    component: DefaultValueTextarea,\n    isEdited: isTextAreaEntryEdited,\n    isDefaultVisible: isDefaultVisible((field) => field.type === 'textarea'),\n  });\n\n  return entries;\n}\n\nfunction DefaultValueCheckbox(props) {\n  const { editField, field, id, label } = props;\n\n  const { defaultValue } = field;\n\n  const path = ['defaultValue'];\n\n  const getOptions = () => {\n    return [\n      {\n        label: 'Checked',\n        value: 'true',\n      },\n      {\n        label: 'Not checked',\n        value: 'false',\n      },\n    ];\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, parseStringToBoolean(value));\n  };\n\n  const getValue = () => {\n    return parseBooleanToString(defaultValue);\n  };\n\n  return SelectEntry({\n    element: field,\n    getOptions,\n    getValue,\n    id,\n    label,\n    setValue,\n  });\n}\n\nfunction DefaultValueNumber(props) {\n  const { editField, field, id, label } = props;\n\n  const { decimalDigits, serializeToString = false } = field;\n\n  const debounce = useService('debounce');\n\n  const path = ['defaultValue'];\n\n  const getValue = (e) => {\n    let value = get(field, path);\n\n    if (!isValidNumber(value)) return;\n\n    // Enforces decimal notation so that we do not submit defaults in exponent form\n    return serializeToString ? Big(value).toFixed() : value;\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    let newValue;\n\n    if (isValidNumber(value)) {\n      newValue = serializeToString ? value : Number(value);\n    }\n\n    return editField(field, path, newValue);\n  };\n\n  const decimalDigitsSet = decimalDigits || decimalDigits === 0;\n\n  const validate = useCallback(\n    (value) => {\n      if (value === undefined || value === null) {\n        return;\n      }\n\n      if (!isValidNumber(value)) {\n        return 'Should be a valid number';\n      }\n      if (decimalDigitsSet && countDecimals(value) > decimalDigits) {\n        return `Should not contain more than ${decimalDigits} decimal digits`;\n      }\n    },\n    [decimalDigitsSet, decimalDigits],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    label,\n    element: field,\n    getValue,\n    id,\n    setValue,\n    validate,\n  });\n}\n\nfunction DefaultValueSingleSelect(props) {\n  const { editField, field, id, label } = props;\n\n  const { defaultValue = EMPTY_OPTION, values = [] } = field;\n\n  const path = ['defaultValue'];\n\n  const getOptions = () => {\n    return [\n      {\n        label: '<none>',\n        value: EMPTY_OPTION,\n      },\n      ...values,\n    ];\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value.length ? value : undefined);\n  };\n\n  const getValue = () => {\n    return defaultValue;\n  };\n\n  return SelectEntry({\n    element: field,\n    getOptions,\n    getValue,\n    id,\n    label,\n    setValue,\n  });\n}\n\nfunction DefaultValueTextfield(props) {\n  const { editField, field, id, label } = props;\n\n  const debounce = useService('debounce');\n\n  const path = ['defaultValue'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label,\n    setValue,\n  });\n}\n\nfunction DefaultValueTextarea(props) {\n  const { editField, field, id, label } = props;\n\n  const debounce = useService('debounce');\n\n  const path = ['defaultValue'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return TextAreaEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label,\n    setValue,\n  });\n}\n\n// helpers /////////////////\n\nfunction parseStringToBoolean(value) {\n  if (value === 'true') {\n    return true;\n  }\n\n  return false;\n}\n\nfunction parseBooleanToString(value) {\n  if (value === true) {\n    return 'true';\n  }\n\n  return 'false';\n}\n","import { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { ToggleSwitchEntry, isToggleSwitchEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function DisabledEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'disabled',\n    component: Disabled,\n    editField: editField,\n    field: field,\n    isEdited: isToggleSwitchEntryEdited,\n    isDefaultVisible: (field) => INPUTS.includes(field.type),\n  });\n\n  return entries;\n}\n\nfunction Disabled(props) {\n  const { editField, field, id } = props;\n\n  const path = ['disabled'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return ToggleSwitchEntry({\n    element: field,\n    getValue,\n    id,\n    label: 'Disabled',\n    tooltip:\n      'Disable this field when it should not be interactive for end-users. Its data will not be submitted. This setting takes precedence over read-only.',\n    inline: true,\n    setValue,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\nimport { useCallback } from 'preact/hooks';\n\nexport function IdEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'id',\n    component: Id,\n    editField: editField,\n    field: field,\n    isEdited: isTextFieldEntryEdited,\n    isDefaultVisible: (field) => field.type === 'default',\n  });\n\n  return entries;\n}\n\nfunction Id(props) {\n  const { editField, field, id } = props;\n\n  const formFieldRegistry = useService('formFieldRegistry');\n  const debounce = useService('debounce');\n\n  const path = ['id'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    return editField(field, path, value);\n  };\n\n  const validate = useCallback(\n    (value) => {\n      if (typeof value !== 'string' || value.length === 0) {\n        return 'Must not be empty.';\n      }\n\n      const assigned = formFieldRegistry._ids.assigned(value);\n\n      if (assigned && assigned !== field) {\n        return 'Must be unique.';\n      }\n\n      return validateId(value) || null;\n    },\n    [formFieldRegistry, field],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'ID',\n    setValue,\n    validate,\n  });\n}\n\n// id structural validation /////////////\n\nconst SPACE_REGEX = /\\s/;\n\n// for QName validation as per http://www.w3.org/TR/REC-xml/#NT-NameChar\nconst QNAME_REGEX = /^([a-z][\\w-.]*:)?[a-z_][\\w-.]*$/i;\n\n// for ID validation as per BPMN Schema (QName - Namespace)\nconst ID_REGEX = /^[a-z_][\\w-.]*$/i;\n\nfunction validateId(idValue) {\n  if (containsSpace(idValue)) {\n    return 'Must not contain spaces.';\n  }\n\n  if (!ID_REGEX.test(idValue)) {\n    if (QNAME_REGEX.test(idValue)) {\n      return 'Must not contain prefix.';\n    }\n\n    return 'Must be a valid QName.';\n  }\n}\n\nfunction containsSpace(value) {\n  return SPACE_REGEX.test(value);\n}\n","import { isString, get } from 'min-dash';\n\nimport { hasIntegerPathSegment, isProhibitedPath, isValidDotPath } from '../Util';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\nimport { useCallback } from 'preact/hooks';\n\nexport function KeyEntry(props) {\n  const { editField, field, getService } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'key',\n    component: Key,\n    editField: editField,\n    field: field,\n    isEdited: isTextFieldEntryEdited,\n    isDefaultVisible: (field) => {\n      const formFields = getService('formFields');\n      const { config } = formFields.get(field.type);\n      return config.keyed;\n    },\n  });\n\n  return entries;\n}\n\nfunction Key(props) {\n  const { editField, field, id } = props;\n\n  const pathRegistry = useService('pathRegistry');\n\n  const debounce = useService('debounce');\n\n  const path = ['key'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    return editField(field, path, value);\n  };\n\n  const validate = useCallback(\n    (value) => {\n      if (value === field.key) {\n        return null;\n      }\n\n      if (!isString(value) || value.length === 0) {\n        return 'Must not be empty.';\n      }\n\n      if (!isValidDotPath(value)) {\n        return 'Must be a variable or a dot separated path.';\n      }\n\n      if (hasIntegerPathSegment(value)) {\n        return 'Must not contain numerical path segments.';\n      }\n\n      if (isProhibitedPath(value)) {\n        return 'Must not be a prohibited path.';\n      }\n\n      const replacements = {\n        [field.id]: value.split('.'),\n      };\n\n      const oldPath = pathRegistry.getValuePath(field);\n      const newPath = pathRegistry.getValuePath(field, { replacements });\n\n      // unclaim temporarily to avoid self-conflicts\n      pathRegistry.unclaimPath(oldPath);\n      const canClaim = pathRegistry.canClaimPath(newPath, { isClosed: true, claimerId: field.id });\n      pathRegistry.claimPath(oldPath, { isClosed: true, claimerId: field.id });\n\n      return canClaim ? null : 'Must not conflict with other key/path assignments.';\n    },\n    [field, pathRegistry],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    description: 'Binds to a form variable',\n    element: field,\n    getValue,\n    id,\n    label: 'Key',\n    tooltip:\n      'Use a unique \"key\" to link the form element and the related input/output data. When dealing with nested data, break it down in the user task\\'s input mapping before using it.',\n    setValue,\n    validate,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { isProhibitedPath, isValidDotPath, hasIntegerPathSegment } from '../Util';\nimport { useCallback } from 'preact/hooks';\n\nexport function PathEntry(props) {\n  const { editField, field, getService } = props;\n\n  const { type } = field;\n\n  const entries = [];\n\n  const formFieldDefinition = getService('formFields').get(type);\n\n  if (formFieldDefinition && formFieldDefinition.config.pathed) {\n    entries.push({\n      id: 'path',\n      component: Path,\n      editField: editField,\n      field: field,\n      isEdited: isTextFieldEntryEdited,\n    });\n  }\n\n  return entries;\n}\n\nfunction Path(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n  const pathRegistry = useService('pathRegistry');\n  const fieldConfig = useService('formFields').get(field.type).config;\n  const isRepeating = fieldConfig.repeatable && field.isRepeating;\n\n  const path = ['path'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    return editField(field, path, value);\n  };\n\n  const validate = useCallback(\n    (value) => {\n      if (!value && isRepeating) {\n        return 'Must not be empty';\n      }\n\n      // Early return for empty value in non-repeating cases or if the field path hasn't changed\n      if ((!value && !isRepeating) || value === field.path) {\n        return null;\n      }\n\n      // Validate dot-separated path format\n      if (!isValidDotPath(value)) {\n        const msg = isRepeating\n          ? 'Must be a variable or a dot-separated path'\n          : 'Must be empty, a variable or a dot-separated path';\n        return msg;\n      }\n\n      // Check for integer segments in the path\n      if (hasIntegerPathSegment(value)) {\n        return 'Must not contain numerical path segments.';\n      }\n\n      // Check for special prohibited paths\n      if (isProhibitedPath(value)) {\n        return 'Must not be a prohibited path.';\n      }\n\n      // Check for path collisions\n      const options = {\n        replacements: {\n          [field.id]: value.split('.'),\n        },\n      };\n\n      const canClaim = pathRegistry.executeRecursivelyOnFields(field, ({ field, isClosed, isRepeatable }) => {\n        const path = pathRegistry.getValuePath(field, options);\n        return pathRegistry.canClaimPath(path, { isClosed, isRepeatable, claimerId: field.id });\n      });\n\n      if (!canClaim) {\n        return 'Must not cause two binding paths to collide';\n      }\n\n      // If all checks pass\n      return null;\n    },\n    [field, isRepeating, pathRegistry],\n  );\n\n  const tooltip = isRepeating\n    ? 'Routes the children of this component into a form variable, may be left empty to route at the root level.'\n    : 'Routes the children of this component into a form variable.';\n\n  return TextFieldEntry({\n    debounce,\n    description: 'Where the child variables of this component are pathed to.',\n    element: field,\n    getValue,\n    id,\n    label: 'Path',\n    tooltip,\n    setValue,\n    validate,\n  });\n}\n","import { get } from 'min-dash';\nimport { ToggleSwitchEntry, isToggleSwitchEntryEdited } from '@bpmn-io/properties-panel';\nimport { isTrueDefaultToggleSwitchEntryEdited } from '../../Util';\n\nexport function simpleBoolEntryFactory(options) {\n  const { id, label, description, path, props, getValue, setValue, isDefaultVisible, isTrueDefault = false } = options;\n\n  const { editField, field } = props;\n\n  return {\n    id,\n    label,\n    path,\n    field,\n    editField,\n    description,\n    component: SimpleBoolComponent,\n    isEdited: isTrueDefault ? isTrueDefaultToggleSwitchEntryEdited : isToggleSwitchEntryEdited,\n    isDefaultVisible,\n    getValue,\n    setValue,\n  };\n}\n\nconst SimpleBoolComponent = (props) => {\n  const {\n    id,\n    label,\n    path,\n    field,\n    editField,\n    getValue = () => get(field, path, ''),\n    setValue = (value) => editField(field, path, value || false),\n    description,\n  } = props;\n\n  return ToggleSwitchEntry({\n    element: field,\n    getValue,\n    id,\n    label,\n    setValue,\n    inline: true,\n    description,\n  });\n};\n","import { get } from 'min-dash';\nimport { isSelectEntryEdited, SelectEntry } from '@bpmn-io/properties-panel';\n\nexport function simpleSelectEntryFactory(options) {\n  const { id, label, path, props, optionsArray } = options;\n\n  const { editField, field } = props;\n\n  return {\n    id,\n    label,\n    path,\n    field,\n    editField,\n    optionsArray,\n    component: SimpleSelectComponent,\n    isEdited: isSelectEntryEdited,\n  };\n}\n\nconst SimpleSelectComponent = (props) => {\n  const { id, label, path, field, editField, optionsArray } = props;\n\n  const getValue = () => get(field, path, '');\n\n  const setValue = (value) => editField(field, path, value);\n\n  const getOptions = () => optionsArray;\n\n  return SelectEntry({\n    label,\n    element: field,\n    getOptions,\n    getValue,\n    id,\n    setValue,\n  });\n};\n","import { get } from 'min-dash';\nimport { useService } from '../../hooks';\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\nimport { isValidNumber } from '../../Util';\n\nimport Big from 'big.js';\nimport { useCallback } from 'preact/hooks';\n\nexport function simpleRangeIntegerEntryFactory(options) {\n  const { id, label, path, props, min, max } = options;\n\n  const { editField, field } = props;\n\n  return {\n    id,\n    label,\n    path,\n    field,\n    editField,\n    min,\n    max,\n    component: SimpleRangeIntegerEntry,\n    isEdited: isTextFieldEntryEdited,\n  };\n}\n\nconst SimpleRangeIntegerEntry = (props) => {\n  const { id, label, path, field, editField, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER } = props;\n\n  const debounce = useService('debounce');\n\n  const getValue = () => {\n    const value = get(field, path);\n    const isValid = isValidNumber(value) && Number.isInteger(value);\n    return isValid ? value : null;\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, path, Number(value));\n  };\n\n  const validate = useCallback(\n    (value) => {\n      if (value === undefined || value === null || value === '') {\n        return;\n      }\n      if (!Number.isInteger(Number(value))) {\n        return 'Should be an integer.';\n      }\n      if (Big(value).cmp(min) < 0) {\n        return `Should be at least ${min}.`;\n      }\n      if (Big(value).cmp(max) > 0) {\n        return `Should be at most ${max}.`;\n      }\n    },\n    [min, max],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    label,\n    element: field,\n    getValue,\n    id,\n    setValue,\n    validate,\n  });\n};\n","import { simpleBoolEntryFactory } from './factories';\n\nexport function GroupAppearanceEntry(props) {\n  const { field } = props;\n\n  const { type } = field;\n\n  if (!['group', 'dynamiclist'].includes(type)) {\n    return [];\n  }\n\n  const entries = [\n    simpleBoolEntryFactory({\n      id: 'showOutline',\n      path: ['showOutline'],\n      label: 'Show outline',\n      isTrueDefault: true,\n      props,\n    }),\n  ];\n\n  return entries;\n}\n","import { INPUTS, LABELED_NON_INPUTS } from '../Util';\nimport { DATETIME_SUBTYPES, DATE_LABEL_PATH, TIME_LABEL_PATH } from '@bpmn-io/form-js-viewer';\nimport { useService, useVariables } from '../hooks';\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\n\nexport function LabelEntry(props) {\n  const { field, editField } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'date-label',\n    component: DateLabel,\n    editField,\n    field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: function (field) {\n      return (\n        field.type === 'datetime' &&\n        (field.subtype === DATETIME_SUBTYPES.DATE || field.subtype === DATETIME_SUBTYPES.DATETIME)\n      );\n    },\n  });\n\n  entries.push({\n    id: 'time-label',\n    component: TimeLabel,\n    editField,\n    field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: function (field) {\n      return (\n        field.type === 'datetime' &&\n        (field.subtype === DATETIME_SUBTYPES.TIME || field.subtype === DATETIME_SUBTYPES.DATETIME)\n      );\n    },\n  });\n\n  const isSimplyLabeled = (field) => {\n    return [...INPUTS.filter((input) => input !== 'datetime'), ...LABELED_NON_INPUTS].includes(field.type);\n  };\n\n  entries.push({\n    id: 'label',\n    component: Label,\n    editField,\n    field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: isSimplyLabeled,\n  });\n\n  return entries;\n}\n\nfunction Label(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['label'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value || '');\n  };\n\n  const label = getLabelText(field.type);\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label,\n    singleLine: true,\n    setValue,\n    variables,\n  });\n}\n\nfunction DateLabel(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = DATE_LABEL_PATH;\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value || '');\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Date label',\n    singleLine: true,\n    setValue,\n    variables,\n  });\n}\n\nfunction TimeLabel(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = TIME_LABEL_PATH;\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value || '');\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Time label',\n    singleLine: true,\n    setValue,\n    variables,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {string} type\n * @returns {string}\n */\nfunction getLabelText(type) {\n  switch (type) {\n    case 'group':\n    case 'dynamiclist':\n      return 'Group label';\n    case 'table':\n      return 'Table label';\n    case 'iframe':\n    case 'documentPreview':\n      return 'Title';\n    default:\n      return 'Field label';\n  }\n}\n","import { NumberFieldEntry, isNumberFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { get, isFunction } from 'min-dash';\nimport { useService } from '../hooks';\n\nexport function HeightEntry(props) {\n  const { editField, field, id, description, isDefaultVisible, defaultValue } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: id + '-height',\n    component: Height,\n    description,\n    isEdited: isNumberFieldEntryEdited,\n    editField,\n    field,\n    defaultValue,\n    isDefaultVisible: (field) => {\n      if (isFunction(isDefaultVisible)) {\n        return isDefaultVisible(field);\n      }\n\n      return field.type === 'spacer';\n    },\n  });\n\n  return entries;\n}\n\nfunction Height(props) {\n  const { description, editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const getValue = (e) => get(field, ['height'], null);\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, ['height'], value);\n  };\n\n  return NumberFieldEntry({\n    debounce,\n    description,\n    label: 'Height',\n    element: field,\n    id,\n    getValue,\n    setValue,\n    validate,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {number|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (typeof value !== 'number') {\n    return 'A number is required.';\n  }\n\n  if (!Number.isInteger(value)) {\n    return 'Should be an integer.';\n  }\n\n  if (value < 1) {\n    return 'Should be greater than zero.';\n  }\n};\n","import { HeightEntry } from './HeightEntry';\n\nexport function IFrameHeightEntry(props) {\n  return [\n    ...HeightEntry({\n      ...props,\n      description: 'Height of the container in pixels.',\n      isDefaultVisible: (field) => field.type === 'iframe',\n    }),\n  ];\n}\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nconst HTTPS_PATTERN = /^(https):\\/\\/*/i;\n\nexport function IFrameUrlEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n  entries.push({\n    id: 'url',\n    component: Url,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'iframe',\n  });\n\n  return entries;\n}\n\nfunction Url(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['url'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue,\n    id,\n    label: 'URL',\n    setValue,\n    singleLine: true,\n    tooltip: getTooltip(),\n    validate,\n    variables,\n  });\n}\n\n// helper //////////////////////\n\nfunction getTooltip() {\n  return (\n    <>\n      <p>\n        Enter a HTTPS URL to a source or populate it dynamically via a template or an expression (e.g., to pass a value\n        from the variable).\n      </p>\n      <p>Please make sure that the URL is safe as it might impose security risks.</p>\n      <p>\n        Not all external sources can be displayed in the iFrame. Read more about it in the{' '}\n        <a\n          target=\"_blank\"\n          href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\"\n          rel=\"noreferrer\">\n          X-FRAME-OPTIONS documentation\n        </a>\n        .\n      </p>\n    </>\n  );\n}\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (!value || value.startsWith('=')) {\n    return;\n  }\n\n  if (!HTTPS_PATTERN.test(value)) {\n    return 'For security reasons the URL must start with \"https\".';\n  }\n};\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function ImageSourceEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n  entries.push({\n    id: 'source',\n    component: Source,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'image',\n  });\n\n  return entries;\n}\n\nfunction Source(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['source'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    description: 'Expression or static value (link/data URI)',\n    element: field,\n    feel: 'optional',\n    getValue,\n    id,\n    label: 'Image source',\n    tooltip: 'Link referring to a hosted image, or use a data URI directly to embed image data into the form.',\n    setValue,\n    singleLine: true,\n    variables,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry } from '@bpmn-io/properties-panel';\nimport { TEXT_VIEW_DEFAULT_TEXT } from '@bpmn-io/form-js-viewer';\nimport { isEditedFromDefaultFactory } from '../Util';\n\nconst isTextEdited = isEditedFromDefaultFactory(TEXT_VIEW_DEFAULT_TEXT, false);\n\nexport function TextEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [\n    {\n      id: 'text',\n      component: Text,\n      editField: editField,\n      field: field,\n      isEdited: isTextEdited,\n      isDefaultVisible: (field) => field.type === 'text',\n    },\n  ];\n\n  return entries;\n}\n\nfunction Text(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['text'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value || '');\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    description,\n    element: field,\n    getValue,\n    id,\n    label: 'Text',\n    hostLanguage: 'markdown',\n    setValue,\n    variables,\n  });\n}\n\nconst description = (\n  <>\n    Supports markdown and templating.{' '}\n    <a\n      href=\"https://docs.camunda.io/docs/components/modeler/forms/form-element-library/forms-element-library-text/\"\n      target=\"_blank\"\n      rel=\"noreferrer\">\n      Learn more\n    </a>\n  </>\n);\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function HtmlEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [\n    {\n      id: 'content',\n      component: Content,\n      editField: editField,\n      field: field,\n      isEdited: isFeelEntryEdited,\n      isDefaultVisible: (field) => field.type === 'html',\n    },\n  ];\n\n  return entries;\n}\n\nfunction Content(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['content'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value || '');\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    description,\n    element: field,\n    getValue,\n    id,\n    label: 'Content',\n    hostLanguage: 'html',\n    validate,\n    setValue,\n    variables,\n  });\n}\n\n// helpers //////////\n\nconst description = (\n  <>\n    Supports HTML, styling, and templating. Styles are automatically scoped to the HTML component.{' '}\n    <a\n      href=\"https://docs.camunda.io/docs/components/modeler/forms/form-element-library/forms-element-library-html/\"\n      target=\"_blank\"\n      rel=\"noreferrer\">\n      Learn more\n    </a>\n  </>\n);\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  // allow empty state\n  if (typeof value !== 'string' || value === '') {\n    return null;\n  }\n\n  // allow expressions\n  if (value.startsWith('=')) {\n    return null;\n  }\n};\n","import {\n  NumberFieldEntry,\n  isNumberFieldEntryEdited,\n  TextFieldEntry,\n  isTextFieldEntryEdited,\n} from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\nimport { useService } from '../hooks';\nimport { countDecimals, isValidNumber } from '../Util';\n\nimport Big from 'big.js';\nimport { useCallback } from 'preact/hooks';\n\nexport function NumberEntries(props) {\n  const { editField, field, id } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: id + '-decimalDigits',\n    component: NumberDecimalDigits,\n    isEdited: isNumberFieldEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) => field.type === 'number',\n  });\n\n  entries.push({\n    id: id + '-step',\n    component: NumberArrowStep,\n    isEdited: isTextFieldEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) => field.type === 'number',\n  });\n\n  return entries;\n}\n\nfunction NumberDecimalDigits(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const getValue = (e) => get(field, ['decimalDigits']);\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, ['decimalDigits'], value);\n  };\n\n  return NumberFieldEntry({\n    debounce,\n    label: 'Decimal digits',\n    element: field,\n    step: 'any',\n    getValue,\n    id,\n    setValue,\n    validate: validateNumberEntries,\n  });\n}\n\nfunction NumberArrowStep(props) {\n  const { editField, field, id } = props;\n\n  const { decimalDigits } = field;\n\n  const debounce = useService('debounce');\n\n  const getValue = (e) => {\n    let value = get(field, ['increment']);\n\n    if (!isValidNumber(value)) return null;\n\n    return value;\n  };\n\n  const clearLeadingZeroes = (value) => {\n    if (!value) return value;\n    const trimmed = value.replace(/^0+/g, '');\n    return (trimmed.startsWith('.') ? '0' : '') + trimmed;\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, ['increment'], clearLeadingZeroes(value));\n  };\n\n  const decimalDigitsSet = decimalDigits || decimalDigits === 0;\n\n  const validate = useCallback(\n    (value) => {\n      if (value === undefined || value === null) {\n        return;\n      }\n\n      if (!isValidNumber(value)) {\n        return 'Should be a valid number.';\n      }\n\n      if (Big(value).cmp(0) <= 0) {\n        return 'Should be greater than zero.';\n      }\n\n      if (decimalDigitsSet) {\n        const minimumValue = Big(`1e-${decimalDigits}`);\n\n        if (Big(value).cmp(minimumValue) < 0) {\n          return `Should be at least ${minimumValue.toString()}.`;\n        }\n\n        if (countDecimals(value) > decimalDigits) {\n          return `Should not contain more than ${decimalDigits} decimal digits.`;\n        }\n      }\n    },\n    [decimalDigitsSet, decimalDigits],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    label: 'Increment',\n    element: field,\n    getValue,\n    id,\n    setValue,\n    validate,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {number|void} value\n * @returns {string|void}\n */\nconst validateNumberEntries = (value) => {\n  if (typeof value !== 'number') {\n    return;\n  }\n\n  if (!Number.isInteger(value)) {\n    return 'Should be an integer.';\n  }\n\n  if (value < 0) {\n    return 'Should be greater than or equal to zero.';\n  }\n};\n","import { FeelEntry, isFeelEntryEdited, SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\nimport { useService, useVariables } from '../hooks';\n\nexport function ExpressionFieldEntries(props) {\n  const { editField, field, id } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: `${id}-expression`,\n    component: ExpressionFieldExpression,\n    isEdited: isFeelEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) => field.type === 'expression',\n  });\n\n  entries.push({\n    id: `${id}-computeOn`,\n    component: ExpressionFieldComputeOn,\n    isEdited: isSelectEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) => field.type === 'expression',\n  });\n\n  return entries;\n}\n\nfunction ExpressionFieldExpression(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n  const variables = useVariables().map((name) => ({ name }));\n\n  const getValue = () => field.expression || '';\n\n  const setValue = (value) => {\n    editField(field, ['expression'], value);\n  };\n\n  return FeelEntry({\n    debounce,\n    description: 'Define an expression to calculate the value of this field',\n    element: field,\n    feel: 'required',\n    getValue,\n    id,\n    label: 'Target value',\n    setValue,\n    variables,\n  });\n}\n\nfunction ExpressionFieldComputeOn(props) {\n  const { editField, field, id } = props;\n\n  const getValue = () => field.computeOn || '';\n\n  const setValue = (value) => {\n    editField(field, ['computeOn'], value);\n  };\n\n  const getOptions = () => [\n    { value: 'change', label: 'Value changes' },\n    { value: 'presubmit', label: 'Form submission' },\n  ];\n\n  return SelectEntry({\n    id,\n    label: 'Compute on',\n    getValue,\n    setValue,\n    getOptions,\n  });\n}\n","import { CheckboxEntry, isCheckboxEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { get } from 'min-dash';\n\nimport Big from 'big.js';\n\nexport function NumberSerializationEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'serialize-to-string',\n    component: SerializeToString,\n    isEdited: isCheckboxEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) => field.type === 'number',\n  });\n\n  return entries;\n}\n\nfunction SerializeToString(props) {\n  const { editField, field, id } = props;\n\n  const { defaultValue } = field;\n\n  const path = ['serializeToString'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    // Whenever changing the formatting, make sure to change the default value type along with it\n    if (defaultValue || defaultValue === 0) {\n      editField(field, ['defaultValue'], value ? Big(defaultValue).toFixed() : Number(defaultValue));\n    }\n\n    return editField(field, path, value);\n  };\n\n  return CheckboxEntry({\n    element: field,\n    getValue,\n    id,\n    label: 'Output as string',\n    description: 'Allows arbitrary precision values',\n    setValue,\n  });\n}\n","import { CheckboxEntry, isCheckboxEntryEdited, SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\n\nimport {\n  DATETIME_SUBTYPES,\n  DATETIME_SUBTYPES_LABELS,\n  DATETIME_SUBTYPE_PATH,\n  DATE_LABEL_PATH,\n  DATE_DISALLOW_PAST_PATH,\n  TIME_USE24H_PATH,\n  TIME_LABEL_PATH,\n  TIME_INTERVAL_PATH,\n  TIME_SERIALISING_FORMAT_PATH,\n  TIME_SERIALISING_FORMATS,\n} from '@bpmn-io/form-js-viewer';\n\nimport { get } from 'min-dash';\n\nexport function DateTimeEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [\n    {\n      id: 'subtype',\n      component: DateTimeSubtypeSelect,\n      isEdited: isSelectEntryEdited,\n      editField,\n      field,\n      isDefaultVisible: (field) => field.type === 'datetime',\n    },\n  ];\n\n  entries.push({\n    id: 'use24h',\n    component: Use24h,\n    isEdited: isCheckboxEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) =>\n      field.type === 'datetime' &&\n      (field.subtype === DATETIME_SUBTYPES.TIME || field.subtype === DATETIME_SUBTYPES.DATETIME),\n  });\n\n  return entries;\n}\n\nfunction DateTimeSubtypeSelect(props) {\n  const { editField, field, id } = props;\n\n  const getValue = (e) => get(field, DATETIME_SUBTYPE_PATH);\n\n  const clearTimeConfig = () => {\n    const timeConfigPaths = [TIME_LABEL_PATH, TIME_USE24H_PATH, TIME_INTERVAL_PATH, TIME_SERIALISING_FORMAT_PATH];\n    for (const path of timeConfigPaths) {\n      editField(field, path, undefined);\n    }\n  };\n\n  const initTimeConfig = () => {\n    editField(field, TIME_LABEL_PATH, 'Time');\n    editField(field, TIME_SERIALISING_FORMAT_PATH, TIME_SERIALISING_FORMATS.UTC_OFFSET);\n    editField(field, TIME_INTERVAL_PATH, 15);\n  };\n\n  const clearDateConfig = () => {\n    const dateConfigPaths = [DATE_LABEL_PATH, DATE_DISALLOW_PAST_PATH];\n    for (const path of dateConfigPaths) {\n      editField(field, path, undefined);\n    }\n  };\n\n  const initDateConfig = () => {\n    editField(field, DATE_LABEL_PATH, 'Date');\n  };\n\n  const setValue = (value) => {\n    const oldValue = getValue();\n\n    if (oldValue === value) return;\n\n    if (value === DATETIME_SUBTYPES.DATE) {\n      clearTimeConfig();\n      oldValue === DATETIME_SUBTYPES.TIME && initDateConfig();\n    } else if (value === DATETIME_SUBTYPES.TIME) {\n      clearDateConfig();\n      oldValue === DATETIME_SUBTYPES.DATE && initTimeConfig();\n    } else if (value === DATETIME_SUBTYPES.DATETIME) {\n      oldValue === DATETIME_SUBTYPES.DATE && initTimeConfig();\n      oldValue === DATETIME_SUBTYPES.TIME && initDateConfig();\n    }\n\n    return editField(field, DATETIME_SUBTYPE_PATH, value);\n  };\n\n  const getDatetimeSubtypes = () => {\n    return Object.values(DATETIME_SUBTYPES).map((subtype) => ({\n      label: DATETIME_SUBTYPES_LABELS[subtype],\n      value: subtype,\n    }));\n  };\n\n  return SelectEntry({\n    label: 'Subtype',\n    element: field,\n    getOptions: getDatetimeSubtypes,\n    getValue,\n    id,\n    setValue,\n  });\n}\n\nfunction Use24h(props) {\n  const { editField, field, id } = props;\n\n  const path = TIME_USE24H_PATH;\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return CheckboxEntry({\n    element: field,\n    getValue,\n    id,\n    label: 'Use 24h',\n    setValue,\n  });\n}\n","import { CheckboxEntry, isCheckboxEntryEdited, SelectEntry } from '@bpmn-io/properties-panel';\n\nimport { DATETIME_SUBTYPES, DATE_DISALLOW_PAST_PATH, TIME_INTERVAL_PATH } from '@bpmn-io/form-js-viewer';\n\nimport { get } from 'min-dash';\nimport { isEditedFromDefaultFactory } from '../Util';\n\nconst isTimeIntervalEdited = isEditedFromDefaultFactory('15');\n\nexport function DateTimeConstraintsEntry(props) {\n  const { editField, field, id } = props;\n\n  function isDefaultVisible(subtypes) {\n    return (field) => {\n      if (field.type !== 'datetime') {\n        return false;\n      }\n\n      return subtypes.includes(field.subtype);\n    };\n  }\n\n  const entries = [];\n\n  entries.push({\n    id: id + '-timeInterval',\n    component: TimeIntervalSelect,\n    isEdited: isTimeIntervalEdited,\n    editField,\n    field,\n    isDefaultVisible: isDefaultVisible([DATETIME_SUBTYPES.TIME, DATETIME_SUBTYPES.DATETIME]),\n  });\n\n  entries.push({\n    id: id + '-disallowPassedDates',\n    component: DisallowPassedDates,\n    isEdited: isCheckboxEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: isDefaultVisible([DATETIME_SUBTYPES.DATE, DATETIME_SUBTYPES.DATETIME]),\n  });\n\n  return entries;\n}\n\nfunction DisallowPassedDates(props) {\n  const { editField, field, id } = props;\n\n  const path = DATE_DISALLOW_PAST_PATH;\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return CheckboxEntry({\n    element: field,\n    getValue,\n    id,\n    label: 'Disallow past dates',\n    setValue,\n  });\n}\n\nfunction TimeIntervalSelect(props) {\n  const { editField, field, id } = props;\n\n  const timeIntervals = [1, 5, 10, 15, 30, 60];\n\n  const getValue = (e) => get(field, TIME_INTERVAL_PATH);\n\n  const setValue = (value) => editField(field, TIME_INTERVAL_PATH, parseInt(value));\n\n  const getTimeIntervals = () => {\n    return timeIntervals.map((timeInterval) => ({\n      label: timeInterval === 60 ? '1h' : timeInterval + 'm',\n      value: timeInterval,\n    }));\n  };\n\n  return SelectEntry({\n    label: 'Time interval',\n    element: field,\n    getOptions: getTimeIntervals,\n    getValue,\n    id,\n    setValue,\n  });\n}\n","import { SelectEntry } from '@bpmn-io/properties-panel';\n\nimport {\n  DATETIME_SUBTYPES,\n  TIME_SERIALISING_FORMATS,\n  TIME_SERIALISINGFORMAT_LABELS,\n  TIME_SERIALISING_FORMAT_PATH,\n} from '@bpmn-io/form-js-viewer';\n\nimport { get } from 'min-dash';\nimport { isEditedFromDefaultFactory } from '../Util';\n\nconst isTimeFormatEdited = isEditedFromDefaultFactory(TIME_SERIALISING_FORMATS.UTC_OFFSET);\n\nexport function DateTimeFormatEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'time-format',\n    component: TimeFormatSelect,\n    isEdited: isTimeFormatEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) =>\n      field.type === 'datetime' &&\n      (field.subtype === DATETIME_SUBTYPES.TIME || field.subtype === DATETIME_SUBTYPES.DATETIME),\n  });\n\n  return entries;\n}\n\nfunction TimeFormatSelect(props) {\n  const { editField, field, id } = props;\n\n  const getValue = (e) => get(field, TIME_SERIALISING_FORMAT_PATH);\n\n  const setValue = (value) => editField(field, TIME_SERIALISING_FORMAT_PATH, value);\n\n  const getTimeSerialisingFormats = () => {\n    return Object.values(TIME_SERIALISING_FORMATS).map((format) => ({\n      label: TIME_SERIALISINGFORMAT_LABELS[format],\n      value: format,\n    }));\n  };\n\n  return SelectEntry({\n    label: 'Time format',\n    element: field,\n    getOptions: getTimeSerialisingFormats,\n    getValue,\n    id,\n    setValue,\n  });\n}\n","import { simpleBoolEntryFactory } from './factories';\n\nexport function SelectEntries(props) {\n  const entries = [\n    simpleBoolEntryFactory({\n      id: 'searchable',\n      path: ['searchable'],\n      label: 'Searchable',\n      props,\n      isDefaultVisible: (field) => field.type === 'select',\n    }),\n  ];\n\n  return entries;\n}\n","import { get, isNil, set } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\nimport { useMemo } from 'preact/hooks';\n\nexport function ValueEntry(props) {\n  const { editField, field, idPrefix, index, validateFactory } = props;\n\n  const entries = [\n    {\n      component: Label,\n      editField,\n      field,\n      id: idPrefix + '-label',\n      idPrefix,\n      index,\n      validateFactory,\n    },\n    {\n      component: Value,\n      editField,\n      field,\n      id: idPrefix + '-value',\n      idPrefix,\n      index,\n      validateFactory,\n    },\n  ];\n\n  return entries;\n}\n\nfunction Label(props) {\n  const { editField, field, id, index, validateFactory } = props;\n\n  const debounce = useService('debounce');\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    const values = get(field, ['values']);\n    return editField(field, 'values', set(values, [index, 'label'], value));\n  };\n\n  const getValue = () => {\n    return get(field, ['values', index, 'label']);\n  };\n\n  const validate = useMemo(\n    () => validateFactory(get(field, ['values', index, 'label']), (entry) => entry.label),\n    [field, index, validateFactory],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Label',\n    setValue,\n    validate,\n  });\n}\n\nfunction Value(props) {\n  const { editField, field, id, index, validateFactory } = props;\n\n  const debounce = useService('debounce');\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    const { defaultValue } = field;\n    const values = get(field, ['values']);\n    const previousValue = get(field, ['values', index, 'value']);\n\n    if (!isNil(defaultValue) && defaultValue === previousValue) {\n      set(field, ['defaultValue'], value);\n    }\n\n    return editField(field, 'values', set(values, [index, 'value'], value));\n  };\n\n  const getValue = () => {\n    return get(field, ['values', index, 'value']);\n  };\n\n  const validate = useMemo(\n    () => validateFactory(get(field, ['values', index, 'value']), (entry) => entry.value),\n    [field, index, validateFactory],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Value',\n    setValue,\n    validate,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\nimport { useMemo } from 'preact/hooks';\n\nexport function CustomValueEntry(props) {\n  const { editField, field, idPrefix, index, validateFactory } = props;\n\n  const entries = [\n    {\n      component: Key,\n      editField,\n      field,\n      id: idPrefix + '-key',\n      idPrefix,\n      index,\n      validateFactory,\n    },\n    {\n      component: Value,\n      editField,\n      field,\n      id: idPrefix + '-value',\n      idPrefix,\n      index,\n      validateFactory,\n    },\n  ];\n\n  return entries;\n}\n\nfunction Key(props) {\n  const { editField, field, id, index, validateFactory } = props;\n\n  const debounce = useService('debounce');\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    const properties = get(field, ['properties']);\n    const key = Object.keys(properties)[index];\n    return editField(field, 'properties', updateKey(properties, key, value));\n  };\n\n  const getValue = () => {\n    return Object.keys(get(field, ['properties']))[index];\n  };\n\n  const validate = useMemo(\n    () => validateFactory(Object.keys(get(field, ['properties']))[index]),\n    [validateFactory, field, index],\n  );\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Key',\n    setValue,\n    validate,\n  });\n}\n\nfunction Value(props) {\n  const { editField, field, id, index, validateFactory } = props;\n\n  const debounce = useService('debounce');\n\n  const setValue = (value) => {\n    const properties = get(field, ['properties']);\n    const key = Object.keys(properties)[index];\n    editField(field, 'properties', updateValue(properties, key, value));\n  };\n\n  const getValue = () => {\n    const properties = get(field, ['properties']);\n    const key = Object.keys(properties)[index];\n    return get(field, ['properties', key]);\n  };\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Value',\n    setValue,\n    validate: validateFactory(getValue()),\n  });\n}\n\n// helpers //////////\n\n/**\n * Returns copy of object with updated value.\n *\n * @param {Object} properties\n * @param {string} key\n * @param {string} value\n *\n * @returns {Object}\n */\nfunction updateValue(properties, key, value) {\n  return {\n    ...properties,\n    [key]: value,\n  };\n}\n\n/**\n * Returns copy of object with updated key.\n *\n * @param {Object} properties\n * @param {string} oldKey\n * @param {string} newKey\n *\n * @returns {Object}\n */\nfunction updateKey(properties, oldKey, newKey) {\n  return Object.entries(properties).reduce((newProperties, entry) => {\n    const [key, value] = entry;\n\n    return {\n      ...newProperties,\n      [key === oldKey ? newKey : key]: value,\n    };\n  }, {});\n}\n","import { useEffect } from 'preact/hooks';\n\nimport { SelectEntry, usePrevious } from '@bpmn-io/properties-panel';\n\nimport { useService } from '../hooks';\n\nexport function AutoFocusSelectEntry(props) {\n  const { autoFocusEntry, element, getValue } = props;\n\n  const value = getValue(element);\n  const prevValue = usePrevious(value);\n\n  const eventBus = useService('eventBus');\n\n  // auto focus specifc other entry when selected value changed\n  useEffect(() => {\n    if (autoFocusEntry && prevValue && value !== prevValue) {\n      // @Note(pinussilvestrus): There is an issue in the properties\n      // panel so we have to wait a bit before showing the entry.\n      // Cf. https://github.com/camunda/linting/blob/4f5328e2722f73ae60ae584c5f576eaec3999cb2/lib/modeler/Linting.js#L37\n      setTimeout(() => {\n        eventBus.fire('propertiesPanel.showEntry', {\n          id: autoFocusEntry,\n        });\n      });\n    }\n  }, [value, autoFocusEntry, prevValue, eventBus]);\n\n  return <SelectEntry {...props} />;\n}\n","import { isEditedFromDefaultFactory } from '../Util';\n\nimport { AutoFocusSelectEntry } from '../components';\n\nimport {\n  getOptionsSource,\n  OPTIONS_SOURCES,\n  OPTIONS_SOURCES_DEFAULTS,\n  OPTIONS_SOURCES_LABELS,\n  OPTIONS_SOURCES_PATHS,\n} from '@bpmn-io/form-js-viewer';\n\nconst isOptionsSourceEdited = isEditedFromDefaultFactory(OPTIONS_SOURCES.STATIC);\n\nexport function OptionsSourceSelectEntry(props) {\n  const { editField, field, id } = props;\n\n  return [\n    {\n      id: id + '-select',\n      component: ValuesSourceSelect,\n      isEdited: isOptionsSourceEdited,\n      editField,\n      field,\n    },\n  ];\n}\n\nfunction ValuesSourceSelect(props) {\n  const { editField, field, id } = props;\n\n  const getValue = getOptionsSource;\n\n  const setValue = (value) => {\n    let newField = field;\n\n    const newProperties = {};\n\n    newProperties[OPTIONS_SOURCES_PATHS[value]] = OPTIONS_SOURCES_DEFAULTS[value];\n\n    newField = editField(field, newProperties);\n    return newField;\n  };\n\n  const getOptionsSourceOptions = () => {\n    return Object.values(OPTIONS_SOURCES).map((valueSource) => ({\n      label: OPTIONS_SOURCES_LABELS[valueSource],\n      value: valueSource,\n    }));\n  };\n\n  return AutoFocusSelectEntry({\n    autoFocusEntry: getAutoFocusEntryId(field),\n    label: 'Type',\n    element: field,\n    getOptions: getOptionsSourceOptions,\n    getValue,\n    id,\n    setValue,\n  });\n}\n\n// helpers //////////\n\nfunction getAutoFocusEntryId(field) {\n  const valuesSource = getOptionsSource(field);\n\n  if (valuesSource === OPTIONS_SOURCES.EXPRESSION) {\n    return 'optionsExpression-expression';\n  } else if (valuesSource === OPTIONS_SOURCES.INPUT) {\n    return 'dynamicOptions-key';\n  } else if (valuesSource === OPTIONS_SOURCES.STATIC) {\n    return 'staticOptions-0-label';\n  }\n\n  return null;\n}\n","import { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\nimport { useService } from '../hooks';\nimport { OPTIONS_SOURCES, OPTIONS_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport function InputKeyOptionsSourceEntry(props) {\n  const { editField, field, id } = props;\n\n  return [\n    {\n      id: id + '-key',\n      component: InputValuesKey,\n      isEdited: isTextFieldEntryEdited,\n      editField,\n      field,\n    },\n  ];\n}\n\nfunction InputValuesKey(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const path = OPTIONS_SOURCES_PATHS[OPTIONS_SOURCES.INPUT];\n\n  const schema = '[\\n  {\\n    \"label\": \"dollar\",\\n    \"value\": \"$\"\\n  }\\n]';\n\n  const tooltip = (\n    <div>\n      The input property may be an array of simple values or alternatively follow this schema:\n      <pre>\n        <code>{schema}</code>\n      </pre>\n    </div>\n  );\n\n  const getValue = () => get(field, path, '');\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, path, value || '');\n  };\n\n  return TextFieldEntry({\n    debounce,\n    description: 'Define which input property to populate the values from',\n    tooltip,\n    element: field,\n    getValue,\n    id,\n    label: 'Input values key',\n    setValue,\n    validate,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (typeof value !== 'string' || value.length === 0) {\n    return 'Must not be empty.';\n  }\n\n  if (/\\s/.test(value)) {\n    return 'Must not contain spaces.';\n  }\n\n  return null;\n};\n","import { without } from 'min-dash';\nimport { arrayAdd } from '../Util';\nimport { ValueEntry } from './ValueEntry';\nimport { OPTIONS_SOURCES, OPTIONS_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport function StaticOptionsSourceEntry(props) {\n  const { editField, field, id: idPrefix } = props;\n\n  const { values } = field;\n\n  const addEntry = (e) => {\n    e.stopPropagation();\n\n    const index = values.length + 1;\n\n    const entry = getIndexedEntry(index, values);\n\n    editField(field, OPTIONS_SOURCES_PATHS[OPTIONS_SOURCES.STATIC], arrayAdd(values, values.length, entry));\n  };\n\n  const removeEntry = (entry) => {\n    if (field.defaultValue === entry.value) {\n      editField(field, {\n        values: without(values, entry),\n        defaultValue: undefined,\n      });\n    } else {\n      editField(field, OPTIONS_SOURCES_PATHS[OPTIONS_SOURCES.STATIC], without(values, entry));\n    }\n  };\n\n  const validateFactory = (key, getValue) => {\n    return (value) => {\n      if (value === key) {\n        return;\n      }\n\n      if (typeof value !== 'string' || value.length === 0) {\n        return 'Must not be empty.';\n      }\n\n      const isValueAssigned = values.find((entry) => getValue(entry) === value);\n\n      if (isValueAssigned) {\n        return 'Must be unique.';\n      }\n    };\n  };\n\n  const items = values.map((entry, index) => {\n    const id = idPrefix + '-' + index;\n\n    return {\n      id,\n      label: entry.label,\n      entries: ValueEntry({\n        editField,\n        field,\n        idPrefix: id,\n        index,\n        validateFactory,\n      }),\n      autoFocusEntry: id + '-label',\n      remove: () => removeEntry(entry),\n    };\n  });\n\n  return {\n    items,\n    add: addEntry,\n  };\n}\n\n// helper\n\nfunction getIndexedEntry(index, values) {\n  const entry = {\n    label: 'Value',\n    value: 'value',\n  };\n\n  while (labelOrValueIsAlreadyAssignedForIndex(index, values)) {\n    index++;\n  }\n\n  if (index > 1) {\n    entry.label += ` ${index}`;\n    entry.value += `${index}`;\n  }\n\n  return entry;\n}\n\nfunction labelOrValueIsAlreadyAssignedForIndex(index, values) {\n  return values.some(\n    (existingEntry) => existingEntry.label === `Value ${index}` || existingEntry.value === `value${index}`,\n  );\n}\n","import { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { get, set } from 'min-dash';\nimport { useService, useVariables } from '../hooks';\n\nexport function AdornerEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  const onChange = (key) => {\n    return (value) => {\n      const appearance = get(field, ['appearance'], {});\n\n      editField(field, ['appearance'], set(appearance, [key], value));\n    };\n  };\n\n  const getValue = (key) => {\n    return () => {\n      return get(field, ['appearance', key]);\n    };\n  };\n\n  entries.push({\n    id: 'prefix-adorner',\n    component: PrefixAdorner,\n    isEdited: isFeelEntryEdited,\n    editField,\n    field,\n    onChange,\n    getValue,\n    isDefaultVisible: (field) => ['number', 'textfield'].includes(field.type),\n  });\n\n  entries.push({\n    id: 'suffix-adorner',\n    component: SuffixAdorner,\n    isEdited: isFeelEntryEdited,\n    editField,\n    field,\n    onChange,\n    getValue,\n    isDefaultVisible: (field) => ['number', 'textfield'].includes(field.type),\n  });\n\n  return entries;\n}\n\nfunction PrefixAdorner(props) {\n  const { field, id, onChange, getValue } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue: getValue('prefixAdorner'),\n    id,\n    label: 'Prefix',\n    setValue: onChange('prefixAdorner'),\n    singleLine: true,\n    variables,\n  });\n}\n\nfunction SuffixAdorner(props) {\n  const { field, id, onChange, getValue } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue: getValue('suffixAdorner'),\n    id,\n    label: 'Suffix',\n    setValue: onChange('suffixAdorner'),\n    singleLine: true,\n    variables,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelToggleSwitchEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function ReadonlyEntry(props) {\n  const { editField, field } = props;\n\n  const { disabled } = field;\n\n  const entries = [];\n\n  if (!disabled) {\n    entries.push({\n      id: 'readonly',\n      component: Readonly,\n      editField: editField,\n      field: field,\n      isEdited: isFeelEntryEdited,\n      isDefaultVisible: (field) => INPUTS.includes(field.type),\n    });\n  }\n\n  return entries;\n}\n\nfunction Readonly(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['readonly'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value || false);\n  };\n\n  return FeelToggleSwitchEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue,\n    id,\n    label: 'Read only',\n    tooltip:\n      'Make this field read-only when it cannot be edited by the end-user, but its content is important for them to see. Its data will still be submitted.',\n    setValue,\n    variables,\n  });\n}\n","import { simpleSelectEntryFactory } from './factories';\n\nexport function LayouterAppearanceEntry(props) {\n  const { field } = props;\n\n  if (!['group', 'dynamiclist'].includes(field.type)) {\n    return [];\n  }\n\n  const entries = [\n    simpleSelectEntryFactory({\n      id: 'verticalAlignment',\n      path: ['verticalAlignment'],\n      label: 'Vertical alignment',\n      optionsArray: [\n        { value: 'start', label: 'Top' },\n        { value: 'center', label: 'Center' },\n        { value: 'end', label: 'Bottom' },\n      ],\n      props,\n    }),\n  ];\n\n  return entries;\n}\n","import { simpleRangeIntegerEntryFactory, simpleBoolEntryFactory } from './factories';\n\nexport function RepeatableEntry(props) {\n  const { field, getService } = props;\n\n  const { type } = field;\n\n  const formFieldDefinition = getService('formFields').get(type);\n\n  if (!formFieldDefinition || !formFieldDefinition.config.repeatable) {\n    return [];\n  }\n\n  const entries = [\n    simpleRangeIntegerEntryFactory({\n      id: 'defaultRepetitions',\n      path: ['defaultRepetitions'],\n      label: 'Default number of items',\n      min: 1,\n      max: 100,\n      props,\n    }),\n    simpleBoolEntryFactory({\n      id: 'allowAddRemove',\n      path: ['allowAddRemove'],\n      label: 'Allow add/delete items',\n      props,\n    }),\n    simpleBoolEntryFactory({\n      id: 'disableCollapse',\n      path: ['disableCollapse'],\n      label: 'Disable collapse',\n      props,\n    }),\n  ];\n\n  if (!field.disableCollapse) {\n    const nonCollapseItemsEntry = simpleRangeIntegerEntryFactory({\n      id: 'nonCollapsedItems',\n      path: ['nonCollapsedItems'],\n      label: 'Number of non-collapsing items',\n      min: 1,\n      defaultValue: 5,\n      props,\n    });\n\n    entries.push(nonCollapseItemsEntry);\n  }\n\n  return entries;\n}\n","import { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nexport function ConditionEntry(props) {\n  const { editField, field } = props;\n\n  return [\n    {\n      id: 'conditional-hide',\n      component: Condition,\n      editField: editField,\n      field: field,\n      isEdited: isFeelEntryEdited,\n    },\n  ];\n}\n\nfunction Condition(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['conditional', 'hide'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    if (!value) {\n      return editField(field, 'conditional', undefined);\n    }\n\n    return editField(field, 'conditional', { hide: value });\n  };\n\n  let label = 'Hide if';\n  let description = 'Condition under which the field is hidden';\n\n  // special case for expression fields which do not render\n  if (field.type === 'expression') {\n    label = 'Deactivate if';\n    description = 'Condition under which the field is deactivated';\n  }\n\n  return FeelEntry({\n    debounce,\n    description,\n    element: field,\n    feel: 'required',\n    getValue,\n    id,\n    label,\n    setValue,\n    variables,\n  });\n}\n","import { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\nimport { useService, useVariables } from '../hooks';\nimport { OPTIONS_SOURCES, OPTIONS_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport function OptionsExpressionEntry(props) {\n  const { editField, field, id } = props;\n\n  return [\n    {\n      id: id + '-expression',\n      component: OptionsExpression,\n      isEdited: isFeelEntryEdited,\n      editField,\n      field,\n    },\n  ];\n}\n\nfunction OptionsExpression(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = OPTIONS_SOURCES_PATHS[OPTIONS_SOURCES.EXPRESSION];\n\n  const schema = '[\\n  {\\n    \"label\": \"dollar\",\\n    \"value\": \"$\"\\n  }\\n]';\n\n  const tooltip = (\n    <div>\n      The expression may result in an array of simple values or alternatively follow this schema:\n      <pre>\n        <code>{schema}</code>\n      </pre>\n    </div>\n  );\n\n  const getValue = () => get(field, path, '');\n\n  const setValue = (value) => editField(field, path, value || '');\n\n  return FeelEntry({\n    debounce,\n    description: 'Define an expression to populate the options from.',\n    tooltip,\n    element: field,\n    feel: 'required',\n    getValue,\n    id,\n    label: 'Options expression',\n    setValue,\n    variables,\n  });\n}\n","import { get, isString } from 'min-dash';\n\nimport { hasIntegerPathSegment, isValidDotPath } from '../Util';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function TableDataSourceEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n  entries.push({\n    id: 'dataSource',\n    component: Source,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'table',\n  });\n\n  return entries;\n}\n\nfunction Source(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['dataSource'];\n\n  const getValue = () => {\n    return get(field, path, field.id);\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, path, value);\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    description: 'Specify the source from which to populate the table',\n    element: field,\n    feel: 'required',\n    getValue,\n    id,\n    label: 'Data source',\n    tooltip:\n      'Enter a form input variable that contains the data for the table or define an expression to populate the data dynamically.',\n    setValue,\n    singleLine: true,\n    variables,\n    validate,\n  });\n}\n\n// helper ////////////////\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (!isString(value) || value.length === 0) {\n    return 'Must not be empty.';\n  }\n\n  if (value.startsWith('=')) {\n    return null;\n  }\n\n  if (!isValidDotPath(value)) {\n    return 'Must be a variable or a dot separated path.';\n  }\n\n  if (hasIntegerPathSegment(value)) {\n    return 'Must not contain numerical path segments.';\n  }\n\n  return null;\n};\n","import { get, isNumber } from 'min-dash';\n\nimport { ToggleSwitchEntry, isToggleSwitchEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function PaginationEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'pagination',\n    component: Pagination,\n    editField: editField,\n    field: field,\n    isEdited: isToggleSwitchEntryEdited,\n    isDefaultVisible: (field) => field.type === 'table',\n  });\n\n  return entries;\n}\n\nfunction Pagination(props) {\n  const { editField, field, id } = props;\n  const defaultRowCount = 10;\n\n  const path = ['rowCount'];\n\n  const getValue = () => {\n    return isNumber(get(field, path));\n  };\n\n  /**\n   * @param {boolean} value\n   */\n  const setValue = (value) => {\n    value ? editField(field, path, defaultRowCount) : editField(field, path, undefined);\n  };\n\n  return ToggleSwitchEntry({\n    element: field,\n    getValue,\n    id,\n    label: 'Pagination',\n    inline: true,\n    setValue,\n  });\n}\n","import { NumberFieldEntry, isNumberFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { get, isNumber, isNil } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nconst path = ['rowCount'];\n\nexport function RowCountEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'rowCount',\n    component: RowCount,\n    isEdited: isNumberFieldEntryEdited,\n    editField,\n    field,\n    isDefaultVisible: (field) => field.type === 'table' && isNumber(get(field, path)),\n  });\n\n  return entries;\n}\n\nfunction RowCount(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const getValue = () => get(field, path);\n\n  /**\n   * @param {number|void} value\n   * @param {string|null} error\n   * @returns {void}\n   */\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, path, value);\n  };\n\n  return NumberFieldEntry({\n    debounce,\n    label: 'Number of rows per page',\n    element: field,\n    id,\n    getValue,\n    setValue,\n    validate,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (isNil(value)) {\n    return null;\n  }\n\n  if (!isNumber(value)) {\n    return 'Must be number';\n  }\n\n  if (!Number.isInteger(value)) {\n    return 'Should be an integer.';\n  }\n\n  if (value < 1) {\n    return 'Should be greater than zero.';\n  }\n\n  return null;\n};\n","import { AutoFocusSelectEntry } from '../components';\n\nimport { get, isString, isArray } from 'min-dash';\nimport { isEditedFromDefaultFactory } from '../Util';\n\nconst OPTIONS = {\n  static: {\n    label: 'List of items',\n    value: 'static',\n  },\n  expression: {\n    label: 'Expression',\n    value: 'expression',\n  },\n};\n\nconst SELECT_OPTIONS = Object.values(OPTIONS);\n\nconst COLUMNS_PATH = ['columns'];\n\nconst COLUMNS_EXPRESSION_PATH = ['columnsExpression'];\n\nconst isHeadersSourceEdited = isEditedFromDefaultFactory(OPTIONS.static.value);\n\nexport function HeadersSourceSelectEntry(props) {\n  const { editField, field, id } = props;\n\n  return [\n    {\n      id: id + '-select',\n      component: HeadersSourceSelect,\n      isEdited: isHeadersSourceEdited,\n      editField,\n      field,\n    },\n  ];\n}\n\nfunction HeadersSourceSelect(props) {\n  const { editField, field, id } = props;\n\n  /**\n   * @returns {string|void}\n   */\n  const getValue = () => {\n    const columns = get(field, COLUMNS_PATH);\n    const columnsExpression = get(field, COLUMNS_EXPRESSION_PATH);\n\n    if (isString(columnsExpression)) {\n      return OPTIONS.expression.value;\n    }\n\n    if (isArray(columns)) {\n      return OPTIONS.static.value;\n    }\n  };\n\n  /**\n   * @param {string|void} value\n   */\n  const setValue = (value) => {\n    switch (value) {\n      case OPTIONS.static.value:\n        editField(field, {\n          columns: [\n            {\n              label: 'Column',\n              key: 'inputVariable',\n            },\n          ],\n        });\n        break;\n      case OPTIONS.expression.value:\n        editField(field, {\n          columnsExpression: '=',\n        });\n        break;\n    }\n  };\n\n  const getValuesSourceOptions = () => {\n    return SELECT_OPTIONS;\n  };\n\n  return AutoFocusSelectEntry({\n    autoFocusEntry: getAutoFocusEntryId(field),\n    label: 'Type',\n    element: field,\n    getOptions: getValuesSourceOptions,\n    getValue,\n    id,\n    setValue,\n  });\n}\n\n// helpers //////////\n\nfunction getAutoFocusEntryId(field) {\n  const columns = get(field, COLUMNS_PATH);\n  const columnsExpression = get(field, COLUMNS_EXPRESSION_PATH);\n\n  if (isString(columnsExpression)) {\n    return `${field.id}-columnsExpression`;\n  }\n\n  if (isArray(columns)) {\n    return `${field.id}-columns-0-label`;\n  }\n\n  return null;\n}\n","import { get, isString } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nconst PATH = ['columnsExpression'];\n\nexport function ColumnsExpressionEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n  entries.push({\n    id: `${field.id}-columnsExpression`,\n    component: ColumnsExpression,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'table' && isString(get(field, PATH)),\n  });\n\n  return entries;\n}\n\nfunction ColumnsExpression(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const getValue = () => {\n    return get(field, PATH);\n  };\n\n  /**\n   * @param {string|void} value\n   * @param {string|void} error\n   * @returns {void}\n   */\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    editField(field, PATH, value);\n  };\n\n  const schema = '[\\n  {\\n    \"key\": \"column_1\",\\n    \"label\": \"Column 1\"\\n  }\\n]';\n\n  const tooltip = (\n    <div>\n      The expression may result in an array of simple values or alternatively follow this schema:\n      <pre>\n        <code>{schema}</code>\n      </pre>\n    </div>\n  );\n\n  return FeelTemplatingEntry({\n    debounce,\n    description: 'Specify an expression to populate column items',\n    element: field,\n    feel: 'required',\n    getValue,\n    id,\n    label: 'Expression',\n    tooltip,\n    setValue,\n    singleLine: true,\n    variables,\n    validate,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (!isString(value) || value.length === 0 || value === '=') {\n    return 'Must not be empty.';\n  }\n\n  return null;\n};\n","import { get, set, isString } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\n\nconst path = 'columns';\nconst labelPath = 'label';\nconst keyPath = 'key';\n\nexport function ColumnEntry(props) {\n  const { editField, field, idPrefix, index } = props;\n\n  const entries = [\n    {\n      component: Label,\n      editField,\n      field,\n      id: idPrefix + '-label',\n      idPrefix,\n      index,\n    },\n    {\n      component: Key,\n      editField,\n      field,\n      id: idPrefix + '-key',\n      idPrefix,\n      index,\n    },\n  ];\n\n  return entries;\n}\n\nfunction Label(props) {\n  const { editField, field, id, index } = props;\n\n  const debounce = useService('debounce');\n\n  /**\n   * @param {string|void} value\n   * @param {string|void} error\n   * @returns {void}\n   */\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    const columns = get(field, [path]);\n    editField(field, path, set(columns, [index, labelPath], value));\n  };\n\n  const getValue = () => {\n    return get(field, [path, index, labelPath]);\n  };\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Label',\n    setValue,\n  });\n}\n\nfunction Key(props) {\n  const { editField, field, id, index } = props;\n\n  const debounce = useService('debounce');\n\n  /**\n   * @param {string|void} value\n   * @param {string|void} error\n   * @returns {void}\n   */\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    const columns = get(field, [path]);\n    editField(field, path, set(columns, [index, keyPath], value));\n  };\n\n  const getValue = () => {\n    return get(field, [path, index, keyPath]);\n  };\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Key',\n    setValue,\n    validate,\n  });\n}\n\n// helpers //////////////////////\n\n/**\n * @param {string|void} value\n * @returns {string|null}\n */\nfunction validate(value) {\n  if (!isString(value) || value.length === 0) {\n    return 'Must not be empty.';\n  }\n\n  return null;\n}\n","import { without } from 'min-dash';\nimport { arrayAdd } from '../Util';\nimport { ColumnEntry } from './ColumnEntry';\n\nconst path = ['columns'];\n\nexport function StaticColumnsSourceEntry(props) {\n  const { editField, field, id: idPrefix } = props;\n\n  const { columns } = field;\n\n  const addEntry = (event) => {\n    event.stopPropagation();\n\n    const entry = {\n      label: 'Column',\n      key: 'inputVariable',\n    };\n\n    editField(field, path, arrayAdd(columns, columns.length, entry));\n  };\n\n  const removeEntry = (entry) => {\n    editField(field, path, without(columns, entry));\n  };\n\n  const items = columns.map((entry, index) => {\n    const id = `${idPrefix}-${index}`;\n\n    return {\n      id,\n      label: entry.label || entry.key,\n      entries: ColumnEntry({\n        editField,\n        field,\n        idPrefix: id,\n        index,\n      }),\n      autoFocusEntry: `${id}-label`,\n      remove: () => removeEntry(entry),\n    };\n  });\n\n  return {\n    items,\n    add: addEntry,\n  };\n}\n","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function VersionTagEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'versionTag',\n    component: VersionTag,\n    editField: editField,\n    field: field,\n    isEdited: isTextFieldEntryEdited,\n    isDefaultVisible: (field) => field.type === 'default',\n  });\n\n  return entries;\n}\n\nfunction VersionTag(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const path = ['versionTag'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value, error) => {\n    if (error) {\n      return;\n    }\n\n    return editField(field, path, value);\n  };\n\n  const tooltip = <div>Version tag by which this form can be referenced.</div>;\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Version tag',\n    setValue,\n    tooltip,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function AcceptEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'accept',\n    component: Accept,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'filepicker',\n  });\n\n  return entries;\n}\n\nfunction Accept(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['accept'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Supported file formats',\n    singleLine: true,\n    setValue,\n    variables,\n    description,\n  });\n}\n\n// helpers //////////\n\nconst description = (\n  <>\n    A comma-separated list of{' '}\n    <a\n      href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers\"\n      target=\"_blank\"\n      rel=\"noreferrer\">\n      file type specifiers\n    </a>\n  </>\n);\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelToggleSwitchEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function MultipleEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'multiple',\n    component: Multiple,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'filepicker',\n  });\n\n  return entries;\n}\n\nfunction Multiple(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['multiple'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return FeelToggleSwitchEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue,\n    id,\n    label: 'Upload multiple files',\n    inline: true,\n    setValue,\n    variables,\n  });\n}\n","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelTemplatingEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function DocumentsDataSourceEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'dataSource',\n    component: DocumentsDataSource,\n    editField: editField,\n    field: field,\n    isEdited: isFeelEntryEdited,\n    isDefaultVisible: (field) => field.type === 'documentPreview',\n  });\n\n  return entries;\n}\n\nfunction DocumentsDataSource(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  const path = ['dataSource'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  const schema = `[\n  {\n    \"documentId\": \"u123\",\n    \"endpoint\": \"https://api.example.com/documents/u123\",\n    \"metadata\": {\n      \"fileName\": \"Document.pdf\",\n      \"contentType\": \"application/pdf\"\n    }\n  }\n]`;\n\n  const tooltip = (\n    <div>\n      <p>A source is a JSON object containing metadata for a document or an array of documents.</p>\n      <p>Each entry must include a document ID, name, and MIME type.</p>\n      <p>Additional details are optional. The expected format is as follows:</p>\n      <pre>\n        <code>{schema}</code>\n      </pre>\n      <p>\n        When using Camunda Tasklist UI, additional document reference attributes are automatically handled. Modifying\n        the document reference may affect the document preview functionality.\n      </p>\n      <p>\n        Learn more in our{' '}\n        <a\n          href=\"https://docs.camunda.io/docs/components/modeler/forms/form-element-library/forms-element-library-document-preview/\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\">\n          documentation\n        </a>\n        .\n      </p>\n    </div>\n  );\n\n  return FeelTemplatingEntry({\n    debounce,\n    element: field,\n    getValue,\n    id,\n    label: 'Document reference',\n    feel: 'required',\n    singleLine: true,\n    setValue,\n    variables,\n    tooltip,\n    validate,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {string|undefined} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (typeof value !== 'string' || value.length === 0) {\n    return 'The document data source is required.';\n  }\n};\n","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { NumberFieldEntry, isNumberFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nexport function MaxHeightEntry(props) {\n  const { editField, field } = props;\n\n  const entries = [];\n\n  entries.push({\n    id: 'maxHeight',\n    component: MaxHeight,\n    editField: editField,\n    field: field,\n    isEdited: isNumberFieldEntryEdited,\n    isDefaultVisible: (field) => field.type === 'documentPreview',\n  });\n\n  return entries;\n}\n\nfunction MaxHeight(props) {\n  const { editField, field, id } = props;\n\n  const debounce = useService('debounce');\n\n  const path = ['maxHeight'];\n\n  const getValue = () => {\n    return get(field, path, '');\n  };\n\n  const setValue = (value) => {\n    return editField(field, path, value);\n  };\n\n  return NumberFieldEntry({\n    debounce,\n    label: 'Max height of preview container',\n    element: field,\n    id,\n    getValue,\n    setValue,\n    validate,\n    description,\n  });\n}\n\n// helpers //////////\n\n/**\n * @param {string|number|undefined} value\n * @returns {string|null}\n */\nconst validate = (value) => {\n  if (value === undefined || value === '') {\n    return null;\n  }\n\n  if (typeof value === 'string') {\n    return 'Value must be a number.';\n  }\n\n  if (!Number.isInteger(value)) {\n    return 'Should be an integer.';\n  }\n\n  if (value < 1) {\n    return 'Should be greater than zero.';\n  }\n};\n\nconst description = <>Documents with height that exceeds the defined value will be vertically scrollable</>;\n","import {\n  ActionEntry,\n  AltTextEntry,\n  DescriptionEntry,\n  DefaultValueEntry,\n  DisabledEntry,\n  IdEntry,\n  IFrameUrlEntry,\n  IFrameHeightEntry,\n  ImageSourceEntry,\n  KeyEntry,\n  PathEntry,\n  RepeatableEntry,\n  LabelEntry,\n  ReadonlyEntry,\n  SelectEntries,\n  TextEntry,\n  HtmlEntry,\n  HeightEntry,\n  NumberEntries,\n  ExpressionFieldEntries,\n  DateTimeEntry,\n  TableDataSourceEntry,\n  PaginationEntry,\n  RowCountEntry,\n  VersionTagEntry,\n  AcceptEntry,\n  MultipleEntry,\n  DocumentsDataSourceEntry,\n} from '../entries';\n\nexport function GeneralGroup(field, editField, getService) {\n  const entries = [\n    ...IdEntry({ field, editField }),\n    ...VersionTagEntry({ field, editField }),\n    ...LabelEntry({ field, editField }),\n    ...DescriptionEntry({ field, editField }),\n    ...KeyEntry({ field, editField, getService }),\n    ...PathEntry({ field, editField, getService }),\n    ...RepeatableEntry({ field, editField, getService }),\n    ...DefaultValueEntry({ field, editField }),\n    ...ActionEntry({ field, editField }),\n    ...DateTimeEntry({ field, editField }),\n    ...TextEntry({ field, editField, getService }),\n    ...HtmlEntry({ field, editField, getService }),\n    ...IFrameUrlEntry({ field, editField }),\n    ...IFrameHeightEntry({ field, editField }),\n    ...HeightEntry({ field, editField }),\n    ...NumberEntries({ field, editField }),\n    ...ExpressionFieldEntries({ field, editField }),\n    ...ImageSourceEntry({ field, editField }),\n    ...AltTextEntry({ field, editField }),\n    ...SelectEntries({ field, editField }),\n    ...AcceptEntry({ field, editField }),\n    ...MultipleEntry({ field, editField }),\n    ...DisabledEntry({ field, editField }),\n    ...ReadonlyEntry({ field, editField }),\n    ...TableDataSourceEntry({ field, editField }),\n    ...PaginationEntry({ field, editField }),\n    ...RowCountEntry({ field, editField }),\n    ...DocumentsDataSourceEntry({ field, editField }),\n  ];\n\n  if (entries.length === 0) {\n    return null;\n  }\n\n  return {\n    id: 'general',\n    label: 'General',\n    entries,\n  };\n}\n","import { NumberSerializationEntry, DateTimeFormatEntry } from '../entries';\n\nexport function SerializationGroup(field, editField) {\n  const entries = [...NumberSerializationEntry({ field, editField }), ...DateTimeFormatEntry({ field, editField })];\n\n  if (!entries.length) {\n    return null;\n  }\n\n  return {\n    id: 'serialization',\n    label: 'Serialization',\n    entries,\n  };\n}\n","import { DateTimeConstraintsEntry } from '../entries';\n\nexport function ConstraintsGroup(field, editField) {\n  const entries = [...DateTimeConstraintsEntry({ field, editField })];\n\n  if (!entries.length) {\n    return null;\n  }\n\n  return {\n    id: 'constraints',\n    label: 'Constraints',\n    entries,\n  };\n}\n","import { get, set } from 'min-dash';\n\nimport {\n  CheckboxEntry,\n  isCheckboxEntryEdited,\n  isFeelEntryEdited,\n  FeelNumberEntry,\n  isTextFieldEntryEdited,\n  TextFieldEntry,\n  SelectEntry,\n} from '@bpmn-io/properties-panel';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { INPUTS } from '../Util';\n\nconst VALIDATION_TYPE_OPTIONS = {\n  custom: {\n    value: '',\n    label: 'Custom',\n  },\n  email: {\n    value: 'email',\n    label: 'Email',\n  },\n  phone: {\n    value: 'phone',\n    label: 'Phone',\n  },\n};\n\nexport function ValidationGroup(field, editField) {\n  const { type } = field;\n  const validate = get(field, ['validate'], {});\n  const isCustomValidation = [undefined, VALIDATION_TYPE_OPTIONS.custom.value].includes(validate.validationType);\n  const hasPattern = !!get(field, ['validate', 'pattern']);\n\n  const onChange = (key) => {\n    return (value) => {\n      const validate = get(field, ['validate'], {});\n\n      editField(field, ['validate'], set(validate, [key], value));\n    };\n  };\n\n  const getValue = (key) => {\n    return () => {\n      return get(field, ['validate', key]);\n    };\n  };\n\n  let entries = [\n    {\n      id: 'required',\n      component: Required,\n      getValue,\n      field,\n      isEdited: isCheckboxEntryEdited,\n      onChange,\n      isDefaultVisible: (field) => INPUTS.includes(field.type),\n    },\n  ];\n\n  entries.push({\n    id: 'validationType',\n    component: ValidationType,\n    getValue,\n    field,\n    editField,\n    isEdited: isTextFieldEntryEdited,\n    onChange,\n    isDefaultVisible: (field) => field.type === 'textfield',\n  });\n\n  entries.push(\n    {\n      id: 'minLength',\n      component: MinLength,\n      getValue,\n      field,\n      isEdited: isFeelEntryEdited,\n      onChange,\n      isDefaultVisible: (field) =>\n        INPUTS.includes(field.type) && (type === 'textarea' || (type === 'textfield' && isCustomValidation)),\n    },\n    {\n      id: 'maxLength',\n      component: MaxLength,\n      getValue,\n      field,\n      isEdited: isFeelEntryEdited,\n      onChange,\n      isDefaultVisible: (field) =>\n        INPUTS.includes(field.type) && (type === 'textarea' || (type === 'textfield' && isCustomValidation)),\n    },\n  );\n\n  entries.push({\n    id: 'pattern',\n    component: Pattern,\n    getValue,\n    field,\n    isEdited: isTextFieldEntryEdited,\n    onChange,\n    isDefaultVisible: (field) => INPUTS.includes(field.type) && type === 'textfield' && isCustomValidation,\n  });\n\n  entries.push({\n    id: 'patternErrorMessage',\n    component: PatternErrorMessage,\n    getValue,\n    field,\n    isEdited: isTextFieldEntryEdited,\n    onChange,\n    isDefaultVisible: (field) =>\n      INPUTS.includes(field.type) && type === 'textfield' && isCustomValidation && hasPattern,\n  });\n\n  entries.push(\n    {\n      id: 'min',\n      component: Min,\n      getValue,\n      field,\n      isEdited: isFeelEntryEdited,\n      onChange,\n      isDefaultVisible: (field) => field.type === 'number',\n    },\n    {\n      id: 'max',\n      component: Max,\n      getValue,\n      field,\n      isEdited: isFeelEntryEdited,\n      onChange,\n      isDefaultVisible: (field) => field.type === 'number',\n    },\n  );\n\n  return {\n    id: 'validation',\n    label: 'Validation',\n    entries,\n  };\n}\n\nfunction Required(props) {\n  const { field, getValue, id, onChange } = props;\n\n  return CheckboxEntry({\n    element: field,\n    getValue: getValue('required'),\n    id,\n    label: 'Required',\n    setValue: onChange('required'),\n  });\n}\n\nfunction MinLength(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  return FeelNumberEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue: getValue('minLength'),\n    id,\n    label: 'Minimum length',\n    min: 0,\n    setValue: onChange('minLength'),\n    variables,\n  });\n}\n\nfunction MaxLength(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  return FeelNumberEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    getValue: getValue('maxLength'),\n    id,\n    label: 'Maximum length',\n    min: 0,\n    setValue: onChange('maxLength'),\n    variables,\n  });\n}\n\nfunction Pattern(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue: getValue('pattern'),\n    id,\n    label: 'Custom regular expression',\n    setValue: onChange('pattern'),\n  });\n}\n\nfunction PatternErrorMessage(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  return TextFieldEntry({\n    debounce,\n    element: field,\n    getValue: getValue('patternErrorMessage'),\n    id,\n    label: 'Custom error message',\n    tooltip: 'The error message to display when the input does not match the regular expression.',\n    setValue: onChange('patternErrorMessage'),\n  });\n}\n\nfunction Min(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  return FeelNumberEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    id,\n    label: 'Minimum',\n    step: 'any',\n    getValue: getValue('min'),\n    setValue: onChange('min'),\n    variables,\n  });\n}\n\nfunction Max(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  const variables = useVariables().map((name) => ({ name }));\n\n  return FeelNumberEntry({\n    debounce,\n    element: field,\n    feel: 'optional',\n    id,\n    label: 'Maximum',\n    step: 'any',\n    getValue: getValue('max'),\n    setValue: onChange('max'),\n    variables,\n  });\n}\n\nfunction ValidationType(props) {\n  const { field, getValue, id, onChange } = props;\n\n  const debounce = useService('debounce');\n\n  const setValue = (validationType) => {\n    onChange('validationType')(validationType || undefined);\n  };\n\n  return SelectEntry({\n    debounce,\n    element: field,\n    getValue: getValue('validationType'),\n    id,\n    label: 'Validation pattern',\n    setValue,\n    getOptions: () => Object.values(VALIDATION_TYPE_OPTIONS),\n    tooltip:\n      getValue('validationType')() === VALIDATION_TYPE_OPTIONS.phone.value\n        ? 'The built-in phone validation pattern is based on the E.164 standard with no spaces. Ex: +491234567890'\n        : undefined,\n  });\n}\n","import {\n  OptionsSourceSelectEntry,\n  StaticOptionsSourceEntry,\n  InputKeyOptionsSourceEntry,\n  OptionsExpressionEntry,\n} from '../entries';\n\nimport { getOptionsSource, OPTIONS_SOURCES } from '@bpmn-io/form-js-viewer';\n\nimport { Group, ListGroup } from '@bpmn-io/properties-panel';\n\nimport { OPTIONS_INPUTS, hasOptionsGroupsConfigured } from '../Util';\n\nexport function OptionsGroups(field, editField, getService) {\n  const { type } = field;\n\n  const formFields = getService('formFields');\n\n  const fieldDefinition = formFields.get(type).config;\n\n  if (!OPTIONS_INPUTS.includes(type) && !hasOptionsGroupsConfigured(fieldDefinition)) {\n    return [];\n  }\n\n  const context = { editField, field };\n  const id = 'valuesSource';\n\n  /**\n   * @type {Array<Group|ListGroup>}\n   */\n  const groups = [\n    {\n      id,\n      label: 'Options source',\n      tooltip: getValuesTooltip(),\n      component: Group,\n      entries: OptionsSourceSelectEntry({ ...context, id }),\n    },\n  ];\n\n  const valuesSource = getOptionsSource(field);\n\n  if (valuesSource === OPTIONS_SOURCES.INPUT) {\n    const id = 'dynamicOptions';\n    groups.push({\n      id,\n      label: 'Dynamic options',\n      component: Group,\n      entries: InputKeyOptionsSourceEntry({ ...context, id }),\n    });\n  } else if (valuesSource === OPTIONS_SOURCES.STATIC) {\n    const id = 'staticOptions';\n    groups.push({\n      id,\n      label: 'Static options',\n      component: ListGroup,\n      ...StaticOptionsSourceEntry({ ...context, id }),\n    });\n  } else if (valuesSource === OPTIONS_SOURCES.EXPRESSION) {\n    const id = 'optionsExpression';\n    groups.push({\n      id,\n      label: 'Options expression',\n      component: Group,\n      entries: OptionsExpressionEntry({ ...context, id }),\n    });\n  }\n\n  return groups;\n}\n\n// helpers //////////\n\nfunction getValuesTooltip() {\n  return (\n    '\"Static\" defines a constant, predefined set of form options.\\n\\n' +\n    '\"Input data\" defines options that are populated dynamically, adjusting based on variable data for flexible responses to different conditions or inputs.\\n\\n' +\n    '\"Expression\" defines options that are populated from a FEEL expression.'\n  );\n}\n","import { ListGroup } from '@bpmn-io/properties-panel';\n\nimport { has } from 'min-dash';\n\nimport { CustomValueEntry } from '../entries';\n\nexport function CustomPropertiesGroup(field, editField) {\n  const { properties = {}, type } = field;\n\n  if (type === 'default') {\n    return null;\n  }\n\n  const addEntry = (event) => {\n    event.stopPropagation();\n\n    let index = Object.keys(properties).length + 1;\n\n    while (`key${index}` in properties) {\n      index++;\n    }\n\n    editField(field, ['properties'], { ...properties, [`key${index}`]: 'value' });\n  };\n\n  const validateFactory = (key) => {\n    return (value) => {\n      if (value === key) {\n        return;\n      }\n\n      if (typeof value !== 'string' || value.length === 0) {\n        return 'Must not be empty.';\n      }\n\n      if (has(properties, value)) {\n        return 'Must be unique.';\n      }\n    };\n  };\n\n  const items = Object.keys(properties).map((key, index) => {\n    const removeEntry = (event) => {\n      event.stopPropagation();\n\n      return editField(field, ['properties'], removeKey(properties, key));\n    };\n\n    const id = `property-${index}`;\n\n    return {\n      autoFocusEntry: id + '-key',\n      entries: CustomValueEntry({\n        editField,\n        field,\n        idPrefix: id,\n        index,\n        validateFactory,\n      }),\n      id,\n      label: key || '',\n      remove: removeEntry,\n    };\n  });\n\n  return {\n    add: addEntry,\n    component: ListGroup,\n    id: 'custom-values',\n    items,\n    label: 'Custom properties',\n    tooltip:\n      'Add properties directly to the form schema, useful to configure functionality in custom-built task applications and form renderers.',\n  };\n}\n\n// helpers //////////\n\n/**\n * Returns copy of object without key.\n *\n * @param {Object} properties\n * @param {string} oldKey\n *\n * @returns {Object}\n */\nexport function removeKey(properties, oldKey) {\n  return Object.entries(properties).reduce((newProperties, entry) => {\n    const [key, value] = entry;\n\n    if (key === oldKey) {\n      return newProperties;\n    }\n\n    return {\n      ...newProperties,\n      [key]: value,\n    };\n  }, {});\n}\n","import { AdornerEntry, GroupAppearanceEntry, LayouterAppearanceEntry, MaxHeightEntry } from '../entries';\n\nexport function AppearanceGroup(field, editField, getService) {\n  const entries = [\n    ...AdornerEntry({ field, editField }),\n    ...GroupAppearanceEntry({ field, editField }),\n    ...LayouterAppearanceEntry({ field, editField }),\n    ...MaxHeightEntry({ field, editField }),\n  ];\n\n  if (!entries.length) {\n    return null;\n  }\n\n  return {\n    id: 'appearance',\n    label: 'Appearance',\n    entries,\n  };\n}\n","import { ColumnsEntry } from '../entries';\n\nexport function LayoutGroup(field, editField) {\n  const { type } = field;\n\n  if (type === 'default') {\n    return null;\n  }\n\n  const entries = [...ColumnsEntry({ field, editField })];\n\n  if (entries.length === 0) {\n    return null;\n  }\n\n  return {\n    id: 'layout',\n    label: 'Layout',\n    entries,\n  };\n}\n","import { get, set } from 'min-dash';\n\nimport { simpleBoolEntryFactory } from '../entries/factories';\n\nimport { SECURITY_ATTRIBUTES_DEFINITIONS } from '@bpmn-io/form-js-viewer';\n\nexport function SecurityAttributesGroup(field, editField) {\n  const { type } = field;\n\n  if (type !== 'iframe') {\n    return null;\n  }\n\n  const entries = createEntries({ field, editField });\n\n  if (!entries.length) {\n    return null;\n  }\n\n  return {\n    id: 'securityAttributes',\n    label: 'Security attributes',\n    entries,\n    tooltip: getTooltip(),\n  };\n}\n\nfunction createEntries(props) {\n  const { editField, field } = props;\n\n  const securityEntries = SECURITY_ATTRIBUTES_DEFINITIONS.map((definition) => {\n    const { label, property } = definition;\n\n    return simpleBoolEntryFactory({\n      id: property,\n      label: label,\n      isDefaultVisible: (field) => field.type === 'iframe',\n      path: ['security', property],\n      props,\n      getValue: () => get(field, ['security', property]),\n      setValue: (value) => {\n        const security = get(field, ['security'], {});\n        editField(field, ['security'], set(security, [property], value));\n      },\n    });\n  });\n\n  return [{ component: Advisory }, ...securityEntries];\n}\n\nconst Advisory = (props) => {\n  return (\n    <div class=\"bio-properties-panel-description fjs-properties-panel-detached-description\">\n      These options can incur security risks, especially if used in combination with dynamic links. Ensure that you are\n      aware of them, that you trust the source url and only enable what your use case requires.\n    </div>\n  );\n};\n\n// helpers //////////\n\nfunction getTooltip() {\n  return (\n    <>\n      <p>\n        Allow the iframe to access more functionality of your browser, details regarding the various options can be\n        found in the{' '}\n        <a target=\"_blank\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\" rel=\"noreferrer\">\n          MDN iFrame documentation.\n        </a>\n      </p>\n    </>\n  );\n}\n","import { ConditionEntry } from '../entries';\n\nexport function ConditionGroup(field, editField) {\n  const { type } = field;\n\n  if (type === 'default') {\n    return null;\n  }\n\n  const entries = [...ConditionEntry({ field, editField })];\n\n  return {\n    id: 'condition',\n    label: 'Condition',\n    entries,\n  };\n}\n","import { get, isArray } from 'min-dash';\n\nimport { ColumnsExpressionEntry, HeadersSourceSelectEntry, StaticColumnsSourceEntry } from '../entries';\n\nimport { Group, ListGroup } from '@bpmn-io/properties-panel';\n\nexport function TableHeaderGroups(field, editField) {\n  const { type, id: fieldId } = field;\n\n  if (type !== 'table') {\n    return [];\n  }\n\n  const areStaticColumnsEnabled = isArray(get(field, ['columns']));\n\n  /**\n   * @type {Array<Group>}\n   */\n  const groups = [\n    {\n      id: `${fieldId}-columnsSource`,\n      label: 'Headers source',\n      tooltip: TOOLTIP_TEXT,\n      component: Group,\n      entries: [...HeadersSourceSelectEntry({ field, editField }), ...ColumnsExpressionEntry({ field, editField })],\n    },\n  ];\n\n  if (areStaticColumnsEnabled) {\n    const id = `${fieldId}-columns`;\n\n    groups.push({\n      id,\n      label: 'Header items',\n      component: ListGroup,\n      ...StaticColumnsSourceEntry({ field, editField, id }),\n    });\n  }\n\n  return groups;\n}\n\n// helpers //////////\n\nconst TOOLTIP_TEXT = `\"List of items\" defines a constant, predefined set of form options.\n\n\"Expression\" defines options that are populated from a FEEL expression.\n`;\n","import {\n  ConditionGroup,\n  AppearanceGroup,\n  CustomPropertiesGroup,\n  GeneralGroup,\n  SerializationGroup,\n  ConstraintsGroup,\n  ValidationGroup,\n  OptionsGroups,\n  TableHeaderGroups,\n  LayoutGroup,\n  SecurityAttributesGroup,\n} from './groups';\n\nimport { hasEntryConfigured } from './Util';\n\nexport class PropertiesProvider {\n  constructor(propertiesPanel, injector) {\n    this._injector = injector;\n    propertiesPanel.registerProvider(this);\n  }\n\n  _filterVisibleEntries(groups, field, getService) {\n    return groups.forEach((group) => {\n      const { entries } = group;\n\n      const { type } = field;\n\n      const formFields = getService('formFields');\n\n      const fieldDefinition = formFields.get(type).config;\n\n      if (!entries) {\n        return;\n      }\n\n      group.entries = entries.filter((entry) => {\n        const { isDefaultVisible } = entry;\n\n        if (!isDefaultVisible) {\n          return true;\n        }\n\n        return isDefaultVisible(field) || hasEntryConfigured(fieldDefinition, entry.id);\n      });\n    });\n  }\n\n  getGroups(field, editField) {\n    return (groups) => {\n      if (!field) {\n        return groups;\n      }\n\n      const getService = (type, strict = true) => this._injector.get(type, strict);\n\n      groups = [\n        ...groups,\n        GeneralGroup(field, editField, getService),\n        ...OptionsGroups(field, editField, getService),\n        ...TableHeaderGroups(field, editField),\n        SecurityAttributesGroup(field, editField),\n        ConditionGroup(field, editField),\n        LayoutGroup(field, editField),\n        AppearanceGroup(field, editField),\n        SerializationGroup(field, editField),\n        ConstraintsGroup(field, editField),\n        ValidationGroup(field, editField),\n        CustomPropertiesGroup(field, editField),\n      ].filter((group) => group != null);\n\n      this._filterVisibleEntries(groups, field, getService);\n\n      // contract: if a group has no entries or items, it should not be displayed at all\n      return groups.filter((group) => {\n        return group.items || (group.entries && group.entries.length);\n      });\n    };\n  }\n}\n\nPropertiesProvider.$inject = ['propertiesPanel', 'injector'];\n","import { PropertiesPanelRenderer } from './PropertiesPanelRenderer';\nimport { PropertiesProvider } from './PropertiesProvider';\n\nimport { FeelPopupModule } from '@bpmn-io/properties-panel';\n\nexport const PropertiesPanelModule = {\n  __depends__: [FeelPopupModule],\n  __init__: ['propertiesPanel', 'propertiesProvider'],\n  propertiesPanel: ['type', PropertiesPanelRenderer],\n  propertiesProvider: ['type', PropertiesProvider],\n};\n","import { SectionModuleBase } from '../SectionModuleBase';\n\n/**\n * Manages the rendering of visual plugins.\n * @constructor\n * @param {Object} eventBus - Event bus for the application.\n */\nexport class RenderInjector extends SectionModuleBase {\n  constructor(eventBus) {\n    super(eventBus, 'renderInjector');\n    this._eventBus = eventBus;\n    this.registeredRenderers = [];\n  }\n\n  /**\n   * Inject a new renderer into the injector.\n   * @param {string} identifier - Identifier for the renderer.\n   * @param {Function} Renderer - The renderer function.\n   */\n  attachRenderer(identifier, Renderer) {\n    this.registeredRenderers = [...this.registeredRenderers, { identifier, Renderer }];\n  }\n\n  /**\n   * Detach a renderer from the by key injector.\n   * @param {string} identifier - Identifier for the renderer.\n   */\n  detachRenderer(identifier) {\n    this.registeredRenderers = this.registeredRenderers.filter((r) => r.identifier !== identifier);\n  }\n\n  /**\n   * Returns the registered renderers.\n   * @returns {Array} Array of registered renderers.\n   */\n  fetchRenderers() {\n    return this.registeredRenderers;\n  }\n}\n\nRenderInjector.$inject = ['eventBus'];\n","/**\n * Framework-agnostic service for managing slot fills.\n *\n * Fills are registered as render callbacks: `(container: HTMLElement) => (() => void) | void`.\n * The optional return value is a cleanup function called when the fill is removed or the slot unmounts.\n *\n * @example\n *\n * // Via config (simplest):\n * new FormEditor({\n *   slots: {\n *     'editor-empty-state__footer': (container) => {\n *       container.textContent = 'Hello from vanilla JS';\n *     }\n *   }\n * });\n *\n * // Via config (multiple fills per slot):\n * new FormEditor({\n *   slots: {\n *     'editor-empty-state__footer': [\n *       (container) => { container.textContent = 'First'; },\n *       { render: (container) => { container.textContent = 'Second'; }, priority: 10 }\n *     ]\n *   }\n * });\n *\n * // Via service (runtime):\n * const slotFillManager = editor.get('slotFillManager');\n * slotFillManager.addFill('editor-empty-state__footer', 'my-fill', {\n *   render: (container) => { ... },\n *   priority: 10,\n *   group: 'custom'\n * });\n */\nexport class SlotFillManager {\n  /**\n   * @param {Object} slotsConfig\n   * @param {import('../../core/EventBus').EventBus} eventBus\n   */\n  constructor(slotsConfig, eventBus) {\n    this._eventBus = eventBus;\n\n    /** @type {Array<{ slotName: string, fillId: string, render: Function, priority: number, group: string }>} */\n    this._fills = [];\n\n    this._populateFromConfig(slotsConfig);\n  }\n\n  /**\n   * Register a fill for a named slot.\n   *\n   * @param {string} slotName - The slot to fill.\n   * @param {string} fillId - Unique identifier for this fill.\n   * @param {Function|Object} options - A render callback `(container) => cleanup`, or `{ render, priority?, group? }`.\n   */\n  addFill(slotName, fillId, options) {\n    const fill = normalizeFill(slotName, fillId, options);\n\n    this._fills = [...this._fills.filter((f) => f.fillId !== fillId), fill];\n\n    this._eventBus.fire('slotFillManager.changed');\n  }\n\n  /**\n   * Remove a fill by its ID.\n   *\n   * @param {string} fillId\n   */\n  removeFill(fillId) {\n    const remaining = this._fills.filter((f) => f.fillId !== fillId);\n\n    if (remaining.length === this._fills.length) {\n      return;\n    }\n\n    this._fills = remaining;\n    this._eventBus.fire('slotFillManager.changed');\n  }\n\n  /**\n   * Get fills for a given slot, sorted by group (alphabetical) then priority (descending).\n   *\n   * @param {string} slotName\n   * @returns {Array<{ slotName: string, fillId: string, render: Function, priority: number, group: string }>}\n   */\n  getFills(slotName) {\n    const matching = this._fills.filter((f) => f.slotName === slotName);\n\n    return sortFills(matching);\n  }\n\n  /**\n   * @private\n   */\n  _populateFromConfig(slotsConfig) {\n    Object.entries(slotsConfig || {}).forEach(([slotName, value]) => {\n      if (Array.isArray(value)) {\n        value.forEach((entry, index) => {\n          this.addFill(slotName, `config__${slotName}_${index}`, entry);\n        });\n      } else {\n        this.addFill(slotName, `config__${slotName}`, value);\n      }\n    });\n  }\n}\n\nSlotFillManager.$inject = ['config.slots', 'eventBus'];\n\n// helpers //////////\n\n/**\n * @param {string} slotName\n * @param {string} fillId\n * @param {Function|Object} options\n * @returns {{ slotName: string, fillId: string, render: Function, priority: number, group: string }}\n */\nfunction normalizeFill(slotName, fillId, options) {\n  if (typeof options === 'function') {\n    return { slotName, fillId, render: options, priority: 0, group: 'z_default' };\n  }\n\n  const { render, priority = 0, group = 'z_default' } = options;\n\n  return { slotName, fillId, render, priority, group };\n}\n\n/**\n * Sort fills by group (alphabetical) then by priority (descending) within each group.\n */\nfunction sortFills(fills) {\n  const grouped = groupBy(fills, (f) => f.group);\n\n  return Object.keys(grouped)\n    .sort()\n    .flatMap((key) => grouped[key].toSorted((a, b) => b.priority - a.priority));\n}\n\nfunction groupBy(items, keyFn) {\n  return items.reduce((groups, item) => {\n    const key = keyFn(item);\n    return { ...groups, [key]: [...(groups[key] || []), item] };\n  }, {});\n}\n","import { RenderInjector } from './RenderInjector';\nimport { SlotFillManager } from './SlotFillManager';\n\nexport const RenderInjectionModule = {\n  __init__: ['renderInjector', 'slotFillManager'],\n  renderInjector: ['type', RenderInjector],\n  slotFillManager: ['type', SlotFillManager],\n};\n","<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M3 3H13.0859L11.2929 1.20705L12 0.5L15 3.5L12 6.5L11.2929 5.79295L13.0859 4H3V7.5H2V4C2.00032 3.73488 2.10578 3.48071 2.29324 3.29324C2.48071 3.10578 2.73488 3.00032 3 3Z\" fill=\"currentColor\"/>\n  <path d=\"M4.70705 10.2071L2.91405 12H13V8.5H14V12C13.9997 12.2651 13.8942 12.5193 13.7068 12.7068C13.5193 12.8942 13.2651 12.9997 13 13H2.91405L4.707 14.7929L4 15.5L1 12.5L4 9.5L4.70705 10.2071Z\" fill=\"currentColor\"/>\n</svg>\n","import RepeatSvg from '../../render/components/icons/Repeat.svg';\n\nexport class EditorRepeatRenderManager {\n  constructor(formFields, formFieldRegistry) {\n    this._formFields = formFields;\n    this._formFieldRegistry = formFieldRegistry;\n    this.RepeatFooter = this.RepeatFooter.bind(this);\n  }\n\n  /**\n   * Checks whether a field should be repeatable.\n   *\n   * @param {string} id - The id of the field to check\n   * @returns {boolean} - True if repeatable, false otherwise\n   */\n  isFieldRepeating(id) {\n    if (!id) {\n      return false;\n    }\n\n    const formField = this._formFieldRegistry.get(id);\n    const formFieldDefinition = this._formFields.get(formField.type);\n    return formFieldDefinition.config.repeatable && formField.isRepeating;\n  }\n\n  RepeatFooter() {\n    return (\n      <div className=\"fjs-repeat-render-footer\">\n        <RepeatSvg />\n        <span>Repeatable</span>\n      </div>\n    );\n  }\n}\n\nEditorRepeatRenderManager.$inject = ['formFields', 'formFieldRegistry'];\n","import { EditorRepeatRenderManager } from './EditorRepeatRenderManager';\n\nexport const RepeatRenderModule = {\n  __init__: ['repeatRenderManager'],\n  repeatRenderManager: ['type', EditorRepeatRenderManager],\n};\n\nexport { EditorRepeatRenderManager };\n","import { Ids } from 'ids';\nimport { clone, createFormContainer, createInjector, schemaVersion } from '@bpmn-io/form-js-viewer';\nimport { isString, set } from 'min-dash';\n\nimport { CoreModule } from './core';\nimport { EditorActionsModule } from './features/editor-actions';\nimport { EditorExpressionLanguageModule } from './features/expression-language';\nimport { FormEditorKeyboardModule } from './features/keyboard';\nimport { DraggingModule } from './features/dragging';\nimport { ModelingModule } from './features/modeling';\nimport { SelectionModule } from './features/selection';\nimport { PaletteModule } from './features/palette';\nimport { PropertiesPanelModule } from './features/properties-panel';\nimport { RenderInjectionModule } from './features/render-injection';\nimport { RepeatRenderModule } from './features/repeat-render';\n\nimport { MarkdownRendererModule } from '@bpmn-io/form-js-viewer';\n\nconst ids = new Ids([32, 36, 1]);\n\n/**\n * @typedef { import('./types').Injector } Injector\n * @typedef { import('./types').Module } Module\n * @typedef { import('./types').Schema } Schema\n *\n * @typedef { import('./types').FormEditorOptions } FormEditorOptions\n * @typedef { import('./types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n *   properties: FormEditorProperties,\n *   schema: Schema\n * } } State\n *\n * @typedef { (type:string, priority:number, handler:Function) => void } OnEventWithPriority\n * @typedef { (type:string, handler:Function) => void } OnEventWithOutPriority\n * @typedef { OnEventWithPriority & OnEventWithOutPriority } OnEventType\n */\n\n/**\n * The form editor.\n */\nexport class FormEditor {\n  /**\n   * @constructor\n   * @param {FormEditorOptions} options\n   */\n  constructor(options = {}) {\n    /**\n     * @public\n     * @type {OnEventType}\n     */\n    this.on = this._onEvent;\n\n    /**\n     * @public\n     * @type {String}\n     */\n    this._id = ids.next();\n\n    /**\n     * @private\n     * @type {Element}\n     */\n    this._container = createFormContainer();\n\n    this._container.setAttribute('tabindex', '0');\n\n    const { container, exporter, injector = this._createInjector(options, this._container), properties = {} } = options;\n\n    /**\n     * @private\n     * @type {any}\n     */\n    this.exporter = exporter;\n\n    /**\n     * @private\n     * @type {State}\n     */\n    this._state = {\n      properties,\n      schema: null,\n    };\n\n    this.get = injector.get;\n\n    this.invoke = injector.invoke;\n\n    this.get('eventBus').fire('form.init');\n\n    if (container) {\n      this.attachTo(container);\n    }\n  }\n\n  clear() {\n    // clear form services\n    this._emit('diagram.clear');\n\n    // clear diagram services (e.g. EventBus)\n    this._emit('form.clear');\n  }\n\n  destroy() {\n    // destroy form services\n    this.get('eventBus').fire('form.destroy');\n\n    // destroy diagram services (e.g. EventBus)\n    this.get('eventBus').fire('diagram.destroy');\n\n    this._detach(false);\n  }\n\n  /**\n   * @param {Schema} schema\n   *\n   * @return {Promise<{ warnings: Array<any> }>}\n   */\n  importSchema(schema) {\n    return new Promise((resolve, reject) => {\n      try {\n        this.clear();\n\n        const { schema: importedSchema, warnings } = this.get('importer').importSchema(schema);\n\n        this._setState({\n          schema: importedSchema,\n        });\n\n        this._emit('import.done', { warnings });\n\n        return resolve({ warnings });\n      } catch (error) {\n        this._emit('import.done', {\n          error: error,\n          warnings: error.warnings || [],\n        });\n\n        return reject(error);\n      }\n    });\n  }\n\n  /**\n   * @returns {Schema}\n   */\n  saveSchema() {\n    return this.getSchema();\n  }\n\n  /**\n   * @returns {Schema}\n   */\n  getSchema() {\n    const { schema } = this._getState();\n\n    return exportSchema(schema, this.exporter, schemaVersion);\n  }\n\n  /**\n   * @param {Element|string} parentNode\n   */\n  attachTo(parentNode) {\n    if (!parentNode) {\n      throw new Error('parentNode required');\n    }\n\n    this.detach();\n\n    if (isString(parentNode)) {\n      parentNode = document.querySelector(parentNode);\n    }\n\n    const container = this._container;\n\n    parentNode.appendChild(container);\n\n    this._emit('attach');\n  }\n\n  detach() {\n    this._detach();\n  }\n\n  /**\n   * @internal\n   *\n   * @param {boolean} [emit]\n   */\n  _detach(emit = true) {\n    const container = this._container,\n      parentNode = container.parentNode;\n\n    if (!parentNode) {\n      return;\n    }\n\n    if (emit) {\n      this._emit('detach');\n    }\n\n    parentNode.removeChild(container);\n  }\n\n  /**\n   * @param {any} property\n   * @param {any} value\n   */\n  setProperty(property, value) {\n    const properties = set(this._getState().properties, [property], value);\n\n    this._setState({ properties });\n  }\n\n  /**\n   * @param {string} type\n   * @param {Function} handler\n   */\n  off(type, handler) {\n    this.get('eventBus').off(type, handler);\n  }\n\n  /**\n   * @internal\n   *\n   * @param {FormEditorOptions} options\n   * @param {Element} container\n   *\n   * @returns {Injector}\n   */\n  _createInjector(options, container) {\n    const { modules = this._getModules(), additionalModules = [], renderer = {}, ...config } = options;\n\n    const enrichedConfig = {\n      ...config,\n      renderer: {\n        ...renderer,\n        container,\n      },\n    };\n\n    return createInjector([\n      { config: ['value', enrichedConfig] },\n      { formEditor: ['value', this] },\n      CoreModule,\n      ...modules,\n      ...additionalModules,\n    ]);\n  }\n\n  /**\n   * @internal\n   */\n  _emit(type, data) {\n    this.get('eventBus').fire(type, data);\n  }\n\n  /**\n   * @internal\n   */\n  _getState() {\n    return this._state;\n  }\n\n  /**\n   * @internal\n   */\n  _setState(state) {\n    this._state = {\n      ...this._state,\n      ...state,\n    };\n\n    this._emit('changed', this._getState());\n  }\n\n  /**\n   * @internal\n   */\n  _getModules() {\n    return [\n      ModelingModule,\n      EditorActionsModule,\n      FormEditorKeyboardModule,\n      DraggingModule,\n      SelectionModule,\n      PaletteModule,\n      EditorExpressionLanguageModule,\n      MarkdownRendererModule,\n      PropertiesPanelModule,\n      RenderInjectionModule,\n      RepeatRenderModule,\n    ];\n  }\n\n  /**\n   * @internal\n   */\n  _onEvent(type, priority, handler) {\n    this.get('eventBus').on(type, priority, handler);\n  }\n}\n\n// helpers //////////\n\nexport function exportSchema(schema, exporter, schemaVersion) {\n  const exportDetails = exporter\n    ? {\n        exporter,\n      }\n    : {};\n\n  const cleanedSchema = clone(schema, (name, value) => {\n    if (['_parent', '_path'].includes(name)) {\n      return undefined;\n    }\n\n    return value;\n  });\n\n  return {\n    ...cleanedSchema,\n    ...exportDetails,\n    schemaVersion,\n  };\n}\n","import { FormEditor } from './FormEditor';\n\nimport { schemaVersion } from '@bpmn-io/form-js-viewer';\n\nexport { FormEditor, schemaVersion };\n\nexport { useDebounce, usePrevious, useService } from './render/hooks';\n\nexport { useService as usePropertiesPanelService, useVariables } from './features/properties-panel/hooks';\n\n/**\n * @typedef { import('./types').CreateFormEditorOptions } CreateFormEditorOptions\n */\n\n/**\n * Create a form editor.\n *\n * @param {CreateFormEditorOptions} options\n *\n * @return {Promise<FormEditor>}\n */\nexport function createFormEditor(options) {\n  const { schema, ...rest } = options;\n\n  const formEditor = new FormEditor(rest);\n\n  return formEditor.importSchema(schema).then(() => {\n    return formEditor;\n  });\n}\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","wrappedCallback","__isTomb","result","apply","arguments","off","event","_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","DebounceFactory","config","timeout","debounce","$inject","FormFieldRegistry","BaseFieldRegistry","updateId","formField","newId","_validateId","_eventBus","remove","id","add","component","components","_parent","get","MAX_COLUMNS_PER_ROW","MAX_COLUMNS","MIN_COLUMNS","MAX_FIELDS_PER_ROW","FormLayoutValidator","constructor","formLayouter","formFieldRegistry","_formLayouter","_formFieldRegistry","validateField","field","columns","row","Number","isInteger","getRowForField","sumColumns","parseInt","sumFields","sumAutoCols","cols","layout","calculateMaxColumnsWithAuto","autoCols","emptyImage","createEmptyImage","editorFormFieldClasses","disabled","classNames","createDragger","startX","startY","onDragStart","clientX","clientY","dataTransfer","setDragImage","document","addEventListener","onDrag","onEnd","delta","x","y","removeEventListener","throttle","active","lastArgs","lastThis","window","requestAnimationFrame","img","Image","src","EditorIFrame","props","domId","label","Icon","iconsByType","_jsxs","class","children","_jsx","Label","width","height","viewBox","IFrame","DragAndDropContext","createContext","drake","getService","strict","FormEditorContext","useService","useContext","usePrevious","value","defaultValue","ref","useRef","useEffect","current","useDebounce","useMemo","flush","_path","_extends","React","_path2","EditorText","text","templating","expressionLanguage","trim","isExpression","isTemplate","Text","disableLinks","EditorHtml","content","Html","EditorTable","columnsExpression","shouldUseMockColumns","length","editorColumns","key","prefixId","map","Table","EditorExpressionField","expression","placeholderContent","ExpressionField","escapeGridRender","EditorDocumentPreview","DocumentPreview","editorFormFields","EditorFormFields","FormFields","register","ModularSection","rootClass","RootElement","section","eventBus","sectionConfig","parent","setParent","useState","shouldRender","setShouldRender","ParentElement","element","querySelector","Element","onAttach","container","onDetach","onReset","Root","useCallback","className","createPortal","FillContext","addFill","uid","removeFill","Fill","Symbol","fillContext","SlotContext","fills","Slot","fillRoot","FillFragment","groupFn","_groupByGroupName","separatorFn","limit","filtered","filter","fill","slot","cropped","groups","fillsAndSeparators","buildFills","editorContext","slotFillManager","managerFills","setManagerFills","getFills","onChange","Fragment","FillContainer","fillId","containerRef","cleanupRef","render","innerHTML","fillRenderer","separatorRenderer","array","idx","separator","push","groupsById","group","groupName","sort","_comparePriority","Object","keys","a","b","noop","SlotFillRoot","setFills","onSetFill","onRemoveFill","f","slotContext","Provider","PaletteEntry","icon","iconUrl","getPaletteIcon","modeling","formEditor","onKeyDown","code","fieldType","target","dataset","schema","_getState","addFormField","title","getIndefiniteArticle","includes","PALETTE_GROUPS","Palette","formFields","initialPaletteEntries","collectPaletteEntries","paletteEntries","setPaletteEntries","searchTerm","setSearchTerm","inputRef","groupEntries","simplifyString","str","toLowerCase","replace","entry","simplifiedSearchTerm","simplifiedEntryLabel","simplifiedEntryType","entries","handleInput","handleClear","focus","SearchIcon","placeholder","onInput","onClick","CloseIcon","FillRoot","getGroup","find","g","_formFields","fieldConfig","style","margin","alt","sanitizeImageSource","InjectedRendersRoot","renderInjector","injectedRenderers","fetchRenderers","injectedProps","Renderer","index","CURSOR_CLS_PATTERN","set","mode","classes","domClasses","body","removeMatching","unset","DRAG_CONTAINER_CLS","DROP_CONTAINER_VERTICAL_CLS","DROP_CONTAINER_HORIZONTAL_CLS","DRAG_MOVE_CLS","DRAG_ROW_MOVE_CLS","DRAG_COPY_CLS","DRAG_NO_DROP_CLS","DRAG_NO_MOVE_CLS","ERROR_DROP_CLS","Dragging","formLayoutValidator","pathRegistry","_formLayoutValidator","_modeling","_pathRegistry","getTargetIndex","targetRow","targetFormField","sibling","siblingFormFieldNode","siblingFormField","getFormFieldIndex","validateDrop","formFieldNode","getRow","rowId","targetParentId","isRow","getFormParent","rowError","targetParentFormField","currentParentFormField","targetParentPath","getValuePath","currentParentPath","join","isDropAllowedByPathRegistry","executeRecursivelyOnFields","isClosed","isRepeatable","options","cutoffNode","fieldPath","canClaimPath","knownAncestorIds","getAncestryList","moveField","source","targetIndex","sourceParent","sourceFormField","sourceIndex","sourceRow","moveFormField","createNewField","attrs","nextRowId","handleRowDrop","el","rowNode","siblingRowNode","siblingRow","handleElementDrop","validationError","cancel","isPalette","createDragulaInstance","mirrorContainer","dragulaOptions","direction","isContainer","some","cls","classList","contains","moves","handle","copy","accepts","unsetDropNotAllowed","setDropNotAllowed","transformOffset","offset","rowOffset","left","top","iconOffset","slideFactorX","slideFactorY","dragulaInstance","dragula","emit","isDragRow","context","fieldFormIndex","node","closest","setCursor","FieldDragPreview","COLUMNS_REGEX","ELEMENT_RESIZING_CLS","GRID_OFFSET_PX","FieldResizer","position","startColumns","newColumns","onResize","_","dx","calculateNewColumns","errorMessage","columnNode","onResizeStart","getElementNode","getParent","getColumnNode","startWidth","getBoundingClientRect","asColumns","setResizing","onResizeEnd","editFormField","unsetResizing","draggable","onDragEnd","totalWidth","oneColumn","Math","round","currentColumns","deltaX","deltaColumns","regex","domQuery","ContextPad","EmptyGroup","EmptyForm","EmptyFormIcon","Empty","selection","hoverInfo","FormRenderContext","showOutline","hovered","setHovered","scrollIntoView","scrollContainer","getScrollContainer","elementBounds","scrollContainerBounds","isElementLarger","isNotFullyVisible","bottom","behavior","block","useLayoutEffect","isSelected","fieldEl","toggle","classString","split","grouplike","onRemove","parentField","removeFormField","onKeyPress","tabIndex","onMouseOver","cleanup","DebugColumns","getRemoveButtonTitle","DeleteIcon","debugColumnsConfig","Children","Row","DraggableIcon","Column","FormEditor","dragging","injector","propertiesPanel","propertiesPanelConfig","properties","ariaLabel","formContainerRef","propertiesPanelRef","setSelection","hasInitialized","setHasInitialized","handleSelectionChanged","setDrake","dragAndDropContext","destroy","onCreate","unsetCursor","formRenderContext","applyVisibilityConditions","formContext","errors","formId","_id","onSubmit","hasDefaultPropertiesPanel","defaultPropertiesPanel","attachTo","FormContext","FormComponent","CreatePreview","handleCloned","clone","original","paletteEntry","findPaletteEntry","cloneNode","querySelectorAll","renderConfig","compact","svg","viewport","activeElement","preventScroll","App","state","setState","formEditorContext","newState","RenderModule","__init__","renderer","CoreModule","__depends__","importer","Importer","PathRegistry","FormLayouter","fieldFactory","FieldFactory","NOT_REGISTERED_ERROR","IS_REGISTERED_ERROR","EditorActions","_actions","_registerDefaultActions","editorActions","commandStack","zoomScroll","copyPaste","canvas","rules","keyboardMove","keyboardMoveSelection","undo","redo","selectedElements","duplicate","paste","allowed","elements","cuttableElements","cut","opts","stepZoom","zoom","removableElements","removeElements","moveCanvas","moveSelection","accelerated","trigger","action","actions","_registerAction","isRegistered","unregister","getActions","message","FormEditorActions","EditorActionsModule","BaseEditorActionsModule","EditorTemplating","isString","startsWith","test","evaluate","template","EditorExpressionLanguageModule","FeelExpressionLanguage","KEYS_COPY","KEYS_PASTE","KEYS_DUPLICATE","KEYS_CUT","KEYS_REDO","KEYS_UNDO","hasModifier","ctrlKey","metaKey","shiftKey","altKey","isCmd","isKey","indexOf","isShift","isCopy","isPaste","isDuplicate","isCut","isUndo","isRedo","KEYDOWN_EVENT","KEYUP_EVENT","compatMessage","Keyboard","_config","_keydownHandler","_keyupHandler","_fire","unbind","bindTo","_target","_keyHandler","eventBusResult","_isEventIgnored","keyEvent","_node","domEvent","getBinding","addListener","removeListener","LOW_PRIORITY","KeyboardBindings","keyboard","registerBindings","keyboardBindings","FormEditorKeyboardBindings","FormEditorKeyboardModule","KeyboardModule","DraggingModule","CommandStack","_handlerMap","_stack","_stackIdx","_currentExecution","dirty","_injector","_uid","clear","execute","command","_pushAction","_internalExecute","_popAction","canExecute","handler","_getHandler","_getUndoAction","_internalUndo","_getRedoAction","_setHandler","registerHandler","handlerCls","instantiate","canUndo","canRedo","_atomicDo","revert","_markDirty","_revertedAction","qualifier","names","_createId","execution","atomic","preExecute","_executedAction","postExecute","baseAction","pop","uniqueBy","reverse","concat","stackIdx","splice","CommandInterceptor","unwrapEvent","hook","handlerFn","unwrap","isObject","fullEvent","createHook","preExecuted","executed","postExecuted","reverted","hookFn","IdBehavior","unclaimId","claimId","KeyBehavior","keyed","unclaimKey","claimKey","PathBehavior","path","pathed","unclaimPath","claimPath","ValidateBehavior","validate","validationType","newValidate","minLength","maxLength","pattern","OptionsSourceBehavior","newProperties","isValuesSourceUpdate","values","OPTIONS_SOURCES","OPTIONS_SOURCES_PATHS","EXPRESSION","INPUT","COLUMNS_SOURCE_PROPERTIES","ColumnsSourceBehavior","oldProperties","isColumnSourceUpdate","oldColumns","oldColumnsExpression","isDefined","TableDataSourceBehavior","dataSource","BehaviorModule","idBehavior","keyBehavior","pathBehavior","validateBehavior","optionsSourceBehavior","columnsSourceBehavior","tableDataSourceBehavior","arrayAdd","item","arrayRemove","updatePath","refreshPathsRecursively","updateRow","FormLayoutUpdater","_formEditor","updateRowIds","updateLayout","calculateLayout","setRowIds","AddFormFieldHandler","targetPath","_setState","EditFormFieldHandler","property","MoveFormFieldHandler","sourcePath","arrayMove","claimerId","RemoveFormFieldHandler","runRecursively","UpdateIdClaimHandler","claiming","_ids","claim","unclaim","UpdateKeyClaimHandler","replacements","valuePath","UpdatePathClaimHandler","valuePaths","Modeling","_commandStack","_fieldFactory","registerHandlers","getHandlers","create","ModelingModule","commandModule","formLayoutUpdater","Selection","_selection","newSelection","SelectionBehavior","SelectionModule","selectionBehavior","SectionModuleBase","sectionKey","_sectionKey","isSectionRendered","_onceSectionRendered","detach","reset","PaletteRenderer","PaletteModule","palette","Header","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","documentationRef","ElementIcon","jsxs","jsx","rel","href","ExternalLinkIcon","FormPropertiesPanelContext","getPropertiesPanelHeaderProvider","fieldDefinition","getSubheading","IconComponent","PropertiesPanelPlaceholderProvider","getEmpty","getMultiple","EMPTY","PropertiesPanel","getProviders","selectionModule","feelPopupContainer","selectedFormField","refresh","propertiesPanelContext","onFocus","onBlur","editField","providers","reduce","provider","updater","getGroups","PropertiesPanelHeaderProvider","onFocusCapture","onBlurCapture","BasePropertiesPanel","placeholderProvider","PropertiesPanelRenderer","_container","domify","_render","appendChild","parentNode","removeChild","_getProviders","registerProvider","ActionEntry","Action","isEdited","isSelectEntryEdited","isDefaultVisible","getValue","setValue","getOptions","SelectEntry","useVariables","form","getSchema","getSchemaVariables","AltTextEntry","AltText","isFeelEntryEdited","variables","FeelTemplatingEntry","feel","tooltip","singleLine","AUTO_OPTION_VALUE","ColumnsEntry","Columns","newValue","asArray","i","asOption","number","toString","from","countDecimals","num","Big","toFixed","isValidNumber","isNaN","isValidDotPath","isProhibitedPath","prohibitedSegments","segment","LABELED_NON_INPUTS","INPUTS","OPTIONS_INPUTS","hasEntryConfigured","formFieldDefinition","entryId","propertiesPanelEntries","hasOptionsGroupsConfigured","hasIntegerPathSegment","isEditedFromDefaultFactory","includeEmptyAsDefault","codeMirrorContent","isCodeMirrorEditor","innerText","isTrueDefaultToggleSwitchEntryEdited","checked","DescriptionEntry","Description","EMPTY_OPTION","DefaultValueEntry","matchers","defaultValueBase","DefaultValueCheckbox","DefaultValueNumber","isTextFieldEntryEdited","DefaultValueSingleSelect","DefaultValueTextfield","DefaultValueTextarea","isTextAreaEntryEdited","parseStringToBoolean","parseBooleanToString","decimalDigits","serializeToString","decimalDigitsSet","TextFieldEntry","TextAreaEntry","DisabledEntry","Disabled","isToggleSwitchEntryEdited","ToggleSwitchEntry","inline","IdEntry","Id","assigned","validateId","SPACE_REGEX","QNAME_REGEX","ID_REGEX","idValue","containsSpace","KeyEntry","Key","oldPath","newPath","canClaim","description","PathEntry","Path","isRepeating","repeatable","msg","simpleBoolEntryFactory","isTrueDefault","SimpleBoolComponent","simpleSelectEntryFactory","optionsArray","SimpleSelectComponent","simpleRangeIntegerEntryFactory","min","max","SimpleRangeIntegerEntry","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","isValid","cmp","GroupAppearanceEntry","LabelEntry","DateLabel","subtype","DATETIME_SUBTYPES","DATE","DATETIME","TimeLabel","TIME","isSimplyLabeled","input","getLabelText","DATE_LABEL_PATH","TIME_LABEL_PATH","HeightEntry","Height","isNumberFieldEntryEdited","NumberFieldEntry","IFrameHeightEntry","HTTPS_PATTERN","IFrameUrlEntry","Url","getTooltip","_Fragment","ImageSourceEntry","Source","isTextEdited","TEXT_VIEW_DEFAULT_TEXT","TextEntry","hostLanguage","HtmlEntry","Content","NumberEntries","NumberDecimalDigits","NumberArrowStep","step","validateNumberEntries","clearLeadingZeroes","trimmed","minimumValue","ExpressionFieldEntries","ExpressionFieldExpression","ExpressionFieldComputeOn","FeelEntry","computeOn","NumberSerializationEntry","SerializeToString","isCheckboxEntryEdited","CheckboxEntry","DateTimeEntry","DateTimeSubtypeSelect","Use24h","DATETIME_SUBTYPE_PATH","clearTimeConfig","timeConfigPaths","TIME_USE24H_PATH","TIME_INTERVAL_PATH","TIME_SERIALISING_FORMAT_PATH","initTimeConfig","TIME_SERIALISING_FORMATS","UTC_OFFSET","clearDateConfig","dateConfigPaths","DATE_DISALLOW_PAST_PATH","initDateConfig","oldValue","getDatetimeSubtypes","DATETIME_SUBTYPES_LABELS","isTimeIntervalEdited","DateTimeConstraintsEntry","subtypes","TimeIntervalSelect","DisallowPassedDates","timeIntervals","getTimeIntervals","timeInterval","isTimeFormatEdited","DateTimeFormatEntry","TimeFormatSelect","getTimeSerialisingFormats","format","TIME_SERIALISINGFORMAT_LABELS","SelectEntries","ValueEntry","idPrefix","validateFactory","Value","previousValue","isNil","CustomValueEntry","updateKey","updateValue","oldKey","newKey","AutoFocusSelectEntry","autoFocusEntry","prevValue","setTimeout","isOptionsSourceEdited","STATIC","OptionsSourceSelectEntry","ValuesSourceSelect","getOptionsSource","newField","OPTIONS_SOURCES_DEFAULTS","getOptionsSourceOptions","valueSource","OPTIONS_SOURCES_LABELS","getAutoFocusEntryId","valuesSource","InputKeyOptionsSourceEntry","InputValuesKey","StaticOptionsSourceEntry","addEntry","getIndexedEntry","removeEntry","without","isValueAssigned","items","labelOrValueIsAlreadyAssignedForIndex","existingEntry","AdornerEntry","appearance","PrefixAdorner","SuffixAdorner","ReadonlyEntry","Readonly","FeelToggleSwitchEntry","LayouterAppearanceEntry","RepeatableEntry","disableCollapse","nonCollapseItemsEntry","ConditionEntry","Condition","hide","OptionsExpressionEntry","OptionsExpression","TableDataSourceEntry","PaginationEntry","Pagination","defaultRowCount","RowCountEntry","RowCount","OPTIONS","static","SELECT_OPTIONS","COLUMNS_PATH","COLUMNS_EXPRESSION_PATH","isHeadersSourceEdited","HeadersSourceSelectEntry","HeadersSourceSelect","getValuesSourceOptions","PATH","ColumnsExpressionEntry","ColumnsExpression","labelPath","keyPath","ColumnEntry","StaticColumnsSourceEntry","VersionTagEntry","VersionTag","AcceptEntry","Accept","MultipleEntry","Multiple","DocumentsDataSourceEntry","DocumentsDataSource","MaxHeightEntry","MaxHeight","GeneralGroup","SerializationGroup","ConstraintsGroup","VALIDATION_TYPE_OPTIONS","custom","email","phone","ValidationGroup","isCustomValidation","hasPattern","Required","ValidationType","MinLength","MaxLength","Pattern","PatternErrorMessage","Min","Max","FeelNumberEntry","OptionsGroups","getValuesTooltip","Group","ListGroup","CustomPropertiesGroup","has","removeKey","AppearanceGroup","LayoutGroup","SecurityAttributesGroup","createEntries","securityEntries","SECURITY_ATTRIBUTES_DEFINITIONS","definition","security","Advisory","ConditionGroup","TableHeaderGroups","fieldId","areStaticColumnsEnabled","TOOLTIP_TEXT","PropertiesProvider","_filterVisibleEntries","PropertiesPanelModule","FeelPopupModule","propertiesProvider","RenderInjector","registeredRenderers","attachRenderer","identifier","detachRenderer","r","SlotFillManager","slotsConfig","_fills","_populateFromConfig","slotName","normalizeFill","remaining","matching","sortFills","grouped","groupBy","flatMap","toSorted","keyFn","RenderInjectionModule","EditorRepeatRenderManager","RepeatFooter","isFieldRepeating","RepeatSvg","RepeatRenderModule","repeatRenderManager","ids","Ids","_onEvent","createFormContainer","setAttribute","exporter","_createInjector","_state","invoke","_emit","_detach","importSchema","Promise","resolve","reject","importedSchema","warnings","saveSchema","exportSchema","schemaVersion","setProperty","modules","_getModules","additionalModules","enrichedConfig","createInjector","MarkdownRendererModule","exportDetails","cleanedSchema","createFormEditor","rest","then"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAIA,MAAM,GAAG,MAAM;AAEnB,IAAIC,kBAAgB,GAAG,IAAI;AAE3B,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAS,CAACF,KAAK;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;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;AACA;AACA;AACe,SAASG,QAAQA,GAAG;AAEjC;AACF;AACA;AACE,EAAA,IAAI,CAACC,UAAU,GAAG,EAAE;;AAEpB;AACA;AACA,EAAA,IAAI,CAACC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAACC,QAAQ,EAAE,IAAI,CAAC;AACpD;;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;AACAH,QAAQ,CAACD,SAAS,CAACG,EAAE,GAAG,UAASE,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,IAAI,EAAE;EAEjEH,MAAM,GAAGI,eAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,GAAG,CA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;AACA;AACA;AACA;AACA;;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;AACe,SAASuU,YAAYA,CAACre,QAAQ,EAAEwU,QAAQ,EAAE;AAEvD;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI,CAAC8J,WAAW,GAAG,EAAE;;AAErB;AACF;AACA;AACA;AACA;EACE,IAAI,CAACC,MAAM,GAAG,EAAE;;AAEhB;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI,CAACC,SAAS,GAAG,EAAE;;AAEnB;AACF;AACA;AACA;AACA;EACE,IAAI,CAACC,iBAAiB,GAAG;AACvBvE,IAAAA,OAAO,EAAE,EAAE;AACXwE,IAAAA,KAAK,EAAE,EAAE;AACT1E,IAAAA,OAAO,EAAE;GACV;;AAED;AACF;AACA;EACE,IAAI,CAAC2E,SAAS,GAAGnK,QAAQ;;AAEzB;AACF;AACA;EACE,IAAI,CAAChd,SAAS,GAAGwI,QAAQ;;AAEzB;AACF;AACA;EACE,IAAI,CAAC4e,IAAI,GAAG,CAAC;EAEb5e,QAAQ,CAAC7M,EAAE,CAAC,CACV,iBAAiB,EACjB,eAAe,CAChB,EAAE,YAAW;AACZ,IAAA,IAAI,CAAC0rB,KAAK,CAAC,KAAK,CAAC;EACnB,CAAC,EAAE,IAAI,CAAC;AACV;AAEAR,YAAY,CAACpnB,OAAO,GAAG,CAAE,UAAU,EAAE,UAAU,CAAE;;AAGjD;AACA;AACA;AACA;AACA;AACA;AACAonB,YAAY,CAACrrB,SAAS,CAAC8rB,OAAO,GAAG,UAASC,OAAO,EAAE7P,OAAO,EAAE;EAC1D,IAAI,CAAC6P,OAAO,EAAE;AACZ,IAAA,MAAM,IAAInrB,KAAK,CAAC,kBAAkB,CAAC;AACrC,EAAA;AAEA,EAAA,IAAI,CAAC6qB,iBAAiB,CAACzE,OAAO,GAAG,SAAS;AAE1C,EAAA,MAAMC,MAAM,GAAG;AAAE8E,IAAAA,OAAO,EAAEA,OAAO;AAAE7P,IAAAA,OAAO,EAAEA;GAAS;AAErD,EAAA,IAAI,CAAC8P,WAAW,CAAC/E,MAAM,CAAC;AACxB,EAAA,IAAI,CAACgF,gBAAgB,CAAChF,MAAM,CAAC;EAC7B,IAAI,CAACiF,UAAU,EAAE;AACnB,CAAC;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAb,YAAY,CAACrrB,SAAS,CAACmsB,UAAU,GAAG,UAASJ,OAAO,EAAE7P,OAAO,EAAE;AAE7D,EAAA,MAAM+K,MAAM,GAAG;AAAE8E,IAAAA,OAAO,EAAEA,OAAO;AAAE7P,IAAAA,OAAO,EAAEA;GAAS;AAErD,EAAA,MAAMkQ,OAAO,GAAG,IAAI,CAACC,WAAW,CAACN,OAAO,CAAC;EAEzC,IAAIxqB,MAAM,GAAG,IAAI,CAACwoB,KAAK,CAACgC,OAAO,EAAE,YAAY,EAAE9E,MAAM,CAAC;;AAEtD;AACA;EACA,IAAI1lB,MAAM,KAAKkB,SAAS,EAAE;IACxB,IAAI,CAAC2pB,OAAO,EAAE;AACZ,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,IAAIA,OAAO,CAACD,UAAU,EAAE;AACtB5qB,MAAAA,MAAM,GAAG6qB,OAAO,CAACD,UAAU,CAACjQ,OAAO,CAAC;AACtC,IAAA;AACF,EAAA;AAEA,EAAA,OAAO3a,MAAM;AACf,CAAC;;AAGD;AACA;AACA;AACA;AACA;AACA8pB,YAAY,CAACrrB,SAAS,CAAC6rB,KAAK,GAAG,UAAS7P,IAAI,EAAE;AAC5C,EAAA,IAAI,CAACuP,MAAM,CAAC5f,MAAM,GAAG,CAAC;AACtB,EAAA,IAAI,CAAC6f,SAAS,GAAG,EAAE;EAEnB,IAAIxP,IAAI,KAAK,KAAK,EAAE;AAClB,IAAA,IAAI,CAAC+N,KAAK,CAAC,SAAS,EAAE;AAAE/C,MAAAA,OAAO,EAAE;AAAQ,KAAC,CAAC;AAC7C,EAAA;AACF,CAAC;;AAGD;AACA;AACA;AACAqE,YAAY,CAACrrB,SAAS,CAAC+lB,IAAI,GAAG,YAAW;AACvC,EAAA,IAAIkB,MAAM,GAAG,IAAI,CAACqF,cAAc,EAAE;IAC9BnrB,IAAI;AAER,EAAA,IAAI8lB,MAAM,EAAE;AACV,IAAA,IAAI,CAACwE,iBAAiB,CAACzE,OAAO,GAAG,MAAM;AAEvC,IAAA,IAAI,CAACgF,WAAW,CAAC/E,MAAM,CAAC;AAExB,IAAA,OAAOA,MAAM,EAAE;AACb,MAAA,IAAI,CAACsF,aAAa,CAACtF,MAAM,CAAC;AAC1B9lB,MAAAA,IAAI,GAAG,IAAI,CAACmrB,cAAc,EAAE;MAE5B,IAAI,CAACnrB,IAAI,IAAIA,IAAI,CAACuD,EAAE,KAAKuiB,MAAM,CAACviB,EAAE,EAAE;AAClC,QAAA;AACF,MAAA;AAEAuiB,MAAAA,MAAM,GAAG9lB,IAAI;AACf,IAAA;IAEA,IAAI,CAAC+qB,UAAU,EAAE;AACnB,EAAA;AACF,CAAC;;AAGD;AACA;AACA;AACAb,YAAY,CAACrrB,SAAS,CAACgmB,IAAI,GAAG,YAAW;AACvC,EAAA,IAAIiB,MAAM,GAAG,IAAI,CAACuF,cAAc,EAAE;IAC9BrrB,IAAI;AAER,EAAA,IAAI8lB,MAAM,EAAE;AACV,IAAA,IAAI,CAACwE,iBAAiB,CAACzE,OAAO,GAAG,MAAM;AAEvC,IAAA,IAAI,CAACgF,WAAW,CAAC/E,MAAM,CAAC;AAExB,IAAA,OAAOA,MAAM,EAAE;AACb,MAAA,IAAI,CAACgF,gBAAgB,CAAChF,MAAM,EAAE,IAAI,CAAC;AACnC9lB,MAAAA,IAAI,GAAG,IAAI,CAACqrB,cAAc,EAAE;MAE5B,IAAI,CAACrrB,IAAI,IAAIA,IAAI,CAACuD,EAAE,KAAKuiB,MAAM,CAACviB,EAAE,EAAE;AAClC,QAAA;AACF,MAAA;AAEAuiB,MAAAA,MAAM,GAAG9lB,IAAI;AACf,IAAA;IAEA,IAAI,CAAC+qB,UAAU,EAAE;AACnB,EAAA;AACF,CAAC;;AAGD;AACA;AACA;AACA;AACA;AACA;AACAb,YAAY,CAACrrB,SAAS,CAAC2M,QAAQ,GAAG,UAASof,OAAO,EAAEK,OAAO,EAAE;AAC3D,EAAA,IAAI,CAACK,WAAW,CAACV,OAAO,EAAEK,OAAO,CAAC;AACpC,CAAC;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACAf,YAAY,CAACrrB,SAAS,CAAC0sB,eAAe,GAAG,UAASX,OAAO,EAAEY,UAAU,EAAE;AAErE,EAAA,IAAI,CAACZ,OAAO,IAAI,CAACY,UAAU,EAAE;AAC3B,IAAA,MAAM,IAAI/rB,KAAK,CAAC,wCAAwC,CAAC;AAC3D,EAAA;EAEA,MAAMwrB,OAAO,GAAG,IAAI,CAACT,SAAS,CAACiB,WAAW,CAACD,UAAU,CAAC;AACtD,EAAA,IAAI,CAAChgB,QAAQ,CAACof,OAAO,EAAEK,OAAO,CAAC;AACjC,CAAC;;AAED;AACA;AACA;AACAf,YAAY,CAACrrB,SAAS,CAAC6sB,OAAO,GAAG,YAAW;AAC1C,EAAA,OAAO,CAAC,CAAC,IAAI,CAACP,cAAc,EAAE;AAChC,CAAC;;AAED;AACA;AACA;AACAjB,YAAY,CAACrrB,SAAS,CAAC8sB,OAAO,GAAG,YAAW;AAC1C,EAAA,OAAO,CAAC,CAAC,IAAI,CAACN,cAAc,EAAE;AAChC,CAAC;;AAED;;AAEAnB,YAAY,CAACrrB,SAAS,CAACwsB,cAAc,GAAG,YAAW;EACjD,OAAO,IAAI,CAACjB,MAAM,CAAC,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC;AACxC,CAAC;AAGDH,YAAY,CAACrrB,SAAS,CAACssB,cAAc,GAAG,YAAW;AACjD,EAAA,OAAO,IAAI,CAACf,MAAM,CAAC,IAAI,CAACC,SAAS,CAAC;AACpC,CAAC;;AAGD;;AAEAH,YAAY,CAACrrB,SAAS,CAACusB,aAAa,GAAG,UAAStF,MAAM,EAAE;AACtD,EAAA,MAAM8E,OAAO,GAAG9E,MAAM,CAAC8E,OAAO;IACxB7P,OAAO,GAAG+K,MAAM,CAAC/K,OAAO;AAE9B,EAAA,MAAMkQ,OAAO,GAAG,IAAI,CAACC,WAAW,CAACN,OAAO,CAAC;;AAEzC;EACA,IAAI,CAACgB,SAAS,CAAC,MAAM;IACnB,IAAI,CAAChD,KAAK,CAACgC,OAAO,EAAE,QAAQ,EAAE9E,MAAM,CAAC;IAErC,IAAImF,OAAO,CAACY,MAAM,EAAE;MAClB,IAAI,CAACC,UAAU,CAACb,OAAO,CAACY,MAAM,CAAC9Q,OAAO,CAAC,CAAC;AAC1C,IAAA;AAEA,IAAA,IAAI,CAACgR,eAAe,CAACjG,MAAM,CAAC;IAE5B,IAAI,CAAC8C,KAAK,CAACgC,OAAO,EAAE,UAAU,EAAE9E,MAAM,CAAC;AACzC,EAAA,CAAC,CAAC;AACJ,CAAC;AAGDoE,YAAY,CAACrrB,SAAS,CAAC+pB,KAAK,GAAG,UAASgC,OAAO,EAAEoB,SAAS,EAAExrB,KAAK,EAAE;AACjE,EAAA,IAAIF,SAAS,CAACkK,MAAM,GAAG,CAAC,EAAE;AACxBhK,IAAAA,KAAK,GAAGwrB,SAAS;AACjBA,IAAAA,SAAS,GAAG,IAAI;AAClB,EAAA;AAEA,EAAA,MAAMC,KAAK,GAAGD,SAAS,GAAG,CAAEpB,OAAO,GAAG,GAAG,GAAGoB,SAAS,EAAEA,SAAS,CAAE,GAAG,CAAEpB,OAAO,CAAE;AAChF,EAAA,IAAIxqB,MAAM;EAEVI,KAAK,GAAG,IAAI,CAAC6C,SAAS,CAAC3C,WAAW,CAACF,KAAK,CAAC;AAEzC,EAAA,KAAK,MAAM6B,IAAI,IAAI4pB,KAAK,EAAE;AACxB7rB,IAAAA,MAAM,GAAG,IAAI,CAACiD,SAAS,CAACvC,IAAI,CAAC,eAAe,GAAGuB,IAAI,EAAE7B,KAAK,CAAC;IAE3D,IAAIA,KAAK,CAACmB,YAAY,EAAE;AACtB,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAOvB,MAAM;AACf,CAAC;AAED8pB,YAAY,CAACrrB,SAAS,CAACqtB,SAAS,GAAG,YAAW;EAC5C,OAAO,IAAI,CAACzB,IAAI,EAAE;AACpB,CAAC;AAEDP,YAAY,CAACrrB,SAAS,CAAC+sB,SAAS,GAAG,UAASnpB,EAAE,EAAE;AAE9C,EAAA,MAAM0pB,SAAS,GAAG,IAAI,CAAC7B,iBAAiB;EAExC6B,SAAS,CAACC,MAAM,GAAG,IAAI;EAEvB,IAAI;AACF3pB,IAAAA,EAAE,EAAE;AACN,EAAA,CAAC,SAAS;IACR0pB,SAAS,CAACC,MAAM,GAAG,KAAK;AAC1B,EAAA;AACF,CAAC;AAEDlC,YAAY,CAACrrB,SAAS,CAACisB,gBAAgB,GAAG,UAAShF,MAAM,EAAEjB,IAAI,EAAE;AAC/D,EAAA,MAAM+F,OAAO,GAAG9E,MAAM,CAAC8E,OAAO;IACxB7P,OAAO,GAAG+K,MAAM,CAAC/K,OAAO;AAE9B,EAAA,MAAMkQ,OAAO,GAAG,IAAI,CAACC,WAAW,CAACN,OAAO,CAAC;EAEzC,IAAI,CAACK,OAAO,EAAE;IACZ,MAAM,IAAIxrB,KAAK,CAAC,qCAAqC,GAAGmrB,OAAO,GAAG,GAAG,CAAC;AACxE,EAAA;AAEA,EAAA,IAAI,CAACC,WAAW,CAAC/E,MAAM,CAAC;EAExB,IAAI,CAACjB,IAAI,EAAE;IACT,IAAI,CAAC+D,KAAK,CAACgC,OAAO,EAAE,YAAY,EAAE9E,MAAM,CAAC;IAEzC,IAAImF,OAAO,CAACoB,UAAU,EAAE;AACtBpB,MAAAA,OAAO,CAACoB,UAAU,CAACtR,OAAO,CAAC;AAC7B,IAAA;IAEA,IAAI,CAAC6N,KAAK,CAACgC,OAAO,EAAE,aAAa,EAAE9E,MAAM,CAAC;AAC5C,EAAA;;AAEA;EACA,IAAI,CAAC8F,SAAS,CAAC,MAAM;IAEnB,IAAI,CAAChD,KAAK,CAACgC,OAAO,EAAE,SAAS,EAAE9E,MAAM,CAAC;IAEtC,IAAImF,OAAO,CAACN,OAAO,EAAE;AAEnB;MACA,IAAI,CAACmB,UAAU,CAACb,OAAO,CAACN,OAAO,CAAC5P,OAAO,CAAC,CAAC;AAC3C,IAAA;;AAEA;AACA,IAAA,IAAI,CAACuR,eAAe,CAACxG,MAAM,EAAEjB,IAAI,CAAC;IAElC,IAAI,CAAC+D,KAAK,CAACgC,OAAO,EAAE,UAAU,EAAE9E,MAAM,CAAC;AACzC,EAAA,CAAC,CAAC;EAEF,IAAI,CAACjB,IAAI,EAAE;IACT,IAAI,CAAC+D,KAAK,CAACgC,OAAO,EAAE,aAAa,EAAE9E,MAAM,CAAC;IAE1C,IAAImF,OAAO,CAACsB,WAAW,EAAE;AACvBtB,MAAAA,OAAO,CAACsB,WAAW,CAACxR,OAAO,CAAC;AAC9B,IAAA;IAEA,IAAI,CAAC6N,KAAK,CAACgC,OAAO,EAAE,cAAc,EAAE9E,MAAM,CAAC;AAC7C,EAAA;EAEA,IAAI,CAACiF,UAAU,EAAE;AACnB,CAAC;AAGDb,YAAY,CAACrrB,SAAS,CAACgsB,WAAW,GAAG,UAAS/E,MAAM,EAAE;AAEpD,EAAA,MAAMqG,SAAS,GAAG,IAAI,CAAC7B,iBAAiB;IAClCvE,OAAO,GAAGoG,SAAS,CAACpG,OAAO;AAEjC,EAAA,MAAMyG,UAAU,GAAGzG,OAAO,CAAC,CAAC,CAAC;EAE7B,IAAIoG,SAAS,CAACC,MAAM,EAAE;IACpB,MAAM,IAAI3sB,KAAK,CAAC,6DAA6D,GAAGqmB,MAAM,CAAC8E,OAAO,GAAG,GAAG,CAAC;AACvG,EAAA;AAEA,EAAA,IAAI,CAAC9E,MAAM,CAACviB,EAAE,EAAE;AACduiB,IAAAA,MAAM,CAACviB,EAAE,GAAIipB,UAAU,IAAIA,UAAU,CAACjpB,EAAE,IAAK,IAAI,CAAC2oB,SAAS,EAAE;AAC/D,EAAA;AAEAnG,EAAAA,OAAO,CAACrW,IAAI,CAACoW,MAAM,CAAC;AACtB,CAAC;AAGDoE,YAAY,CAACrrB,SAAS,CAACksB,UAAU,GAAG,YAAW;AAC7C,EAAA,MAAMoB,SAAS,GAAG,IAAI,CAAC7B,iBAAiB;IAClCzE,OAAO,GAAGsG,SAAS,CAACtG,OAAO;IAC3BE,OAAO,GAAGoG,SAAS,CAACpG,OAAO;IAC3BwE,KAAK,GAAG4B,SAAS,CAAC5B,KAAK;EAE7BxE,OAAO,CAAC0G,GAAG,EAAE;AAEb,EAAA,IAAI,CAAC1G,OAAO,CAACvb,MAAM,EAAE;AACnB,IAAA,IAAI,CAACnH,SAAS,CAACvC,IAAI,CAAC,kBAAkB,EAAE;MAAEokB,QAAQ,EAAEwH,gBAAQ,CAAC,IAAI,EAAEnC,KAAK,CAACoC,OAAO,EAAE;AAAE,KAAC,CAAC;IAEtFpC,KAAK,CAAC/f,MAAM,GAAG,CAAC;AAEhB,IAAA,IAAI,CAACoe,KAAK,CAAC,SAAS,EAAE;AAAE/C,MAAAA,OAAO,EAAEA;AAAQ,KAAC,CAAC;IAE3CsG,SAAS,CAACtG,OAAO,GAAG,IAAI;AAC1B,EAAA;AACF,CAAC;AAGDqE,YAAY,CAACrrB,SAAS,CAACitB,UAAU,GAAG,UAAS5G,QAAQ,EAAE;AACrD,EAAA,MAAMiH,SAAS,GAAG,IAAI,CAAC7B,iBAAiB;EAExC,IAAI,CAACpF,QAAQ,EAAE;AACb,IAAA;AACF,EAAA;EAEAA,QAAQ,GAAG5lB,eAAO,CAAC4lB,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAAEA,QAAQ,CAAE;EAEtDiH,SAAS,CAAC5B,KAAK,GAAG4B,SAAS,CAAC5B,KAAK,CAACqC,MAAM,CAAC1H,QAAQ,CAAC;AACpD,CAAC;AAGDgF,YAAY,CAACrrB,SAAS,CAACytB,eAAe,GAAG,UAASxG,MAAM,EAAEjB,IAAI,EAAE;AAC9D,EAAA,MAAMgI,QAAQ,GAAG,EAAE,IAAI,CAACxC,SAAS;EAEjC,IAAI,CAACxF,IAAI,EAAE;AACT,IAAA,IAAI,CAACuF,MAAM,CAAC0C,MAAM,CAACD,QAAQ,EAAE,IAAI,CAACzC,MAAM,CAAC5f,MAAM,EAAEsb,MAAM,CAAC;AAC1D,EAAA;AACF,CAAC;AAGDoE,YAAY,CAACrrB,SAAS,CAACktB,eAAe,GAAG,UAASjG,MAAM,EAAE;EACxD,IAAI,CAACuE,SAAS,EAAE;AAClB,CAAC;AAGDH,YAAY,CAACrrB,SAAS,CAACqsB,WAAW,GAAG,UAASN,OAAO,EAAE;AACrD,EAAA,OAAO,IAAI,CAACT,WAAW,CAACS,OAAO,CAAC;AAClC,CAAC;AAEDV,YAAY,CAACrrB,SAAS,CAACysB,WAAW,GAAG,UAASV,OAAO,EAAEK,OAAO,EAAE;AAC9D,EAAA,IAAI,CAACL,OAAO,IAAI,CAACK,OAAO,EAAE;AACxB,IAAA,MAAM,IAAIxrB,KAAK,CAAC,8BAA8B,CAAC;AACjD,EAAA;AAEA,EAAA,IAAI,IAAI,CAAC0qB,WAAW,CAACS,OAAO,CAAC,EAAE;IAC7B,MAAM,IAAInrB,KAAK,CAAC,kCAAkC,GAAGmrB,OAAO,GAAG,GAAG,CAAC;AACrE,EAAA;AAEA,EAAA,IAAI,CAACT,WAAW,CAACS,OAAO,CAAC,GAAGK,OAAO;AACrC,CAAC;;ACxiBD;AACA;AACA;AACA,oBAAe;AACb5G,EAAAA,YAAY,EAAE,CAAE,MAAM,EAAE6F,YAAY;AACtC,CAAC;;ACCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIxrB,kBAAgB,GAAG,IAAI;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASquB,kBAAkBA,CAAClhB,QAAQ,EAAE;AAEnD;AACF;AACA;EACE,IAAI,CAACxI,SAAS,GAAGwI,QAAQ;AAC3B;AAEAkhB,kBAAkB,CAACjqB,OAAO,GAAG,CAAE,UAAU,CAAE;AAE3C,SAASkqB,WAAWA,CAACvqB,EAAE,EAAEpD,IAAI,EAAE;EAC7B,OAAO,UAASmB,KAAK,EAAE;AACrB,IAAA,OAAOiC,EAAE,CAACtB,IAAI,CAAC9B,IAAI,IAAI,IAAI,EAAEmB,KAAK,CAACua,OAAO,EAAEva,KAAK,CAACoqB,OAAO,EAAEpqB,KAAK,CAAC;EACnE,CAAC;AACH;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAusB,kBAAkB,CAACluB,SAAS,CAACG,EAAE,GAAG,UAASE,MAAM,EAAE+tB,IAAI,EAAE9tB,QAAQ,EAAE+tB,SAAS,EAAEC,MAAM,EAAE9tB,IAAI,EAAE;EAE1F,IAAIE,kBAAU,CAAC0tB,IAAI,CAAC,IAAIztB,gBAAQ,CAACytB,IAAI,CAAC,EAAE;AACtC5tB,IAAAA,IAAI,GAAG8tB,MAAM;AACbA,IAAAA,MAAM,GAAGD,SAAS;AAClBA,IAAAA,SAAS,GAAG/tB,QAAQ;AACpBA,IAAAA,QAAQ,GAAG8tB,IAAI;AACfA,IAAAA,IAAI,GAAG,IAAI;AACb,EAAA;AAEA,EAAA,IAAI1tB,kBAAU,CAACJ,QAAQ,CAAC,EAAE;AACxBE,IAAAA,IAAI,GAAG8tB,MAAM;AACbA,IAAAA,MAAM,GAAGD,SAAS;AAClBA,IAAAA,SAAS,GAAG/tB,QAAQ;AACpBA,IAAAA,QAAQ,GAAGT,kBAAgB;AAC7B,EAAA;AAEA,EAAA,IAAI0uB,gBAAQ,CAACD,MAAM,CAAC,EAAE;AACpB9tB,IAAAA,IAAI,GAAG8tB,MAAM;AACbA,IAAAA,MAAM,GAAG,KAAK;AAChB,EAAA;AAEA,EAAA,IAAI,CAAC5tB,kBAAU,CAAC2tB,SAAS,CAAC,EAAE;AAC1B,IAAA,MAAM,IAAIztB,KAAK,CAAC,8BAA8B,CAAC;AACjD,EAAA;AAEA,EAAA,IAAI,CAACH,eAAO,CAACJ,MAAM,CAAC,EAAE;IACpBA,MAAM,GAAG,CAAEA,MAAM,CAAE;AACrB,EAAA;AAEA,EAAA,IAAI2M,QAAQ,GAAG,IAAI,CAACxI,SAAS;AAE7BxD,EAAAA,eAAO,CAACX,MAAM,EAAE,UAASsB,KAAK,EAAE;AAE9B;AACA,IAAA,IAAI6sB,SAAS,GAAG,CAAE,cAAc,EAAE7sB,KAAK,EAAEysB,IAAI,CAAE,CAAChf,MAAM,CAAC,UAASnO,CAAC,EAAE;AAAE,MAAA,OAAOA,CAAC;AAAE,IAAA,CAAC,CAAC,CAACuX,IAAI,CAAC,GAAG,CAAC;AAE3FxL,IAAAA,QAAQ,CAAC7M,EAAE,CAACquB,SAAS,EAAEluB,QAAQ,EAAEguB,MAAM,GAAGH,WAAW,CAACE,SAAS,EAAE7tB,IAAI,CAAC,GAAG6tB,SAAS,EAAE7tB,IAAI,CAAC;AAC3F,EAAA,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA0tB,kBAAkB,CAACluB,SAAS,CAACmsB,UAAU,GAAGsC,UAAU,CAAC,YAAY,CAAC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAACwtB,UAAU,GAAGiB,UAAU,CAAC,YAAY,CAAC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAAC0uB,WAAW,GAAGD,UAAU,CAAC,aAAa,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAAC8rB,OAAO,GAAG2C,UAAU,CAAC,SAAS,CAAC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAAC2uB,QAAQ,GAAGF,UAAU,CAAC,UAAU,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAAC0tB,WAAW,GAAGe,UAAU,CAAC,aAAa,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAAC4uB,YAAY,GAAGH,UAAU,CAAC,cAAc,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAACgtB,MAAM,GAAGyB,UAAU,CAAC,QAAQ,CAAC;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,kBAAkB,CAACluB,SAAS,CAAC6uB,QAAQ,GAAGJ,UAAU,CAAC,UAAU,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAUA,CAACL,IAAI,EAAE;AAExB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMU,MAAM,GAAG,UAASzuB,MAAM,EAAEC,QAAQ,EAAE+tB,SAAS,EAAEC,MAAM,EAAE9tB,IAAI,EAAE;IAEjE,IAAIE,kBAAU,CAACL,MAAM,CAAC,IAAIM,gBAAQ,CAACN,MAAM,CAAC,EAAE;AAC1CG,MAAAA,IAAI,GAAG8tB,MAAM;AACbA,MAAAA,MAAM,GAAGD,SAAS;AAClBA,MAAAA,SAAS,GAAG/tB,QAAQ;AACpBA,MAAAA,QAAQ,GAAGD,MAAM;AACjBA,MAAAA,MAAM,GAAG,IAAI;AACf,IAAA;AAEA,IAAA,IAAI,CAACF,EAAE,CAACE,MAAM,EAAE+tB,IAAI,EAAE9tB,QAAQ,EAAE+tB,SAAS,EAAEC,MAAM,EAAE9tB,IAAI,CAAC;EAC1D,CAAC;AAED,EAAA,OAAOsuB,MAAM;AACf;;ACvPO,MAAMC,UAAU,SAASb,kBAAkB,CAAC;AACjD7oB,EAAAA,WAAWA,CAAC2H,QAAQ,EAAEmF,QAAQ,EAAE;IAC9B,KAAK,CAACnF,QAAQ,CAAC;AAEf,IAAA,IAAI,CAACwgB,UAAU,CACb,kBAAkB,EAClB,UAAUtR,OAAO,EAAE;MACjB,MAAM;AAAE7X,QAAAA;AAAU,OAAC,GAAG6X,OAAO;MAE7B,MAAM;AAAExX,QAAAA;AAAG,OAAC,GAAGL,SAAS;AAExB8N,MAAAA,QAAQ,CAAC6c,SAAS,CAAC3qB,SAAS,EAAEK,EAAE,CAAC;IACnC,CAAC,EACD,IACF,CAAC;AAED,IAAA,IAAI,CAAC8oB,UAAU,CACb,gBAAgB,EAChB,UAAUtR,OAAO,EAAE;MACjB,MAAM;QAAE7X,SAAS;AAAEsd,QAAAA;AAAW,OAAC,GAAGzF,OAAO;MAEzC,IAAI,IAAI,IAAIyF,UAAU,EAAE;QACtBxP,QAAQ,CAAC6c,SAAS,CAAC3qB,SAAS,EAAEA,SAAS,CAACK,EAAE,CAAC;QAE3CyN,QAAQ,CAAC8c,OAAO,CAAC5qB,SAAS,EAAEsd,UAAU,CAACjd,EAAE,CAAC;AAC5C,MAAA;IACF,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAqqB,UAAU,CAAC9qB,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;;AChCtC,MAAMirB,WAAW,SAAShB,kBAAkB,CAAC;AAClD7oB,EAAAA,WAAWA,CAAC2H,QAAQ,EAAEmF,QAAQ,EAAEe,UAAU,EAAE;IAC1C,KAAK,CAAClG,QAAQ,CAAC;AAEf,IAAA,IAAI,CAACwgB,UAAU,CACb,kBAAkB,EAClB,UAAUtR,OAAO,EAAE;MACjB,MAAM;AAAE7X,QAAAA;AAAU,OAAC,GAAG6X,OAAO;MAC7B,MAAM;QAAErQ,GAAG;AAAE3J,QAAAA;AAAK,OAAC,GAAGmC,SAAS;MAC/B,MAAM;AAAEP,QAAAA;AAAO,OAAC,GAAGoP,UAAU,CAACnO,GAAG,CAAC7C,IAAI,CAAC;MAEvC,IAAI4B,MAAM,CAACqrB,KAAK,EAAE;AAChBhd,QAAAA,QAAQ,CAACid,UAAU,CAAC/qB,SAAS,EAAEwH,GAAG,CAAC;AACrC,MAAA;IACF,CAAC,EACD,IACF,CAAC;AAED,IAAA,IAAI,CAAC2hB,UAAU,CACb,gBAAgB,EAChB,UAAUtR,OAAO,EAAE;MACjB,MAAM;QAAE7X,SAAS;AAAEsd,QAAAA;AAAW,OAAC,GAAGzF,OAAO;MAEzC,MAAM;QAAErQ,GAAG;AAAE3J,QAAAA;AAAK,OAAC,GAAGmC,SAAS;MAC/B,MAAM;AAAEP,QAAAA;AAAO,OAAC,GAAGoP,UAAU,CAACnO,GAAG,CAAC7C,IAAI,CAAC;AAEvC,MAAA,IAAI4B,MAAM,CAACqrB,KAAK,IAAI,KAAK,IAAIxN,UAAU,EAAE;AACvCxP,QAAAA,QAAQ,CAACid,UAAU,CAAC/qB,SAAS,EAAEwH,GAAG,CAAC;QACnCsG,QAAQ,CAACkd,QAAQ,CAAChrB,SAAS,EAAEsd,UAAU,CAAC9V,GAAG,CAAC;AAC9C,MAAA;IACF,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAqjB,WAAW,CAACjrB,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;;ACpCrD,MAAMqrB,YAAY,SAASpB,kBAAkB,CAAC;AACnD7oB,EAAAA,WAAWA,CAAC2H,QAAQ,EAAEmF,QAAQ,EAAEe,UAAU,EAAE;IAC1C,KAAK,CAAClG,QAAQ,CAAC;AAEf,IAAA,IAAI,CAACwgB,UAAU,CACb,kBAAkB,EAClB,UAAUtR,OAAO,EAAE;MACjB,MAAM;AAAE7X,QAAAA;AAAU,OAAC,GAAG6X,OAAO;MAC7B,MAAM;QAAEqT,IAAI;AAAErtB,QAAAA;AAAK,OAAC,GAAGmC,SAAS;MAChC,MAAM;AAAEP,QAAAA;AAAO,OAAC,GAAGoP,UAAU,CAACnO,GAAG,CAAC7C,IAAI,CAAC;MAEvC,IAAI4B,MAAM,CAAC0rB,MAAM,EAAE;AACjBrd,QAAAA,QAAQ,CAACsd,WAAW,CAACprB,SAAS,EAAEkrB,IAAI,CAAC;AACvC,MAAA;IACF,CAAC,EACD,IACF,CAAC;AAED,IAAA,IAAI,CAAC/B,UAAU,CACb,gBAAgB,EAChB,UAAUtR,OAAO,EAAE;MACjB,MAAM;QAAE7X,SAAS;AAAEsd,QAAAA;AAAW,OAAC,GAAGzF,OAAO;MAEzC,MAAM;QAAEqT,IAAI;AAAErtB,QAAAA;AAAK,OAAC,GAAGmC,SAAS;MAChC,MAAM;AAAEP,QAAAA;AAAO,OAAC,GAAGoP,UAAU,CAACnO,GAAG,CAAC7C,IAAI,CAAC;AAEvC,MAAA,IAAI4B,MAAM,CAAC0rB,MAAM,IAAI,MAAM,IAAI7N,UAAU,EAAE;AACzCxP,QAAAA,QAAQ,CAACsd,WAAW,CAACprB,SAAS,EAAEkrB,IAAI,CAAC;QACrCpd,QAAQ,CAACud,SAAS,CAACrrB,SAAS,EAAEsd,UAAU,CAAC4N,IAAI,CAAC;AAChD,MAAA;IACF,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAD,YAAY,CAACrrB,OAAO,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;;ACpCtD,MAAM0rB,gBAAgB,SAASzB,kBAAkB,CAAC;EACvD7oB,WAAWA,CAAC2H,QAAQ,EAAE;IACpB,KAAK,CAACA,QAAQ,CAAC;;AAEf;AACJ;AACA;AACI,IAAA,IAAI,CAACwgB,UAAU,CACb,gBAAgB,EAChB,UAAUtR,OAAO,EAAE;MACjB,MAAM;AAAEyF,QAAAA;AAAW,OAAC,GAAGzF,OAAO;MAE9B,MAAM;AAAE0T,QAAAA,QAAQ,GAAG;AAAG,OAAC,GAAGjO,UAAU;MAEpC,IAAIiO,QAAQ,CAACC,cAAc,EAAE;AAC3B,QAAA,MAAMC,WAAW,GAAG;UAClB,GAAGF;SACJ;QAED,OAAOE,WAAW,CAACC,SAAS;QAC5B,OAAOD,WAAW,CAACE,SAAS;QAC5B,OAAOF,WAAW,CAACG,OAAO;AAE1BtO,QAAAA,UAAU,CAAC,UAAU,CAAC,GAAGmO,WAAW;AACtC,MAAA;IACF,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAH,gBAAgB,CAAC1rB,OAAO,GAAG,CAAC,UAAU,CAAC;;AC3BhC,MAAMisB,qBAAqB,SAAShC,kBAAkB,CAAC;EAC5D7oB,WAAWA,CAAC2H,QAAQ,EAAE;IACpB,KAAK,CAACA,QAAQ,CAAC;;AAEf;AACJ;AACA;AACA;AACA;AACA;AACI,IAAA,IAAI,CAACwgB,UAAU,CACb,gBAAgB,EAChB,UAAUtR,OAAO,EAAE;MACjB,MAAM;AAAEyF,QAAAA;AAAW,OAAC,GAAGzF,OAAO;MAE9B,MAAMiU,aAAa,GAAG,EAAE;AAExB,MAAA,IAAI,CAACC,oBAAoB,CAACzO,UAAU,CAAC,EAAE;AACrC,QAAA;AACF,MAAA;;AAEA;MACAxQ,MAAM,CAACkf,MAAM,CAACC,4BAAe,CAAC,CAACtvB,OAAO,CAAEoY,MAAM,IAAK;AACjD,QAAA,MAAMmW,IAAI,GAAGgB,kCAAqB,CAACnX,MAAM,CAAC;QAC1C,IAAIrU,WAAG,CAAC4c,UAAU,EAAE4N,IAAI,CAAC,IAAI9sB,SAAS,EAAE;AACtC0tB,UAAAA,aAAa,CAACI,kCAAqB,CAACnX,MAAM,CAAC,CAAC,GAAG3W,SAAS;AAC1D,QAAA;AACF,MAAA,CAAC,CAAC;;AAEF;MACA,IACEsC,WAAG,CAAC4c,UAAU,EAAE4O,kCAAqB,CAACD,4BAAe,CAACE,UAAU,CAAC,CAAC,KAAK/tB,SAAS,IAChFsC,WAAG,CAAC4c,UAAU,EAAE4O,kCAAqB,CAACD,4BAAe,CAACG,KAAK,CAAC,CAAC,KAAKhuB,SAAS,EAC3E;AACA0tB,QAAAA,aAAa,CAAC,cAAc,CAAC,GAAG1tB,SAAS;AAC3C,MAAA;MAEAyZ,OAAO,CAACyF,UAAU,GAAG;AACnB,QAAA,GAAGA,UAAU;QACb,GAAGwO;OACJ;IACH,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAD,qBAAqB,CAACjsB,OAAO,GAAG,CAAC,UAAU,CAAC;;AAE5C;;AAEA,SAASmsB,oBAAoBA,CAACzO,UAAU,EAAE;EACxC,OAAOxQ,MAAM,CAACkf,MAAM,CAACE,kCAAqB,CAAC,CAAC3V,IAAI,CAAE2U,IAAI,IAAK;AACzD,IAAA,OAAOxqB,WAAG,CAAC4c,UAAU,EAAE4N,IAAI,CAAC,KAAK9sB,SAAS;AAC5C,EAAA,CAAC,CAAC;AACJ;;ACzDA,MAAMiuB,yBAAyB,GAAG;AAChC9qB,EAAAA,OAAO,EAAE,SAAS;AAClB6F,EAAAA,iBAAiB,EAAE;AACrB,CAAC;AAEM,MAAMklB,qBAAqB,SAASzC,kBAAkB,CAAC;EAC5D7oB,WAAWA,CAAC2H,QAAQ,EAAE;IACpB,KAAK,CAACA,QAAQ,CAAC;AAEf,IAAA,IAAI,CAACwgB,UAAU,CACb,gBAAgB,EAChB,UAAUtR,OAAO,EAAE;MACjB,MAAM;QAAEyF,UAAU;AAAEiP,QAAAA;AAAc,OAAC,GAAG1U,OAAO;AAE7C,MAAA,MAAM2U,oBAAoB,GAAG1f,MAAM,CAACkf,MAAM,CAACK,yBAAyB,CAAC,CAAC9V,IAAI,CAAE2U,IAAI,IAAK;QACnF,OAAOxqB,WAAG,CAAC4c,UAAU,EAAE,CAAC4N,IAAI,CAAC,CAAC,KAAK9sB,SAAS;AAC9C,MAAA,CAAC,CAAC;MAEF,IAAI,CAACouB,oBAAoB,EAAE;AACzB,QAAA;AACF,MAAA;MAEA,MAAMjrB,OAAO,GAAGb,WAAG,CAAC4c,UAAU,EAAE,CAAC+O,yBAAyB,CAAC9qB,OAAO,CAAC,CAAC;MACpE,MAAMkrB,UAAU,GAAG/rB,WAAG,CAAC6rB,aAAa,EAAE,CAACF,yBAAyB,CAAC9qB,OAAO,CAAC,CAAC;MAC1E,MAAM6F,iBAAiB,GAAG1G,WAAG,CAAC4c,UAAU,EAAE,CAAC+O,yBAAyB,CAACjlB,iBAAiB,CAAC,CAAC;MACxF,MAAMslB,oBAAoB,GAAGhsB,WAAG,CAAC6rB,aAAa,EAAE,CAACF,yBAAyB,CAACjlB,iBAAiB,CAAC,CAAC;MAE9F,IAAIhL,eAAO,CAACmF,OAAO,CAAC,IAAI,CAACorB,iBAAS,CAACF,UAAU,CAAC,EAAE;QAC9C5U,OAAO,CAACyF,UAAU,GAAG;AACnB,UAAA,GAAGA,UAAU;AACblW,UAAAA,iBAAiB,EAAEhJ;SACpB;AACD,QAAA;AACF,MAAA;MAEA,IAAImlB,gBAAQ,CAACnc,iBAAiB,CAAC,IAAI,CAACmc,gBAAQ,CAACmJ,oBAAoB,CAAC,EAAE;QAClE7U,OAAO,CAACyF,UAAU,GAAG;AACnB,UAAA,GAAGA,UAAU;AACb/b,UAAAA,OAAO,EAAEnD;SACV;AACD,QAAA;AACF,MAAA;IACF,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAkuB,qBAAqB,CAAC1sB,OAAO,GAAG,CAAC,UAAU,CAAC;;AChDrC,MAAMgtB,uBAAuB,SAAS/C,kBAAkB,CAAC;EAC9D7oB,WAAWA,CAAC2H,QAAQ,EAAE;IACpB,KAAK,CAACA,QAAQ,CAAC;AAEf,IAAA,IAAI,CAACwgB,UAAU,CACb,eAAe,EACf,UAAUtR,OAAO,EAAE;MACjB,MAAM;AAAE7X,QAAAA;AAAU,OAAC,GAAG6X,OAAO;MAE7B,IAAInX,WAAG,CAACV,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,EAAE;AACxC,QAAA;AACF,MAAA;MAEA6X,OAAO,CAAC7X,SAAS,GAAG;AAClB,QAAA,GAAGA,SAAS;AACZ6sB,QAAAA,UAAU,EAAE,CAAA,CAAA,EAAI7sB,SAAS,CAACK,EAAE,CAAA;OAC7B;IACH,CAAC,EACD,IACF,CAAC;AACH,EAAA;AACF;AAEAusB,uBAAuB,CAAChtB,OAAO,GAAG,CAAC,UAAU,CAAC;;ACnBvC,MAAMktB,cAAc,GAAG;AAC5B3M,EAAAA,QAAQ,EAAE,CACR,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,CAC1B;AACD4M,EAAAA,UAAU,EAAE,CAAC,MAAM,EAAErC,UAAU,CAAC;AAChCsC,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAEnC,WAAW,CAAC;AAClCoC,EAAAA,YAAY,EAAE,CAAC,MAAM,EAAEhC,YAAY,CAAC;AACpCiC,EAAAA,gBAAgB,EAAE,CAAC,MAAM,EAAE5B,gBAAgB,CAAC;AAC5C6B,EAAAA,qBAAqB,EAAE,CAAC,MAAM,EAAEtB,qBAAqB,CAAC;AACtDuB,EAAAA,qBAAqB,EAAE,CAAC,MAAM,EAAEd,qBAAqB,CAAC;AACtDe,EAAAA,uBAAuB,EAAE,CAAC,MAAM,EAAET,uBAAuB;AAC3D,CAAC;;ACzBM,SAASU,UAAQA,CAACjhB,KAAK,EAAEkF,KAAK,EAAEgc,IAAI,EAAE;EAC3ClhB,KAAK,CAACud,MAAM,CAACrY,KAAK,EAAE,CAAC,EAAEgc,IAAI,CAAC;AAE5B,EAAA,OAAOlhB,KAAK;AACd;AAIO,SAASmhB,WAAWA,CAACnhB,KAAK,EAAEkF,KAAK,EAAE;AACxClF,EAAAA,KAAK,CAACud,MAAM,CAACrY,KAAK,EAAE,CAAC,CAAC;AAEtB,EAAA,OAAOlF,KAAK;AACd;AAEO,SAASohB,UAAUA,CAACvsB,iBAAiB,EAAElB,SAAS,EAAEuR,KAAK,EAAE;EAC9D,MAAM1I,MAAM,GAAG3H,iBAAiB,CAACR,GAAG,CAACV,SAAS,CAACS,OAAO,CAAC;AACvDitB,EAAAA,uBAAuB,CAAC1tB,SAAS,EAAE,CAAC,GAAG6I,MAAM,CAAC1C,KAAK,EAAE,YAAY,EAAEoL,KAAK,CAAC,CAAC;AAC1E,EAAA,OAAOvR,SAAS;AAClB;AAEO,SAAS0tB,uBAAuBA,CAAC1tB,SAAS,EAAEkrB,IAAI,EAAE;EACvDlrB,SAAS,CAACmG,KAAK,GAAG+kB,IAAI;AACtB,EAAA,MAAM1qB,UAAU,GAAGR,SAAS,CAACQ,UAAU,IAAI,EAAE;AAE7CA,EAAAA,UAAU,CAAC7D,OAAO,CAAC,CAAC4D,SAAS,EAAEgR,KAAK,KAAK;IACvCmc,uBAAuB,CAACntB,SAAS,EAAE,CAAC,GAAG2qB,IAAI,EAAE,YAAY,EAAE3Z,KAAK,CAAC,CAAC;AACpE,EAAA,CAAC,CAAC;AACJ;AAEO,SAASoc,SAASA,CAAC3tB,SAAS,EAAEyT,KAAK,EAAE;EAC1CzT,SAAS,CAACiC,MAAM,GAAG;AACjB,IAAA,IAAIjC,SAAS,CAACiC,MAAM,IAAI,EAAE,CAAC;AAC3BT,IAAAA,GAAG,EAAEiS;GACN;AAED,EAAA,OAAOzT,SAAS;AAClB;;AC9BO,MAAM4tB,iBAAiB,SAAS/D,kBAAkB,CAAC;EACxD7oB,WAAWA,CAAC2H,QAAQ,EAAE1H,YAAY,EAAE6M,QAAQ,EAAEC,UAAU,EAAE;IACxD,KAAK,CAACpF,QAAQ,CAAC;IAEf,IAAI,CAACxI,SAAS,GAAGwI,QAAQ;IACzB,IAAI,CAACxH,aAAa,GAAGF,YAAY;IACjC,IAAI,CAAC4R,SAAS,GAAG/E,QAAQ;IACzB,IAAI,CAAC+f,WAAW,GAAG9f,UAAU;;AAE7B;IACA,IAAI,CAACob,UAAU,CAAC,CAAC,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAG7rB,KAAK,IAC/F,IAAI,CAACwwB,YAAY,CAACxwB,KAAK,CACzB,CAAC;;AAED;AACA;AACAqL,IAAAA,QAAQ,CAAC7M,EAAE,CAAC,SAAS,EAAG+b,OAAO,IAAK;MAClC,MAAM;AAAExJ,QAAAA;AAAO,OAAC,GAAGwJ,OAAO;AAC1B,MAAA,IAAI,CAACkW,YAAY,CAAC1f,MAAM,CAAC;AAC3B,IAAA,CAAC,CAAC;AACJ,EAAA;EAEA0f,YAAYA,CAAC1f,MAAM,EAAE;AACnB,IAAA,IAAI,CAAClN,aAAa,CAACqmB,KAAK,EAAE;IAC1B,IAAI,CAACrmB,aAAa,CAAC6sB,eAAe,CAAC/O,kBAAK,CAAC5Q,MAAM,CAAC,CAAC;AACnD,EAAA;EAEAyf,YAAYA,CAACxwB,KAAK,EAAE;IAClB,MAAM;AAAE+Q,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE/C,MAAM2f,SAAS,GAAIplB,MAAM,IAAK;MAC5B,IAAI,CAACA,MAAM,CAACrI,UAAU,IAAI,CAACqI,MAAM,CAACrI,UAAU,CAAC8G,MAAM,EAAE;AACnD,QAAA;AACF,MAAA;AAEAuB,MAAAA,MAAM,CAACrI,UAAU,CAAC7D,OAAO,CAAEqD,SAAS,IAAK;QACvC,MAAMwB,GAAG,GAAG,IAAI,CAACL,aAAa,CAACQ,cAAc,CAAC3B,SAAS,CAAC;AAExD2tB,QAAAA,SAAS,CAAC3tB,SAAS,EAAEwB,GAAG,CAACnB,EAAE,CAAC;;AAE5B;QACA4tB,SAAS,CAACjuB,SAAS,CAAC;AACtB,MAAA,CAAC,CAAC;IACJ,CAAC;;AAED;IACAiuB,SAAS,CAAC5f,MAAM,CAAC;AACnB,EAAA;AACF;AAEAuf,iBAAiB,CAAChuB,OAAO,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC;;ACpD3E,MAAMsuB,mBAAmB,CAAC;AAC/B;AACF;AACA;AACA;AACA;AACEltB,EAAAA,WAAWA,CAAC+M,UAAU,EAAE7M,iBAAiB,EAAE;IACzC,IAAI,CAAC2sB,WAAW,GAAG9f,UAAU;IAC7B,IAAI,CAAC3M,kBAAkB,GAAGF,iBAAiB;AAC7C,EAAA;EAEAumB,OAAOA,CAAC5P,OAAO,EAAE;IACf,MAAM;MAAE7X,SAAS;MAAEiT,eAAe;AAAE+B,MAAAA;AAAY,KAAC,GAAG6C,OAAO;IAE3D,MAAM;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE/C,MAAM6f,UAAU,GAAG,CAAC,GAAGlb,eAAe,CAAC9M,KAAK,EAAE,YAAY,CAAC;AAE3DnG,IAAAA,SAAS,CAACS,OAAO,GAAGwS,eAAe,CAAC5S,EAAE;;AAEtC;IACAitB,UAAQ,CAAC5sB,WAAG,CAAC2N,MAAM,EAAE8f,UAAU,CAAC,EAAEnZ,WAAW,EAAEhV,SAAS,CAAC;;AAEzD;IACAU,WAAG,CAAC2N,MAAM,EAAE8f,UAAU,CAAC,CAACxxB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;;AAE5G;AACA,IAAA,IAAI,CAACnQ,kBAAkB,CAACd,GAAG,CAACN,SAAS,CAAC;;AAEtC;AACA,IAAA,IAAI,CAAC6tB,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AACxC,EAAA;EAEAsa,MAAMA,CAAC9Q,OAAO,EAAE;IACd,MAAM;MAAE7X,SAAS;MAAEiT,eAAe;AAAE+B,MAAAA;AAAY,KAAC,GAAG6C,OAAO;IAE3D,MAAM;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE/C,MAAM6f,UAAU,GAAG,CAAC,GAAGlb,eAAe,CAAC9M,KAAK,EAAE,YAAY,CAAC;;AAE3D;IACAqnB,WAAW,CAAC9sB,WAAG,CAAC2N,MAAM,EAAE8f,UAAU,CAAC,EAAEnZ,WAAW,CAAC;;AAEjD;IACAtU,WAAG,CAAC2N,MAAM,EAAE8f,UAAU,CAAC,CAACxxB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;;AAE5G;AACA,IAAA,IAAI,CAACnQ,kBAAkB,CAAChB,MAAM,CAACJ,SAAS,CAAC;;AAEzC;AACA,IAAA,IAAI,CAAC6tB,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AACxC,EAAA;AACF;AAEA6f,mBAAmB,CAACtuB,OAAO,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC;;AC1D1D,MAAMyuB,oBAAoB,CAAC;AAChC;AACF;AACA;AACA;AACA;AACErtB,EAAAA,WAAWA,CAAC+M,UAAU,EAAE7M,iBAAiB,EAAE;IACzC,IAAI,CAAC2sB,WAAW,GAAG9f,UAAU;IAC7B,IAAI,CAAC3M,kBAAkB,GAAGF,iBAAiB;AAC7C,EAAA;EAEAumB,OAAOA,CAAC5P,OAAO,EAAE;IACf,MAAM;MAAE7X,SAAS;AAAEsd,MAAAA;AAAW,KAAC,GAAGzF,OAAO;IAEzC,IAAI;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE7C,MAAMie,aAAa,GAAG,EAAE;AAExB,IAAA,KAAK,IAAI/kB,GAAG,IAAI8V,UAAU,EAAE;AAC1BiP,MAAAA,aAAa,CAAC/kB,GAAG,CAAC,GAAGxH,SAAS,CAACwH,GAAG,CAAC;AAEnC,MAAA,MAAM8mB,QAAQ,GAAGhR,UAAU,CAAC9V,GAAG,CAAC;MAEhC,IAAIA,GAAG,KAAK,IAAI,EAAE;AAChB,QAAA,IAAI8mB,QAAQ,KAAKtuB,SAAS,CAACK,EAAE,EAAE;UAC7B,IAAI,CAACe,kBAAkB,CAACrB,QAAQ,CAACC,SAAS,EAAEsuB,QAAQ,CAAC;AACvD,QAAA;AACF,MAAA,CAAC,MAAM;AACLtuB,QAAAA,SAAS,CAACwH,GAAG,CAAC,GAAG8mB,QAAQ;AAC3B,MAAA;AACF,IAAA;IAEAzW,OAAO,CAAC0U,aAAa,GAAGA,aAAa;;AAErC;AACA,IAAA,IAAI,CAACsB,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AAEtC,IAAA,OAAOrO,SAAS;AAClB,EAAA;EAEA2oB,MAAMA,CAAC9Q,OAAO,EAAE;IACd,MAAM;MAAE7X,SAAS;AAAEusB,MAAAA;AAAc,KAAC,GAAG1U,OAAO;IAE5C,IAAI;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;AAE7C,IAAA,KAAK,IAAI9G,GAAG,IAAI+kB,aAAa,EAAE;AAC7B,MAAA,MAAM+B,QAAQ,GAAG/B,aAAa,CAAC/kB,GAAG,CAAC;MAEnC,IAAIA,GAAG,KAAK,IAAI,EAAE;AAChB,QAAA,IAAI8mB,QAAQ,KAAKtuB,SAAS,CAACK,EAAE,EAAE;UAC7B,IAAI,CAACe,kBAAkB,CAACrB,QAAQ,CAACC,SAAS,EAAEsuB,QAAQ,CAAC;AACvD,QAAA;AACF,MAAA,CAAC,MAAM;AACLtuB,QAAAA,SAAS,CAACwH,GAAG,CAAC,GAAG8mB,QAAQ;AAC3B,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACT,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AAEtC,IAAA,OAAOrO,SAAS;AAClB,EAAA;AACF;AAEAquB,oBAAoB,CAACzuB,OAAO,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC;;AC5D3D,MAAM2uB,oBAAoB,CAAC;AAChC;AACF;AACA;AACA;AACA;AACA;AACA;EACEvtB,WAAWA,CAAC+M,UAAU,EAAE7M,iBAAiB,EAAEyR,YAAY,EAAE1R,YAAY,EAAE;IACrE,IAAI,CAAC4sB,WAAW,GAAG9f,UAAU;IAC7B,IAAI,CAAC3M,kBAAkB,GAAGF,iBAAiB;IAC3C,IAAI,CAAC4R,aAAa,GAAGH,YAAY;IACjC,IAAI,CAACxR,aAAa,GAAGF,YAAY;AACnC,EAAA;EAEAwmB,OAAOA,CAAC5P,OAAO,EAAE;AACf,IAAA,IAAI,CAACxC,aAAa,CAACwC,OAAO,CAAC;AAC7B,EAAA;EAEA8Q,MAAMA,CAAC9Q,OAAO,EAAE;IACd,IAAI;MAAE3C,eAAe;MAAEjC,eAAe;MAAEkC,WAAW;MAAEH,WAAW;MAAEI,SAAS;AAAEpC,MAAAA;AAAU,KAAC,GAAG6E,OAAO;IAElG,IAAI,CAACxC,aAAa,CAChB;AACEH,MAAAA,eAAe,EAAEjC,eAAe;AAChCA,MAAAA,eAAe,EAAEiC,eAAe;AAChCC,MAAAA,WAAW,EAAEH,WAAW;AACxBA,MAAAA,WAAW,EAAEG,WAAW;AACxBC,MAAAA,SAAS,EAAEpC,SAAS;AACpBA,MAAAA,SAAS,EAAEoC;KACZ,EACD,IACF,CAAC;AACH,EAAA;AAEAC,EAAAA,aAAaA,CAACwC,OAAO,EAAE8Q,MAAM,EAAE;IAC7B,IAAI;MAAEzT,eAAe;MAAEjC,eAAe;MAAEkC,WAAW;MAAEH,WAAW;AAAEhC,MAAAA;AAAU,KAAC,GAAG6E,OAAO;IAEvF,IAAI;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE7C,MAAMkgB,UAAU,GAAG,CAAC,GAAGtZ,eAAe,CAAC/O,KAAK,EAAE,YAAY,CAAC;AAE3D,IAAA,IAAI+O,eAAe,CAAC7U,EAAE,KAAK4S,eAAe,CAAC5S,EAAE,EAAE;AAC7C,MAAA,IAAIsoB,MAAM,EAAE;QACV,IAAIxT,WAAW,GAAGH,WAAW,EAAE;AAC7BG,UAAAA,WAAW,EAAE;AACf,QAAA;AACF,MAAA,CAAC,MAAM;QACL,IAAIA,WAAW,GAAGH,WAAW,EAAE;AAC7BA,UAAAA,WAAW,EAAE;AACf,QAAA;AACF,MAAA;AAEA,MAAA,MAAMhV,SAAS,GAAGU,WAAG,CAAC2N,MAAM,EAAE,CAAC,GAAGmgB,UAAU,EAAErZ,WAAW,CAAC,CAAC;;AAE3D;AACAwY,MAAAA,SAAS,CAAC3tB,SAAS,EAAEgT,SAAS,GAAGA,SAAS,CAAC3S,EAAE,GAAG,IAAI,CAACc,aAAa,CAACqU,SAAS,EAAE,CAAC;;AAE/E;MACAiZ,0BAAS,CAAC/tB,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,EAAErZ,WAAW,EAAEH,WAAW,CAAC;;AAE5D;MACAtU,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,CAAC7xB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;AAC9G,IAAA,CAAC,MAAM;AACL,MAAA,MAAMvR,SAAS,GAAGU,WAAG,CAAC2N,MAAM,EAAE,CAAC,GAAGmgB,UAAU,EAAErZ,WAAW,CAAC,CAAC;;AAE3D;AACA,MAAA,IAAI,CAACrC,aAAa,CAACuB,0BAA0B,CAACrU,SAAS,EAAE,CAAC;AAAEsB,QAAAA;AAAM,OAAC,KAAK;AACtE,QAAA,IAAI,CAACwR,aAAa,CAACsY,WAAW,CAAC,IAAI,CAACtY,aAAa,CAACmB,YAAY,CAAC3S,KAAK,CAAC,CAAC;AACxE,MAAA,CAAC,CAAC;AAEFtB,MAAAA,SAAS,CAACS,OAAO,GAAGwS,eAAe,CAAC5S,EAAE;;AAEtC;MACAmtB,WAAW,CAAC9sB,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,EAAErZ,WAAW,CAAC;;AAEjD;MACAzU,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,CAAC7xB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;MAE5G,MAAM4c,UAAU,GAAG,CAAC,GAAGlb,eAAe,CAAC9M,KAAK,EAAE,YAAY,CAAC;;AAE3D;AACAwnB,MAAAA,SAAS,CAAC3tB,SAAS,EAAEgT,SAAS,GAAGA,SAAS,CAAC3S,EAAE,GAAG,IAAI,CAACc,aAAa,CAACqU,SAAS,EAAE,CAAC;;AAE/E;MACA8X,UAAQ,CAAC5sB,WAAG,CAAC2N,MAAM,EAAE8f,UAAU,CAAC,EAAEnZ,WAAW,EAAEhV,SAAS,CAAC;;AAEzD;MACAU,WAAG,CAAC2N,MAAM,EAAE8f,UAAU,CAAC,CAACxxB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;;AAE5G;AACA,MAAA,IAAI,CAACuB,aAAa,CAACuB,0BAA0B,CAACrU,SAAS,EAAE,CAAC;QAAEsB,KAAK;QAAEgT,QAAQ;AAAEC,QAAAA;AAAa,OAAC,KAAK;AAC9F,QAAA,IAAI,CAACzB,aAAa,CAACuY,SAAS,CAAC,IAAI,CAACvY,aAAa,CAACmB,YAAY,CAAC3S,KAAK,CAAC,EAAE;UACnEgT,QAAQ;UACRC,YAAY;UACZma,SAAS,EAAEptB,KAAK,CAACjB;AACnB,SAAC,CAAC;AACJ,MAAA,CAAC,CAAC;AACJ,IAAA;;AAEA;AACA,IAAA,IAAI,CAACwtB,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AACxC,EAAA;AACF;AAEAkgB,oBAAoB,CAAC3uB,OAAO,GAAG,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,CAAC;;ACvG3F,MAAM+uB,sBAAsB,CAAC;AAClC;AACF;AACA;AACA;AACA;AACE3tB,EAAAA,WAAWA,CAAC+M,UAAU,EAAE7M,iBAAiB,EAAE;IACzC,IAAI,CAAC2sB,WAAW,GAAG9f,UAAU;IAC7B,IAAI,CAAC3M,kBAAkB,GAAGF,iBAAiB;AAC7C,EAAA;EAEAumB,OAAOA,CAAC5P,OAAO,EAAE;IACf,MAAM;MAAE3C,eAAe;AAAEC,MAAAA;AAAY,KAAC,GAAG0C,OAAO;IAEhD,IAAI;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE7C,MAAMkgB,UAAU,GAAG,CAAC,GAAGtZ,eAAe,CAAC/O,KAAK,EAAE,YAAY,CAAC;AAE3D,IAAA,MAAMnG,SAAS,GAAI6X,OAAO,CAAC7X,SAAS,GAAGU,WAAG,CAAC2N,MAAM,EAAE,CAAC,GAAGmgB,UAAU,EAAErZ,WAAW,CAAC,CAAE;;AAEjF;IACAqY,WAAW,CAAC9sB,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,EAAErZ,WAAW,CAAC;;AAEjD;IACAzU,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,CAAC7xB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;;AAE5G;AACAqd,IAAAA,2BAAc,CAAC5uB,SAAS,EAAGA,SAAS,IAAK,IAAI,CAACoB,kBAAkB,CAAChB,MAAM,CAACJ,SAAS,CAAC,CAAC;;AAEnF;AACA,IAAA,IAAI,CAAC6tB,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AACxC,EAAA;EAEAsa,MAAMA,CAAC9Q,OAAO,EAAE;IACd,MAAM;MAAE7X,SAAS;MAAEkV,eAAe;AAAEC,MAAAA;AAAY,KAAC,GAAG0C,OAAO;IAE3D,IAAI;AAAExJ,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACwf,WAAW,CAACvf,SAAS,EAAE;IAE7C,MAAMkgB,UAAU,GAAG,CAAC,GAAGtZ,eAAe,CAAC/O,KAAK,EAAE,YAAY,CAAC;;AAE3D;IACAmnB,UAAQ,CAAC5sB,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,EAAErZ,WAAW,EAAEnV,SAAS,CAAC;;AAEzD;IACAU,WAAG,CAAC2N,MAAM,EAAEmgB,UAAU,CAAC,CAAC7xB,OAAO,CAAC,CAACqD,SAAS,EAAEuR,KAAK,KAAKkc,UAAU,CAAC,IAAI,CAACrsB,kBAAkB,EAAEpB,SAAS,EAAEuR,KAAK,CAAC,CAAC;;AAE5G;AACAqd,IAAAA,2BAAc,CAAC5uB,SAAS,EAAGA,SAAS,IAAK,IAAI,CAACoB,kBAAkB,CAACd,GAAG,CAACN,SAAS,CAAC,CAAC;;AAEhF;AACA,IAAA,IAAI,CAAC6tB,WAAW,CAACO,SAAS,CAAC;AAAE/f,MAAAA;AAAO,KAAC,CAAC;AACxC,EAAA;AACF;AAEAsgB,sBAAsB,CAAC/uB,OAAO,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC;;AC5D7D,MAAMivB,oBAAoB,CAAC;AAChC;AACF;AACA;AACA;EACE7tB,WAAWA,CAACE,iBAAiB,EAAE;IAC7B,IAAI,CAACE,kBAAkB,GAAGF,iBAAiB;AAC7C,EAAA;EAEAumB,OAAOA,CAAC5P,OAAO,EAAE;IACf,MAAM;MAAEiX,QAAQ;MAAE9uB,SAAS;AAAEK,MAAAA;AAAG,KAAC,GAAGwX,OAAO;AAE3C,IAAA,IAAIiX,QAAQ,EAAE;MACZ,IAAI,CAAC1tB,kBAAkB,CAAC2tB,IAAI,CAACC,KAAK,CAAC3uB,EAAE,EAAEL,SAAS,CAAC;AACnD,IAAA,CAAC,MAAM;MACL,IAAI,CAACoB,kBAAkB,CAAC2tB,IAAI,CAACE,OAAO,CAAC5uB,EAAE,CAAC;AAC1C,IAAA;AACF,EAAA;EAEAsoB,MAAMA,CAAC9Q,OAAO,EAAE;IACd,MAAM;MAAEiX,QAAQ;MAAE9uB,SAAS;AAAEK,MAAAA;AAAG,KAAC,GAAGwX,OAAO;AAE3C,IAAA,IAAIiX,QAAQ,EAAE;MACZ,IAAI,CAAC1tB,kBAAkB,CAAC2tB,IAAI,CAACE,OAAO,CAAC5uB,EAAE,CAAC;AAC1C,IAAA,CAAC,MAAM;MACL,IAAI,CAACe,kBAAkB,CAAC2tB,IAAI,CAACC,KAAK,CAAC3uB,EAAE,EAAEL,SAAS,CAAC;AACnD,IAAA;AACF,EAAA;AACF;AAEA6uB,oBAAoB,CAACjvB,OAAO,GAAG,CAAC,mBAAmB,CAAC;;AC9B7C,MAAMsvB,qBAAqB,CAAC;AACjC;AACF;AACA;AACA;EACEluB,WAAWA,CAAC2R,YAAY,EAAE;IACxB,IAAI,CAACG,aAAa,GAAGH,YAAY;AACnC,EAAA;EAEA8U,OAAOA,CAAC5P,OAAO,EAAE;IACf,MAAM;MAAEiX,QAAQ;MAAE9uB,SAAS;AAAEwH,MAAAA;AAAI,KAAC,GAAGqQ,OAAO;AAE5C,IAAA,MAAMrD,OAAO,GAAG;AACd2a,MAAAA,YAAY,EAAE;QACZ,CAACnvB,SAAS,CAACK,EAAE,GAAGmH;AAClB;KACD;IAED,MAAM4nB,SAAS,GAAG,IAAI,CAACtc,aAAa,CAACmB,YAAY,CAACjU,SAAS,EAAEwU,OAAO,CAAC;AAErE,IAAA,IAAIsa,QAAQ,EAAE;AACZ,MAAA,IAAI,CAAChc,aAAa,CAACuY,SAAS,CAAC+D,SAAS,EAAE;AAAE9a,QAAAA,QAAQ,EAAE,IAAI;QAAEoa,SAAS,EAAE1uB,SAAS,CAACK;AAAG,OAAC,CAAC;AACtF,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACyS,aAAa,CAACsY,WAAW,CAACgE,SAAS,CAAC;AAC3C,IAAA;;AAEA;IACAvX,OAAO,CAACuX,SAAS,GAAGA,SAAS;AAC/B,EAAA;EAEAzG,MAAMA,CAAC9Q,OAAO,EAAE;IACd,MAAM;MAAEiX,QAAQ;MAAE9uB,SAAS;AAAEovB,MAAAA;AAAU,KAAC,GAAGvX,OAAO;AAElD,IAAA,IAAIiX,QAAQ,EAAE;AACZ,MAAA,IAAI,CAAChc,aAAa,CAACsY,WAAW,CAACgE,SAAS,CAAC;AAC3C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACtc,aAAa,CAACuY,SAAS,CAAC+D,SAAS,EAAE;AAAE9a,QAAAA,QAAQ,EAAE,IAAI;QAAEoa,SAAS,EAAE1uB,SAAS,CAACK;AAAG,OAAC,CAAC;AACtF,IAAA;AACF,EAAA;AACF;AAEA6uB,qBAAqB,CAACtvB,OAAO,GAAG,CAAC,cAAc,CAAC;;ACzCzC,MAAMyvB,sBAAsB,CAAC;AAClC;AACF;AACA;AACA;EACEruB,WAAWA,CAAC2R,YAAY,EAAE;IACxB,IAAI,CAACG,aAAa,GAAGH,YAAY;AACnC,EAAA;EAEA8U,OAAOA,CAAC5P,OAAO,EAAE;IACf,MAAM;MAAEiX,QAAQ;MAAE9uB,SAAS;AAAEkrB,MAAAA;AAAK,KAAC,GAAGrT,OAAO;AAE7C,IAAA,MAAMrD,OAAO,GAAG;AACd2a,MAAAA,YAAY,EAAE;QACZ,CAACnvB,SAAS,CAACK,EAAE,GAAG6qB;AAClB;KACD;IAED,MAAMoE,UAAU,GAAG,EAAE;AAErB,IAAA,IAAIR,QAAQ,EAAE;AACZ,MAAA,IAAI,CAAChc,aAAa,CAACuB,0BAA0B,CAACrU,SAAS,EAAE,CAAC;QAAEsB,KAAK;QAAEgT,QAAQ;AAAEC,QAAAA;AAAa,OAAC,KAAK;QAC9F,MAAM6a,SAAS,GAAG,IAAI,CAACtc,aAAa,CAACmB,YAAY,CAAC3S,KAAK,EAAEkT,OAAO,CAAC;QACjE8a,UAAU,CAAC9iB,IAAI,CAAC;UAAE4iB,SAAS;UAAE9a,QAAQ;UAAEC,YAAY;UAAEma,SAAS,EAAEptB,KAAK,CAACjB;AAAG,SAAC,CAAC;AAC3E,QAAA,IAAI,CAACyS,aAAa,CAACuY,SAAS,CAAC+D,SAAS,EAAE;UAAE9a,QAAQ;UAAEC,YAAY;UAAEma,SAAS,EAAEptB,KAAK,CAACjB;AAAG,SAAC,CAAC;AAC1F,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACyS,aAAa,CAACuB,0BAA0B,CAACrU,SAAS,EAAE,CAAC;QAAEsB,KAAK;QAAEgT,QAAQ;AAAEC,QAAAA;AAAa,OAAC,KAAK;QAC9F,MAAM6a,SAAS,GAAG,IAAI,CAACtc,aAAa,CAACmB,YAAY,CAAC3S,KAAK,EAAEkT,OAAO,CAAC;QACjE8a,UAAU,CAAC9iB,IAAI,CAAC;UAAE4iB,SAAS;UAAE9a,QAAQ;UAAEC,YAAY;UAAEma,SAAS,EAAEptB,KAAK,CAACjB;AAAG,SAAC,CAAC;AAC3E,QAAA,IAAI,CAACyS,aAAa,CAACsY,WAAW,CAACgE,SAAS,CAAC;AAC3C,MAAA,CAAC,CAAC;AACJ,IAAA;;AAEA;IACAvX,OAAO,CAACyX,UAAU,GAAGA,UAAU;AACjC,EAAA;EAEA3G,MAAMA,CAAC9Q,OAAO,EAAE;IACd,MAAM;MAAEiX,QAAQ;AAAEQ,MAAAA;AAAW,KAAC,GAAGzX,OAAO;AAExC,IAAA,IAAIiX,QAAQ,EAAE;MACZQ,UAAU,CAAC3yB,OAAO,CAAC,CAAC;AAAEyyB,QAAAA;AAAU,OAAC,KAAK;AACpC,QAAA,IAAI,CAACtc,aAAa,CAACsY,WAAW,CAACgE,SAAS,CAAC;AAC3C,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,MAAM;MACLE,UAAU,CAAC3yB,OAAO,CAAC,CAAC;QAAEyyB,SAAS;QAAE9a,QAAQ;QAAEC,YAAY;AAAEma,QAAAA;AAAU,OAAC,KAAK;AACvE,QAAA,IAAI,CAAC5b,aAAa,CAACuY,SAAS,CAAC+D,SAAS,EAAE;UACtC9a,QAAQ;UACRC,YAAY;AACZma,UAAAA;AACF,SAAC,CAAC;AACJ,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;AACF;AAEAW,sBAAsB,CAACzvB,OAAO,GAAG,CAAC,cAAc,CAAC;;AC/C1C,MAAM2vB,QAAQ,CAAC;EACpBvuB,WAAWA,CAACmgB,YAAY,EAAExY,QAAQ,EAAEoF,UAAU,EAAE7M,iBAAiB,EAAEyf,YAAY,EAAE;IAC/E,IAAI,CAAC6O,aAAa,GAAGrO,YAAY;IACjC,IAAI,CAAC0M,WAAW,GAAG9f,UAAU;IAC7B,IAAI,CAAC3M,kBAAkB,GAAGF,iBAAiB;IAC3C,IAAI,CAACuuB,aAAa,GAAG9O,YAAY;AAEjChY,IAAAA,QAAQ,CAAC7M,EAAE,CAAC,WAAW,EAAE,MAAM;MAC7B,IAAI,CAAC4zB,gBAAgB,EAAE;AACzB,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAA,EAAAA,gBAAgBA,GAAG;AACjB5iB,IAAAA,MAAM,CAACgD,OAAO,CAAC,IAAI,CAAC6f,WAAW,EAAE,CAAC,CAAChzB,OAAO,CAAC,CAAC,CAAC0D,EAAE,EAAE0nB,OAAO,CAAC,KAAK;MAC5D,IAAI,CAACyH,aAAa,CAACnH,eAAe,CAAChoB,EAAE,EAAE0nB,OAAO,CAAC;AACjD,IAAA,CAAC,CAAC;AACJ,EAAA;AAEA4H,EAAAA,WAAWA,GAAG;IACZ,OAAO;AACL,MAAA,eAAe,EAAEzB,mBAAmB;AACpC,MAAA,gBAAgB,EAAEG,oBAAoB;AACtC,MAAA,gBAAgB,EAAEE,oBAAoB;AACtC,MAAA,kBAAkB,EAAEI,sBAAsB;AAC1C,MAAA,gBAAgB,EAAEE,oBAAoB;AACtC,MAAA,iBAAiB,EAAEK,qBAAqB;AACxC,MAAA,kBAAkB,EAAEG;KACrB;AACH,EAAA;AAEA9gB,EAAAA,YAAYA,CAACgH,KAAK,EAAEtC,eAAe,EAAE+B,WAAW,EAAE;IAChD,MAAMhV,SAAS,GAAG,IAAI,CAACyvB,aAAa,CAACG,MAAM,CAACra,KAAK,CAAC;AAElD,IAAA,MAAMsC,OAAO,GAAG;MACd7X,SAAS;MACTiT,eAAe;AACf+B,MAAAA;KACD;IAED,IAAI,CAACwa,aAAa,CAAC/H,OAAO,CAAC,eAAe,EAAE5P,OAAO,CAAC;AAEpD,IAAA,OAAO7X,SAAS;AAClB,EAAA;AAEAyZ,EAAAA,aAAaA,CAACzZ,SAAS,EAAEsd,UAAU,EAAE5X,KAAK,EAAE;AAC1C,IAAA,IAAI,CAACwkB,gBAAQ,CAAC5M,UAAU,CAAC,EAAE;AACzBA,MAAAA,UAAU,GAAG;AACX,QAAA,CAACA,UAAU,GAAG5X;OACf;AACH,IAAA;AAEA,IAAA,MAAMmS,OAAO,GAAG;MACd7X,SAAS;AACTsd,MAAAA;KACD;IAED,IAAI,CAACkS,aAAa,CAAC/H,OAAO,CAAC,gBAAgB,EAAE5P,OAAO,CAAC;AACvD,EAAA;AAEAxC,EAAAA,aAAaA,CAACrV,SAAS,EAAEkV,eAAe,EAAEjC,eAAe,EAAEkC,WAAW,EAAEH,WAAW,EAAEI,SAAS,EAAEpC,SAAS,EAAE;AACzG,IAAA,MAAM6E,OAAO,GAAG;MACd7X,SAAS;MACTkV,eAAe;MACfjC,eAAe;MACfkC,WAAW;MACXH,WAAW;MACXI,SAAS;AACTpC,MAAAA;KACD;IAED,IAAI,CAACwc,aAAa,CAAC/H,OAAO,CAAC,gBAAgB,EAAE5P,OAAO,CAAC;AACvD,EAAA;AAEAuE,EAAAA,eAAeA,CAACpc,SAAS,EAAEkV,eAAe,EAAEC,WAAW,EAAE;AACvD,IAAA,MAAM0C,OAAO,GAAG;MACd7X,SAAS;MACTkV,eAAe;AACfC,MAAAA;KACD;IAED,IAAI,CAACqa,aAAa,CAAC/H,OAAO,CAAC,kBAAkB,EAAE5P,OAAO,CAAC;AACzD,EAAA;AAEA+S,EAAAA,OAAOA,CAAC5qB,SAAS,EAAEK,EAAE,EAAE;AACrB,IAAA,MAAMwX,OAAO,GAAG;MACd7X,SAAS;MACTK,EAAE;AACFyuB,MAAAA,QAAQ,EAAE;KACX;IAED,IAAI,CAACU,aAAa,CAAC/H,OAAO,CAAC,gBAAgB,EAAE5P,OAAO,CAAC;AACvD,EAAA;AAEA8S,EAAAA,SAASA,CAAC3qB,SAAS,EAAEK,EAAE,EAAE;AACvB,IAAA,MAAMwX,OAAO,GAAG;MACd7X,SAAS;MACTK,EAAE;AACFyuB,MAAAA,QAAQ,EAAE;KACX;IAED,IAAI,CAACU,aAAa,CAAC/H,OAAO,CAAC,gBAAgB,EAAE5P,OAAO,CAAC;AACvD,EAAA;AAEAmT,EAAAA,QAAQA,CAAChrB,SAAS,EAAEwH,GAAG,EAAE;AACvB,IAAA,MAAMqQ,OAAO,GAAG;MACd7X,SAAS;MACTwH,GAAG;AACHsnB,MAAAA,QAAQ,EAAE;KACX;IAED,IAAI,CAACU,aAAa,CAAC/H,OAAO,CAAC,iBAAiB,EAAE5P,OAAO,CAAC;AACxD,EAAA;AAEAkT,EAAAA,UAAUA,CAAC/qB,SAAS,EAAEwH,GAAG,EAAE;AACzB,IAAA,MAAMqQ,OAAO,GAAG;MACd7X,SAAS;MACTwH,GAAG;AACHsnB,MAAAA,QAAQ,EAAE;KACX;IAED,IAAI,CAACU,aAAa,CAAC/H,OAAO,CAAC,iBAAiB,EAAE5P,OAAO,CAAC;AACxD,EAAA;AAEAwT,EAAAA,SAASA,CAACrrB,SAAS,EAAEkrB,IAAI,EAAE;AACzB,IAAA,MAAMrT,OAAO,GAAG;MACd7X,SAAS;MACTkrB,IAAI;AACJ4D,MAAAA,QAAQ,EAAE;KACX;IAED,IAAI,CAACU,aAAa,CAAC/H,OAAO,CAAC,kBAAkB,EAAE5P,OAAO,CAAC;AACzD,EAAA;AAEAuT,EAAAA,WAAWA,CAACprB,SAAS,EAAEkrB,IAAI,EAAE;AAC3B,IAAA,MAAMrT,OAAO,GAAG;MACd7X,SAAS;MACTkrB,IAAI;AACJ4D,MAAAA,QAAQ,EAAE;KACX;IAED,IAAI,CAACU,aAAa,CAAC/H,OAAO,CAAC,kBAAkB,EAAE5P,OAAO,CAAC;AACzD,EAAA;AACF;AAEA0X,QAAQ,CAAC3vB,OAAO,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;;ACpJ3F,MAAMiwB,cAAc,GAAG;AAC5BvP,EAAAA,WAAW,EAAE,CAACwM,cAAc,EAAEgD,aAAa,CAAC;AAC5C3P,EAAAA,QAAQ,EAAE,CAAC,mBAAmB,EAAE,UAAU,CAAC;AAC3C4P,EAAAA,iBAAiB,EAAE,CAAC,MAAM,EAAEnC,iBAAiB,CAAC;AAC9C9f,EAAAA,QAAQ,EAAE,CAAC,MAAM,EAAEyhB,QAAQ;AAC7B,CAAC;;ACXM,MAAMS,SAAS,CAAC;EACrBhvB,WAAWA,CAAC2H,QAAQ,EAAE;IACpB,IAAI,CAACxI,SAAS,GAAGwI,QAAQ;IACzB,IAAI,CAACsnB,UAAU,GAAG,IAAI;AACxB,EAAA;AAEAvvB,EAAAA,GAAGA,GAAG;IACJ,OAAO,IAAI,CAACuvB,UAAU;AACxB,EAAA;EAEAxe,GAAGA,CAACkJ,SAAS,EAAE;AACb,IAAA,IAAI,IAAI,CAACsV,UAAU,KAAKtV,SAAS,EAAE;AACjC,MAAA;AACF,IAAA;IAEA,IAAI,CAACsV,UAAU,GAAGtV,SAAS;AAE3B,IAAA,IAAI,CAACxa,SAAS,CAACvC,IAAI,CAAC,mBAAmB,EAAE;MACvC+c,SAAS,EAAE,IAAI,CAACsV;AAClB,KAAC,CAAC;AACJ,EAAA;EAEAnU,MAAMA,CAACnB,SAAS,EAAE;IAChB,MAAMuV,YAAY,GAAG,IAAI,CAACD,UAAU,KAAKtV,SAAS,GAAG,IAAI,GAAGA,SAAS;AAErE,IAAA,IAAI,CAAClJ,GAAG,CAACye,YAAY,CAAC;AACxB,EAAA;AAEA1I,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAAC/V,GAAG,CAAC,IAAI,CAAC;AAChB,EAAA;EAEAmK,UAAUA,CAAC5b,SAAS,EAAE;AACpB,IAAA,OAAO,IAAI,CAACiwB,UAAU,KAAKjwB,SAAS;AACtC,EAAA;AACF;AAEAgwB,SAAS,CAACpwB,OAAO,GAAG,CAAC,UAAU,CAAC;;ACrCzB,MAAMuwB,iBAAiB,CAAC;AAC7BnvB,EAAAA,WAAWA,CAAC2H,QAAQ,EAAEgS,SAAS,EAAE;IAC/BhS,QAAQ,CAAC7M,EAAE,CACT,CAAC,yCAAyC,EAAE,0CAA0C,CAAC,EACvF,CAAC;AAAE+b,MAAAA;AAAQ,KAAC,KAAK;MACf,MAAM;AAAE7X,QAAAA;AAAU,OAAC,GAAG6X,OAAO;AAE7B8C,MAAAA,SAAS,CAAClJ,GAAG,CAACzR,SAAS,CAAC;AAC1B,IAAA,CACF,CAAC;AAED2I,IAAAA,QAAQ,CAAC7M,EAAE,CAAC,4CAA4C,EAAE,CAAC;AAAE+b,MAAAA;AAAQ,KAAC,KAAK;MACzE,MAAM;QAAE3C,eAAe;AAAEC,QAAAA;AAAY,OAAC,GAAG0C,OAAO;AAEhD,MAAA,MAAM7X,SAAS,GAAGkV,eAAe,CAAC1U,UAAU,CAAC2U,WAAW,CAAC,IAAID,eAAe,CAAC1U,UAAU,CAAC2U,WAAW,GAAG,CAAC,CAAC;AAExG,MAAA,IAAInV,SAAS,EAAE;AACb2a,QAAAA,SAAS,CAAClJ,GAAG,CAACzR,SAAS,CAAC;AAC1B,MAAA,CAAC,MAAM;QACL2a,SAAS,CAAC6M,KAAK,EAAE;AACnB,MAAA;AACF,IAAA,CAAC,CAAC;AAEF7e,IAAAA,QAAQ,CAAC7M,EAAE,CAAC,kBAAkB,EAAE,CAAC;AAAEkE,MAAAA;AAAU,KAAC,KAAK;AACjD,MAAA,IAAI2a,SAAS,CAACiB,UAAU,CAAC5b,SAAS,CAAC,EAAE;QACnC2a,SAAS,CAAC6M,KAAK,EAAE;AACnB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AACF;AAEA2I,iBAAiB,CAACvwB,OAAO,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;;AC5B9C,MAAMwwB,eAAe,GAAG;AAC7BjQ,EAAAA,QAAQ,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC;AAC5CxF,EAAAA,SAAS,EAAE,CAAC,MAAM,EAAEqV,SAAS,CAAC;AAC9BK,EAAAA,iBAAiB,EAAE,CAAC,MAAM,EAAEF,iBAAiB;AAC/C,CAAC;;ACPD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,iBAAiB,CAAC;AAC7B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEtvB,EAAAA,WAAWA,CAAC2H,QAAQ,EAAE4nB,UAAU,EAAE;IAChC,IAAI,CAACpwB,SAAS,GAAGwI,QAAQ;IACzB,IAAI,CAAC6nB,WAAW,GAAGD,UAAU;IAC7B,IAAI,CAACpwB,SAAS,CAACrE,EAAE,CAAC,CAAA,EAAG,IAAI,CAAC00B,WAAW,CAAA,iBAAA,CAAmB,EAAE,MAAM;MAC9D,IAAI,CAACC,iBAAiB,GAAG,IAAI;AAC/B,IAAA,CAAC,CAAC;IACF,IAAI,CAACtwB,SAAS,CAACrE,EAAE,CAAC,CAAA,EAAG,IAAI,CAAC00B,WAAW,CAAA,kBAAA,CAAoB,EAAE,MAAM;MAC/D,IAAI,CAACC,iBAAiB,GAAG,KAAK;AAChC,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACE7R,QAAQA,CAACrV,SAAS,EAAE;AAClB,IAAA,IAAI,CAACmnB,oBAAoB,CAAC,MAAM,IAAI,CAACvwB,SAAS,CAACvC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC4yB,WAAW,SAAS,EAAE;AAAEjnB,MAAAA;AAAU,KAAC,CAAC,CAAC;AACnG,EAAA;;AAEA;AACF;AACA;AACEonB,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,CAACD,oBAAoB,CAAC,MAAM,IAAI,CAACvwB,SAAS,CAACvC,IAAI,CAAC,GAAG,IAAI,CAAC4yB,WAAW,CAAA,OAAA,CAAS,CAAC,CAAC;AACpF,EAAA;;AAEA;AACF;AACA;AACEI,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAACF,oBAAoB,CAAC,MAAM,IAAI,CAACvwB,SAAS,CAACvC,IAAI,CAAC,GAAG,IAAI,CAAC4yB,WAAW,CAAA,MAAA,CAAQ,CAAC,CAAC;AACnF,EAAA;;AAEA;AACF;AACA;EACEE,oBAAoBA,CAACx0B,QAAQ,EAAE;IAC7B,IAAI,IAAI,CAACu0B,iBAAiB,EAAE;AAC1Bv0B,MAAAA,QAAQ,EAAE;AACZ,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACiE,SAAS,CAACpD,IAAI,CAAC,CAAA,EAAG,IAAI,CAACyzB,WAAW,CAAA,iBAAA,CAAmB,EAAEt0B,QAAQ,CAAC;AACvE,IAAA;AACF,EAAA;AACF;;AC3DO,MAAM20B,eAAe,SAASP,iBAAiB,CAAC;EACrDtvB,WAAWA,CAAC2H,QAAQ,EAAE;AACpB,IAAA,KAAK,CAACA,QAAQ,EAAE,SAAS,CAAC;AAC5B,EAAA;AACF;AAEAkoB,eAAe,CAACjxB,OAAO,GAAG,CAAC,UAAU,CAAC;;ACN/B,MAAMkxB,aAAa,GAAG;EAC3B3Q,QAAQ,EAAE,CAAC,SAAS,CAAC;AACrB4Q,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAEF,eAAe;AACnC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASG,MAAMA,CAAC7sB,KAAK,EAAE;EAEpC,MAAM;IACJgF,OAAO;AACP8nB,IAAAA;AACF,GAAC,GAAG9sB,KAAK;EAET,MAAM;IACJ+sB,cAAc;IACdC,mBAAmB;IACnBC,eAAe;AACfC,IAAAA;AACF,GAAC,GAAGJ,cAAc;AAElB,EAAA,MAAM5sB,KAAK,GAAG+sB,eAAe,CAACjoB,OAAO,CAAC;AACtC,EAAA,MAAMtL,IAAI,GAAGwzB,YAAY,CAACloB,OAAO,CAAC;AAClC,EAAA,MAAMmoB,gBAAgB,GAAGH,mBAAmB,IAAIA,mBAAmB,CAAChoB,OAAO,CAAC;AAE5E,EAAA,MAAMooB,WAAW,GAAGL,cAAc,CAAC/nB,OAAO,CAAC;AAE3C,EAAA,OAAQqoB,eAAA,CAAA,KAAA,EAAA;AAAK/sB,IAAAA,KAAK,EAAC,6BAA6B;AAAAC,IAAAA,QAAA,GAC9C+sB,cAAA,CAAA,KAAA,EAAA;AAAKhtB,MAAAA,KAAK,EAAC,kCAAkC;AAAAC,MAAAA,QAAA,EACzC6sB,WAAW,IAAIE,cAAA,CAACF,WAAW,EAAA;AAAC1sB,QAAAA,KAAK,EAAC,IAAI;AAACC,QAAAA,MAAM,EAAC,IAAI;AAACC,QAAAA,OAAO,EAAC;AAAa,OAAA;AACvE,KAAA,CAAC,EACNysB,eAAA,CAAA,KAAA,EAAA;AAAK/sB,MAAAA,KAAK,EAAC,oCAAoC;AAAAC,MAAAA,QAAA,GAC7C+sB,cAAA,CAAA,KAAA,EAAA;AAAKhtB,QAAAA,KAAK,EAAC,kCAAkC;AAAAC,QAAAA,QAAA,EAAG7G;AAAI,OAAO,CAAC,EAC1DwG,KAAK,GACLotB,cAAA,CAAA,KAAA,EAAA;AAAKhtB,QAAAA,KAAK,EAAC,mCAAmC;AAAAC,QAAAA,QAAA,EAAGL;AAAY,OAAA,CAAC,GAC9D,IAAI;AAEH,KAAA,CAAC,EACNotB,cAAA,CAAA,KAAA,EAAA;AAAKhtB,MAAAA,KAAK,EAAC,qCAAqC;MAAAC,QAAA,EAC5C4sB,gBAAgB,GAChBG,cAAA,CAAA,GAAA,EAAA;AACEC,QAAAA,GAAG,EAAC,YAAY;AAChBjtB,QAAAA,KAAK,EAAC,kCAAkC;AACxCktB,QAAAA,IAAI,EAAGL,gBAAkB;AACzB9iB,QAAAA,KAAK,EAAC,oBAAoB;AAC1BL,QAAAA,MAAM,EAAC,QAAQ;AAAAzJ,QAAAA,QAAA,EACf+sB,cAAA,CAACG,gBAAgB,EAAA,EAAE;AAAC,OACnB,CAAC,GACJ;AAAI,KAEH,CAAC;AAAA,GACH,CAAC;AACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[0,40,41,46,47,48,49,53,54,55,81]}