@bpmn-io/form-js-editor 1.0.0-alpha.1 → 1.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../node_modules/diagram-js/lib/core/EventBus.js","../src/core/Debounce.js","../src/core/FieldFactory.js","../src/core/FormFieldRegistry.js","../src/core/FormLayoutValidator.js","../src/import/Importer.js","../src/import/index.js","../src/render/components/Util.js","../src/render/context/DragAndDropContext.js","../src/render/context/FormEditorContext.js","../src/render/hooks/useService.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/editor-form-fields/EditorText.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/Palette.js","../../../node_modules/@bpmn-io/properties-panel/dist/index.esm.js","../src/features/properties-panel/hooks/useVariables.js","../src/features/properties-panel/Util.js","../src/features/properties-panel/PropertiesPanelHeaderProvider.js","../src/features/properties-panel/PropertiesPanelPlaceholderProvider.js","../src/features/properties-panel/entries/ActionEntry.js","../src/features/properties-panel/entries/AltTextEntry.js","../src/features/properties-panel/entries/ColumnsEntry.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/LabelEntry.js","../src/features/properties-panel/entries/ImageSourceEntry.js","../src/features/properties-panel/entries/TextEntry.js","../src/features/properties-panel/entries/NumberEntries.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/DateTimeSerializationEntry.js","../src/features/properties-panel/entries/factories/simpleBoolEntryFactory.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/entries/ValuesSourceSelectEntry.js","../src/features/properties-panel/entries/InputKeyValuesSourceEntry.js","../src/features/properties-panel/entries/StaticValuesSourceEntry.js","../src/features/properties-panel/entries/AdornerEntry.js","../src/features/properties-panel/entries/ReadonlyEntry.js","../src/features/properties-panel/entries/ConditionEntry.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/ValuesGroups.js","../src/features/properties-panel/groups/CustomValuesGroup.js","../src/features/properties-panel/groups/AppearanceGroup.js","../src/features/properties-panel/groups/LayoutGroup.js","../src/features/properties-panel/groups/ConditionGroup.js","../src/features/properties-panel/PropertiesPanel.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/dragging/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/modeling/cmd/Util.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/Modeling.js","../../../node_modules/diagram-js/lib/command/CommandInterceptor.js","../src/features/modeling/FormLayoutUpdater.js","../src/features/modeling/behavior/IdBehavior.js","../src/features/modeling/behavior/KeyBehavior.js","../src/features/modeling/behavior/ValidateBehavior.js","../src/features/modeling/behavior/index.js","../../../node_modules/diagram-js/lib/command/CommandStack.js","../../../node_modules/diagram-js/lib/command/index.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/PaletteModule.js","../src/features/palette/index.js","../src/features/properties-panel/PropertiesPanelModule.js","../src/features/properties-panel/index.js","../src/features/render-injection/RenderInjector.js","../src/features/render-injection/index.js","../src/features/expression-language/EditorTemplating.js","../src/features/expression-language/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 */\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/**\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 */\nEventBus.prototype.on = function(events, priority, callback, that) {\n\n events = isArray(events) ? events : [ events ];\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n var actualCallback = callback;\n\n if (that) {\n actualCallback = bind(callback, that);\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n actualCallback[FN_REF] = callback[FN_REF] || callback;\n }\n\n var self = this;\n\n events.forEach(function(e) {\n self._addListener(e, {\n priority: priority,\n callback: actualCallback,\n next: null\n });\n });\n};\n\n\n/**\n * Register an event listener that is 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 */\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} [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} listener\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 default function DebounceFactory(config = true) {\n\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' ];","export default class FieldFactory {\n\n /**\n * @constructor\n *\n * @param { import('./FormFieldRegistry').default } formFieldRegistry\n * @param { import('@bpmn-io/form-js-viewer').FormFields } formFields\n */\n constructor(formFieldRegistry, formFields) {\n this._formFieldRegistry = formFieldRegistry;\n this._formFields = formFields;\n }\n\n create(attrs, applyDefaults = true) {\n\n const {\n id,\n key,\n type\n } = attrs;\n\n const fieldDefinition = this._formFields.get(type);\n\n if (!fieldDefinition) {\n throw new Error(`form field of type <${ type }> not supported`);\n }\n\n const { config } = fieldDefinition;\n\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`ID <${ id }> already assigned`);\n }\n\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`key <${ key }> already assigned`);\n }\n\n const labelAttrs = applyDefaults && config.label ? {\n label: config.label\n } : {};\n\n const field = config.create({\n ...labelAttrs,\n ...attrs\n });\n\n this._ensureId(field);\n\n if (config.keyed) {\n this._ensureKey(field, applyDefaults);\n }\n\n return field;\n }\n\n _ensureId(field) {\n\n if (field.id) {\n this._formFieldRegistry._ids.claim(field.id, field);\n\n return;\n }\n\n let prefix = 'Field';\n\n if (field.type === 'default') {\n prefix = 'Form';\n }\n\n field.id = this._formFieldRegistry._ids.nextPrefixed(`${prefix}_`, field);\n }\n\n _ensureKey(field, applyDefaults) {\n\n if (field.key) {\n this._formFieldRegistry._keys.claim(field.key, field);\n\n return;\n }\n\n if (applyDefaults) {\n let prefix = 'field';\n\n field.key = this._formFieldRegistry._keys.nextPrefixed(`${prefix}_`, field);\n }\n }\n}\n\n\nFieldFactory.$inject = [\n 'formFieldRegistry',\n 'formFields'\n];","import {\n FormFieldRegistry as BaseFieldRegistry\n} from '@bpmn-io/form-js-viewer';\n\n\nexport default class FormFieldRegistry extends BaseFieldRegistry {\n\n /**\n * Updates a form fields id.\n *\n * @param {Object} formField\n * @param {string} newId\n */\n updateId(formField, newId) {\n\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\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 default class FormLayoutValidator {\n\n /**\n * @constructor\n *\n * @param { import('./FormLayouter').default } formLayouter\n * @param { import('./FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formLayouter, formFieldRegistry) {\n this._formLayouter = formLayouter;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n validateField(field = {}, columns, row) {\n\n // allow empty (auto columns)\n if (Number.isInteger(columns)) {\n\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 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\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}","import { clone } from '@bpmn-io/form-js-viewer';\n\n\nexport default class Importer {\n\n /**\n * @constructor\n * @param { import('../core/FormFieldRegistry').default } formFieldRegistry\n * @param { import('../core/FieldFactory').default } fieldFactory\n * @param { import('../core/FormLayouter').default } formLayouter\n */\n constructor(formFieldRegistry, fieldFactory, formLayouter) {\n this._formFieldRegistry = formFieldRegistry;\n this._fieldFactory = fieldFactory;\n this._formLayouter = formLayouter;\n }\n\n /**\n * Import schema creating rows, fields, attaching additional\n * information to each field and adding fields to the\n * field registry.\n *\n * Additional information attached:\n *\n * * `id` (unless present)\n * * `_parent`\n * * `_path`\n *\n * @param {any} schema\n *\n * @typedef {{ warnings: Error[], schema: any }} ImportResult\n * @returns {ImportResult}\n */\n importSchema(schema) {\n\n // TODO: Add warnings\n const warnings = [];\n\n try {\n\n const importedSchema = this.importFormField(clone(schema));\n\n this._formLayouter.calculateLayout(clone(importedSchema));\n\n return {\n schema: importedSchema,\n warnings\n };\n } catch (err) {\n err.warnings = warnings;\n\n throw err;\n }\n }\n\n /**\n * @param {{[x: string]: any}} fieldAttrs\n * @param {String} [parentId]\n * @param {number} [index]\n *\n * @return {any} field\n */\n importFormField(fieldAttrs, parentId, index) {\n const {\n components,\n id,\n key\n } = fieldAttrs;\n\n let parent, path;\n\n if (parentId) {\n parent = this._formFieldRegistry.get(parentId);\n }\n\n // validate <id> uniqueness\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`form field with id <${ id }> already exists`);\n }\n\n // validate <key> uniqueness\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`form field with key <${ key }> already exists`);\n }\n\n // set form field path\n path = parent ? [ ...parent._path, 'components', index ] : [];\n\n const field = this._fieldFactory.create({\n ...fieldAttrs,\n _path: path,\n _parent: parent && parent.id\n }, false);\n\n this._formFieldRegistry.add(field);\n\n if (components) {\n field.components = this.importFormFields(components, field.id);\n }\n\n return field;\n }\n\n /**\n * @param {Array<any>} components\n * @param {string} parentId\n *\n * @return {Array<any>} imported components\n */\n importFormFields(components, parentId) {\n return components.map((component, index) => {\n return this.importFormField(component, parentId, index);\n });\n }\n\n}\n\nImporter.$inject = [ 'formFieldRegistry', 'fieldFactory', 'formLayouter' ];","import Importer from './Importer';\n\nexport default {\n importer: [ 'type', Importer ]\n};","import classNames from 'classnames';\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 * @param {Element} dragPreview\n *\n * @return {Function} drag start callback function\n */\nexport function createDragger(fn, dragPreview) {\n\n let self;\n\n let startX, startY;\n\n /** drag start */\n function onDragStart(event) {\n\n self = this;\n\n startX = event.clientX;\n startY = event.clientY;\n\n // (1) prevent preview image\n if (event.dataTransfer) {\n event.dataTransfer.setDragImage(dragPreview, 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\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}\n\nfunction preventDefault(event) {\n event.preventDefault();\n event.stopPropagation();\n}","import { createContext } from 'preact';\n\nconst DragAndDropContext = createContext({\n drake: null\n});\n\nexport default DragAndDropContext;","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nconst FormEditorContext = createContext({\n getService\n});\n\nexport default FormEditorContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport { FormEditorContext } from '../context';\n\n\nexport default function(type, strict) {\n const {\n getService\n } = useContext(FormEditorContext);\n\n return getService(type, strict);\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 4.7l-.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})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n fill: \"none\"\n}, props), /*#__PURE__*/React.createElement(\"rect\", {\n width: \"16\",\n height: \"16\",\n x: \".536\",\n fill: \"#fff\",\n rx: \"3\",\n style: {\n mixBlendMode: \"multiply\"\n }\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M.536 0h16v16h-16z\",\n style: {\n mixBlendMode: \"multiply\"\n }\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentcolor\",\n d: \"M7.536 6h-1v6h1V6zm3 0h-1v6h1V6z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentcolor\",\n d: \"M2.536 3v1h1v10a1 1 0 001 1h8a1 1 0 001-1V4h1V3h-12zm2 11V4h8v10h-8zm6-13h-4v1h4V1z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n fill: \"currentcolor\",\n viewBox: \"0 0 32 32\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 6h4v4h-4zm8 0h4v4h-4zm-8 8h4v4h-4zm8 0h4v4h-4zm-8 8h4v4h-4zm8 0h4v4h-4z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h32v32H0z\",\n fill: \"none\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"15\",\n height: \"15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 13.793l-3.776-3.776a5.508 5.508 0 10-.707.707l3.776 3.776.707-.707zM2 6.5a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0z\",\n fill: \"currentColor\"\n})));","import { Text } from '@bpmn-io/form-js-viewer';\nimport { editorFormFieldClasses } from '../Util';\nimport { useService } from '../../hooks';\n\nimport { iconsByType } from '../icons';\n\nexport default function EditorText(props) {\n\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) {\n return <div class={ editorFormFieldClasses(type) }>\n <div class=\"fjs-form-field-placeholder\"><Icon viewBox=\"0 0 54 54\" />Text view is empty</div>\n </div>;\n }\n\n if (expressionLanguage.isExpression(text)) {\n return <div class={ editorFormFieldClasses(type) }>\n <div class=\"fjs-form-field-placeholder\"><Icon viewBox=\"0 0 54 54\" />Text view is populated by an expression</div>\n </div>;\n }\n\n if (templating.isTemplate(text)) {\n return <div class={ editorFormFieldClasses(type) }>\n <div class=\"fjs-form-field-placeholder\"><Icon viewBox=\"0 0 54 54\" />Text view is templated</div>\n </div>;\n }\n\n return <Text { ...{ ...props, disableLinks: true } } />;\n}\n\nEditorText.config = Text.config;\n","import EditorText from './EditorText';\n\nexport const editorFormFields = [\n EditorText\n];","import { FormFields } from '@bpmn-io/form-js-viewer';\nimport { editorFormFields } from './components/editor-form-fields/';\n\nexport default class EditorFormFields extends FormFields {\n constructor() {\n super();\n editorFormFields.forEach((formField) => {\n this.register(formField.config.type, formField);\n });\n }\n}","import { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { createPortal } from 'preact/compat';\nimport { useService } from '../hooks';\n\nexport default (props) => {\n const {\n rootClass,\n RootElement,\n section,\n children\n } = 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\n if (parent === null) {\n return null;\n }\n\n if (typeof parent === 'string') {\n\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\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\n return () => {\n eventBus.off(`${ section }.attach`, onAttach);\n eventBus.off(`${ section }.detach`, onDetach);\n eventBus.off(`${ section }.reset`, onReset);\n };\n }, [ eventBus, section ]);\n\n\n useEffect(() => {\n if (shouldRender) {\n eventBus.fire(`${ section }.rendered`, { element: ParentElement });\n return () => { eventBus.fire(`${ section }.destroyed`, { element: ParentElement }); };\n }\n }, [ eventBus, section, shouldRender, ParentElement ]);\n\n const Root = useCallback(\n ({ children }) => RootElement ? <RootElement>{ children }</RootElement> : <div className={ rootClass }>{ children }</div>, [ rootClass, RootElement ]\n );\n\n return (\n shouldRender\n ? (parent\n ? createPortal(<Root>{ children }</Root>, ParentElement)\n : <Root>{ children }</Root>)\n : null\n );\n};","import { createContext } from 'preact';\n\nconst FillContext = createContext({\n addFill(uid, props) { throw new Error('FillContext.addFill() uninitialized'); },\n removeFill(uid) { throw new Error('FillContext.addFill() uninitialized'); }\n});\n\nexport default FillContext;","import FillContext from './FillContext';\nimport { useContext, useEffect, useRef } from 'preact/compat';\n\nexport default (props) => {\n\n const uid = useRef(Symbol('fill_uid'));\n const fillContext = useContext(FillContext);\n\n useEffect(() => {\n\n if (!fillContext) {\n return;\n }\n\n fillContext.addFill({ id: uid, ...props });\n return () => {\n fillContext.removeFill(uid);\n };\n\n }, [ fillContext, props ]);\n\n return null;\n};\n","import { createContext } from 'preact';\n\nconst SlotContext = createContext({ fills: [] });\n\nexport default SlotContext;","import { Fragment } from 'preact';\nimport { useContext, useMemo } from 'preact/hooks';\nimport SlotContext from './SlotContext';\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.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 {Array} Array of rendered slot fills, grouped and separated as specified\n */\nexport default (props) => {\n const {\n name,\n groupFn = _groupByGroupName,\n separatorFn = (key) => null,\n limit\n } = 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, FillFragment, separatorFn);\n }, [ groups, separatorFn ]);\n\n return fillsAndSeparators;\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 * 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\n const result = [];\n\n groups.forEach((array, idx) => {\n\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\n const groups = [];\n\n const groupsById = {};\n\n fills.forEach(function(fill) {\n\n const {\n group: groupName = 'z_default'\n } = 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};","import FillContext from './FillContext';\nimport SlotContext from './SlotContext';\nimport { useMemo, useState } from 'preact/hooks';\n\nexport default (props) => {\n const [ fills, setFills ] = useState([]);\n\n const fillContext = useMemo(() => ({\n addFill: (fill) => {\n setFills((fills) => [ ...fills.filter((f) => f.id !== fill.id), fill ]);\n props.onSetFill && props.onSetFill(fill);\n },\n removeFill: (id) => {\n setFills((fills) => fills.filter((f) => f.id !== id));\n props.onRemoveFill && props.onRemoveFill(id);\n }\n }), []);\n\n const slotContext = useMemo(() => ({ fills }), [ fills ]);\n\n return (\n <SlotContext.Provider value={ slotContext }>\n <FillContext.Provider /* @ts-expect-error */\n value={ fillContext }>\n { props.children }\n </FillContext.Provider>\n </SlotContext.Provider>\n );\n};","import {\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n Slot\n} from '../../render-injection/slot-fill';\n\nimport {\n CloseIcon,\n iconsByType,\n SearchIcon\n} from '../../../render/components/icons';\n\nimport { formFields } from '@bpmn-io/form-js-viewer';\n\nexport const PALETTE_ENTRIES = formFields.filter(({ config: fieldConfig }) => fieldConfig.type !== 'default').map(({ config: fieldConfig }) => {\n return {\n label: fieldConfig.label,\n type: fieldConfig.type,\n group: fieldConfig.group\n };\n});\n\nexport const PALETTE_GROUPS = [\n {\n label: 'Basic 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: 'Action',\n id: 'action'\n }\n];\n\nexport default function Palette(props) {\n\n const [ entries, setEntries ] = useState(PALETTE_ENTRIES);\n\n const [ searchTerm, setSearchTerm ] = useState('');\n\n const inputRef = useRef();\n\n const groups = groupEntries(entries);\n\n const simplifyString = useCallback((str) => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '');\n }, []);\n\n const filter = useCallback((entry) => {\n\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)\n || simplifiedEntryType.includes(simplifiedSearchTerm);\n\n }, [ searchTerm, simplifyString ]);\n\n // filter entries on search change\n useEffect(() => {\n const entries = PALETTE_ENTRIES.filter(filter);\n setEntries(entries);\n }, [ filter, searchTerm ]);\n\n const handleInput = useCallback(event => {\n setSearchTerm(() => event.target.value);\n }, [ setSearchTerm ]);\n\n const handleClear = useCallback(event => {\n setSearchTerm('');\n inputRef.current.focus();\n }, [ inputRef, setSearchTerm ]);\n\n return <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 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 title=\"Clear content\" class=\"fjs-palette-search-clear\" onClick={ handleClear }>\n <CloseIcon></CloseIcon>\n </button>\n )\n }\n </div>\n <div class=\"fjs-palette-entries\">\n {\n groups.map(({ label, entries, id }) =>\n <div class=\"fjs-palette-group\" data-group-id={ id }>\n <span class=\"fjs-palette-group-title\">{ label }</span>\n <div class=\"fjs-palette-fields fjs-drag-container fjs-no-drop\">\n {\n entries.map(({ label, type }) => {\n const Icon = iconsByType(type);\n\n return (\n <div\n class=\"fjs-palette-field fjs-drag-copy fjs-no-drop\"\n data-field-type={ type }\n title={ `Create ${getIndefiniteArticle(type)} ${label} element` }\n >\n {\n Icon ? <Icon class=\"fjs-palette-field-icon\" width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" /> : null\n }\n <span class=\"fjs-palette-field-text\">{ label }</span>\n </div>\n );\n })\n }\n </div>\n </div>\n )\n }\n {\n groups.length == 0 && (\n <div class=\"fjs-palette-no-entries\">No components found.</div>\n )\n }\n </div>\n <div class=\"fjs-palette-footer\">\n {/* @ts-ignore */}\n <Slot name=\"editor-palette__footer\" />\n </div>\n </div>;\n}\n\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\nfunction getIndefiniteArticle(type) {\n if ([\n 'image'\n ].includes(type)) {\n return 'an';\n }\n\n return 'a';\n}","import { useContext, useRef, useEffect, useMemo, useCallback, useState, useLayoutEffect } from '../preact/hooks';\nimport { isFunction, isArray, get, assign, set, sortBy, find, isString, isNumber, debounce } from 'min-dash';\nimport { forwardRef } from '../preact/compat';\nimport { jsx, jsxs } from '../preact/jsx-runtime';\nimport classnames from 'classnames';\nimport { query } from 'min-dom';\nimport { createContext, createElement } from '../preact';\nimport { FeelersEditor } from 'feelers';\nimport FeelEditor from '@bpmn-io/feel-editor';\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 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 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: \"#818798\"\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};\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 title: type,\n class: \"bio-properties-panel-header-type\",\n children: type\n }), label ? jsx(\"div\", {\n title: label,\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: \"noopener\",\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 */\nconst EventContext = createContext({\n eventBus: null\n});\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\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 useError(id) {\n const {\n errors\n } = useContext(ErrorsContext);\n return errors[id];\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\nconst KEY_LENGTH = 6;\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(-KEY_LENGTH);\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 * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nfunction useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n return useCallback((...args) => callbackRef.current(...args), []);\n}\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 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 }, [entries]);\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 title: label,\n class: \"bio-properties-panel-group-header-title\",\n children: label\n }), jsxs(\"div\", {\n class: \"bio-properties-panel-group-header-buttons\",\n children: [edited && jsx(DataMarker, {}), jsx(\"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(Component, {\n ...entry,\n element: element,\n key: id\n });\n })\n })\n })]\n });\n}\nfunction DataMarker() {\n return jsx(\"div\", {\n title: \"Section contains data\",\n class: \"bio-properties-panel-dot\"\n });\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 = {};\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 * shouldSort?: Boolean,\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 * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\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 {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 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 const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\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 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(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(Component, {\n ...group,\n key: id,\n element: element\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}\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\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 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 ...otherProps,\n onClick: onClick,\n class: classnames('bio-properties-panel-group-header-button', classname),\n children: children\n });\n}\n\nfunction CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\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\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<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 title: label || placeholderLabel,\n class: classnames('bio-properties-panel-collapsible-entry-header-title', !label && 'empty'),\n children: label || placeholderLabel\n }), jsx(\"button\", {\n title: \"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 title: \"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(Component, {\n ...entry,\n element: element,\n key: id\n });\n })\n })\n })]\n });\n}\n\nfunction ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\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 }\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 })\n });\n}\n\nconst noop$3 = () => {};\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 = true,\n shouldSort = true\n } = props;\n const groupRef = useRef(null);\n const [open, setOpen] = useLayoutState(['groups', id, 'open'], false);\n const [sticky, setSticky] = useState(false);\n const onShow = useCallback(() => setOpen(true), [setOpen]);\n const [ordering, setOrdering] = useState([]);\n const [newItemAdded, setNewItemAdded] = useState(false);\n\n // Flag to mark that add button was clicked in the last render cycle\n const [addTriggered, setAddTriggered] = useState(false);\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [items, element]);\n\n // (1) items were added\n useEffect(() => {\n // reset addTriggered flag\n setAddTriggered(false);\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n let add = [];\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n let newOrdering = ordering;\n\n // open if not open, configured and triggered by add button\n //\n // TODO(marstamm): remove once we refactor layout handling for listGroups.\n // Ideally, opening should be handled as part of the `add` callback and\n // not be a concern for the ListGroup component.\n if (addTriggered && !open && shouldOpen) {\n toggleOpen();\n }\n\n // filter when not open and configured\n if (!open && shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n setOrdering(newOrdering);\n setNewItemAdded(addTriggered);\n } else {\n setNewItemAdded(false);\n }\n }, [items, open, shouldHandleEffects, addTriggered]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [open, shouldSort]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n setOrdering(keep);\n }\n }, [items, shouldHandleEffects]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n const toggleOpen = () => setOpen(!open);\n const hasItems = !!items.length;\n const propertiesPanelContext = {\n ...useContext(LayoutContext),\n onShow\n };\n const handleAddClick = e => {\n setAddTriggered(true);\n add(e);\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$3,\n children: [jsx(\"div\", {\n title: label,\n class: \"bio-properties-panel-group-header-title\",\n children: label\n }), jsxs(\"div\", {\n class: \"bio-properties-panel-group-header-buttons\",\n children: [add ? jsxs(\"button\", {\n title: \"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: \"Create\"\n }) : null]\n }) : null, 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 }) : null, hasItems ? jsx(\"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 }) : 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: ordering.map((o, index) => {\n const item = getItem(items, o);\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 is only applied on first render\n const autoOpen = newItemAdded;\n return createElement(ListItem, {\n ...item,\n autoOpen: autoOpen,\n element: element,\n index: index,\n key: id\n });\n })\n })\n })]\n });\n}\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\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 } = 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$7(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$7(id),\n class: \"bio-properties-panel-label\",\n children: label\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 {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 } = 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 }, 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$7(id) {\n return `bio-properties-panel-${id}`;\n}\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 CodeEditor$1 = forwardRef((props, ref) => {\n const {\n onInput,\n disabled,\n tooltipContainer,\n enableGutters,\n value,\n onLint = () => {},\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 });\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 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 });\n});\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 CodeEditor = forwardRef((props, ref) => {\n const {\n value,\n onInput,\n onFeelToggle,\n onLint = () => {},\n disabled,\n tooltipContainer,\n variables\n } = props;\n const inputRef = useRef();\n const [editor, setEditor] = useState();\n const [localValue, setLocalValue] = useState(value || '');\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 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 FeelEditor({\n container: inputRef.current,\n onChange: handleInput,\n onKeyDown: onKeyDown,\n onLint: onLint,\n tooltipContainer: tooltipContainer,\n value: localValue,\n variables: variables\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 const handleClick = () => {\n ref.current.focus();\n };\n return jsx(\"div\", {\n class: classnames('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null),\n children: jsx(\"div\", {\n name: props.name,\n class: classnames('bio-properties-panel-input', localValue ? 'edited' : null),\n ref: inputRef,\n onClick: handleClick\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$2 = () => {};\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$2\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 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\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n inline,\n onFocus,\n onBlur,\n inputRef\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$6(id),\n children: label\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$6(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 */\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 } = 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 }), 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$6(id) {\n return `bio-properties-panel-${id}`;\n}\n\nconst noop$1 = () => {};\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n variables,\n tooltipContainer,\n OptionalComponent = OptionalFeelInput\n } = props;\n const [localValue, _setLocalValue] = useState(value);\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n const feelActive = isString(localValue) && localValue.startsWith('=') || feel === 'required';\n const feelOnlyValue = isString(localValue) && localValue.startsWith('=') ? localValue.substring(1) : localValue;\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 => {\n onInput(newValue);\n });\n }, [onInput, debounce]);\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n };\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n const handleLocalInput = newValue => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n if (newValue === localValue) {\n return;\n }\n setLocalValue(newValue);\n if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n const handleLint = useStaticCallback(lint => {\n if (!(lint && lint.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\n // External value change removed content => keep FEEL configuration\n if (!value) {\n setLocalValue(feelActive ? '=' : '');\n return;\n }\n setLocalValue(value);\n }, [value]);\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) {\n return;\n }\n const data = event.clipboardData.getData('application/FEEL');\n if (data) {\n setTimeout(() => {\n handleFeelToggle();\n setFocus();\n });\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: [label, 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: feel !== 'optional' || disabled,\n onClick: handleFeelToggle\n }), feelActive ? jsx(CodeEditor, {\n id: prefixId$5(id),\n name: id,\n onInput: handleLocalInput,\n disabled: disabled,\n onFeelToggle: () => {\n handleFeelToggle();\n setFocus(true);\n },\n onLint: handleLint,\n value: feelOnlyValue,\n variables: variables,\n ref: editorRef,\n tooltipContainer: tooltipContainer\n }) : jsx(OptionalComponent, {\n ...props,\n onInput: handleLocalInput,\n contentAttributes: {\n 'id': prefixId$5(id),\n 'aria-label': label\n },\n value: localValue,\n ref: editorRef\n })]\n })]\n });\n}\nconst OptionalFeelInput = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\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') {\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 onBlur: onBlur,\n value: value || ''\n });\n});\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\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: () => {\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 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 {Boolean} 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 {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\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$1,\n example,\n variables,\n onFocus,\n onBlur\n } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const [validationError, setValidationError] = useState(null);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setValidationError(newValidationError);\n }\n }, [value]);\n const onInput = useStaticCallback(newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n setValidationError(newValidationError);\n });\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\n }\n const temporaryError = useError(id);\n const error = localError || temporaryError || validationError;\n return jsxs(\"div\", {\n class: classnames(props.class, 'bio-properties-panel-entry', error ? 'has-error' : ''),\n \"data-entry-id\": id,\n children: [jsx(FeelTextfield, {\n debounce: debounce,\n disabled: disabled,\n feel: feel,\n id: id,\n label: label,\n onInput: onInput,\n onError: onError,\n onFocus: onFocus,\n onBlur: onBlur,\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 }, 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}\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 {Boolean} 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 {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\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 {Boolean} 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 {Function} 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 {Boolean} 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 {Function} 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 {Boolean} 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 {Function} 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: CodeEditor$1,\n ...props\n });\n}\nfunction isEdited$6(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\nconst noop = () => {};\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\n } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const [validationError, setValidationError] = useState(null);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setValidationError(newValidationError);\n }\n }, [value]);\n const onInput = useStaticCallback(newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n setValidationError(newValidationError);\n });\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\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(CodeEditor$1, {\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$5(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\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 compareFn,\n ...restProps\n } = props;\n const [open, setOpen] = useState(!!shouldOpen);\n const hasItems = !!items.length;\n const toggleOpen = () => hasItems && setOpen(!open);\n const opening = !usePrevious(open) && open;\n const elementChanged = usePrevious(element) !== element;\n const shouldReset = opening || elementChanged;\n const sortedItems = useSortedItems(items, compareFn, shouldReset);\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 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 children: [jsxs(\"div\", {\n class: \"bio-properties-panel-list-entry-header\",\n onClick: toggleOpen,\n children: [jsx(\"div\", {\n title: label,\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 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 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: sortedItems,\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}\n\n/**\n * Place new items in the beginning of the list and sort the rest with provided function.\n *\n * @template Item\n * @param {Item[]} currentItems\n * @param {(a: Item, b: Item) => 0 | 1 | -1} [compareFn] function used to sort items\n * @param {boolean} [shouldReset=false] set to `true` to reset state of the hook\n * @returns {Item[]}\n */\nfunction useSortedItems(currentItems, compareFn, shouldReset = false) {\n const itemsRef = useRef(currentItems.slice());\n\n // (1) Reset and optionally sort.\n if (shouldReset) {\n itemsRef.current = currentItems.slice();\n if (compareFn) {\n itemsRef.current.sort(compareFn);\n }\n } else {\n const items = itemsRef.current;\n\n // (2) Add new item to the list.\n for (const item of currentItems) {\n if (!items.includes(item)) {\n // Unshift or push depending on whether we have a compareFn\n compareFn ? items.unshift(item) : items.push(item);\n }\n }\n\n // (3) Filter out removed items.\n itemsRef.current = items.filter(item => currentItems.includes(item));\n }\n return itemsRef.current;\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\nfunction NumberField(props) {\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n const [localValue, setLocalValue] = useState(value);\n const handleInputCallback = useMemo(() => {\n return debounce(event => {\n const {\n validity,\n value\n } = event.target;\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [onInput, debounce]);\n const handleInput = e => {\n handleInputCallback(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-numberfield\",\n children: [jsx(\"label\", {\n for: prefixId$4(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"input\", {\n id: prefixId$4(id),\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 } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onInput = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 }, 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$4(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$4(id) {\n return `bio-properties-panel-${id}`;\n}\n\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value = '',\n disabled,\n onFocus,\n onBlur\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$3(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"select\", {\n ref: ref,\n id: prefixId$3(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 */\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 } = props;\n const options = getOptions(element);\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onChange = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 }, 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$3(id) {\n return `bio-properties-panel-${id}`;\n}\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(({\n target\n }) => setValue(target.value.length ? target.value : undefined));\n }, [setValue, debounce]);\n const handleInput = e => {\n handleInputCallback(e);\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$2(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$2(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,\n value = '',\n disabled,\n monospace,\n onFocus,\n onBlur,\n autoResize,\n rows = autoResize ? 1 : 2\n } = props;\n const [localValue, setLocalValue] = useState(value);\n const ref = useShowEntryEvent(id);\n const handleInputCallback = useMemo(() => {\n return debounce(({\n target\n }) => onInput(target.value.length ? target.value : undefined));\n }, [onInput, debounce]);\n const handleInput = e => {\n handleInputCallback(e);\n autoResize && resizeToContents(e.target);\n setLocalValue(e.target.value);\n };\n useLayoutEffect(() => {\n autoResize && resizeToContents(ref.current);\n }, []);\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$1(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"textarea\", {\n ref: ref,\n id: prefixId$1(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: handleInput,\n onFocus: onFocus,\n onBlur: onBlur,\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 {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 autoResize\n } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onInput = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 rows: rows,\n debounce: debounce,\n monospace: monospace,\n disabled: disabled,\n autoResize: autoResize\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$1(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,\n onFocus,\n onBlur,\n value = ''\n } = props;\n const [localValue, setLocalValue] = useState(value || '');\n const ref = useShowEntryEvent(id);\n const handleInputCallback = useMemo(() => {\n return debounce(({\n target\n }) => onInput(target.value.length ? target.value : undefined));\n }, [onInput, debounce]);\n const handleInput = e => {\n handleInputCallback(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-textfield\",\n children: [jsx(\"label\", {\n for: prefixId(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"input\", {\n ref: ref,\n id: prefixId(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 onFocus: onFocus,\n onBlur: onBlur,\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 {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 } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onInput = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 value: value\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(id) {\n return `bio-properties-panel-${id}`;\n}\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\nfunction debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n var debounceTime = isNumber(debounceDelay) ? debounceDelay : DEFAULT_DEBOUNCE_TIME;\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\ndebounceInput.$inject = ['config.debounceInput'];\n\nvar index = {\n debounceInput: ['factory', debounceInput]\n};\n\nexport { ArrowIcon, CheckboxEntry, CollapsibleEntry, CreateIcon, index as DebounceInputModule, DeleteIcon, DescriptionContext, Description as DescriptionEntry, DropdownButton, ErrorsContext, EventContext, ExternalLinkIcon, FeelCheckboxEntry, FeelEntry, FeelIcon$1 as FeelIcon, FeelTemplatingEntry, FeelTextAreaEntry, FeelToggleSwitchEntry, Group, Header, HeaderButton, LayoutContext, List as ListEntry, ListGroup, ListItem, NumberFieldEntry, Placeholder, PropertiesPanel, LayoutContext as PropertiesPanelContext, SelectEntry, Simple as SimpleEntry, TemplatingEntry, TextAreaEntry, TextfieldEntry as TextFieldEntry, ToggleSwitchEntry, isEdited$8 as isCheckboxEntryEdited, isEdited$6 as isFeelEntryEdited, isEdited$4 as isNumberFieldEntryEdited, isEdited$3 as isSelectEntryEdited, isEdited$2 as isSimpleEntryEdited, isEdited$5 as isTemplatingEntryEdited, isEdited$1 as isTextAreaEntryEdited, isEdited as isTextFieldEntryEdited, isEdited$7 as isToggleSwitchEntryEdited, useDescriptionContext, useError, useEvent, useKeyFactory, useLayoutState, usePrevious, useShowEntryEvent, useStaticCallback, useStickyIntersectionObserver };\n//# sourceMappingURL=index.esm.js.map\n","import { getSchemaVariables } from '@bpmn-io/form-js-viewer';\nimport { useService } from '../../../render/hooks';\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 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\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\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\nexport function textToLabel(text) {\n\n if (typeof text != 'string') return null;\n\n for (const line of text.split('\\n')) {\n\n const displayLine = line.trim();\n\n // we use the first non-whitespace line in the text as label\n if (displayLine !== '') {\n return displayLine;\n }\n }\n\n return null;\n}\n\nexport const INPUTS = [\n 'checkbox',\n 'checklist',\n 'datetime',\n 'number',\n 'radio',\n 'select',\n 'taglist',\n 'textfield',\n 'textarea'\n];\n\nexport const VALUES_INPUTS = [\n 'checklist',\n 'radio',\n 'select',\n 'taglist'\n];","import {\n textToLabel\n} from './Util';\n\nimport { iconsByType } from '../../render/components/icons';\n\nconst labelsByType = {\n button: 'BUTTON',\n checkbox: 'CHECKBOX',\n checklist: 'CHECKLIST',\n columns: 'COLUMNS',\n default: 'FORM',\n datetime: 'DATETIME',\n image: 'IMAGE VIEW',\n number: 'NUMBER',\n radio: 'RADIO',\n select: 'SELECT',\n taglist: 'TAGLIST',\n text: 'TEXT VIEW',\n textfield: 'TEXT FIELD',\n textarea: 'TEXT AREA',\n};\n\nexport const PropertiesPanelHeaderProvider = {\n\n getElementLabel: (field) => {\n const {\n type\n } = field;\n\n if (type === 'text') {\n return textToLabel(field.text);\n }\n\n if (type === 'image') {\n return field.alt;\n }\n\n if (type === 'default') {\n return field.id;\n }\n\n return field.label;\n },\n\n getElementIcon: (field) => {\n const {\n type\n } = field;\n\n const Icon = iconsByType(type);\n\n if (Icon) {\n return () => <Icon width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" />;\n }\n },\n\n getTypeLabel: (field) => {\n const {\n type\n } = field;\n\n return labelsByType[type];\n }\n};","/**\n * Provide placeholders for empty and multiple state.\n */\nexport const PropertiesPanelPlaceholderProvider = {\n\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};","import { get } from 'min-dash';\n\nimport { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function ActionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (type === 'button') {\n entries.push({\n id: 'action',\n component: Action,\n editField: editField,\n field: field,\n isEdited: isSelectEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Action(props) {\n const {\n editField,\n field,\n id\n } = 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}","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport default function AltTextEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (type === 'image') {\n entries.push({\n id: 'alt',\n component: AltText,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction AltText(props) {\n const {\n editField,\n field,\n id\n } = 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 FeelEntry({\n debounce,\n element: field,\n feel: 'optional',\n getValue,\n id,\n label: 'Alternative text',\n setValue,\n variables\n });\n}\n","import { get, set } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport {\n isSelectEntryEdited,\n SelectEntry\n} from '@bpmn-io/properties-panel';\n\nimport { MIN_COLUMNS } from '../../../core/FormLayoutValidator';\n\n\nexport const AUTO_OPTION_VALUE = '';\n\nexport default function ColumnsEntry(props) {\n const {\n editField,\n field\n } = 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 {\n field,\n editField,\n id\n } = props;\n\n const debounce = useService('debounce');\n const formLayoutValidator = useService('formLayoutValidator');\n\n const validate = (value) => {\n return formLayoutValidator.validateField(field, value ? parseInt(value) : null);\n };\n\n const setValue = (value) => {\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).filter(i => i >= MIN_COLUMNS).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\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 { 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\n\nexport default function DescriptionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'description',\n component: Description,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\n\nfunction Description(props) {\n const {\n editField,\n field,\n id\n } = 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}","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, VALUES_INPUTS } from '../Util';\n\nexport const EMPTY_OPTION = null;\n\nexport default function DefaultOptionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n // Only make default values available when they are statically defined\n if (!INPUTS.includes(type) || VALUES_INPUTS.includes(type) && !field.values) {\n return entries;\n }\n\n const defaultOptions = {\n editField,\n field,\n id: 'defaultValue',\n label: 'Default value'\n };\n\n if (type === 'checkbox') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueCheckbox,\n isEdited: isSelectEntryEdited\n });\n }\n\n if (type === 'number') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueNumber,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n if (type === 'radio' || type === 'select') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueSingleSelect,\n isEdited: isSelectEntryEdited\n });\n }\n\n // todo(Skaiir): implement a multiselect equivalent (cf. https://github.com/bpmn-io/form-js/issues/265)\n\n if (type === 'textfield') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueTextfield,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n if (type === 'textarea') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueTextarea,\n isEdited: isTextAreaEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction DefaultValueCheckbox(props) {\n const {\n editField,\n field,\n id,\n label\n } = props;\n\n const {\n defaultValue\n } = 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 {\n editField,\n field,\n id,\n label\n } = props;\n\n const {\n decimalDigits,\n serializeToString = false\n } = field;\n\n const debounce = useService('debounce');\n\n const path = [ 'defaultValue' ];\n\n const getValue = (e) => {\n\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) => {\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 return TextFieldEntry({\n debounce,\n label,\n element: field,\n getValue,\n id,\n setValue,\n validate: (value) => {\n if (value === undefined || value === null) return;\n if (!isValidNumber(value)) return 'Should be a valid number';\n if (decimalDigitsSet && countDecimals(value) > decimalDigits) return `Should not contain more than ${decimalDigits} decimal digits`;\n }\n });\n}\n\nfunction DefaultValueSingleSelect(props) {\n const {\n editField,\n field,\n id,\n label\n } = props;\n\n const {\n defaultValue = EMPTY_OPTION,\n values = []\n } = 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 {\n editField,\n field,\n id,\n label\n } = 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 {\n editField,\n field,\n id,\n label\n } = 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}","import { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { ToggleSwitchEntry, isToggleSwitchEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function DisabledEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'disabled',\n component: Disabled,\n editField: editField,\n field: field,\n isEdited: isToggleSwitchEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Disabled(props) {\n const {\n editField,\n field,\n id\n } = 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 inline: true,\n setValue\n });\n}","import { get, isUndefined } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function IdEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const entries = [];\n\n if (field.type === 'default') {\n entries.push({\n id: 'id',\n component: Id,\n editField: editField,\n field: field,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Id(props) {\n const {\n editField,\n field,\n id\n } = 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) => {\n return editField(field, path, value);\n };\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\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\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\n if (containsSpace(idValue)) {\n return 'Must not contain spaces.';\n }\n\n if (!ID_REGEX.test(idValue)) {\n\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}","import { isUndefined } from 'min-dash';\n\nimport { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function KeyEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'key',\n component: Key,\n editField: editField,\n field: field,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Key(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const formFieldRegistry = useService('formFieldRegistry');\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) => {\n return editField(field, path, value);\n };\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\n return 'Must not be empty.';\n }\n\n if (/\\s/.test(value)) {\n return 'Must not contain spaces.';\n }\n\n const assigned = formFieldRegistry._keys.assigned(value);\n\n if (assigned && assigned !== field) {\n return 'Must be unique.';\n }\n\n return null;\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 setValue,\n validate\n });\n}","import { 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 default function LabelEntry(props) {\n const {\n field,\n editField\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n const entries = [];\n\n if (type === 'datetime') {\n if (subtype === DATETIME_SUBTYPES.DATE || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push(\n {\n id: 'date-label',\n component: DateLabel,\n editField,\n field,\n isEdited: isFeelEntryEdited\n }\n );\n }\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push(\n {\n id: 'time-label',\n component: TimeLabel,\n editField,\n field,\n isEdited: isFeelEntryEdited\n }\n );\n }\n }\n else if (INPUTS.includes(type) || type === 'button') {\n entries.push(\n {\n id: 'label',\n component: Label,\n editField,\n field,\n isEdited: isFeelEntryEdited\n }\n );\n }\n\n return entries;\n}\n\nfunction Label(props) {\n const {\n editField,\n field,\n id\n } = 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 return FeelTemplatingEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Field label',\n singleLine: true,\n setValue,\n variables\n });\n}\n\nfunction DateLabel(props) {\n const {\n editField,\n field,\n id\n } = 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 {\n editField,\n field,\n id\n } = 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}","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport default function SourceEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (type === 'image') {\n entries.push({\n id: 'source',\n component: Source,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Source(props) {\n const {\n editField,\n field,\n id\n } = 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 FeelEntry({\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 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\n// import { simpleBoolEntryFactory } from './factories';\nimport { useMemo } from 'preact/hooks';\n\n\nexport default function TextEntry(props) {\n const {\n editField,\n\n /* getService, */\n field\n } = props;\n\n const {\n type\n } = field;\n\n // const templating = getService('templating');\n\n if (type !== 'text') {\n return [];\n }\n\n const entries = [\n {\n id: 'text',\n component: Text,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n }\n ];\n\n // todo: skipped to make the release without too much risk\n // if (templating.isTemplate(field.text)) {\n // entries.push(simpleBoolEntryFactory({\n // id: 'strict',\n // path: [ 'strict' ],\n // label: 'Strict templating',\n // description: 'Enforces types to be correct',\n // props\n // }));\n // }\n\n return entries;\n}\n\nfunction Text(props) {\n const {\n editField,\n field,\n id\n } = 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 const description = useMemo(() => <>Supports markdown and templating. <a href=\"https://docs.camunda.io/docs/components/modeler/forms/form-element-library/forms-element-library-text/\" target=\"_blank\">Learn more</a></>, []);\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}","import { NumberFieldEntry, isNumberFieldEntryEdited, TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport Big from 'big.js';\nimport { get } from 'min-dash';\nimport { useService } from '../hooks';\nimport { countDecimals, isValidNumber } from '../Util';\n\nexport default function NumberEntries(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n type\n } = field;\n\n if (type !== 'number') {\n return [];\n }\n\n const entries = [];\n\n entries.push({\n id: id + '-decimalDigits',\n component: NumberDecimalDigits,\n isEdited: isNumberFieldEntryEdited,\n editField,\n field\n });\n\n entries.push({\n id: id + '-step',\n component: NumberArrowStep,\n isEdited: isTextFieldEntryEdited,\n editField,\n field\n });\n\n return entries;\n}\n\nfunction NumberDecimalDigits(props) {\n\n const {\n editField,\n field,\n id\n } = props;\n\n const debounce = useService('debounce');\n\n const getValue = (e) => get(field, [ 'decimalDigits' ]);\n\n const setValue = (value) => editField(field, [ 'decimalDigits' ], value);\n\n return NumberFieldEntry({\n debounce,\n label: 'Decimal digits',\n element: field,\n step: 'any',\n getValue,\n id,\n setValue,\n validate: (value) => {\n if (value === undefined || value === null) return;\n if (value < 0) return 'Should be greater than or equal to zero.';\n if (!Number.isInteger(value)) return 'Should be an integer.';\n }\n });\n\n}\n\nfunction NumberArrowStep(props) {\n\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n decimalDigits\n } = field;\n\n const debounce = useService('debounce');\n\n const getValue = (e) => {\n\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) => editField(field, [ 'increment' ], clearLeadingZeroes(value));\n\n const decimalDigitsSet = decimalDigits || decimalDigits === 0;\n\n return TextFieldEntry({\n debounce,\n label: 'Increment',\n element: field,\n getValue,\n id,\n setValue,\n validate: (value) => {\n\n if (value === undefined || value === null) return;\n\n if (!isValidNumber(value)) return 'Should be a valid number.';\n\n if (Big(value).cmp(0) <= 0) return 'Should be greater than zero.';\n\n if (decimalDigitsSet) {\n const minimumValue = Big(`1e-${decimalDigits}`);\n\n if (Big(value).cmp(minimumValue) < 0) return `Should be at least ${minimumValue.toString()}.`;\n if (countDecimals(value) > decimalDigits) return `Should not contain more than ${decimalDigits} decimal digits.`;\n\n }\n }\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 default function NumberSerializationEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n if (type !== 'number') {\n return [];\n }\n\n const entries = [];\n\n entries.push({\n id: 'serialize-to-string',\n component: SerializeToString,\n isEdited: isCheckboxEntryEdited,\n editField,\n field\n });\n\n return entries;\n}\n\nfunction SerializeToString(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n defaultValue\n } = field;\n\n const path = [ 'serializeToString' ];\n\n const getValue = () => {\n return get(field, path, '');\n };\n\n const setValue = (value) => {\n\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}","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 default function DateTimeEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n if (type !== 'datetime') {\n return [];\n }\n\n const entries = [\n {\n id: 'subtype',\n component: DateTimeSubtypeSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n }\n ];\n\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n\n entries.push({\n id: 'use24h',\n component: Use24h,\n isEdited: isCheckboxEntryEdited,\n editField,\n field\n });\n\n }\n\n return entries;\n}\n\nfunction DateTimeSubtypeSelect(props) {\n\n const {\n editField,\n field,\n id\n } = 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\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 }\n else if (value === DATETIME_SUBTYPES.TIME) {\n clearDateConfig();\n oldValue === DATETIME_SUBTYPES.DATE && initTimeConfig();\n }\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\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 {\n editField,\n field,\n id\n } = 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, isSelectEntryEdited } 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';\n\nexport default function DateTimeConstraintsEntry(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n if (type !== 'datetime') {\n return [];\n }\n\n const entries = [];\n\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push({\n id: id + '-timeInterval',\n component: TimeIntervalSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n });\n }\n\n if (subtype === DATETIME_SUBTYPES.DATE || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push({\n id: id + '-disallowPassedDates',\n component: DisallowPassedDates,\n isEdited: isCheckboxEntryEdited,\n editField,\n field\n });\n }\n\n return entries;\n}\n\nfunction DisallowPassedDates(props) {\n const {\n editField,\n field,\n id\n } = 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\n const {\n editField,\n field,\n id\n } = 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\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}","import { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { DATETIME_SUBTYPES, TIME_SERIALISING_FORMATS, TIME_SERIALISINGFORMAT_LABELS, TIME_SERIALISING_FORMAT_PATH } from '@bpmn-io/form-js-viewer';\n\nimport { get } from 'min-dash';\n\nexport default function DateTimeFormatEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n if (type !== 'datetime') {\n return [];\n }\n\n const entries = [];\n\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push({\n id: 'time-format',\n component: TimeFormatSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n });\n }\n\n return entries;\n}\n\nfunction TimeFormatSelect(props) {\n\n const {\n editField,\n field,\n id\n } = 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\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}","import { get } from 'min-dash';\nimport { CheckboxEntry, isCheckboxEntryEdited } from '@bpmn-io/properties-panel';\n\nexport default function simpleBoolEntryFactory(options) {\n const {\n id,\n label,\n description,\n path,\n props\n } = options;\n\n const {\n editField,\n field\n } = props;\n\n return {\n id,\n label,\n path,\n field,\n editField,\n description,\n component: SimpleBoolComponent,\n isEdited: isCheckboxEntryEdited\n };\n}\n\nconst SimpleBoolComponent = (props) => {\n const {\n id,\n label,\n path,\n field,\n editField,\n description\n } = props;\n\n const getValue = () => get(field, path, '');\n\n const setValue = (value) => editField(field, path, value);\n\n return CheckboxEntry({\n element: field,\n getValue,\n id,\n label,\n setValue,\n description\n });\n};\n","\nimport { simpleBoolEntryFactory } from './factories';\n\nexport default function SelectEntries(props) {\n const {\n field,\n } = props;\n\n const {\n type\n } = field;\n\n if (type !== 'select') {\n return [];\n }\n\n const entries = [\n simpleBoolEntryFactory({\n id: 'searchable',\n path: [ 'searchable' ],\n label: 'Searchable',\n props\n })\n ];\n\n return entries;\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\n\n\nexport default function ValueEntry(props) {\n const {\n editField,\n field,\n idPrefix,\n index,\n validateFactory\n } = 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 {\n editField,\n field,\n id,\n index,\n validateFactory\n } = props;\n\n const debounce = useService('debounce');\n\n const setValue = (value) => {\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 return TextFieldEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Label',\n setValue,\n validate: validateFactory(getValue(), (entry) => entry.label)\n });\n}\n\nfunction Value(props) {\n const {\n editField,\n field,\n id,\n index,\n validateFactory\n } = props;\n\n const debounce = useService('debounce');\n\n const setValue = (value) => {\n const values = get(field, [ 'values' ]);\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 return TextFieldEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Value',\n setValue,\n validate: validateFactory(getValue(), (entry) => entry.value)\n });\n}","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\n\n\nexport default function CustomValueEntry(props) {\n const {\n editField,\n field,\n idPrefix,\n index,\n validateFactory\n } = 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 {\n editField,\n field,\n id,\n index,\n validateFactory\n } = 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 return editField(field, 'properties', updateKey(properties, key, value));\n };\n\n const getValue = () => {\n return Object.keys(get(field, [ 'properties' ]))[ index ];\n };\n\n return TextFieldEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Key',\n setValue,\n validate: validateFactory(getValue())\n });\n}\n\nfunction Value(props) {\n const {\n editField,\n field,\n id,\n index,\n validateFactory\n } = 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\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}","import { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\nimport { getValuesSource, VALUES_SOURCES, VALUES_SOURCES_DEFAULTS, VALUES_SOURCES_LABELS, VALUES_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport default function ValuesSourceSelectEntry(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n return [\n {\n id: id + '-select',\n component: ValuesSourceSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n }\n ];\n}\n\nfunction ValuesSourceSelect(props) {\n\n const {\n editField,\n field,\n id\n } = props;\n\n const getValue = getValuesSource;\n\n const setValue = (value) => {\n\n let newField = field;\n\n const newProperties = {};\n\n Object.values(VALUES_SOURCES).forEach(source => {\n\n // Clear all values source definitions and default the newly selected one\n const newValue = value === source ? VALUES_SOURCES_DEFAULTS[source] : undefined;\n newProperties[VALUES_SOURCES_PATHS[source]] = newValue;\n });\n\n newField = editField(field, newProperties);\n return newField;\n };\n\n const getValuesSourceOptions = () => {\n\n return Object.values(VALUES_SOURCES).map((valueSource) => ({\n label: VALUES_SOURCES_LABELS[valueSource],\n value: valueSource\n }));\n };\n\n return SelectEntry({\n label: 'Type',\n element: field,\n getOptions: getValuesSourceOptions,\n getValue,\n id,\n setValue\n });\n}\n","import { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\nimport { get, isUndefined } from 'min-dash';\nimport { useService } from '../hooks';\nimport { VALUES_SOURCES, VALUES_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\n\nexport default function InputKeyValuesSourceEntry(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const schema = '[\\n {\\n \"label\": \"dollar\",\\n \"value\": \"$\"\\n }\\n]';\n\n const description = <div>\n Define which input property to populate the values from.\n <br /><br />The input property may be an array of simple values or alternatively follow this schema:\n <pre><code>{schema}</code></pre>\n </div>;\n\n return [\n {\n id: id + '-key',\n component: InputValuesKey,\n label: 'Input values key',\n description,\n isEdited: isTextFieldEntryEdited,\n editField,\n field,\n }\n ];\n}\n\nfunction InputValuesKey(props) {\n const {\n editField,\n field,\n id,\n label,\n description\n } = props;\n\n const debounce = useService('debounce');\n\n const path = VALUES_SOURCES_PATHS[VALUES_SOURCES.INPUT];\n\n const getValue = () => get(field, path, '');\n\n const setValue = (value) => editField(field, path, value || '');\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\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\n return TextFieldEntry({\n debounce,\n description,\n element: field,\n getValue,\n id,\n label,\n setValue,\n validate\n });\n}\n","import { isUndefined, without } from 'min-dash';\nimport { arrayAdd } from '../Util';\nimport ValueEntry from './ValueEntry';\nimport { VALUES_SOURCES, VALUES_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport default function StaticValuesSourceEntry(props) {\n const {\n editField,\n field,\n id: idPrefix\n } = props;\n\n const {\n values\n } = field;\n\n const addEntry = (e) => {\n\n e.stopPropagation();\n\n const index = values.length + 1;\n\n const entry = getIndexedEntry(index, values);\n\n editField(field, VALUES_SOURCES_PATHS[VALUES_SOURCES.STATIC], arrayAdd(values, values.length, entry));\n };\n\n const removeEntry = (entry) => {\n editField(field, VALUES_SOURCES_PATHS[VALUES_SOURCES.STATIC], without(values, entry));\n };\n\n const validateFactory = (key, getValue) => {\n return (value) => {\n if (value === key) {\n return;\n }\n\n if (isUndefined(value) || !value.length) {\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 shouldSort: false\n };\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(existingEntry =>\n existingEntry.label === `Value ${index}` ||\n existingEntry.value === `value${index}`);\n}","import { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { get, set } from 'min-dash';\nimport { useService } from '../hooks';\n\nexport default function AdornerEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\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 if ([ 'number', 'textfield' ].includes(type)) {\n entries.push({\n id: 'prefix-adorner',\n component: PrefixAdorner,\n isEdited: isTextFieldEntryEdited,\n editField,\n field,\n onChange,\n getValue\n });\n\n entries.push({\n id: 'suffix-adorner',\n component: SuffixAdorner,\n isEdited: isTextFieldEntryEdited,\n editField,\n field,\n onChange,\n getValue\n });\n }\n\n return entries;\n}\n\nfunction PrefixAdorner(props) {\n const {\n field,\n id,\n onChange,\n getValue\n } = props;\n\n const debounce = useService('debounce');\n\n return TextFieldEntry({\n debounce,\n element: field,\n getValue: getValue('prefixAdorner'),\n id,\n label: 'Prefix',\n setValue: onChange('prefixAdorner')\n });\n}\n\nfunction SuffixAdorner(props) {\n const {\n field,\n id,\n onChange,\n getValue\n } = props;\n\n const debounce = useService('debounce');\n\n return TextFieldEntry({\n debounce,\n element: field,\n getValue: getValue('suffixAdorner'),\n id,\n label: 'Suffix',\n setValue: onChange('suffixAdorner')\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\n\nexport default function ReadonlyEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'readonly',\n component: Readonly,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Readonly(props) {\n const {\n editField,\n field,\n id\n } = 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 setValue,\n variables\n });\n}","import { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\n\nexport function ConditionEntry(props) {\n const {\n editField,\n field\n } = 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\n\nfunction Condition(props) {\n const {\n editField,\n field,\n id\n } = 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 return FeelEntry({\n debounce,\n description: 'Condition under which the field is hidden',\n element: field,\n feel: 'required',\n getValue,\n id,\n label: 'Hide if',\n setValue,\n variables\n });\n}\n","import {\n ActionEntry,\n AltTextEntry,\n DescriptionEntry,\n DefaultValueEntry,\n DisabledEntry,\n IdEntry,\n ImageSourceEntry,\n KeyEntry,\n LabelEntry,\n ReadonlyEntry,\n SelectEntries,\n TextEntry,\n NumberEntries,\n DateTimeEntry\n} from '../entries';\n\n\nexport default function GeneralGroup(field, editField, getService) {\n\n const entries = [\n ...IdEntry({ field, editField }),\n ...LabelEntry({ field, editField }),\n ...DescriptionEntry({ field, editField }),\n ...KeyEntry({ field, editField }),\n ...DefaultValueEntry({ field, editField }),\n ...ActionEntry({ field, editField }),\n ...DateTimeEntry({ field, editField }),\n ...TextEntry({ field, editField, getService }),\n ...NumberEntries({ field, editField }),\n ...ImageSourceEntry({ field, editField }),\n ...AltTextEntry({ field, editField }),\n ...SelectEntries({ field, editField }),\n ...DisabledEntry({ field, editField }),\n ...ReadonlyEntry({ field, editField })\n ];\n\n return {\n id: 'general',\n label: 'General',\n entries\n };\n}","import {\n NumberSerializationEntry,\n DateTimeSerializationEntry\n} from '../entries';\n\n\nexport default function SerializationGroup(field, editField) {\n\n const entries = [\n ...NumberSerializationEntry({ field, editField }),\n ...DateTimeSerializationEntry({ field, editField })\n ];\n\n if (!entries.length) {\n return null;\n }\n\n return {\n id: 'serialization',\n label: 'Serialization',\n entries\n };\n}","import {\n DateTimeConstraintsEntry\n} from '../entries';\n\n\nexport default function ConstraintsGroup(field, editField) {\n\n const entries = [\n ...DateTimeConstraintsEntry({ field, editField })\n ];\n\n if (!entries.length) {\n return null;\n }\n\n return {\n id: 'constraints',\n label: 'Constraints',\n entries\n };\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport {\n CheckboxEntry,\n isCheckboxEntryEdited,\n isNumberFieldEntryEdited,\n isTextFieldEntryEdited,\n NumberFieldEntry,\n TextFieldEntry,\n SelectEntry\n} from '@bpmn-io/properties-panel';\n\nimport { useService } 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 default 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\n if (!INPUTS.includes(type)) {\n return null;\n }\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 }\n ];\n\n if (type === 'textfield') {\n entries.push(\n {\n id: 'validationType',\n component: ValidationType,\n getValue,\n field,\n editField,\n isEdited: isTextFieldEntryEdited,\n onChange\n }\n );\n }\n\n if (type === 'textarea' || (type === 'textfield' && isCustomValidation)) {\n entries.push(\n {\n id: 'minLength',\n component: MinLength,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n },\n {\n id: 'maxLength',\n component: MaxLength,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n }\n );\n }\n\n if (type === 'textfield' && isCustomValidation) {\n entries.push(\n {\n id: 'pattern',\n component: Pattern,\n getValue,\n field,\n isEdited: isTextFieldEntryEdited,\n onChange\n }\n );\n }\n\n if (type === 'number') {\n entries.push(\n {\n id: 'min',\n component: Min,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n },\n {\n id: 'max',\n component: Max,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n }\n );\n }\n\n return {\n id: 'validation',\n label: 'Validation',\n entries\n };\n}\n\nfunction Required(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = 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 {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n getValue: getValue('minLength'),\n id,\n label: 'Minimum length',\n min: 0,\n setValue: onChange('minLength')\n });\n}\n\nfunction MaxLength(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n getValue: getValue('maxLength'),\n id,\n label: 'Maximum length',\n min: 0,\n setValue: onChange('maxLength')\n });\n}\n\nfunction Pattern(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = 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 Min(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n id,\n label: 'Minimum',\n step: 'any',\n getValue: getValue('min'),\n setValue: onChange('min')\n });\n}\n\nfunction Max(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n id,\n label: 'Maximum',\n step: 'any',\n getValue: getValue('max'),\n setValue: onChange('max')\n });\n}\n\nfunction ValidationType(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = 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 });\n}\n","import { ValuesSourceSelectEntry, StaticValuesSourceEntry, InputKeyValuesSourceEntry } from '../entries';\nimport { getValuesSource, VALUES_SOURCES } from '@bpmn-io/form-js-viewer';\n\nimport { Group, ListGroup } from '@bpmn-io/properties-panel';\n\nimport {\n VALUES_INPUTS\n} from '../Util';\n\nexport default function ValuesGroups(field, editField) {\n const {\n type,\n id: fieldId\n } = field;\n\n if (!VALUES_INPUTS.includes(type)) {\n return [];\n }\n\n const context = { editField, field };\n const valuesSourceId = `${fieldId}-valuesSource`;\n\n /**\n * @type {Array<Group|ListGroup>}\n */\n const groups = [\n {\n id: valuesSourceId,\n label: 'Options source',\n component: Group,\n entries: ValuesSourceSelectEntry({ ...context, id: valuesSourceId })\n }\n ];\n\n const valuesSource = getValuesSource(field);\n\n if (valuesSource === VALUES_SOURCES.INPUT) {\n const dynamicValuesId = `${fieldId}-dynamicValues`;\n groups.push({\n id: dynamicValuesId,\n label: 'Dynamic options',\n component: Group,\n entries: InputKeyValuesSourceEntry({ ...context, id: dynamicValuesId })\n });\n }\n else if (valuesSource === VALUES_SOURCES.STATIC) {\n const staticValuesId = `${fieldId}-staticValues`;\n groups.push({\n id: staticValuesId,\n label: 'Static options',\n component: ListGroup,\n ...StaticValuesSourceEntry({ ...context, id: staticValuesId })\n });\n }\n\n return groups;\n}","import { ListGroup } from '@bpmn-io/properties-panel';\n\nimport {\n has,\n isUndefined\n} from 'min-dash';\n\nimport { CustomValueEntry } from '../entries';\n\nexport default function CustomValuesGroup(field, editField) {\n const {\n properties = {},\n type\n } = 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 (isUndefined(value) || !value.length) {\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 = `${ field.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 shouldSort: false\n };\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}","import {\n AdornerEntry\n} from '../entries';\n\n\nexport default function AppearanceGroup(field, editField) {\n\n const entries = [\n ...AdornerEntry({ 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}","import { ColumnsEntry } from '../entries';\n\nexport default function LayoutGroup(field, editField) {\n const { type } = field;\n\n if (type === 'default') {\n return null;\n }\n\n const entries = [\n ...ColumnsEntry({ field, editField })\n ];\n\n if (entries.length === 0) {\n return null;\n }\n\n return {\n id: 'layout',\n label: 'Layout',\n entries\n };\n}","import {\n ConditionEntry\n} from '../entries';\n\n\nexport function ConditionGroup(field, editField) {\n\n const { type } = field;\n\n if (type === 'default') {\n return null;\n }\n\n const entries = [\n ...ConditionEntry({ field, editField })\n ];\n\n return {\n id: 'condition',\n label: 'Condition',\n entries\n };\n}","import { PropertiesPanel } from '@bpmn-io/properties-panel';\n\nimport {\n useCallback,\n useState,\n useLayoutEffect,\n useMemo\n} from 'preact/hooks';\n\nimport { useService } from './hooks';\n\nimport { PropertiesPanelHeaderProvider } from './PropertiesPanelHeaderProvider';\nimport { PropertiesPanelPlaceholderProvider } from './PropertiesPanelPlaceholderProvider';\n\nimport {\n ConditionGroup,\n AppearanceGroup,\n CustomValuesGroup,\n GeneralGroup,\n SerializationGroup,\n ConstraintsGroup,\n ValidationGroup,\n ValuesGroups,\n LayoutGroup\n} from './groups';\n\nfunction getGroups(field, editField, getService) {\n\n if (!field) {\n return [];\n }\n\n const groups = [\n GeneralGroup(field, editField, getService),\n ConditionGroup(field, editField),\n LayoutGroup(field, editField),\n AppearanceGroup(field, editField),\n SerializationGroup(field, editField),\n ...ValuesGroups(field, editField),\n ConstraintsGroup(field, editField),\n ValidationGroup(field, editField),\n CustomValuesGroup(field, editField)\n ];\n\n // contract: if a group returns null, it should not be displayed at all\n return groups.filter(group => group !== null);\n}\n\nexport default function FormPropertiesPanel() {\n\n const injector = useService('injector');\n const eventBus = useService('eventBus');\n const formEditor = useService('formEditor');\n const modeling = useService('modeling');\n const selection = useService('selection');\n\n const { schema } = formEditor._getState();\n\n const [ state, setState ] = useState({\n selectedFormField: selection.get() || schema\n });\n\n const _update = (field) => {\n\n setState({\n ...state,\n selectedFormField: field\n });\n\n // notify interested parties on property panel updates\n eventBus.fire('propertiesPanel.updated', {\n formField: field\n });\n };\n\n useLayoutEffect(() => {\n function onSelectionChange(event) {\n _update(event.selection || schema);\n }\n\n eventBus.on('selection.changed', onSelectionChange);\n\n return () => {\n eventBus.off('selection.changed', onSelectionChange);\n };\n }, []);\n\n useLayoutEffect(() => {\n const onFieldChanged = () => {\n\n /**\n * TODO(pinussilvestrus): update with actual updated element,\n * once we have a proper updater/change support\n */\n _update(selection.get() || schema);\n };\n\n eventBus.on('changed', onFieldChanged);\n\n return () => {\n eventBus.off('changed', onFieldChanged);\n };\n }, []);\n\n const selectedFormField = state.selectedFormField;\n\n const getService = useCallback((type, strict = true) => injector.get(type, strict), [ injector ]);\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 const groups = useMemo(() => getGroups(selectedFormField, editField, getService), [ editField, getService, selectedFormField ]);\n\n return (\n <div\n class=\"fjs-properties-panel\"\n data-field={ selectedFormField && selectedFormField.id }\n onFocusCapture={ onFocus }\n onBlurCapture={ onBlur }\n >\n <PropertiesPanel\n element={ selectedFormField }\n eventBus={ eventBus }\n groups={ groups }\n headerProvider={ PropertiesPanelHeaderProvider }\n placeholderProvider={ PropertiesPanelPlaceholderProvider }\n />\n </div>\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 default () => {\n\n const renderInjector = useService('renderInjector');\n\n const injectedRenderers = renderInjector.fetchRenderers();\n\n const injectedProps = useMemo(() => ({\n useService,\n components: {\n Fill,\n Slot\n }\n }), []);\n\n return <Fragment>{ injectedRenderers.map(({ Renderer }) => <Renderer { ...injectedProps } />) }</Fragment>;\n};","import {\n classes as domClasses\n} from 'min-dom';\n\nconst CURSOR_CLS_PATTERN = /^fjs-cursor-.*$/;\n\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 'dragula';\n\nimport { set as setCursor } from '../../render/util/Cursor';\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 default class Dragging {\n\n /**\n * @constructor\n *\n * @param { import('../../core/FormFieldRegistry').default } formFieldRegistry\n * @param { import('../../core/FormLayouter').default } formLayouter\n * @param { import('../../core/FormLayoutValidator').default } formLayoutValidator\n * @param { import('../../core/EventBus').default } eventBus\n * @param { import('../modeling/Modeling').default } modeling\n */\n constructor(formFieldRegistry, formLayouter, formLayoutValidator, eventBus, modeling) {\n this._formFieldRegistry = formFieldRegistry;\n this._formLayouter = formLayouter;\n this._formLayoutValidator = formLayoutValidator;\n this._eventBus = eventBus;\n this._modeling = modeling;\n }\n\n /**\n * Calculcates 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\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(\n targetRow.components[targetRow.components.length - 1],\n ),\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\n if (formFieldNode) {\n formField = this._formFieldRegistry.get(formFieldNode.dataset.id);\n columns = (formField.layout || {}).columns;\n }\n\n return this._formLayoutValidator.validateField(formField, columns, targetRow);\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 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(\n siblingRow.components[0]\n );\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(\n formField,\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex,\n row,\n row);\n });\n }\n\n handleElementDrop(el, target, source, sibling, drake) {\n\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 unsetDropNotAllowed(target);\n\n targetRow = this._formLayouter.getRow(target.dataset.rowId);\n\n // validate whether drop is allowed\n const validationError = this.validateDrop(el, target);\n\n if (validationError) {\n return drake.cancel(true);\n }\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\n const {\n container,\n direction,\n mirrorContainer\n } = options || {};\n\n const dragulaInstance = dragula({\n direction,\n mirrorContainer,\n isContainer(el) {\n return container.some(cls => el.classList.contains(cls));\n },\n moves(el, source, handle) {\n return !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\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 in row\n if (isRow(target)) {\n const validationError = this.validateDrop(el, target);\n\n if (validationError) {\n\n // set error feedback to row\n setDropNotAllowed(target);\n }\n }\n\n return !target.classList.contains(DRAG_NO_DROP_CLS);\n },\n slideFactorX: 10,\n slideFactorY: 5\n });\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\n // (2) handle form field drop\n this.handleElementDrop(el, target, source, sibling, dragulaInstance);\n }\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 = [\n 'formFieldRegistry',\n 'formLayouter',\n 'formLayoutValidator',\n 'eventBus',\n 'modeling'\n];\n\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}","import classNames from 'classnames';\n\nexport function FieldDragPreview(props) {\n const {\n class: className,\n Icon,\n label\n } = 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}","import {\n useRef\n} from 'preact/hooks';\n\nimport {\n classes,\n query as domQuery\n} 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 RESIZE_DRAG_PREVIEW_CLS = 'fjs-resize-drag-preview';\n\nconst GRID_OFFSET_PX = 16;\n\n\nexport function FieldResizer(props) {\n\n const {\n field,\n position\n } = 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(\n ref.current,\n layout.columns || context.current.startColumns,\n dx,\n position\n );\n\n const errorMessage = formLayoutValidator.validateField(field, newColumns);\n\n if (!errorMessage) {\n\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\n const target = getElementNode(field);\n const parent = getParent(target);\n\n // create a blank element to use as drag preview\n // ensure it was only created once\n let blankPreview = getDragPreviewImage(parent);\n\n if (!blankPreview) {\n blankPreview = document.createElement('div');\n blankPreview.classList.add(RESIZE_DRAG_PREVIEW_CLS);\n parent.appendChild(blankPreview);\n }\n\n // initialize drag handler\n const onDragStart = createDragger(onResize, blankPreview);\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 // remove blank preview\n const blankPreview = getDragPreviewImage(getParent(target));\n blankPreview.remove();\n };\n\n if (field.type === 'default') {\n return null;\n }\n\n return (\n <div\n ref={ ref }\n class={ classNames(\n 'fjs-field-resize-handle',\n 'fjs-field-resize-handle-' + position,\n DRAG_NO_MOVE_CLS\n ) }\n draggable\n onDragStart={ onResizeStart }\n onDragEnd={ onResizeEnd }>\n </div>\n );\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 getDragPreviewImage(node) {\n return domQuery('.fjs-resize-drag-preview', node);\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}","import { render } from 'preact';\nimport {\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n FormComponent,\n FormContext,\n FormRenderContext\n} from '@bpmn-io/form-js-viewer';\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, { PALETTE_ENTRIES } from '../../features/palette/components/Palette';\nimport PropertiesPanel from '../../features/properties-panel/PropertiesPanel';\nimport InjectedRendersRoot from '../../features/render-injection/components/InjectedRendersRoot';\n\nimport { 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 {\n FieldDragPreview\n} from './FieldDragPreview';\n\nimport {\n FieldResizer\n} from './FieldResizer';\n\nimport { set as setCursor, unset as unsetCursor } from '../util/Cursor';\n\nimport { iconsByType } from './icons';\n\nfunction ContextPad(props) {\n if (!props.children) {\n return null;\n }\n\n return (\n <div class=\"fjs-context-pad\">\n {\n props.children\n }\n </div>\n );\n}\n\nfunction Empty(props) {\n return null;\n}\n\nfunction Element(props) {\n const eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n formFieldRegistry = useService('formFieldRegistry'),\n modeling = useService('modeling'),\n selection = useService('selection');\n\n const { field } = props;\n\n const {\n id,\n type\n } = field;\n\n const ref = useRef();\n\n function scrollIntoView({ selection }) {\n if (!selection || selection.id !== id || !ref.current) {\n return;\n }\n\n const elementBounds = ref.current.getBoundingClientRect(),\n containerBounds = formEditor._container.getBoundingClientRect();\n\n if (elementBounds.top < 0 || elementBounds.top > containerBounds.bottom) {\n ref.current.scrollIntoView();\n }\n }\n\n useEffect(() => {\n eventBus.on('selection.changed', scrollIntoView);\n\n return () => eventBus.off('selection.changed', scrollIntoView);\n }, [ id ]);\n\n useLayoutEffect(() => {\n if (selection.isSelected(field)) {\n ref.current.focus();\n }\n }, [ selection, field ]);\n\n function onClick(event) {\n event.stopPropagation();\n\n selection.toggle(field);\n\n // properly focus on field\n ref.current.focus();\n }\n\n const classes = [];\n\n if (props.class) {\n classes.push(...props.class.split(' '));\n }\n\n if (selection.isSelected(field)) {\n classes.push('fjs-editor-selected');\n }\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={ classes.join(' ') }\n data-id={ id }\n data-field-type={ type }\n tabIndex={ type === 'default' ? -1 : 0 }\n onClick={ onClick }\n onKeyPress={ onKeyPress }\n ref={ ref }>\n <DebugColumns field={ field } />\n <ContextPad>\n {\n selection.isSelected(field) && field.type !== 'default'\n ? <button class=\"fjs-context-pad-item\" onClick={ onRemove }><DeleteIcon /></button>\n : null\n }\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\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\n class={ classes.join(' ') }\n 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\n class={ classes.join(' ') }\n 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\n data-field-type={ field.type }\n class={ classes.join(' ') }>\n { props.children }\n </div>\n );\n}\n\nexport default function FormEditor(props) {\n const dragging = useService('dragging'),\n eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n injector = useService('injector'),\n selection = useService('selection');\n\n const { schema, properties } = formEditor._getState();\n\n const { ariaLabel } = properties;\n\n const formContainerRef = useRef(null);\n\n const [ , setSelection ] = useState(schema);\n\n useEffect(() => {\n function handleSelectionChanged(event) {\n setSelection(event.selection || schema);\n }\n\n eventBus.on('selection.changed', handleSelectionChanged);\n\n setSelection(selection.get() || schema);\n\n return () => {\n eventBus.off('selection.changed', handleSelectionChanged);\n };\n }, [ schema, selection ]);\n\n const [ drake, setDrake ] = useState(null);\n\n const dragAndDropContext = {\n drake\n };\n\n useEffect(() => {\n\n let dragulaInstance = dragging.createDragulaInstance({\n container: [\n DRAG_CONTAINER_CLS,\n DROP_CONTAINER_VERTICAL_CLS,\n DROP_CONTAINER_HORIZONTAL_CLS\n ],\n direction: 'vertical',\n mirrorContainer: formContainerRef.current\n });\n\n setDrake(dragulaInstance);\n\n const onDetach = () => {\n if (dragulaInstance) {\n dragulaInstance.destroy();\n\n eventBus.fire('dragula.destroyed');\n }\n };\n\n const onAttach = () => {\n onDetach();\n\n dragulaInstance = dragging.createDragulaInstance({\n container: [\n DRAG_CONTAINER_CLS,\n DROP_CONTAINER_VERTICAL_CLS,\n DROP_CONTAINER_HORIZONTAL_CLS\n ],\n direction: 'vertical',\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 eventBus.fire('formEditor.rendered');\n }, []);\n\n const formRenderContext = {\n Children,\n Column,\n Element,\n Empty,\n Row\n };\n\n const formContext = {\n getService(type, strict = true) {\n\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\n const onSubmit = useCallback(() => {}, []);\n\n const onReset = useCallback(() => {}, []);\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 value={ formRenderContext }>\n <FormComponent onSubmit={ onSubmit } onReset={ onReset } />\n </FormRenderContext.Provider>\n </FormContext.Provider>\n </div>\n <CreatePreview />\n </DragAndDropContext.Provider>\n <ModularSection rootClass=\"fjs-properties-container\" section=\"propertiesPanel\">\n <PropertiesPanel />\n </ModularSection>\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\n const { drake } = useContext(DragAndDropContext);\n\n function handleCloned(clone, original, type) {\n\n const fieldType = clone.dataset.fieldType;\n\n // (1) field preview\n if (fieldType) {\n\n const { label } = findPaletteEntry(fieldType);\n\n const Icon = iconsByType(fieldType);\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\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(\n <FieldDragPreview label={ label } Icon={ Icon } />,\n clone\n );\n } else {\n\n // (2) row preview\n\n // remove elements from copy (context pad, row dragger, ...)\n [\n 'fjs-context-pad',\n 'fjs-row-dragger',\n 'fjs-debug-columns'\n ].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 useEffect(() => {\n if (!drake) {\n return;\n }\n\n drake.on('cloned', handleCloned);\n\n return () => drake.off('cloned', handleCloned);\n }, [ drake ]);\n\n return null;\n}\n\n\n// helper //////\n\nfunction findPaletteEntry(type) {\n return PALETTE_ENTRIES.find(entry => entry.type === type);\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').default } EventBus\n * @typedef { import('../FormEditor').default } FormEditor\n */\n\n/**\n * @param {RenderConfig} renderConfig\n * @param {EventBus} eventBus\n * @param {FormEditor} formEditor\n * @param {Injector} injector\n */\nexport default class Renderer {\n constructor(renderConfig, eventBus, formEditor, injector) {\n\n const {\n container,\n compact = false\n } = renderConfig;\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' ];","import EditorFormFields from './EditorFormFields';\nimport Renderer from './Renderer';\n\nexport default {\n __init__: [ 'formFields', 'renderer' ],\n formFields: [ 'type', EditorFormFields ],\n renderer: [ 'type', Renderer ]\n};","import EventBus from './EventBus';\nimport DebounceFactory from './Debounce';\nimport FieldFactory from './FieldFactory';\nimport FormFieldRegistry from './FormFieldRegistry';\nimport FormLayouter from './FormLayouter';\nimport FormLayoutValidator from './FormLayoutValidator';\n\nimport importModule from '../import';\nimport renderModule from '../render';\n\nexport default {\n __depends__: [\n importModule,\n renderModule\n ],\n debounce: [ 'factory', DebounceFactory ],\n eventBus: [ 'type', EventBus ],\n formFieldRegistry: [ 'type', FormFieldRegistry ],\n formLayouter: [ 'type', FormLayouter ],\n formLayoutValidator: [ 'type', FormLayoutValidator ],\n fieldFactory: [ 'type', FieldFactory ]\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) {\n this.register('paste', function() {\n copyPaste.paste();\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 * 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 number of actions that are currently registered\n *\n * @return {number}\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\n\nexport default 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\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\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 = [\n 'eventBus',\n 'injector'\n];","import EditorActionsModule from 'diagram-js/lib/features/editor-actions';\n\nimport FormEditorActions from './FormEditorActions';\n\nexport default {\n __depends__: [\n EditorActionsModule\n ],\n editorActions: [ 'type', FormEditorActions ]\n};\n","import Dragging from './Dragging';\n\nexport default {\n __init__: [ 'dragging' ],\n dragging: [ 'type', Dragging ]\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_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 */\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 */\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\nexport function isCopy(event) {\r\n return isCmd(event) && isKey(KEYS_COPY, event);\r\n}\r\n\r\nexport function isPaste(event) {\r\n return isCmd(event) && isKey(KEYS_PASTE, event);\r\n}\r\n\r\nexport function isUndo(event) {\r\n return isCmd(event) && !isShift(event) && isKey(KEYS_UNDO, event);\r\n}\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}","import {\n isFunction\n} from 'min-dash';\n\nimport {\n closest as domClosest,\n event as domEvent,\n matches as domMatches\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\nvar KEYDOWN_EVENT = 'keyboard.keydown',\n KEYUP_EVENT = 'keyboard.keyup';\n\nvar HANDLE_MODIFIER_ATTRIBUTE = 'input-handle-modified-keys';\n\nvar DEFAULT_PRIORITY = 1000;\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 * A default binding for the keyboard may be specified via the\n * `keyboard.bindTo` configuration option.\n *\n * @param {Object} config\n * @param {EventBus} eventBus\n */\nexport default function Keyboard(config, eventBus) {\n var self = this;\n\n this._config = config || {};\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 eventBus.on('diagram.init', function() {\n self._fire('init');\n });\n\n eventBus.on('attach', function() {\n if (config && config.bindTo) {\n self.bind(config.bindTo);\n }\n });\n\n eventBus.on('detach', function() {\n self.unbind();\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 if (event.defaultPrevented) {\n return true;\n }\n\n return isInput(event.target) && this._isModifiedKeyIgnored(event);\n};\n\nKeyboard.prototype._isModifiedKeyIgnored = function(event) {\n if (!isCmd(event)) {\n return true;\n }\n\n var allowedModifiers = this._getAllowedModifiers(event.target);\n return allowedModifiers.indexOf(event.key) === -1;\n};\n\nKeyboard.prototype._getAllowedModifiers = function(element) {\n var modifierContainer = domClosest(element, '[' + HANDLE_MODIFIER_ATTRIBUTE + ']', true);\n\n if (!modifierContainer || (this._node && !this._node.contains(modifierContainer))) {\n return [];\n }\n\n return modifierContainer.getAttribute(HANDLE_MODIFIER_ATTRIBUTE).split(',');\n};\n\nKeyboard.prototype.bind = function(node) {\n\n // make sure that the keyboard is only bound once to the DOM\n this.unbind();\n\n this._node = node;\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\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\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 {Function} listener\n * @param {string} type\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\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\n\n\n// helpers ///////\n\nfunction isInput(target) {\n return target && (domMatches(target, 'input, textarea') || target.contentEditable === 'true');\n}\n","import {\n isCmd,\n isKey,\n isCopy,\n isPaste,\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 // 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 {\n isCmd,\n isKey,\n isShift\n} from 'diagram-js/lib/features/keyboard/KeyboardUtil';\n\nimport {\n KEYS_REDO,\n KEYS_UNDO\n} from 'diagram-js/lib/features/keyboard/KeyboardBindings';\n\nconst LOW_PRIORITY = 500;\n\nexport default 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\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 (isCmd(keyEvent) && !isShift(keyEvent) && isKey(KEYS_UNDO, 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 (isCmd(keyEvent) && (isKey(KEYS_REDO, keyEvent) || (isKey(KEYS_UNDO, keyEvent) && isShift(keyEvent)))) {\n editorActions.trigger('redo');\n\n return true;\n }\n });\n\n }\n}\n\nFormEditorKeyboardBindings.$inject = [ 'eventBus', 'keyboard' ];","import KeyboardModule from 'diagram-js/lib/features/keyboard';\n\nimport FormEditorKeyboardBindings from './FormEditorKeyboardBindings';\n\nexport default {\n __depends__: [\n KeyboardModule\n ],\n __init__: [ 'keyboardBindings' ],\n keyboardBindings: [ 'type', FormEditorKeyboardBindings ]\n};","export function arrayAdd(array, index, item) {\n array.splice(index, 0, item);\n\n return array;\n}\n\nexport { mutate 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\n formField._path = [ ...parent._path, 'components', index ];\n\n return formField;\n}\n\nexport function updateRow(formField, rowId) {\n formField.layout = {\n ...formField.layout || {},\n row: rowId\n };\n\n return formField;\n}","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class AddFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n targetFormField,\n targetIndex\n } = 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 paths of new form field and its siblings\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 {\n formField,\n targetFormField,\n targetIndex\n } = 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 paths of new form field and its siblings\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' ];","export default class EditFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n properties\n } = 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 {\n formField,\n oldProperties\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n for (let key in oldProperties) {\n\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}\n\nEditFormFieldHandler.$inject = [\n 'formEditor',\n 'formFieldRegistry'\n];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayMove,\n arrayRemove,\n updatePath,\n updateRow\n} from './Util';\n\nexport default class MoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n this.moveFormField(context);\n }\n\n revert(context) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex,\n sourceRow,\n targetRow\n } = context;\n\n this.moveFormField({\n sourceFormField: targetFormField,\n targetFormField: sourceFormField,\n sourceIndex: targetIndex,\n targetIndex: sourceIndex,\n sourceRow: targetRow,\n targetRow: sourceRow\n }, true);\n }\n\n moveFormField(context, revert) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex,\n targetRow\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n if (sourceFormField.id === targetFormField.id) {\n\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\n updateRow(formField, targetRow ? targetRow.id : null);\n\n // (2) Move form field\n arrayMove(get(schema, sourcePath), sourceIndex, targetIndex);\n\n // (3) Update paths of new form field and its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n } else {\n const formField = get(schema, [ ...sourcePath, sourceIndex ]);\n\n formField._parent = targetFormField.id;\n\n // (1) Remove form field\n arrayRemove(get(schema, sourcePath), sourceIndex);\n\n // (2) Update paths of siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n // (3) Add to row\n updateRow(formField, targetRow ? targetRow.id : null);\n\n // (4) Add form field\n arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n // (5) Update paths of siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\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' ];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class RemoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n sourceFormField,\n sourceIndex\n } = 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 paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Remove 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 revert(context) {\n const {\n formField,\n sourceFormField,\n sourceIndex\n } = 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 paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Add 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\nRemoveFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","export default class UpdateIdClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n id\n } = 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 {\n claiming,\n formField,\n id\n } = 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' ];","export default class UpdateKeyClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.claim(key, formField);\n } else {\n this._formFieldRegistry._keys.unclaim(key);\n }\n }\n\n revert(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.unclaim(key);\n } else {\n this._formFieldRegistry._keys.claim(key, formField);\n }\n }\n}\n\nUpdateKeyClaimHandler.$inject = [ 'formFieldRegistry' ];","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';\n\nimport { isObject } from 'min-dash';\n\n\nexport default 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 };\n }\n\n addFormField(attrs, targetFormField, targetIndex) {\n\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\nModeling.$inject = [\n 'commandStack',\n 'eventBus',\n 'formEditor',\n 'formFieldRegistry',\n 'fieldFactory'\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 { updateRow } from './cmd/Util';\n\nimport CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nimport { clone } from '@bpmn-io/form-js-viewer';\n\n\nexport default class FormLayoutUpdater extends CommandInterceptor {\n\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([\n 'formField.add',\n 'formField.remove',\n 'formField.move',\n 'id.updateClaim'\n ], (event) => this.updateRowIds(event));\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\n updateLayout(schema) {\n this._formLayouter.clear();\n this._formLayouter.calculateLayout(clone(schema));\n }\n\n updateRowIds(event) {\n\n const { schema } = this._formEditor._getState();\n\n // make sure rows are persisted in schema (e.g. for migration case)\n schema.components.forEach(formField => {\n const row = this._formLayouter.getRowForField(formField);\n updateRow(formField, row.id);\n });\n }\n\n}\n\nFormLayoutUpdater.$inject = [ 'eventBus', 'formLayouter', 'modeling', 'formEditor' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class IdBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { id } = formField;\n\n modeling.unclaimId(formField, id);\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('id' in properties) {\n modeling.unclaimId(formField, formField.id);\n\n modeling.claimId(formField, properties.id);\n }\n }, true);\n }\n}\n\nIdBehavior.$inject = [ 'eventBus', 'modeling' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class KeyBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { key } = formField;\n\n if (key) {\n modeling.unclaimKey(formField, key);\n }\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('key' in properties) {\n modeling.unclaimKey(formField, formField.key);\n\n modeling.claimKey(formField, properties.key);\n }\n }, true);\n }\n}\n\nKeyBehavior.$inject = [ 'eventBus', 'modeling' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default 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 // @ts-ignore-next-line\n this.preExecute('formField.edit', 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 }, true);\n }\n}\n\nValidateBehavior.$inject = [ 'eventBus' ];","import IdBehavior from './IdBehavior';\nimport KeyBehavior from './KeyBehavior';\nimport ValidateBehavior from './ValidateBehavior';\n\nexport default {\n __init__: [\n 'idBehavior',\n 'keyBehavior',\n 'validateBehavior'\n ],\n idBehavior: [ 'type', IdBehavior ],\n keyBehavior: [ 'type', KeyBehavior ],\n validateBehavior: [ 'type', ValidateBehavior ]\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 Modeling from './Modeling';\n\nimport FormLayoutUpdater from './FormLayoutUpdater';\n\nimport behaviorModule from './behavior';\nimport commandModule from 'diagram-js/lib/command';\n\nexport default {\n __depends__: [\n behaviorModule,\n commandModule\n ],\n __init__: [ 'formLayoutUpdater', 'modeling' ],\n formLayoutUpdater: [ 'type', FormLayoutUpdater ],\n modeling: [ 'type', Modeling ]\n};\n","export default 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' ];","export default class SelectionBehavior {\n constructor(eventBus, selection) {\n eventBus.on([\n 'commandStack.formField.add.postExecuted',\n 'commandStack.formField.move.postExecuted'\n ], ({ context }) => {\n const { formField } = context;\n\n selection.set(formField);\n });\n\n eventBus.on('commandStack.formField.remove.postExecuted', ({ context }) => {\n const {\n sourceFormField,\n sourceIndex\n } = 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' ];","import Selection from './Selection';\nimport SelectionBehavior from './SelectionBehavior';\n\nexport default {\n __init__: [ 'selection', 'selectionBehavior' ],\n selection: [ 'type', Selection ],\n selectionBehavior: [ 'type', SelectionBehavior ]\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 default class SectionModuleBase {\n\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 }\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) { this._eventBus.fire(`${this.sectionKey}.attach`, { container }); }\n\n /**\n * Detach the managed section from its parent node.\n */\n detach() { this._eventBus.fire(`${this.sectionKey}.detach`); }\n\n /**\n * Reset the managed section to its initial state.\n */\n reset() { this._eventBus.fire(`${this.sectionKey}.reset`); }\n}\n","import SectionModuleBase from '../SectionModuleBase';\n\nexport default class PaletteModule extends SectionModuleBase {\n constructor(eventBus) { super(eventBus, 'palette'); }\n}\n\nPaletteModule.$inject = [ 'eventBus' ];","import PaletteModule from './PaletteModule';\n\nexport default {\n palette: [ 'type', PaletteModule ]\n};\n","import SectionModuleBase from '../SectionModuleBase';\n\nexport default class PropertiesPanelModule extends SectionModuleBase {\n constructor(eventBus) { super(eventBus, 'propertiesPanel'); }\n}\n\nPropertiesPanelModule.$inject = [ 'eventBus' ];","import PropertiesPanelModule from './PropertiesPanelModule';\n\nexport default {\n __init__: [ 'propertiesPanel' ],\n propertiesPanel: [ 'type', PropertiesPanelModule ]\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 default class RenderInjector extends SectionModuleBase {\n\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' ];","import RenderInjector from './RenderInjector';\n\nexport default {\n __init__: [ 'renderInjector' ],\n renderInjector: [ 'type', RenderInjector ],\n};","import { isString } from 'min-dash';\n\nexport default class EditorTemplating {\n\n // same rules as viewer templating\n isTemplate(value) { return isString(value) && (value.startsWith('=') || /{{/.test(value)); }\n\n // return the template raw, as we usually just want to display that\n evaluate(template) { return template; }\n}\n\nEditorTemplating.$inject = [];\n","import { FeelExpressionLanguage } from '@bpmn-io/form-js-viewer';\nimport EditorTemplating from './EditorTemplating';\n\nexport default {\n __init__: [ 'expressionLanguage', 'templating' ],\n expressionLanguage: [ 'type', FeelExpressionLanguage ],\n templating: [ 'type', EditorTemplating ]\n};\n","import { clone, createFormContainer, createInjector, schemaVersion } from '@bpmn-io/form-js-viewer';\nimport Ids from 'ids';\nimport { isString, set } from 'min-dash';\n\nimport core from './core';\n\nimport EditorActionsModule from './features/editor-actions';\nimport DraggingModule from './features/dragging';\nimport KeyboardModule from './features/keyboard';\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 ExpressionLanguageModule from './features/expression-language';\n\nimport { MarkdownModule } 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 default class FormEditor {\n\n /**\n * @constructor\n * @param {FormEditorOptions} options\n */\n constructor(options = {}) {\n\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('input-handle-modified-keys', 'z,y');\n\n const {\n container,\n exporter,\n injector = this._createInjector(options, this._container),\n properties = {}\n } = 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\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\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 {\n schema: importedSchema,\n warnings\n } = 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(\n schema,\n this.exporter,\n schemaVersion\n );\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 /**\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 {\n additionalModules = [],\n modules = this._getModules(),\n renderer = {}\n } = options;\n\n const config = {\n ...options,\n renderer: {\n ...renderer,\n container\n }\n };\n\n return createInjector([\n { config: [ 'value', config ] },\n { formEditor: [ 'value', this ] },\n core,\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 DraggingModule,\n KeyboardModule,\n SelectionModule,\n PaletteModule,\n ExpressionLanguageModule,\n MarkdownModule,\n PropertiesPanelModule,\n RenderInjectionModule\n ];\n }\n\n /**\n * @internal\n */\n _onEvent(type, priority, handler) {\n this.get('eventBus').on(type, priority, handler);\n }\n\n}\n\n// helpers //////////\n\nexport function exportSchema(schema, exporter, schemaVersion) {\n\n const exportDetails = exporter ? {\n exporter\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}","import FormEditor from './FormEditor';\r\n\r\nimport { schemaVersion } from '@bpmn-io/form-js-viewer';\r\n\r\nexport {\r\n FormEditor,\r\n schemaVersion\r\n};\r\n\r\n/**\r\n * @typedef { import('./types').CreateFormEditorOptions } CreateFormEditorOptions\r\n */\r\n\r\n/**\r\n * Create a form editor.\r\n *\r\n * @param {CreateFormEditorOptions} options\r\n *\r\n * @return {Promise<FormEditor>}\r\n */\r\nexport function createFormEditor(options) {\r\n const {\r\n schema,\r\n ...rest\r\n } = options;\r\n\r\n const formEditor = new FormEditor(rest);\r\n\r\n return formEditor.importSchema(schema).then(() => {\r\n return formEditor;\r\n });\r\n}"],"names":["FN_REF","DEFAULT_PRIORITY","slice","Array","prototype","EventBus","_listeners","on","_destroy","events","priority","callback","that","isArray","isFunction","isNumber","Error","actualCallback","bind","self","forEach","e","_addListener","next","once","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","FieldFactory","constructor","formFieldRegistry","formFields","_formFieldRegistry","_formFields","create","attrs","applyDefaults","id","key","fieldDefinition","get","_ids","assigned","_keys","labelAttrs","label","field","_ensureId","keyed","_ensureKey","claim","prefix","nextPrefixed","FormFieldRegistry","BaseFieldRegistry","updateId","formField","newId","_validateId","_eventBus","remove","add","component","components","_parent","MAX_COLUMNS_PER_ROW","MAX_COLUMNS","MIN_COLUMNS","MAX_FIELDS_PER_ROW","FormLayoutValidator","formLayouter","_formLayouter","validateField","columns","row","Number","isInteger","getRowForField","sumColumns","parseInt","sumFields","sumAutoCols","cols","layout","calculateMaxColumnsWithAuto","autoCols","Importer","fieldFactory","_fieldFactory","importSchema","schema","warnings","importedSchema","importFormField","clone","calculateLayout","err","fieldAttrs","parentId","index","parent","path","_path","importFormFields","map","importer","editorFormFieldClasses","disabled","classNames","createDragger","dragPreview","startX","startY","onDragStart","clientX","clientY","dataTransfer","setDragImage","document","addEventListener","onDrag","onEnd","delta","x","y","removeEventListener","throttle","active","lastArgs","lastThis","window","requestAnimationFrame","DragAndDropContext","createContext","drake","getService","strict","FormEditorContext","useContext","_extends","EditorText","props","text","Icon","iconsByType","templating","useService","expressionLanguage","_jsx","_jsxs","isExpression","isTemplate","Text","disableLinks","editorFormFields","EditorFormFields","FormFields","register","rootClass","RootElement","section","children","eventBus","sectionConfig","setParent","useState","shouldRender","setShouldRender","ParentElement","useMemo","element","querySelector","Element","useEffect","onAttach","container","onDetach","onReset","Root","useCallback","createPortal","FillContext","addFill","uid","removeFill","useRef","Symbol","fillContext","SlotContext","fills","groupFn","_groupByGroupName","separatorFn","limit","filtered","filter","fill","slot","cropped","groups","fillsAndSeparators","buildFills","FillFragment","Fragment","fillRenderer","separatorRenderer","array","idx","separator","push","groupsById","group","groupName","sort","_comparePriority","Object","keys","a","b","setFills","f","onSetFill","onRemoveFill","slotContext","PALETTE_ENTRIES","fieldConfig","PALETTE_GROUPS","Palette","entries","setEntries","searchTerm","setSearchTerm","inputRef","groupEntries","simplifyString","str","toLowerCase","replace","entry","simplifiedSearchTerm","simplifiedEntryLabel","simplifiedEntryType","includes","handleInput","target","value","handleClear","current","focus","getIndefiniteArticle","length","getGroup","find","g","Header","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","documentationRef","ElementIcon","class","width","height","viewBox","title","rel","href","ExternalLinkIcon","useVariables","form","getSchema","getSchemaVariables","arrayAdd","item","copy","splice","countDecimals","number","num","Big","toString","toFixed","split","isValidNumber","isNaN","textToLabel","line","displayLine","trim","INPUTS","VALUES_INPUTS","labelsByType","button","checkbox","checklist","default","datetime","image","radio","select","taglist","textfield","textarea","PropertiesPanelHeaderProvider","alt","PropertiesPanelPlaceholderProvider","getEmpty","getMultiple","ActionEntry","editField","Action","isEdited","isSelectEntryEdited","getValue","setValue","getOptions","SelectEntry","AltTextEntry","AltText","isFeelEntryEdited","variables","FeelEntry","feel","AUTO_OPTION_VALUE","ColumnsEntry","Columns","formLayoutValidator","validate","newValue","set","asArray","i","asOption","from","_","DescriptionEntry","Description","FeelTemplatingEntry","singleLine","EMPTY_OPTION","DefaultOptionEntry","values","defaultOptions","DefaultValueCheckbox","DefaultValueNumber","isTextFieldEntryEdited","DefaultValueSingleSelect","DefaultValueTextfield","DefaultValueTextarea","isTextAreaEntryEdited","defaultValue","parseStringToBoolean","parseBooleanToString","decimalDigits","serializeToString","decimalDigitsSet","TextFieldEntry","TextAreaEntry","DisabledEntry","Disabled","isToggleSwitchEntryEdited","ToggleSwitchEntry","inline","IdEntry","Id","isUndefined","validateId","SPACE_REGEX","QNAME_REGEX","ID_REGEX","idValue","containsSpace","test","KeyEntry","Key","description","LabelEntry","subtype","DATETIME_SUBTYPES","DATE","DATETIME","DateLabel","TIME","TimeLabel","Label","DATE_LABEL_PATH","TIME_LABEL_PATH","SourceEntry","Source","TextEntry","_Fragment","hostLanguage","NumberEntries","NumberDecimalDigits","isNumberFieldEntryEdited","NumberArrowStep","NumberFieldEntry","step","clearLeadingZeroes","trimmed","startsWith","cmp","minimumValue","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","DateTimeConstraintsEntry","TimeIntervalSelect","DisallowPassedDates","timeIntervals","getTimeIntervals","timeInterval","DateTimeFormatEntry","TimeFormatSelect","getTimeSerialisingFormats","format","TIME_SERIALISINGFORMAT_LABELS","simpleBoolEntryFactory","options","SimpleBoolComponent","SelectEntries","ValueEntry","idPrefix","validateFactory","Value","CustomValueEntry","properties","updateKey","updateValue","oldKey","newKey","reduce","newProperties","ValuesSourceSelectEntry","ValuesSourceSelect","getValuesSource","newField","VALUES_SOURCES","source","VALUES_SOURCES_DEFAULTS","VALUES_SOURCES_PATHS","getValuesSourceOptions","valueSource","VALUES_SOURCES_LABELS","InputKeyValuesSourceEntry","InputValuesKey","INPUT","StaticValuesSourceEntry","addEntry","getIndexedEntry","STATIC","removeEntry","without","isValueAssigned","items","autoFocusEntry","shouldSort","labelOrValueIsAlreadyAssignedForIndex","some","existingEntry","AdornerEntry","onChange","appearance","PrefixAdorner","SuffixAdorner","ReadonlyEntry","Readonly","FeelToggleSwitchEntry","ConditionEntry","Condition","hide","GeneralGroup","DefaultValueEntry","ImageSourceEntry","SerializationGroup","DateTimeSerializationEntry","ConstraintsGroup","VALIDATION_TYPE_OPTIONS","custom","email","phone","ValidationGroup","isCustomValidation","validationType","Required","ValidationType","MinLength","MaxLength","Pattern","Min","Max","min","ValuesGroups","fieldId","context","valuesSourceId","Group","valuesSource","dynamicValuesId","staticValuesId","ListGroup","CustomValuesGroup","has","removeKey","AppearanceGroup","LayoutGroup","ConditionGroup","getGroups","FormPropertiesPanel","injector","formEditor","modeling","selection","_getState","state","setState","selectedFormField","_update","useLayoutEffect","onSelectionChange","onFieldChanged","onFocus","onBlur","editFormField","renderInjector","injectedRenderers","fetchRenderers","injectedProps","Fill","Slot","Renderer","CURSOR_CLS_PATTERN","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","_modeling","getTargetIndex","targetRow","targetFormField","sibling","siblingFormFieldNode","siblingFormField","dataset","getFormFieldIndex","validateDrop","formFieldNode","getRow","rowId","moveField","targetIndex","sourceParent","getFormParent","sourceFormField","sourceIndex","sourceRow","moveFormField","createNewField","fieldType","nextRowId","addFormField","handleRowDrop","el","rowNode","siblingRowNode","siblingRow","handleElementDrop","isRow","unsetDropNotAllowed","validationError","cancel","isPalette","createDragulaInstance","direction","mirrorContainer","dragulaInstance","dragula","isContainer","cls","classList","contains","moves","handle","accepts","setDropNotAllowed","slideFactorX","slideFactorY","emit","isDragRow","fieldFormIndex","node","closest","setCursor","FieldDragPreview","className","COLUMNS_REGEX","ELEMENT_RESIZING_CLS","RESIZE_DRAG_PREVIEW_CLS","GRID_OFFSET_PX","FieldResizer","position","ref","startColumns","newColumns","onResize","dx","calculateNewColumns","errorMessage","columnNode","onResizeStart","getElementNode","getParent","blankPreview","getDragPreviewImage","createElement","appendChild","getColumnNode","startWidth","getBoundingClientRect","asColumns","setResizing","onResizeEnd","unsetResizing","totalWidth","oneColumn","Math","round","currentColumns","deltaX","deltaColumns","regex","domQuery","ContextPad","Empty","scrollIntoView","elementBounds","containerBounds","_container","top","bottom","isSelected","onClick","toggle","onRemove","parentField","removeFormField","onKeyPress","join","DeleteIcon","DebugColumns","debugColumnsConfig","Children","Row","Column","FormEditor","dragging","ariaLabel","formContainerRef","setSelection","handleSelectionChanged","setDrake","dragAndDropContext","destroy","onCreate","onDragEnd","unsetCursor","formRenderContext","formContext","errors","formId","_id","onSubmit","FormContext","FormRenderContext","FormComponent","PropertiesPanel","CreatePreview","handleCloned","original","findPaletteEntry","innerHTML","render","cloneNode","querySelectorAll","renderConfig","compact","App","formEditorContext","newState","__init__","renderer","__depends__","importModule","renderModule","FormLayouter","NOT_REGISTERED_ERROR","IS_REGISTERED_ERROR","EditorActions","_actions","_registerDefaultActions","editorActions","commandStack","zoomScroll","copyPaste","canvas","rules","keyboardMove","keyboardMoveSelection","undo","redo","selectedElements","paste","opts","stepZoom","zoom","allowed","elements","removableElements","removeElements","moveCanvas","moveSelection","accelerated","trigger","action","actions","_registerAction","isRegistered","unregister","getActions","message","FormEditorActions","EditorActionsModule","KEYS_COPY","KEYS_PASTE","KEYS_REDO","KEYS_UNDO","hasModifier","ctrlKey","metaKey","shiftKey","altKey","isCmd","isKey","indexOf","code","isShift","isCopy","isPaste","isUndo","isRedo","KEYDOWN_EVENT","KEYUP_EVENT","HANDLE_MODIFIER_ATTRIBUTE","Keyboard","_config","_keydownHandler","_keyupHandler","_fire","unbind","bindTo","_keyHandler","eventBusResult","_isEventIgnored","keyEvent","isInput","_isModifiedKeyIgnored","allowedModifiers","_getAllowedModifiers","modifierContainer","domClosest","_node","getAttribute","domEvent","getBinding","addListener","removeListener","domMatches","contentEditable","LOW_PRIORITY","KeyboardBindings","keyboard","registerBindings","keyboardBindings","FormEditorKeyboardBindings","KeyboardModule","arrayRemove","updatePath","updateRow","AddFormFieldHandler","_formEditor","execute","targetPath","_setState","revert","EditFormFieldHandler","oldProperties","property","MoveFormFieldHandler","sourcePath","arrayMove","RemoveFormFieldHandler","UpdateIdClaimHandler","claiming","unclaim","UpdateKeyClaimHandler","Modeling","_commandStack","registerHandlers","getHandlers","handler","registerHandler","isObject","claimId","unclaimId","claimKey","unclaimKey","CommandInterceptor","unwrapEvent","command","hook","handlerFn","unwrap","fullEvent","canExecute","createHook","preExecute","preExecuted","executed","postExecute","postExecuted","reverted","hookFn","FormLayoutUpdater","updateRowIds","updateLayout","clear","IdBehavior","KeyBehavior","ValidateBehavior","newValidate","minLength","maxLength","pattern","idBehavior","keyBehavior","validateBehavior","CommandStack","_handlerMap","_stack","_stackIdx","_currentExecution","dirty","_injector","_uid","_pushAction","_internalExecute","_popAction","_getHandler","_getUndoAction","_internalUndo","_getRedoAction","_setHandler","handlerCls","instantiate","canUndo","canRedo","_atomicDo","_markDirty","_revertedAction","qualifier","names","_createId","execution","atomic","_executedAction","baseAction","pop","uniqueBy","reverse","concat","stackIdx","behaviorModule","commandModule","formLayoutUpdater","Selection","_selection","newSelection","SelectionBehavior","selectionBehavior","SectionModuleBase","sectionKey","attachTo","detach","reset","PaletteModule","palette","PropertiesPanelModule","propertiesPanel","RenderInjector","registeredRenderers","attachRenderer","identifier","detachRenderer","r","EditorTemplating","isString","evaluate","template","FeelExpressionLanguage","ids","Ids","_onEvent","createFormContainer","setAttribute","exporter","_createInjector","_state","invoke","_emit","_detach","Promise","resolve","reject","saveSchema","exportSchema","schemaVersion","parentNode","removeChild","setProperty","additionalModules","modules","_getModules","createInjector","core","ModelingModule","DraggingModule","SelectionModule","ExpressionLanguageModule","MarkdownModule","RenderInjectionModule","exportDetails","cleanedSchema","createFormEditor","rest","then"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAIA,MAAM,GAAG,MAAM,CAAA;AAEnB,IAAIC,kBAAgB,GAAG,IAAI,CAAA;AAE3B,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAS,CAACF,KAAK,CAAA;;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;AACe,SAASG,QAAQ,GAAG;AAEjC;AACF;AACA;AACE,EAAA,IAAI,CAACC,UAAU,GAAG,EAAE,CAAA;;AAEpB;AACA;AACA,EAAA,IAAI,CAACC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAACC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACpD,CAAA;;AAGA;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,CAAEA,MAAM,CAAE,CAAA;AAE9C,EAAA,IAAIK,kBAAU,CAACJ,QAAQ,CAAC,EAAE;AACxBE,IAAAA,IAAI,GAAGD,QAAQ,CAAA;AACfA,IAAAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AC5B,OAAOF,WAAW,CAACG,OAAO,CAAA;AAE1B7a,QAAAA,UAAU,CAAC,UAAU,CAAC,GAAG0a,WAAW,CAAA;AACtC,OAAA;KACD,EAAE,IAAI,CAAC,CAAA;AACV,GAAA;AACF,CAAA;AAEAD,gBAAgB,CAAC90B,OAAO,GAAG,CAAE,UAAU,CAAE;;AC1BzC,qBAAe;AACbyrB,EAAAA,QAAQ,EAAE,CACR,YAAY,EACZ,aAAa,EACb,kBAAkB,CACnB;AACD0J,EAAAA,UAAU,EAAE,CAAE,MAAM,EAAEP,UAAU,CAAE;AAClCQ,EAAAA,WAAW,EAAE,CAAE,MAAM,EAAEP,WAAW,CAAE;AACpCQ,EAAAA,gBAAgB,EAAE,CAAE,MAAM,EAAEP,gBAAgB,CAAA;AAC9C,CAAC;;ACRD;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;;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,SAASQ,YAAY,CAAC/sB,QAAQ,EAAEiX,QAAQ,EAAE;AAEvD;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI,CAAC+V,WAAW,GAAG,EAAE,CAAA;;AAErB;AACF;AACA;AACA;AACA;EACE,IAAI,CAACC,MAAM,GAAG,EAAE,CAAA;;AAEhB;AACF;AACA;AACA;AACA;AACE,EAAA,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC,CAAA;;AAEnB;AAC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","x_google_ignoreList":[0,25,75,76,80,81,82,83,94,100,101]}
1
+ {"version":3,"file":"index.cjs","sources":["../../../node_modules/diagram-js/lib/core/EventBus.js","../src/core/Debounce.js","../src/core/FieldFactory.js","../src/core/FormFieldRegistry.js","../src/core/FormLayoutValidator.js","../src/import/Importer.js","../src/import/index.js","../src/render/components/Util.js","../src/render/context/DragAndDropContext.js","../src/render/context/FormEditorContext.js","../src/render/hooks/useService.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/editor-form-fields/EditorText.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/Palette.js","../../../node_modules/@bpmn-io/properties-panel/dist/index.esm.js","../src/features/properties-panel/hooks/useVariables.js","../src/features/properties-panel/Util.js","../src/features/properties-panel/PropertiesPanelHeaderProvider.js","../src/features/properties-panel/PropertiesPanelPlaceholderProvider.js","../src/features/properties-panel/entries/ActionEntry.js","../src/features/properties-panel/entries/AltTextEntry.js","../src/features/properties-panel/entries/ColumnsEntry.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/LabelEntry.js","../src/features/properties-panel/entries/ImageSourceEntry.js","../src/features/properties-panel/entries/TextEntry.js","../src/features/properties-panel/entries/NumberEntries.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/DateTimeSerializationEntry.js","../src/features/properties-panel/entries/factories/simpleBoolEntryFactory.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/entries/ValuesSourceSelectEntry.js","../src/features/properties-panel/entries/InputKeyValuesSourceEntry.js","../src/features/properties-panel/entries/StaticValuesSourceEntry.js","../src/features/properties-panel/entries/AdornerEntry.js","../src/features/properties-panel/entries/ReadonlyEntry.js","../src/features/properties-panel/entries/ConditionEntry.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/ValuesGroups.js","../src/features/properties-panel/groups/CustomValuesGroup.js","../src/features/properties-panel/groups/AppearanceGroup.js","../src/features/properties-panel/groups/LayoutGroup.js","../src/features/properties-panel/groups/ConditionGroup.js","../src/features/properties-panel/PropertiesPanel.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/dragging/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/modeling/cmd/Util.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/Modeling.js","../../../node_modules/diagram-js/lib/command/CommandInterceptor.js","../src/features/modeling/FormLayoutUpdater.js","../src/features/modeling/behavior/IdBehavior.js","../src/features/modeling/behavior/KeyBehavior.js","../src/features/modeling/behavior/ValidateBehavior.js","../src/features/modeling/behavior/index.js","../../../node_modules/diagram-js/lib/command/CommandStack.js","../../../node_modules/diagram-js/lib/command/index.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/PaletteModule.js","../src/features/palette/index.js","../src/features/properties-panel/PropertiesPanelModule.js","../src/features/properties-panel/index.js","../src/features/render-injection/RenderInjector.js","../src/features/render-injection/index.js","../src/features/expression-language/EditorTemplating.js","../src/features/expression-language/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 */\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/**\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 */\nEventBus.prototype.on = function(events, priority, callback, that) {\n\n events = isArray(events) ? events : [ events ];\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n var actualCallback = callback;\n\n if (that) {\n actualCallback = bind(callback, that);\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n actualCallback[FN_REF] = callback[FN_REF] || callback;\n }\n\n var self = this;\n\n events.forEach(function(e) {\n self._addListener(e, {\n priority: priority,\n callback: actualCallback,\n next: null\n });\n });\n};\n\n\n/**\n * Register an event listener that is 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 */\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} [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} listener\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 default function DebounceFactory(config = true) {\n\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' ];","export default class FieldFactory {\n\n /**\n * @constructor\n *\n * @param { import('./FormFieldRegistry').default } formFieldRegistry\n * @param { import('@bpmn-io/form-js-viewer').FormFields } formFields\n */\n constructor(formFieldRegistry, formFields) {\n this._formFieldRegistry = formFieldRegistry;\n this._formFields = formFields;\n }\n\n create(attrs, applyDefaults = true) {\n\n const {\n id,\n key,\n type\n } = attrs;\n\n const fieldDefinition = this._formFields.get(type);\n\n if (!fieldDefinition) {\n throw new Error(`form field of type <${ type }> not supported`);\n }\n\n const { config } = fieldDefinition;\n\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`ID <${ id }> already assigned`);\n }\n\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`key <${ key }> already assigned`);\n }\n\n const labelAttrs = applyDefaults && config.label ? {\n label: config.label\n } : {};\n\n const field = config.create({\n ...labelAttrs,\n ...attrs\n });\n\n this._ensureId(field);\n\n if (config.keyed) {\n this._ensureKey(field, applyDefaults);\n }\n\n return field;\n }\n\n _ensureId(field) {\n\n if (field.id) {\n this._formFieldRegistry._ids.claim(field.id, field);\n\n return;\n }\n\n let prefix = 'Field';\n\n if (field.type === 'default') {\n prefix = 'Form';\n }\n\n field.id = this._formFieldRegistry._ids.nextPrefixed(`${prefix}_`, field);\n }\n\n _ensureKey(field, applyDefaults) {\n\n if (field.key) {\n this._formFieldRegistry._keys.claim(field.key, field);\n\n return;\n }\n\n if (applyDefaults) {\n let prefix = 'field';\n\n field.key = this._formFieldRegistry._keys.nextPrefixed(`${prefix}_`, field);\n }\n }\n}\n\n\nFieldFactory.$inject = [\n 'formFieldRegistry',\n 'formFields'\n];","import {\n FormFieldRegistry as BaseFieldRegistry\n} from '@bpmn-io/form-js-viewer';\n\n\nexport default class FormFieldRegistry extends BaseFieldRegistry {\n\n /**\n * Updates a form fields id.\n *\n * @param {Object} formField\n * @param {string} newId\n */\n updateId(formField, newId) {\n\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\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 default class FormLayoutValidator {\n\n /**\n * @constructor\n *\n * @param { import('./FormLayouter').default } formLayouter\n * @param { import('./FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formLayouter, formFieldRegistry) {\n this._formLayouter = formLayouter;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n validateField(field = {}, columns, row) {\n\n // allow empty (auto columns)\n if (Number.isInteger(columns)) {\n\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 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\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}","import { clone } from '@bpmn-io/form-js-viewer';\n\n\nexport default class Importer {\n\n /**\n * @constructor\n * @param { import('../core/FormFieldRegistry').default } formFieldRegistry\n * @param { import('../core/FieldFactory').default } fieldFactory\n * @param { import('../core/FormLayouter').default } formLayouter\n */\n constructor(formFieldRegistry, fieldFactory, formLayouter) {\n this._formFieldRegistry = formFieldRegistry;\n this._fieldFactory = fieldFactory;\n this._formLayouter = formLayouter;\n }\n\n /**\n * Import schema creating rows, fields, attaching additional\n * information to each field and adding fields to the\n * field registry.\n *\n * Additional information attached:\n *\n * * `id` (unless present)\n * * `_parent`\n * * `_path`\n *\n * @param {any} schema\n *\n * @typedef {{ warnings: Error[], schema: any }} ImportResult\n * @returns {ImportResult}\n */\n importSchema(schema) {\n\n // TODO: Add warnings\n const warnings = [];\n\n try {\n\n const importedSchema = this.importFormField(clone(schema));\n\n this._formLayouter.calculateLayout(clone(importedSchema));\n\n return {\n schema: importedSchema,\n warnings\n };\n } catch (err) {\n err.warnings = warnings;\n\n throw err;\n }\n }\n\n /**\n * @param {{[x: string]: any}} fieldAttrs\n * @param {String} [parentId]\n * @param {number} [index]\n *\n * @return {any} field\n */\n importFormField(fieldAttrs, parentId, index) {\n const {\n components,\n id,\n key\n } = fieldAttrs;\n\n let parent, path;\n\n if (parentId) {\n parent = this._formFieldRegistry.get(parentId);\n }\n\n // validate <id> uniqueness\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`form field with id <${ id }> already exists`);\n }\n\n // validate <key> uniqueness\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`form field with key <${ key }> already exists`);\n }\n\n // set form field path\n path = parent ? [ ...parent._path, 'components', index ] : [];\n\n const field = this._fieldFactory.create({\n ...fieldAttrs,\n _path: path,\n _parent: parent && parent.id\n }, false);\n\n this._formFieldRegistry.add(field);\n\n if (components) {\n field.components = this.importFormFields(components, field.id);\n }\n\n return field;\n }\n\n /**\n * @param {Array<any>} components\n * @param {string} parentId\n *\n * @return {Array<any>} imported components\n */\n importFormFields(components, parentId) {\n return components.map((component, index) => {\n return this.importFormField(component, parentId, index);\n });\n }\n\n}\n\nImporter.$inject = [ 'formFieldRegistry', 'fieldFactory', 'formLayouter' ];","import Importer from './Importer';\n\nexport default {\n importer: [ 'type', Importer ]\n};","import classNames from 'classnames';\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 * @param {Element} dragPreview\n *\n * @return {Function} drag start callback function\n */\nexport function createDragger(fn, dragPreview) {\n\n let self;\n\n let startX, startY;\n\n /** drag start */\n function onDragStart(event) {\n\n self = this;\n\n startX = event.clientX;\n startY = event.clientY;\n\n // (1) prevent preview image\n if (event.dataTransfer) {\n event.dataTransfer.setDragImage(dragPreview, 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\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}\n\nfunction preventDefault(event) {\n event.preventDefault();\n event.stopPropagation();\n}","import { createContext } from 'preact';\n\nconst DragAndDropContext = createContext({\n drake: null\n});\n\nexport default DragAndDropContext;","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nconst FormEditorContext = createContext({\n getService\n});\n\nexport default FormEditorContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport { FormEditorContext } from '../context';\n\n\nexport default function(type, strict) {\n const {\n getService\n } = useContext(FormEditorContext);\n\n return getService(type, strict);\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n fill: \"currentColor\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 4.7l-.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})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n fill: \"none\"\n}, props), /*#__PURE__*/React.createElement(\"rect\", {\n width: \"16\",\n height: \"16\",\n x: \".536\",\n fill: \"#fff\",\n rx: \"3\",\n style: {\n mixBlendMode: \"multiply\"\n }\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M.536 0h16v16h-16z\",\n style: {\n mixBlendMode: \"multiply\"\n }\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentcolor\",\n d: \"M7.536 6h-1v6h1V6zm3 0h-1v6h1V6z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentcolor\",\n d: \"M2.536 3v1h1v10a1 1 0 001 1h8a1 1 0 001-1V4h1V3h-12zm2 11V4h8v10h-8zm6-13h-4v1h4V1z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n fill: \"currentcolor\",\n viewBox: \"0 0 32 32\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 6h4v4h-4zm8 0h4v4h-4zm-8 8h4v4h-4zm8 0h4v4h-4zm-8 8h4v4h-4zm8 0h4v4h-4z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h32v32H0z\",\n fill: \"none\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"15\",\n height: \"15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 13.793l-3.776-3.776a5.508 5.508 0 10-.707.707l3.776 3.776.707-.707zM2 6.5a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0z\",\n fill: \"currentColor\"\n})));","import { Text } from '@bpmn-io/form-js-viewer';\nimport { editorFormFieldClasses } from '../Util';\nimport { useService } from '../../hooks';\n\nimport { iconsByType } from '../icons';\n\nexport default function EditorText(props) {\n\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) {\n return <div class={ editorFormFieldClasses(type) }>\n <div class=\"fjs-form-field-placeholder\"><Icon viewBox=\"0 0 54 54\" />Text view is empty</div>\n </div>;\n }\n\n if (expressionLanguage.isExpression(text)) {\n return <div class={ editorFormFieldClasses(type) }>\n <div class=\"fjs-form-field-placeholder\"><Icon viewBox=\"0 0 54 54\" />Text view is populated by an expression</div>\n </div>;\n }\n\n if (templating.isTemplate(text)) {\n return <div class={ editorFormFieldClasses(type) }>\n <div class=\"fjs-form-field-placeholder\"><Icon viewBox=\"0 0 54 54\" />Text view is templated</div>\n </div>;\n }\n\n return <Text { ...{ ...props, disableLinks: true } } />;\n}\n\nEditorText.config = Text.config;\n","import EditorText from './EditorText';\n\nexport const editorFormFields = [\n EditorText\n];","import { FormFields } from '@bpmn-io/form-js-viewer';\nimport { editorFormFields } from './components/editor-form-fields/';\n\nexport default class EditorFormFields extends FormFields {\n constructor() {\n super();\n editorFormFields.forEach((formField) => {\n this.register(formField.config.type, formField);\n });\n }\n}","import { useCallback, useEffect, useMemo, useState } from 'preact/hooks';\nimport { createPortal } from 'preact/compat';\nimport { useService } from '../hooks';\n\nexport default (props) => {\n const {\n rootClass,\n RootElement,\n section,\n children\n } = 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\n if (parent === null) {\n return null;\n }\n\n if (typeof parent === 'string') {\n\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\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\n return () => {\n eventBus.off(`${ section }.attach`, onAttach);\n eventBus.off(`${ section }.detach`, onDetach);\n eventBus.off(`${ section }.reset`, onReset);\n };\n }, [ eventBus, section ]);\n\n\n useEffect(() => {\n if (shouldRender) {\n eventBus.fire(`${ section }.rendered`, { element: ParentElement });\n return () => { eventBus.fire(`${ section }.destroyed`, { element: ParentElement }); };\n }\n }, [ eventBus, section, shouldRender, ParentElement ]);\n\n const Root = useCallback(\n ({ children }) => RootElement ? <RootElement>{ children }</RootElement> : <div className={ rootClass }>{ children }</div>, [ rootClass, RootElement ]\n );\n\n return (\n shouldRender\n ? (parent\n ? createPortal(<Root>{ children }</Root>, ParentElement)\n : <Root>{ children }</Root>)\n : null\n );\n};","import { createContext } from 'preact';\n\nconst FillContext = createContext({\n addFill(uid, props) { throw new Error('FillContext.addFill() uninitialized'); },\n removeFill(uid) { throw new Error('FillContext.addFill() uninitialized'); }\n});\n\nexport default FillContext;","import FillContext from './FillContext';\nimport { useContext, useEffect, useRef } from 'preact/compat';\n\nexport default (props) => {\n\n const uid = useRef(Symbol('fill_uid'));\n const fillContext = useContext(FillContext);\n\n useEffect(() => {\n\n if (!fillContext) {\n return;\n }\n\n fillContext.addFill({ id: uid, ...props });\n return () => {\n fillContext.removeFill(uid);\n };\n\n }, [ fillContext, props ]);\n\n return null;\n};\n","import { createContext } from 'preact';\n\nconst SlotContext = createContext({ fills: [] });\n\nexport default SlotContext;","import { Fragment } from 'preact';\nimport { useContext, useMemo } from 'preact/hooks';\nimport SlotContext from './SlotContext';\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 {Array} Array of rendered slot fills, grouped and separated as specified\n */\nexport default (props) => {\n const {\n name,\n fillRoot = FillFragment,\n groupFn = _groupByGroupName,\n separatorFn = (key) => null,\n limit\n } = 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 return fillsAndSeparators;\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 * 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\n const result = [];\n\n groups.forEach((array, idx) => {\n\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\n const groups = [];\n\n const groupsById = {};\n\n fills.forEach(function(fill) {\n\n const {\n group: groupName = 'z_default'\n } = 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};","import FillContext from './FillContext';\nimport SlotContext from './SlotContext';\nimport { useMemo, useState } from 'preact/hooks';\n\nexport default (props) => {\n const [ fills, setFills ] = useState([]);\n\n const fillContext = useMemo(() => ({\n addFill: (fill) => {\n setFills((fills) => [ ...fills.filter((f) => f.id !== fill.id), fill ]);\n props.onSetFill && props.onSetFill(fill);\n },\n removeFill: (id) => {\n setFills((fills) => fills.filter((f) => f.id !== id));\n props.onRemoveFill && props.onRemoveFill(id);\n }\n }), []);\n\n const slotContext = useMemo(() => ({ fills }), [ fills ]);\n\n return (\n <SlotContext.Provider value={ slotContext }>\n <FillContext.Provider /* @ts-expect-error */\n value={ fillContext }>\n { props.children }\n </FillContext.Provider>\n </SlotContext.Provider>\n );\n};","import {\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n Slot\n} from '../../render-injection/slot-fill';\n\nimport {\n CloseIcon,\n iconsByType,\n SearchIcon\n} from '../../../render/components/icons';\n\nimport { formFields } from '@bpmn-io/form-js-viewer';\n\nexport const PALETTE_ENTRIES = formFields.filter(({ config: fieldConfig }) => fieldConfig.type !== 'default').map(({ config: fieldConfig }) => {\n return {\n label: fieldConfig.label,\n type: fieldConfig.type,\n group: fieldConfig.group\n };\n});\n\nexport const PALETTE_GROUPS = [\n {\n label: 'Basic 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: 'Action',\n id: 'action'\n }\n];\n\nexport default function Palette(props) {\n\n const [ entries, setEntries ] = useState(PALETTE_ENTRIES);\n\n const [ searchTerm, setSearchTerm ] = useState('');\n\n const inputRef = useRef();\n\n const groups = groupEntries(entries);\n\n const simplifyString = useCallback((str) => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '');\n }, []);\n\n const filter = useCallback((entry) => {\n\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)\n || simplifiedEntryType.includes(simplifiedSearchTerm);\n\n }, [ searchTerm, simplifyString ]);\n\n // filter entries on search change\n useEffect(() => {\n const entries = PALETTE_ENTRIES.filter(filter);\n setEntries(entries);\n }, [ filter, searchTerm ]);\n\n const handleInput = useCallback(event => {\n setSearchTerm(() => event.target.value);\n }, [ setSearchTerm ]);\n\n const handleClear = useCallback(event => {\n setSearchTerm('');\n inputRef.current.focus();\n }, [ inputRef, setSearchTerm ]);\n\n return <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 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 title=\"Clear content\" class=\"fjs-palette-search-clear\" onClick={ handleClear }>\n <CloseIcon></CloseIcon>\n </button>\n )\n }\n </div>\n <div class=\"fjs-palette-entries\">\n {\n groups.map(({ label, entries, id }) =>\n <div class=\"fjs-palette-group\" data-group-id={ id }>\n <span class=\"fjs-palette-group-title\">{ label }</span>\n <div class=\"fjs-palette-fields fjs-drag-container fjs-no-drop\">\n {\n entries.map(({ label, type }) => {\n const Icon = iconsByType(type);\n\n return (\n <div\n class=\"fjs-palette-field fjs-drag-copy fjs-no-drop\"\n data-field-type={ type }\n title={ `Create ${getIndefiniteArticle(type)} ${label} element` }\n >\n {\n Icon ? <Icon class=\"fjs-palette-field-icon\" width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" /> : null\n }\n <span class=\"fjs-palette-field-text\">{ label }</span>\n </div>\n );\n })\n }\n </div>\n </div>\n )\n }\n {\n groups.length == 0 && (\n <div class=\"fjs-palette-no-entries\">No components found.</div>\n )\n }\n </div>\n <div class=\"fjs-palette-footer\">\n {/* @ts-ignore */}\n <Slot name=\"editor-palette__footer\" fillRoot={ FillRoot } />\n </div>\n </div>;\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\nfunction getIndefiniteArticle(type) {\n if ([\n 'image'\n ].includes(type)) {\n return 'an';\n }\n\n return 'a';\n}","import { useContext, useRef, useEffect, useMemo, useCallback, useState, useLayoutEffect } from '../preact/hooks';\nimport { isFunction, isArray, get, assign, set, sortBy, find, isString, isNumber, debounce } from 'min-dash';\nimport { forwardRef } from '../preact/compat';\nimport { jsx, jsxs } from '../preact/jsx-runtime';\nimport classnames from 'classnames';\nimport { query } from 'min-dom';\nimport { createContext, createElement } from '../preact';\nimport { FeelersEditor } from 'feelers';\nimport FeelEditor from '@bpmn-io/feel-editor';\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 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 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: \"#818798\"\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};\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 title: type,\n class: \"bio-properties-panel-header-type\",\n children: type\n }), label ? jsx(\"div\", {\n title: label,\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: \"noopener\",\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 */\nconst EventContext = createContext({\n eventBus: null\n});\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\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 useError(id) {\n const {\n errors\n } = useContext(ErrorsContext);\n return errors[id];\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\nconst KEY_LENGTH = 6;\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(-KEY_LENGTH);\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 * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nfunction useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n return useCallback((...args) => callbackRef.current(...args), []);\n}\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 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 }, [entries]);\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 title: label,\n class: \"bio-properties-panel-group-header-title\",\n children: label\n }), jsxs(\"div\", {\n class: \"bio-properties-panel-group-header-buttons\",\n children: [edited && jsx(DataMarker, {}), jsx(\"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(Component, {\n ...entry,\n element: element,\n key: id\n });\n })\n })\n })]\n });\n}\nfunction DataMarker() {\n return jsx(\"div\", {\n title: \"Section contains data\",\n class: \"bio-properties-panel-dot\"\n });\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 = {};\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 * shouldSort?: Boolean,\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 * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\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 {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 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 const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\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 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(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(Component, {\n ...group,\n key: id,\n element: element\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}\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\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 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 ...otherProps,\n onClick: onClick,\n class: classnames('bio-properties-panel-group-header-button', classname),\n children: children\n });\n}\n\nfunction CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\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\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<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 title: label || placeholderLabel,\n class: classnames('bio-properties-panel-collapsible-entry-header-title', !label && 'empty'),\n children: label || placeholderLabel\n }), jsx(\"button\", {\n title: \"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 title: \"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(Component, {\n ...entry,\n element: element,\n key: id\n });\n })\n })\n })]\n });\n}\n\nfunction ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\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 }\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 })\n });\n}\n\nconst noop$3 = () => {};\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 = true,\n shouldSort = true\n } = props;\n const groupRef = useRef(null);\n const [open, setOpen] = useLayoutState(['groups', id, 'open'], false);\n const [sticky, setSticky] = useState(false);\n const onShow = useCallback(() => setOpen(true), [setOpen]);\n const [ordering, setOrdering] = useState([]);\n const [newItemAdded, setNewItemAdded] = useState(false);\n\n // Flag to mark that add button was clicked in the last render cycle\n const [addTriggered, setAddTriggered] = useState(false);\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [items, element]);\n\n // (1) items were added\n useEffect(() => {\n // reset addTriggered flag\n setAddTriggered(false);\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n let add = [];\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n let newOrdering = ordering;\n\n // open if not open, configured and triggered by add button\n //\n // TODO(marstamm): remove once we refactor layout handling for listGroups.\n // Ideally, opening should be handled as part of the `add` callback and\n // not be a concern for the ListGroup component.\n if (addTriggered && !open && shouldOpen) {\n toggleOpen();\n }\n\n // filter when not open and configured\n if (!open && shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n setOrdering(newOrdering);\n setNewItemAdded(addTriggered);\n } else {\n setNewItemAdded(false);\n }\n }, [items, open, shouldHandleEffects, addTriggered]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [open, shouldSort]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n setOrdering(keep);\n }\n }, [items, shouldHandleEffects]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n const toggleOpen = () => setOpen(!open);\n const hasItems = !!items.length;\n const propertiesPanelContext = {\n ...useContext(LayoutContext),\n onShow\n };\n const handleAddClick = e => {\n setAddTriggered(true);\n add(e);\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$3,\n children: [jsx(\"div\", {\n title: label,\n class: \"bio-properties-panel-group-header-title\",\n children: label\n }), jsxs(\"div\", {\n class: \"bio-properties-panel-group-header-buttons\",\n children: [add ? jsxs(\"button\", {\n title: \"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: \"Create\"\n }) : null]\n }) : null, 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 }) : null, hasItems ? jsx(\"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 }) : 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: ordering.map((o, index) => {\n const item = getItem(items, o);\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 is only applied on first render\n const autoOpen = newItemAdded;\n return createElement(ListItem, {\n ...item,\n autoOpen: autoOpen,\n element: element,\n index: index,\n key: id\n });\n })\n })\n })]\n });\n}\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\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 } = 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$7(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$7(id),\n class: \"bio-properties-panel-label\",\n children: label\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 {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 } = 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 }, 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$7(id) {\n return `bio-properties-panel-${id}`;\n}\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 CodeEditor$1 = forwardRef((props, ref) => {\n const {\n onInput,\n disabled,\n tooltipContainer,\n enableGutters,\n value,\n onLint = () => {},\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 });\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 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 });\n});\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 CodeEditor = forwardRef((props, ref) => {\n const {\n value,\n onInput,\n onFeelToggle,\n onLint = () => {},\n disabled,\n tooltipContainer,\n variables\n } = props;\n const inputRef = useRef();\n const [editor, setEditor] = useState();\n const [localValue, setLocalValue] = useState(value || '');\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 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 FeelEditor({\n container: inputRef.current,\n onChange: handleInput,\n onKeyDown: onKeyDown,\n onLint: onLint,\n tooltipContainer: tooltipContainer,\n value: localValue,\n variables: variables\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 const handleClick = () => {\n ref.current.focus();\n };\n return jsx(\"div\", {\n class: classnames('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null),\n children: jsx(\"div\", {\n name: props.name,\n class: classnames('bio-properties-panel-input', localValue ? 'edited' : null),\n ref: inputRef,\n onClick: handleClick\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$2 = () => {};\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$2\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 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\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n inline,\n onFocus,\n onBlur,\n inputRef\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$6(id),\n children: label\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$6(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 */\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 } = 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 }), 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$6(id) {\n return `bio-properties-panel-${id}`;\n}\n\nconst noop$1 = () => {};\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n variables,\n tooltipContainer,\n OptionalComponent = OptionalFeelInput\n } = props;\n const [localValue, _setLocalValue] = useState(value);\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n const feelActive = isString(localValue) && localValue.startsWith('=') || feel === 'required';\n const feelOnlyValue = isString(localValue) && localValue.startsWith('=') ? localValue.substring(1) : localValue;\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 => {\n onInput(newValue);\n });\n }, [onInput, debounce]);\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n };\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n const handleLocalInput = newValue => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n if (newValue === localValue) {\n return;\n }\n setLocalValue(newValue);\n if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n const handleLint = useStaticCallback(lint => {\n if (!(lint && lint.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\n // External value change removed content => keep FEEL configuration\n if (!value) {\n setLocalValue(feelActive ? '=' : '');\n return;\n }\n setLocalValue(value);\n }, [value]);\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) {\n return;\n }\n const data = event.clipboardData.getData('application/FEEL');\n if (data) {\n setTimeout(() => {\n handleFeelToggle();\n setFocus();\n });\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: [label, 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: feel !== 'optional' || disabled,\n onClick: handleFeelToggle\n }), feelActive ? jsx(CodeEditor, {\n id: prefixId$5(id),\n name: id,\n onInput: handleLocalInput,\n disabled: disabled,\n onFeelToggle: () => {\n handleFeelToggle();\n setFocus(true);\n },\n onLint: handleLint,\n value: feelOnlyValue,\n variables: variables,\n ref: editorRef,\n tooltipContainer: tooltipContainer\n }) : jsx(OptionalComponent, {\n ...props,\n onInput: handleLocalInput,\n contentAttributes: {\n 'id': prefixId$5(id),\n 'aria-label': label\n },\n value: localValue,\n ref: editorRef\n })]\n })]\n });\n}\nconst OptionalFeelInput = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\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') {\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 onBlur: onBlur,\n value: value || ''\n });\n});\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\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: () => {\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 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 {Boolean} 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 {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\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$1,\n example,\n variables,\n onFocus,\n onBlur\n } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const [validationError, setValidationError] = useState(null);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setValidationError(newValidationError);\n }\n }, [value]);\n const onInput = useStaticCallback(newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n setValidationError(newValidationError);\n });\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\n }\n const temporaryError = useError(id);\n const error = localError || temporaryError || validationError;\n return jsxs(\"div\", {\n class: classnames(props.class, 'bio-properties-panel-entry', error ? 'has-error' : ''),\n \"data-entry-id\": id,\n children: [jsx(FeelTextfield, {\n debounce: debounce,\n disabled: disabled,\n feel: feel,\n id: id,\n label: label,\n onInput: onInput,\n onError: onError,\n onFocus: onFocus,\n onBlur: onBlur,\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 }, 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}\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 {Boolean} 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 {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\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 {Boolean} 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 {Function} 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 {Boolean} 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 {Function} 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 {Boolean} 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 {Function} 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: CodeEditor$1,\n ...props\n });\n}\nfunction isEdited$6(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\nconst noop = () => {};\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\n } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const [validationError, setValidationError] = useState(null);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setValidationError(newValidationError);\n }\n }, [value]);\n const onInput = useStaticCallback(newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n setValidationError(newValidationError);\n });\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\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(CodeEditor$1, {\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$5(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\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 compareFn,\n ...restProps\n } = props;\n const [open, setOpen] = useState(!!shouldOpen);\n const hasItems = !!items.length;\n const toggleOpen = () => hasItems && setOpen(!open);\n const opening = !usePrevious(open) && open;\n const elementChanged = usePrevious(element) !== element;\n const shouldReset = opening || elementChanged;\n const sortedItems = useSortedItems(items, compareFn, shouldReset);\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 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 children: [jsxs(\"div\", {\n class: \"bio-properties-panel-list-entry-header\",\n onClick: toggleOpen,\n children: [jsx(\"div\", {\n title: label,\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 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 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: sortedItems,\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}\n\n/**\n * Place new items in the beginning of the list and sort the rest with provided function.\n *\n * @template Item\n * @param {Item[]} currentItems\n * @param {(a: Item, b: Item) => 0 | 1 | -1} [compareFn] function used to sort items\n * @param {boolean} [shouldReset=false] set to `true` to reset state of the hook\n * @returns {Item[]}\n */\nfunction useSortedItems(currentItems, compareFn, shouldReset = false) {\n const itemsRef = useRef(currentItems.slice());\n\n // (1) Reset and optionally sort.\n if (shouldReset) {\n itemsRef.current = currentItems.slice();\n if (compareFn) {\n itemsRef.current.sort(compareFn);\n }\n } else {\n const items = itemsRef.current;\n\n // (2) Add new item to the list.\n for (const item of currentItems) {\n if (!items.includes(item)) {\n // Unshift or push depending on whether we have a compareFn\n compareFn ? items.unshift(item) : items.push(item);\n }\n }\n\n // (3) Filter out removed items.\n itemsRef.current = items.filter(item => currentItems.includes(item));\n }\n return itemsRef.current;\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\nfunction NumberField(props) {\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n const [localValue, setLocalValue] = useState(value);\n const handleInputCallback = useMemo(() => {\n return debounce(event => {\n const {\n validity,\n value\n } = event.target;\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [onInput, debounce]);\n const handleInput = e => {\n handleInputCallback(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-numberfield\",\n children: [jsx(\"label\", {\n for: prefixId$4(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"input\", {\n id: prefixId$4(id),\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 } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onInput = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 }, 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$4(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId$4(id) {\n return `bio-properties-panel-${id}`;\n}\n\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value = '',\n disabled,\n onFocus,\n onBlur\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$3(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"select\", {\n ref: ref,\n id: prefixId$3(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 */\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 } = props;\n const options = getOptions(element);\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onChange = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 }, 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$3(id) {\n return `bio-properties-panel-${id}`;\n}\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(({\n target\n }) => setValue(target.value.length ? target.value : undefined));\n }, [setValue, debounce]);\n const handleInput = e => {\n handleInputCallback(e);\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$2(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$2(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,\n value = '',\n disabled,\n monospace,\n onFocus,\n onBlur,\n autoResize,\n rows = autoResize ? 1 : 2\n } = props;\n const [localValue, setLocalValue] = useState(value);\n const ref = useShowEntryEvent(id);\n const handleInputCallback = useMemo(() => {\n return debounce(({\n target\n }) => onInput(target.value.length ? target.value : undefined));\n }, [onInput, debounce]);\n const handleInput = e => {\n handleInputCallback(e);\n autoResize && resizeToContents(e.target);\n setLocalValue(e.target.value);\n };\n useLayoutEffect(() => {\n autoResize && resizeToContents(ref.current);\n }, []);\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$1(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"textarea\", {\n ref: ref,\n id: prefixId$1(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: handleInput,\n onFocus: onFocus,\n onBlur: onBlur,\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 {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 autoResize\n } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onInput = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 rows: rows,\n debounce: debounce,\n monospace: monospace,\n disabled: disabled,\n autoResize: autoResize\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$1(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,\n onFocus,\n onBlur,\n value = ''\n } = props;\n const [localValue, setLocalValue] = useState(value || '');\n const ref = useShowEntryEvent(id);\n const handleInputCallback = useMemo(() => {\n return debounce(({\n target\n }) => onInput(target.value.length ? target.value : undefined));\n }, [onInput, debounce]);\n const handleInput = e => {\n handleInputCallback(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-textfield\",\n children: [jsx(\"label\", {\n for: prefixId(id),\n class: \"bio-properties-panel-label\",\n children: label\n }), jsx(\"input\", {\n ref: ref,\n id: prefixId(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 onFocus: onFocus,\n onBlur: onBlur,\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 {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 } = props;\n const [cachedInvalidValue, setCachedInvalidValue] = useState(null);\n const globalError = useError(id);\n const [localError, setLocalError] = useState(null);\n let value = getValue(element);\n const previousValue = usePrevious(value);\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n setLocalError(newValidationError);\n }\n }, [value]);\n const onInput = newValue => {\n let newValidationError = null;\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n setLocalError(newValidationError);\n };\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 value: value\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(id) {\n return `bio-properties-panel-${id}`;\n}\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\nfunction debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n var debounceTime = isNumber(debounceDelay) ? debounceDelay : DEFAULT_DEBOUNCE_TIME;\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\ndebounceInput.$inject = ['config.debounceInput'];\n\nvar index = {\n debounceInput: ['factory', debounceInput]\n};\n\nexport { ArrowIcon, CheckboxEntry, CollapsibleEntry, CreateIcon, index as DebounceInputModule, DeleteIcon, DescriptionContext, Description as DescriptionEntry, DropdownButton, ErrorsContext, EventContext, ExternalLinkIcon, FeelCheckboxEntry, FeelEntry, FeelIcon$1 as FeelIcon, FeelTemplatingEntry, FeelTextAreaEntry, FeelToggleSwitchEntry, Group, Header, HeaderButton, LayoutContext, List as ListEntry, ListGroup, ListItem, NumberFieldEntry, Placeholder, PropertiesPanel, LayoutContext as PropertiesPanelContext, SelectEntry, Simple as SimpleEntry, TemplatingEntry, TextAreaEntry, TextfieldEntry as TextFieldEntry, ToggleSwitchEntry, isEdited$8 as isCheckboxEntryEdited, isEdited$6 as isFeelEntryEdited, isEdited$4 as isNumberFieldEntryEdited, isEdited$3 as isSelectEntryEdited, isEdited$2 as isSimpleEntryEdited, isEdited$5 as isTemplatingEntryEdited, isEdited$1 as isTextAreaEntryEdited, isEdited as isTextFieldEntryEdited, isEdited$7 as isToggleSwitchEntryEdited, useDescriptionContext, useError, useEvent, useKeyFactory, useLayoutState, usePrevious, useShowEntryEvent, useStaticCallback, useStickyIntersectionObserver };\n//# sourceMappingURL=index.esm.js.map\n","import { getSchemaVariables } from '@bpmn-io/form-js-viewer';\nimport { useService } from '../../../render/hooks';\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 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\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\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\nexport function textToLabel(text) {\n\n if (typeof text != 'string') return null;\n\n for (const line of text.split('\\n')) {\n\n const displayLine = line.trim();\n\n // we use the first non-whitespace line in the text as label\n if (displayLine !== '') {\n return displayLine;\n }\n }\n\n return null;\n}\n\nexport const INPUTS = [\n 'checkbox',\n 'checklist',\n 'datetime',\n 'number',\n 'radio',\n 'select',\n 'taglist',\n 'textfield',\n 'textarea'\n];\n\nexport const VALUES_INPUTS = [\n 'checklist',\n 'radio',\n 'select',\n 'taglist'\n];","import {\n textToLabel\n} from './Util';\n\nimport { iconsByType } from '../../render/components/icons';\n\nconst labelsByType = {\n button: 'BUTTON',\n checkbox: 'CHECKBOX',\n checklist: 'CHECKLIST',\n columns: 'COLUMNS',\n default: 'FORM',\n datetime: 'DATETIME',\n image: 'IMAGE VIEW',\n number: 'NUMBER',\n radio: 'RADIO',\n select: 'SELECT',\n taglist: 'TAGLIST',\n text: 'TEXT VIEW',\n textfield: 'TEXT FIELD',\n textarea: 'TEXT AREA',\n};\n\nexport const PropertiesPanelHeaderProvider = {\n\n getElementLabel: (field) => {\n const {\n type\n } = field;\n\n if (type === 'text') {\n return textToLabel(field.text);\n }\n\n if (type === 'image') {\n return field.alt;\n }\n\n if (type === 'default') {\n return field.id;\n }\n\n return field.label;\n },\n\n getElementIcon: (field) => {\n const {\n type\n } = field;\n\n const Icon = iconsByType(type);\n\n if (Icon) {\n return () => <Icon width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" />;\n }\n },\n\n getTypeLabel: (field) => {\n const {\n type\n } = field;\n\n return labelsByType[type];\n }\n};","/**\n * Provide placeholders for empty and multiple state.\n */\nexport const PropertiesPanelPlaceholderProvider = {\n\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};","import { get } from 'min-dash';\n\nimport { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function ActionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (type === 'button') {\n entries.push({\n id: 'action',\n component: Action,\n editField: editField,\n field: field,\n isEdited: isSelectEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Action(props) {\n const {\n editField,\n field,\n id\n } = 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}","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport default function AltTextEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (type === 'image') {\n entries.push({\n id: 'alt',\n component: AltText,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction AltText(props) {\n const {\n editField,\n field,\n id\n } = 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 FeelEntry({\n debounce,\n element: field,\n feel: 'optional',\n getValue,\n id,\n label: 'Alternative text',\n setValue,\n variables\n });\n}\n","import { get, set } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport {\n isSelectEntryEdited,\n SelectEntry\n} from '@bpmn-io/properties-panel';\n\nimport { MIN_COLUMNS } from '../../../core/FormLayoutValidator';\n\n\nexport const AUTO_OPTION_VALUE = '';\n\nexport default function ColumnsEntry(props) {\n const {\n editField,\n field\n } = 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 {\n field,\n editField,\n id\n } = props;\n\n const debounce = useService('debounce');\n const formLayoutValidator = useService('formLayoutValidator');\n\n const validate = (value) => {\n return formLayoutValidator.validateField(field, value ? parseInt(value) : null);\n };\n\n const setValue = (value) => {\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).filter(i => i >= MIN_COLUMNS).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\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 { 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\n\nexport default function DescriptionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'description',\n component: Description,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\n\nfunction Description(props) {\n const {\n editField,\n field,\n id\n } = 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}","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, VALUES_INPUTS } from '../Util';\n\nexport const EMPTY_OPTION = null;\n\nexport default function DefaultOptionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n // Only make default values available when they are statically defined\n if (!INPUTS.includes(type) || VALUES_INPUTS.includes(type) && !field.values) {\n return entries;\n }\n\n const defaultOptions = {\n editField,\n field,\n id: 'defaultValue',\n label: 'Default value'\n };\n\n if (type === 'checkbox') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueCheckbox,\n isEdited: isSelectEntryEdited\n });\n }\n\n if (type === 'number') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueNumber,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n if (type === 'radio' || type === 'select') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueSingleSelect,\n isEdited: isSelectEntryEdited\n });\n }\n\n // todo(Skaiir): implement a multiselect equivalent (cf. https://github.com/bpmn-io/form-js/issues/265)\n\n if (type === 'textfield') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueTextfield,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n if (type === 'textarea') {\n entries.push({\n ...defaultOptions,\n component: DefaultValueTextarea,\n isEdited: isTextAreaEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction DefaultValueCheckbox(props) {\n const {\n editField,\n field,\n id,\n label\n } = props;\n\n const {\n defaultValue\n } = 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 {\n editField,\n field,\n id,\n label\n } = props;\n\n const {\n decimalDigits,\n serializeToString = false\n } = field;\n\n const debounce = useService('debounce');\n\n const path = [ 'defaultValue' ];\n\n const getValue = (e) => {\n\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) => {\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 return TextFieldEntry({\n debounce,\n label,\n element: field,\n getValue,\n id,\n setValue,\n validate: (value) => {\n if (value === undefined || value === null) return;\n if (!isValidNumber(value)) return 'Should be a valid number';\n if (decimalDigitsSet && countDecimals(value) > decimalDigits) return `Should not contain more than ${decimalDigits} decimal digits`;\n }\n });\n}\n\nfunction DefaultValueSingleSelect(props) {\n const {\n editField,\n field,\n id,\n label\n } = props;\n\n const {\n defaultValue = EMPTY_OPTION,\n values = []\n } = 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 {\n editField,\n field,\n id,\n label\n } = 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 {\n editField,\n field,\n id,\n label\n } = 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}","import { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { ToggleSwitchEntry, isToggleSwitchEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function DisabledEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'disabled',\n component: Disabled,\n editField: editField,\n field: field,\n isEdited: isToggleSwitchEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Disabled(props) {\n const {\n editField,\n field,\n id\n } = 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 inline: true,\n setValue\n });\n}","import { get, isUndefined } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function IdEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const entries = [];\n\n if (field.type === 'default') {\n entries.push({\n id: 'id',\n component: Id,\n editField: editField,\n field: field,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Id(props) {\n const {\n editField,\n field,\n id\n } = 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) => {\n return editField(field, path, value);\n };\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\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\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\n if (containsSpace(idValue)) {\n return 'Must not contain spaces.';\n }\n\n if (!ID_REGEX.test(idValue)) {\n\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}","import { isUndefined } from 'min-dash';\n\nimport { get } from 'min-dash';\n\nimport { INPUTS } from '../Util';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\n\nexport default function KeyEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'key',\n component: Key,\n editField: editField,\n field: field,\n isEdited: isTextFieldEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Key(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const formFieldRegistry = useService('formFieldRegistry');\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) => {\n return editField(field, path, value);\n };\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\n return 'Must not be empty.';\n }\n\n if (/\\s/.test(value)) {\n return 'Must not contain spaces.';\n }\n\n const assigned = formFieldRegistry._keys.assigned(value);\n\n if (assigned && assigned !== field) {\n return 'Must be unique.';\n }\n\n return null;\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 setValue,\n validate\n });\n}","import { 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 default function LabelEntry(props) {\n const {\n field,\n editField\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n const entries = [];\n\n if (type === 'datetime') {\n if (subtype === DATETIME_SUBTYPES.DATE || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push(\n {\n id: 'date-label',\n component: DateLabel,\n editField,\n field,\n isEdited: isFeelEntryEdited\n }\n );\n }\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push(\n {\n id: 'time-label',\n component: TimeLabel,\n editField,\n field,\n isEdited: isFeelEntryEdited\n }\n );\n }\n }\n else if (INPUTS.includes(type) || type === 'button') {\n entries.push(\n {\n id: 'label',\n component: Label,\n editField,\n field,\n isEdited: isFeelEntryEdited\n }\n );\n }\n\n return entries;\n}\n\nfunction Label(props) {\n const {\n editField,\n field,\n id\n } = 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 return FeelTemplatingEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Field label',\n singleLine: true,\n setValue,\n variables\n });\n}\n\nfunction DateLabel(props) {\n const {\n editField,\n field,\n id\n } = 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 {\n editField,\n field,\n id\n } = 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}","import { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\nimport { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\n\nexport default function SourceEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (type === 'image') {\n entries.push({\n id: 'source',\n component: Source,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Source(props) {\n const {\n editField,\n field,\n id\n } = 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 FeelEntry({\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 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\n// import { simpleBoolEntryFactory } from './factories';\nimport { useMemo } from 'preact/hooks';\n\n\nexport default function TextEntry(props) {\n const {\n editField,\n\n /* getService, */\n field\n } = props;\n\n const {\n type\n } = field;\n\n // const templating = getService('templating');\n\n if (type !== 'text') {\n return [];\n }\n\n const entries = [\n {\n id: 'text',\n component: Text,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n }\n ];\n\n // todo: skipped to make the release without too much risk\n // if (templating.isTemplate(field.text)) {\n // entries.push(simpleBoolEntryFactory({\n // id: 'strict',\n // path: [ 'strict' ],\n // label: 'Strict templating',\n // description: 'Enforces types to be correct',\n // props\n // }));\n // }\n\n return entries;\n}\n\nfunction Text(props) {\n const {\n editField,\n field,\n id\n } = 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 const description = useMemo(() => <>Supports markdown and templating. <a href=\"https://docs.camunda.io/docs/components/modeler/forms/form-element-library/forms-element-library-text/\" target=\"_blank\">Learn more</a></>, []);\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}","import { NumberFieldEntry, isNumberFieldEntryEdited, TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport Big from 'big.js';\nimport { get } from 'min-dash';\nimport { useService } from '../hooks';\nimport { countDecimals, isValidNumber } from '../Util';\n\nexport default function NumberEntries(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n type\n } = field;\n\n if (type !== 'number') {\n return [];\n }\n\n const entries = [];\n\n entries.push({\n id: id + '-decimalDigits',\n component: NumberDecimalDigits,\n isEdited: isNumberFieldEntryEdited,\n editField,\n field\n });\n\n entries.push({\n id: id + '-step',\n component: NumberArrowStep,\n isEdited: isTextFieldEntryEdited,\n editField,\n field\n });\n\n return entries;\n}\n\nfunction NumberDecimalDigits(props) {\n\n const {\n editField,\n field,\n id\n } = props;\n\n const debounce = useService('debounce');\n\n const getValue = (e) => get(field, [ 'decimalDigits' ]);\n\n const setValue = (value) => editField(field, [ 'decimalDigits' ], value);\n\n return NumberFieldEntry({\n debounce,\n label: 'Decimal digits',\n element: field,\n step: 'any',\n getValue,\n id,\n setValue,\n validate: (value) => {\n if (value === undefined || value === null) return;\n if (value < 0) return 'Should be greater than or equal to zero.';\n if (!Number.isInteger(value)) return 'Should be an integer.';\n }\n });\n\n}\n\nfunction NumberArrowStep(props) {\n\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n decimalDigits\n } = field;\n\n const debounce = useService('debounce');\n\n const getValue = (e) => {\n\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) => editField(field, [ 'increment' ], clearLeadingZeroes(value));\n\n const decimalDigitsSet = decimalDigits || decimalDigits === 0;\n\n return TextFieldEntry({\n debounce,\n label: 'Increment',\n element: field,\n getValue,\n id,\n setValue,\n validate: (value) => {\n\n if (value === undefined || value === null) return;\n\n if (!isValidNumber(value)) return 'Should be a valid number.';\n\n if (Big(value).cmp(0) <= 0) return 'Should be greater than zero.';\n\n if (decimalDigitsSet) {\n const minimumValue = Big(`1e-${decimalDigits}`);\n\n if (Big(value).cmp(minimumValue) < 0) return `Should be at least ${minimumValue.toString()}.`;\n if (countDecimals(value) > decimalDigits) return `Should not contain more than ${decimalDigits} decimal digits.`;\n\n }\n }\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 default function NumberSerializationEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n if (type !== 'number') {\n return [];\n }\n\n const entries = [];\n\n entries.push({\n id: 'serialize-to-string',\n component: SerializeToString,\n isEdited: isCheckboxEntryEdited,\n editField,\n field\n });\n\n return entries;\n}\n\nfunction SerializeToString(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n defaultValue\n } = field;\n\n const path = [ 'serializeToString' ];\n\n const getValue = () => {\n return get(field, path, '');\n };\n\n const setValue = (value) => {\n\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}","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 default function DateTimeEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n if (type !== 'datetime') {\n return [];\n }\n\n const entries = [\n {\n id: 'subtype',\n component: DateTimeSubtypeSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n }\n ];\n\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n\n entries.push({\n id: 'use24h',\n component: Use24h,\n isEdited: isCheckboxEntryEdited,\n editField,\n field\n });\n\n }\n\n return entries;\n}\n\nfunction DateTimeSubtypeSelect(props) {\n\n const {\n editField,\n field,\n id\n } = 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\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 }\n else if (value === DATETIME_SUBTYPES.TIME) {\n clearDateConfig();\n oldValue === DATETIME_SUBTYPES.DATE && initTimeConfig();\n }\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\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 {\n editField,\n field,\n id\n } = 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, isSelectEntryEdited } 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';\n\nexport default function DateTimeConstraintsEntry(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n if (type !== 'datetime') {\n return [];\n }\n\n const entries = [];\n\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push({\n id: id + '-timeInterval',\n component: TimeIntervalSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n });\n }\n\n if (subtype === DATETIME_SUBTYPES.DATE || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push({\n id: id + '-disallowPassedDates',\n component: DisallowPassedDates,\n isEdited: isCheckboxEntryEdited,\n editField,\n field\n });\n }\n\n return entries;\n}\n\nfunction DisallowPassedDates(props) {\n const {\n editField,\n field,\n id\n } = 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\n const {\n editField,\n field,\n id\n } = 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\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}","import { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { DATETIME_SUBTYPES, TIME_SERIALISING_FORMATS, TIME_SERIALISINGFORMAT_LABELS, TIME_SERIALISING_FORMAT_PATH } from '@bpmn-io/form-js-viewer';\n\nimport { get } from 'min-dash';\n\nexport default function DateTimeFormatEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type,\n subtype\n } = field;\n\n if (type !== 'datetime') {\n return [];\n }\n\n const entries = [];\n\n if (subtype === DATETIME_SUBTYPES.TIME || subtype === DATETIME_SUBTYPES.DATETIME) {\n entries.push({\n id: 'time-format',\n component: TimeFormatSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n });\n }\n\n return entries;\n}\n\nfunction TimeFormatSelect(props) {\n\n const {\n editField,\n field,\n id\n } = 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\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}","import { get } from 'min-dash';\nimport { CheckboxEntry, isCheckboxEntryEdited } from '@bpmn-io/properties-panel';\n\nexport default function simpleBoolEntryFactory(options) {\n const {\n id,\n label,\n description,\n path,\n props\n } = options;\n\n const {\n editField,\n field\n } = props;\n\n return {\n id,\n label,\n path,\n field,\n editField,\n description,\n component: SimpleBoolComponent,\n isEdited: isCheckboxEntryEdited\n };\n}\n\nconst SimpleBoolComponent = (props) => {\n const {\n id,\n label,\n path,\n field,\n editField,\n description\n } = props;\n\n const getValue = () => get(field, path, '');\n\n const setValue = (value) => editField(field, path, value);\n\n return CheckboxEntry({\n element: field,\n getValue,\n id,\n label,\n setValue,\n description\n });\n};\n","\nimport { simpleBoolEntryFactory } from './factories';\n\nexport default function SelectEntries(props) {\n const {\n field,\n } = props;\n\n const {\n type\n } = field;\n\n if (type !== 'select') {\n return [];\n }\n\n const entries = [\n simpleBoolEntryFactory({\n id: 'searchable',\n path: [ 'searchable' ],\n label: 'Searchable',\n props\n })\n ];\n\n return entries;\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\n\n\nexport default function ValueEntry(props) {\n const {\n editField,\n field,\n idPrefix,\n index,\n validateFactory\n } = 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 {\n editField,\n field,\n id,\n index,\n validateFactory\n } = props;\n\n const debounce = useService('debounce');\n\n const setValue = (value) => {\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 return TextFieldEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Label',\n setValue,\n validate: validateFactory(getValue(), (entry) => entry.label)\n });\n}\n\nfunction Value(props) {\n const {\n editField,\n field,\n id,\n index,\n validateFactory\n } = props;\n\n const debounce = useService('debounce');\n\n const setValue = (value) => {\n const values = get(field, [ 'values' ]);\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 return TextFieldEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Value',\n setValue,\n validate: validateFactory(getValue(), (entry) => entry.value)\n });\n}","import { get } from 'min-dash';\n\nimport { useService } from '../hooks';\n\nimport { TextFieldEntry } from '@bpmn-io/properties-panel';\n\n\nexport default function CustomValueEntry(props) {\n const {\n editField,\n field,\n idPrefix,\n index,\n validateFactory\n } = 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 {\n editField,\n field,\n id,\n index,\n validateFactory\n } = 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 return editField(field, 'properties', updateKey(properties, key, value));\n };\n\n const getValue = () => {\n return Object.keys(get(field, [ 'properties' ]))[ index ];\n };\n\n return TextFieldEntry({\n debounce,\n element: field,\n getValue,\n id,\n label: 'Key',\n setValue,\n validate: validateFactory(getValue())\n });\n}\n\nfunction Value(props) {\n const {\n editField,\n field,\n id,\n index,\n validateFactory\n } = 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\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}","import { SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';\nimport { getValuesSource, VALUES_SOURCES, VALUES_SOURCES_DEFAULTS, VALUES_SOURCES_LABELS, VALUES_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport default function ValuesSourceSelectEntry(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n return [\n {\n id: id + '-select',\n component: ValuesSourceSelect,\n isEdited: isSelectEntryEdited,\n editField,\n field\n }\n ];\n}\n\nfunction ValuesSourceSelect(props) {\n\n const {\n editField,\n field,\n id\n } = props;\n\n const getValue = getValuesSource;\n\n const setValue = (value) => {\n\n let newField = field;\n\n const newProperties = {};\n\n Object.values(VALUES_SOURCES).forEach(source => {\n\n // Clear all values source definitions and default the newly selected one\n const newValue = value === source ? VALUES_SOURCES_DEFAULTS[source] : undefined;\n newProperties[VALUES_SOURCES_PATHS[source]] = newValue;\n });\n\n newField = editField(field, newProperties);\n return newField;\n };\n\n const getValuesSourceOptions = () => {\n\n return Object.values(VALUES_SOURCES).map((valueSource) => ({\n label: VALUES_SOURCES_LABELS[valueSource],\n value: valueSource\n }));\n };\n\n return SelectEntry({\n label: 'Type',\n element: field,\n getOptions: getValuesSourceOptions,\n getValue,\n id,\n setValue\n });\n}\n","import { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\nimport { get, isUndefined } from 'min-dash';\nimport { useService } from '../hooks';\nimport { VALUES_SOURCES, VALUES_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\n\nexport default function InputKeyValuesSourceEntry(props) {\n const {\n editField,\n field,\n id\n } = props;\n\n const schema = '[\\n {\\n \"label\": \"dollar\",\\n \"value\": \"$\"\\n }\\n]';\n\n const description = <div>\n Define which input property to populate the values from.\n <br /><br />The input property may be an array of simple values or alternatively follow this schema:\n <pre><code>{schema}</code></pre>\n </div>;\n\n return [\n {\n id: id + '-key',\n component: InputValuesKey,\n label: 'Input values key',\n description,\n isEdited: isTextFieldEntryEdited,\n editField,\n field,\n }\n ];\n}\n\nfunction InputValuesKey(props) {\n const {\n editField,\n field,\n id,\n label,\n description\n } = props;\n\n const debounce = useService('debounce');\n\n const path = VALUES_SOURCES_PATHS[VALUES_SOURCES.INPUT];\n\n const getValue = () => get(field, path, '');\n\n const setValue = (value) => editField(field, path, value || '');\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\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\n return TextFieldEntry({\n debounce,\n description,\n element: field,\n getValue,\n id,\n label,\n setValue,\n validate\n });\n}\n","import { isUndefined, without } from 'min-dash';\nimport { arrayAdd } from '../Util';\nimport ValueEntry from './ValueEntry';\nimport { VALUES_SOURCES, VALUES_SOURCES_PATHS } from '@bpmn-io/form-js-viewer';\n\nexport default function StaticValuesSourceEntry(props) {\n const {\n editField,\n field,\n id: idPrefix\n } = props;\n\n const {\n values\n } = field;\n\n const addEntry = (e) => {\n\n e.stopPropagation();\n\n const index = values.length + 1;\n\n const entry = getIndexedEntry(index, values);\n\n editField(field, VALUES_SOURCES_PATHS[VALUES_SOURCES.STATIC], arrayAdd(values, values.length, entry));\n };\n\n const removeEntry = (entry) => {\n editField(field, VALUES_SOURCES_PATHS[VALUES_SOURCES.STATIC], without(values, entry));\n };\n\n const validateFactory = (key, getValue) => {\n return (value) => {\n if (value === key) {\n return;\n }\n\n if (isUndefined(value) || !value.length) {\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 shouldSort: false\n };\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(existingEntry =>\n existingEntry.label === `Value ${index}` ||\n existingEntry.value === `value${index}`);\n}","import { TextFieldEntry, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';\n\nimport { get, set } from 'min-dash';\nimport { useService } from '../hooks';\n\nexport default function AdornerEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\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 if ([ 'number', 'textfield' ].includes(type)) {\n entries.push({\n id: 'prefix-adorner',\n component: PrefixAdorner,\n isEdited: isTextFieldEntryEdited,\n editField,\n field,\n onChange,\n getValue\n });\n\n entries.push({\n id: 'suffix-adorner',\n component: SuffixAdorner,\n isEdited: isTextFieldEntryEdited,\n editField,\n field,\n onChange,\n getValue\n });\n }\n\n return entries;\n}\n\nfunction PrefixAdorner(props) {\n const {\n field,\n id,\n onChange,\n getValue\n } = props;\n\n const debounce = useService('debounce');\n\n return TextFieldEntry({\n debounce,\n element: field,\n getValue: getValue('prefixAdorner'),\n id,\n label: 'Prefix',\n setValue: onChange('prefixAdorner')\n });\n}\n\nfunction SuffixAdorner(props) {\n const {\n field,\n id,\n onChange,\n getValue\n } = props;\n\n const debounce = useService('debounce');\n\n return TextFieldEntry({\n debounce,\n element: field,\n getValue: getValue('suffixAdorner'),\n id,\n label: 'Suffix',\n setValue: onChange('suffixAdorner')\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\n\nexport default function ReadonlyEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n type\n } = field;\n\n const entries = [];\n\n if (INPUTS.includes(type)) {\n entries.push({\n id: 'readonly',\n component: Readonly,\n editField: editField,\n field: field,\n isEdited: isFeelEntryEdited\n });\n }\n\n return entries;\n}\n\nfunction Readonly(props) {\n const {\n editField,\n field,\n id\n } = 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 setValue,\n variables\n });\n}","import { FeelEntry, isFeelEntryEdited } from '@bpmn-io/properties-panel';\nimport { get } from 'min-dash';\n\nimport { useService, useVariables } from '../hooks';\n\n\nexport function ConditionEntry(props) {\n const {\n editField,\n field\n } = 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\n\nfunction Condition(props) {\n const {\n editField,\n field,\n id\n } = 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 return FeelEntry({\n debounce,\n description: 'Condition under which the field is hidden',\n element: field,\n feel: 'required',\n getValue,\n id,\n label: 'Hide if',\n setValue,\n variables\n });\n}\n","import {\n ActionEntry,\n AltTextEntry,\n DescriptionEntry,\n DefaultValueEntry,\n DisabledEntry,\n IdEntry,\n ImageSourceEntry,\n KeyEntry,\n LabelEntry,\n ReadonlyEntry,\n SelectEntries,\n TextEntry,\n NumberEntries,\n DateTimeEntry\n} from '../entries';\n\n\nexport default function GeneralGroup(field, editField, getService) {\n\n const entries = [\n ...IdEntry({ field, editField }),\n ...LabelEntry({ field, editField }),\n ...DescriptionEntry({ field, editField }),\n ...KeyEntry({ field, editField }),\n ...DefaultValueEntry({ field, editField }),\n ...ActionEntry({ field, editField }),\n ...DateTimeEntry({ field, editField }),\n ...TextEntry({ field, editField, getService }),\n ...NumberEntries({ field, editField }),\n ...ImageSourceEntry({ field, editField }),\n ...AltTextEntry({ field, editField }),\n ...SelectEntries({ field, editField }),\n ...DisabledEntry({ field, editField }),\n ...ReadonlyEntry({ field, editField })\n ];\n\n return {\n id: 'general',\n label: 'General',\n entries\n };\n}","import {\n NumberSerializationEntry,\n DateTimeSerializationEntry\n} from '../entries';\n\n\nexport default function SerializationGroup(field, editField) {\n\n const entries = [\n ...NumberSerializationEntry({ field, editField }),\n ...DateTimeSerializationEntry({ field, editField })\n ];\n\n if (!entries.length) {\n return null;\n }\n\n return {\n id: 'serialization',\n label: 'Serialization',\n entries\n };\n}","import {\n DateTimeConstraintsEntry\n} from '../entries';\n\n\nexport default function ConstraintsGroup(field, editField) {\n\n const entries = [\n ...DateTimeConstraintsEntry({ field, editField })\n ];\n\n if (!entries.length) {\n return null;\n }\n\n return {\n id: 'constraints',\n label: 'Constraints',\n entries\n };\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport {\n CheckboxEntry,\n isCheckboxEntryEdited,\n isNumberFieldEntryEdited,\n isTextFieldEntryEdited,\n NumberFieldEntry,\n TextFieldEntry,\n SelectEntry\n} from '@bpmn-io/properties-panel';\n\nimport { useService } 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 default 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\n if (!INPUTS.includes(type)) {\n return null;\n }\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 }\n ];\n\n if (type === 'textfield') {\n entries.push(\n {\n id: 'validationType',\n component: ValidationType,\n getValue,\n field,\n editField,\n isEdited: isTextFieldEntryEdited,\n onChange\n }\n );\n }\n\n if (type === 'textarea' || (type === 'textfield' && isCustomValidation)) {\n entries.push(\n {\n id: 'minLength',\n component: MinLength,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n },\n {\n id: 'maxLength',\n component: MaxLength,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n }\n );\n }\n\n if (type === 'textfield' && isCustomValidation) {\n entries.push(\n {\n id: 'pattern',\n component: Pattern,\n getValue,\n field,\n isEdited: isTextFieldEntryEdited,\n onChange\n }\n );\n }\n\n if (type === 'number') {\n entries.push(\n {\n id: 'min',\n component: Min,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n },\n {\n id: 'max',\n component: Max,\n getValue,\n field,\n isEdited: isNumberFieldEntryEdited,\n onChange\n }\n );\n }\n\n return {\n id: 'validation',\n label: 'Validation',\n entries\n };\n}\n\nfunction Required(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = 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 {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n getValue: getValue('minLength'),\n id,\n label: 'Minimum length',\n min: 0,\n setValue: onChange('minLength')\n });\n}\n\nfunction MaxLength(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n getValue: getValue('maxLength'),\n id,\n label: 'Maximum length',\n min: 0,\n setValue: onChange('maxLength')\n });\n}\n\nfunction Pattern(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = 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 Min(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n id,\n label: 'Minimum',\n step: 'any',\n getValue: getValue('min'),\n setValue: onChange('min')\n });\n}\n\nfunction Max(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = props;\n\n const debounce = useService('debounce');\n\n return NumberFieldEntry({\n debounce,\n element: field,\n id,\n label: 'Maximum',\n step: 'any',\n getValue: getValue('max'),\n setValue: onChange('max')\n });\n}\n\nfunction ValidationType(props) {\n const {\n field,\n getValue,\n id,\n onChange\n } = 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 });\n}\n","import { ValuesSourceSelectEntry, StaticValuesSourceEntry, InputKeyValuesSourceEntry } from '../entries';\nimport { getValuesSource, VALUES_SOURCES } from '@bpmn-io/form-js-viewer';\n\nimport { Group, ListGroup } from '@bpmn-io/properties-panel';\n\nimport {\n VALUES_INPUTS\n} from '../Util';\n\nexport default function ValuesGroups(field, editField) {\n const {\n type,\n id: fieldId\n } = field;\n\n if (!VALUES_INPUTS.includes(type)) {\n return [];\n }\n\n const context = { editField, field };\n const valuesSourceId = `${fieldId}-valuesSource`;\n\n /**\n * @type {Array<Group|ListGroup>}\n */\n const groups = [\n {\n id: valuesSourceId,\n label: 'Options source',\n component: Group,\n entries: ValuesSourceSelectEntry({ ...context, id: valuesSourceId })\n }\n ];\n\n const valuesSource = getValuesSource(field);\n\n if (valuesSource === VALUES_SOURCES.INPUT) {\n const dynamicValuesId = `${fieldId}-dynamicValues`;\n groups.push({\n id: dynamicValuesId,\n label: 'Dynamic options',\n component: Group,\n entries: InputKeyValuesSourceEntry({ ...context, id: dynamicValuesId })\n });\n }\n else if (valuesSource === VALUES_SOURCES.STATIC) {\n const staticValuesId = `${fieldId}-staticValues`;\n groups.push({\n id: staticValuesId,\n label: 'Static options',\n component: ListGroup,\n ...StaticValuesSourceEntry({ ...context, id: staticValuesId })\n });\n }\n\n return groups;\n}","import { ListGroup } from '@bpmn-io/properties-panel';\n\nimport {\n has,\n isUndefined\n} from 'min-dash';\n\nimport { CustomValueEntry } from '../entries';\n\nexport default function CustomValuesGroup(field, editField) {\n const {\n properties = {},\n type\n } = 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 (isUndefined(value) || !value.length) {\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 = `${ field.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 shouldSort: false\n };\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}","import {\n AdornerEntry\n} from '../entries';\n\n\nexport default function AppearanceGroup(field, editField) {\n\n const entries = [\n ...AdornerEntry({ 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}","import { ColumnsEntry } from '../entries';\n\nexport default function LayoutGroup(field, editField) {\n const { type } = field;\n\n if (type === 'default') {\n return null;\n }\n\n const entries = [\n ...ColumnsEntry({ field, editField })\n ];\n\n if (entries.length === 0) {\n return null;\n }\n\n return {\n id: 'layout',\n label: 'Layout',\n entries\n };\n}","import {\n ConditionEntry\n} from '../entries';\n\n\nexport function ConditionGroup(field, editField) {\n\n const { type } = field;\n\n if (type === 'default') {\n return null;\n }\n\n const entries = [\n ...ConditionEntry({ field, editField })\n ];\n\n return {\n id: 'condition',\n label: 'Condition',\n entries\n };\n}","import { PropertiesPanel } from '@bpmn-io/properties-panel';\n\nimport {\n useCallback,\n useState,\n useLayoutEffect,\n useMemo\n} from 'preact/hooks';\n\nimport { useService } from './hooks';\n\nimport { PropertiesPanelHeaderProvider } from './PropertiesPanelHeaderProvider';\nimport { PropertiesPanelPlaceholderProvider } from './PropertiesPanelPlaceholderProvider';\n\nimport {\n ConditionGroup,\n AppearanceGroup,\n CustomValuesGroup,\n GeneralGroup,\n SerializationGroup,\n ConstraintsGroup,\n ValidationGroup,\n ValuesGroups,\n LayoutGroup\n} from './groups';\n\nfunction getGroups(field, editField, getService) {\n\n if (!field) {\n return [];\n }\n\n const groups = [\n GeneralGroup(field, editField, getService),\n ConditionGroup(field, editField),\n LayoutGroup(field, editField),\n AppearanceGroup(field, editField),\n SerializationGroup(field, editField),\n ...ValuesGroups(field, editField),\n ConstraintsGroup(field, editField),\n ValidationGroup(field, editField),\n CustomValuesGroup(field, editField)\n ];\n\n // contract: if a group returns null, it should not be displayed at all\n return groups.filter(group => group !== null);\n}\n\nexport default function FormPropertiesPanel() {\n\n const injector = useService('injector');\n const eventBus = useService('eventBus');\n const formEditor = useService('formEditor');\n const modeling = useService('modeling');\n const selection = useService('selection');\n\n const { schema } = formEditor._getState();\n\n const [ state, setState ] = useState({\n selectedFormField: selection.get() || schema\n });\n\n const _update = (field) => {\n\n setState({\n ...state,\n selectedFormField: field\n });\n\n // notify interested parties on property panel updates\n eventBus.fire('propertiesPanel.updated', {\n formField: field\n });\n };\n\n useLayoutEffect(() => {\n function onSelectionChange(event) {\n _update(event.selection || schema);\n }\n\n eventBus.on('selection.changed', onSelectionChange);\n\n return () => {\n eventBus.off('selection.changed', onSelectionChange);\n };\n }, []);\n\n useLayoutEffect(() => {\n const onFieldChanged = () => {\n\n /**\n * TODO(pinussilvestrus): update with actual updated element,\n * once we have a proper updater/change support\n */\n _update(selection.get() || schema);\n };\n\n eventBus.on('changed', onFieldChanged);\n\n return () => {\n eventBus.off('changed', onFieldChanged);\n };\n }, []);\n\n const selectedFormField = state.selectedFormField;\n\n const getService = useCallback((type, strict = true) => injector.get(type, strict), [ injector ]);\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 const groups = useMemo(() => getGroups(selectedFormField, editField, getService), [ editField, getService, selectedFormField ]);\n\n return (\n <div\n class=\"fjs-properties-panel\"\n data-field={ selectedFormField && selectedFormField.id }\n onFocusCapture={ onFocus }\n onBlurCapture={ onBlur }\n >\n <PropertiesPanel\n element={ selectedFormField }\n eventBus={ eventBus }\n groups={ groups }\n headerProvider={ PropertiesPanelHeaderProvider }\n placeholderProvider={ PropertiesPanelPlaceholderProvider }\n />\n </div>\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 default () => {\n\n const renderInjector = useService('renderInjector');\n\n const injectedRenderers = renderInjector.fetchRenderers();\n\n const injectedProps = useMemo(() => ({\n useService,\n components: {\n Fill,\n Slot\n }\n }), []);\n\n return <Fragment>{ injectedRenderers.map(({ Renderer }) => <Renderer { ...injectedProps } />) }</Fragment>;\n};","import {\n classes as domClasses\n} from 'min-dom';\n\nconst CURSOR_CLS_PATTERN = /^fjs-cursor-.*$/;\n\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 'dragula';\n\nimport { set as setCursor } from '../../render/util/Cursor';\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 default class Dragging {\n\n /**\n * @constructor\n *\n * @param { import('../../core/FormFieldRegistry').default } formFieldRegistry\n * @param { import('../../core/FormLayouter').default } formLayouter\n * @param { import('../../core/FormLayoutValidator').default } formLayoutValidator\n * @param { import('../../core/EventBus').default } eventBus\n * @param { import('../modeling/Modeling').default } modeling\n */\n constructor(formFieldRegistry, formLayouter, formLayoutValidator, eventBus, modeling) {\n this._formFieldRegistry = formFieldRegistry;\n this._formLayouter = formLayouter;\n this._formLayoutValidator = formLayoutValidator;\n this._eventBus = eventBus;\n this._modeling = modeling;\n }\n\n /**\n * Calculcates 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\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(\n targetRow.components[targetRow.components.length - 1],\n ),\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\n if (formFieldNode) {\n formField = this._formFieldRegistry.get(formFieldNode.dataset.id);\n columns = (formField.layout || {}).columns;\n }\n\n return this._formLayoutValidator.validateField(formField, columns, targetRow);\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 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(\n siblingRow.components[0]\n );\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(\n formField,\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex,\n row,\n row);\n });\n }\n\n handleElementDrop(el, target, source, sibling, drake) {\n\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 unsetDropNotAllowed(target);\n\n targetRow = this._formLayouter.getRow(target.dataset.rowId);\n\n // validate whether drop is allowed\n const validationError = this.validateDrop(el, target);\n\n if (validationError) {\n return drake.cancel(true);\n }\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\n const {\n container,\n direction,\n mirrorContainer\n } = options || {};\n\n const dragulaInstance = dragula({\n direction,\n mirrorContainer,\n isContainer(el) {\n return container.some(cls => el.classList.contains(cls));\n },\n moves(el, source, handle) {\n return !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\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 in row\n if (isRow(target)) {\n const validationError = this.validateDrop(el, target);\n\n if (validationError) {\n\n // set error feedback to row\n setDropNotAllowed(target);\n }\n }\n\n return !target.classList.contains(DRAG_NO_DROP_CLS);\n },\n slideFactorX: 10,\n slideFactorY: 5\n });\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\n // (2) handle form field drop\n this.handleElementDrop(el, target, source, sibling, dragulaInstance);\n }\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 = [\n 'formFieldRegistry',\n 'formLayouter',\n 'formLayoutValidator',\n 'eventBus',\n 'modeling'\n];\n\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}","import classNames from 'classnames';\n\nexport function FieldDragPreview(props) {\n const {\n class: className,\n Icon,\n label\n } = 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}","import {\n useRef\n} from 'preact/hooks';\n\nimport {\n classes,\n query as domQuery\n} 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 RESIZE_DRAG_PREVIEW_CLS = 'fjs-resize-drag-preview';\n\nconst GRID_OFFSET_PX = 16;\n\n\nexport function FieldResizer(props) {\n\n const {\n field,\n position\n } = 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(\n ref.current,\n layout.columns || context.current.startColumns,\n dx,\n position\n );\n\n const errorMessage = formLayoutValidator.validateField(field, newColumns);\n\n if (!errorMessage) {\n\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\n const target = getElementNode(field);\n const parent = getParent(target);\n\n // create a blank element to use as drag preview\n // ensure it was only created once\n let blankPreview = getDragPreviewImage(parent);\n\n if (!blankPreview) {\n blankPreview = document.createElement('div');\n blankPreview.classList.add(RESIZE_DRAG_PREVIEW_CLS);\n parent.appendChild(blankPreview);\n }\n\n // initialize drag handler\n const onDragStart = createDragger(onResize, blankPreview);\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 // remove blank preview\n const blankPreview = getDragPreviewImage(getParent(target));\n blankPreview.remove();\n };\n\n if (field.type === 'default') {\n return null;\n }\n\n return (\n <div\n ref={ ref }\n class={ classNames(\n 'fjs-field-resize-handle',\n 'fjs-field-resize-handle-' + position,\n DRAG_NO_MOVE_CLS\n ) }\n draggable\n onDragStart={ onResizeStart }\n onDragEnd={ onResizeEnd }>\n </div>\n );\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 getDragPreviewImage(node) {\n return domQuery('.fjs-resize-drag-preview', node);\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}","import { render } from 'preact';\nimport {\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n FormComponent,\n FormContext,\n FormRenderContext\n} from '@bpmn-io/form-js-viewer';\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, { PALETTE_ENTRIES } from '../../features/palette/components/Palette';\nimport PropertiesPanel from '../../features/properties-panel/PropertiesPanel';\nimport InjectedRendersRoot from '../../features/render-injection/components/InjectedRendersRoot';\n\nimport { 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 {\n FieldDragPreview\n} from './FieldDragPreview';\n\nimport {\n FieldResizer\n} from './FieldResizer';\n\nimport { set as setCursor, unset as unsetCursor } from '../util/Cursor';\n\nimport { iconsByType } from './icons';\n\nfunction ContextPad(props) {\n if (!props.children) {\n return null;\n }\n\n return (\n <div class=\"fjs-context-pad\">\n {\n props.children\n }\n </div>\n );\n}\n\nfunction Empty(props) {\n return null;\n}\n\nfunction Element(props) {\n const eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n formFieldRegistry = useService('formFieldRegistry'),\n modeling = useService('modeling'),\n selection = useService('selection');\n\n const { field } = props;\n\n const {\n id,\n type\n } = field;\n\n const ref = useRef();\n\n function scrollIntoView({ selection }) {\n if (!selection || selection.id !== id || !ref.current) {\n return;\n }\n\n const elementBounds = ref.current.getBoundingClientRect(),\n containerBounds = formEditor._container.getBoundingClientRect();\n\n if (elementBounds.top < 0 || elementBounds.top > containerBounds.bottom) {\n ref.current.scrollIntoView();\n }\n }\n\n useEffect(() => {\n eventBus.on('selection.changed', scrollIntoView);\n\n return () => eventBus.off('selection.changed', scrollIntoView);\n }, [ id ]);\n\n useLayoutEffect(() => {\n if (selection.isSelected(field)) {\n ref.current.focus();\n }\n }, [ selection, field ]);\n\n function onClick(event) {\n event.stopPropagation();\n\n selection.toggle(field);\n\n // properly focus on field\n ref.current.focus();\n }\n\n const classes = [];\n\n if (props.class) {\n classes.push(...props.class.split(' '));\n }\n\n if (selection.isSelected(field)) {\n classes.push('fjs-editor-selected');\n }\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={ classes.join(' ') }\n data-id={ id }\n data-field-type={ type }\n tabIndex={ type === 'default' ? -1 : 0 }\n onClick={ onClick }\n onKeyPress={ onKeyPress }\n ref={ ref }>\n <DebugColumns field={ field } />\n <ContextPad>\n {\n selection.isSelected(field) && field.type !== 'default'\n ? <button class=\"fjs-context-pad-item\" onClick={ onRemove }><DeleteIcon /></button>\n : null\n }\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\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\n class={ classes.join(' ') }\n 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\n class={ classes.join(' ') }\n 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\n data-field-type={ field.type }\n class={ classes.join(' ') }>\n { props.children }\n </div>\n );\n}\n\nexport default function FormEditor(props) {\n const dragging = useService('dragging'),\n eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n injector = useService('injector'),\n selection = useService('selection');\n\n const { schema, properties } = formEditor._getState();\n\n const { ariaLabel } = properties;\n\n const formContainerRef = useRef(null);\n\n const [ , setSelection ] = useState(schema);\n\n useEffect(() => {\n function handleSelectionChanged(event) {\n setSelection(event.selection || schema);\n }\n\n eventBus.on('selection.changed', handleSelectionChanged);\n\n setSelection(selection.get() || schema);\n\n return () => {\n eventBus.off('selection.changed', handleSelectionChanged);\n };\n }, [ schema, selection ]);\n\n const [ drake, setDrake ] = useState(null);\n\n const dragAndDropContext = {\n drake\n };\n\n useEffect(() => {\n\n let dragulaInstance = dragging.createDragulaInstance({\n container: [\n DRAG_CONTAINER_CLS,\n DROP_CONTAINER_VERTICAL_CLS,\n DROP_CONTAINER_HORIZONTAL_CLS\n ],\n direction: 'vertical',\n mirrorContainer: formContainerRef.current\n });\n\n setDrake(dragulaInstance);\n\n const onDetach = () => {\n if (dragulaInstance) {\n dragulaInstance.destroy();\n\n eventBus.fire('dragula.destroyed');\n }\n };\n\n const onAttach = () => {\n onDetach();\n\n dragulaInstance = dragging.createDragulaInstance({\n container: [\n DRAG_CONTAINER_CLS,\n DROP_CONTAINER_VERTICAL_CLS,\n DROP_CONTAINER_HORIZONTAL_CLS\n ],\n direction: 'vertical',\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 eventBus.fire('formEditor.rendered');\n }, []);\n\n const formRenderContext = {\n Children,\n Column,\n Element,\n Empty,\n Row\n };\n\n const formContext = {\n getService(type, strict = true) {\n\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\n const onSubmit = useCallback(() => {}, []);\n\n const onReset = useCallback(() => {}, []);\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 value={ formRenderContext }>\n <FormComponent onSubmit={ onSubmit } onReset={ onReset } />\n </FormRenderContext.Provider>\n </FormContext.Provider>\n </div>\n <CreatePreview />\n </DragAndDropContext.Provider>\n <ModularSection rootClass=\"fjs-properties-container\" section=\"propertiesPanel\">\n <PropertiesPanel />\n </ModularSection>\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\n const { drake } = useContext(DragAndDropContext);\n\n function handleCloned(clone, original, type) {\n\n const fieldType = clone.dataset.fieldType;\n\n // (1) field preview\n if (fieldType) {\n\n const { label } = findPaletteEntry(fieldType);\n\n const Icon = iconsByType(fieldType);\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\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(\n <FieldDragPreview label={ label } Icon={ Icon } />,\n clone\n );\n } else {\n\n // (2) row preview\n\n // remove elements from copy (context pad, row dragger, ...)\n [\n 'fjs-context-pad',\n 'fjs-row-dragger',\n 'fjs-debug-columns'\n ].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 useEffect(() => {\n if (!drake) {\n return;\n }\n\n drake.on('cloned', handleCloned);\n\n return () => drake.off('cloned', handleCloned);\n }, [ drake ]);\n\n return null;\n}\n\n\n// helper //////\n\nfunction findPaletteEntry(type) {\n return PALETTE_ENTRIES.find(entry => entry.type === type);\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').default } EventBus\n * @typedef { import('../FormEditor').default } FormEditor\n */\n\n/**\n * @param {RenderConfig} renderConfig\n * @param {EventBus} eventBus\n * @param {FormEditor} formEditor\n * @param {Injector} injector\n */\nexport default class Renderer {\n constructor(renderConfig, eventBus, formEditor, injector) {\n\n const {\n container,\n compact = false\n } = renderConfig;\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' ];","import EditorFormFields from './EditorFormFields';\nimport Renderer from './Renderer';\n\nexport default {\n __init__: [ 'formFields', 'renderer' ],\n formFields: [ 'type', EditorFormFields ],\n renderer: [ 'type', Renderer ]\n};","import EventBus from './EventBus';\nimport DebounceFactory from './Debounce';\nimport FieldFactory from './FieldFactory';\nimport FormFieldRegistry from './FormFieldRegistry';\nimport FormLayouter from './FormLayouter';\nimport FormLayoutValidator from './FormLayoutValidator';\n\nimport importModule from '../import';\nimport renderModule from '../render';\n\nexport default {\n __depends__: [\n importModule,\n renderModule\n ],\n debounce: [ 'factory', DebounceFactory ],\n eventBus: [ 'type', EventBus ],\n formFieldRegistry: [ 'type', FormFieldRegistry ],\n formLayouter: [ 'type', FormLayouter ],\n formLayoutValidator: [ 'type', FormLayoutValidator ],\n fieldFactory: [ 'type', FieldFactory ]\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) {\n this.register('paste', function() {\n copyPaste.paste();\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 * 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 number of actions that are currently registered\n *\n * @return {number}\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\n\nexport default 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\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\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 = [\n 'eventBus',\n 'injector'\n];","import EditorActionsModule from 'diagram-js/lib/features/editor-actions';\n\nimport FormEditorActions from './FormEditorActions';\n\nexport default {\n __depends__: [\n EditorActionsModule\n ],\n editorActions: [ 'type', FormEditorActions ]\n};\n","import Dragging from './Dragging';\n\nexport default {\n __init__: [ 'dragging' ],\n dragging: [ 'type', Dragging ]\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_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 */\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 */\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\nexport function isCopy(event) {\r\n return isCmd(event) && isKey(KEYS_COPY, event);\r\n}\r\n\r\nexport function isPaste(event) {\r\n return isCmd(event) && isKey(KEYS_PASTE, event);\r\n}\r\n\r\nexport function isUndo(event) {\r\n return isCmd(event) && !isShift(event) && isKey(KEYS_UNDO, event);\r\n}\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}","import {\n isFunction\n} from 'min-dash';\n\nimport {\n closest as domClosest,\n event as domEvent,\n matches as domMatches\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\nvar KEYDOWN_EVENT = 'keyboard.keydown',\n KEYUP_EVENT = 'keyboard.keyup';\n\nvar HANDLE_MODIFIER_ATTRIBUTE = 'input-handle-modified-keys';\n\nvar DEFAULT_PRIORITY = 1000;\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 * A default binding for the keyboard may be specified via the\n * `keyboard.bindTo` configuration option.\n *\n * @param {Object} config\n * @param {EventBus} eventBus\n */\nexport default function Keyboard(config, eventBus) {\n var self = this;\n\n this._config = config || {};\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 eventBus.on('diagram.init', function() {\n self._fire('init');\n });\n\n eventBus.on('attach', function() {\n if (config && config.bindTo) {\n self.bind(config.bindTo);\n }\n });\n\n eventBus.on('detach', function() {\n self.unbind();\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 if (event.defaultPrevented) {\n return true;\n }\n\n return isInput(event.target) && this._isModifiedKeyIgnored(event);\n};\n\nKeyboard.prototype._isModifiedKeyIgnored = function(event) {\n if (!isCmd(event)) {\n return true;\n }\n\n var allowedModifiers = this._getAllowedModifiers(event.target);\n return allowedModifiers.indexOf(event.key) === -1;\n};\n\nKeyboard.prototype._getAllowedModifiers = function(element) {\n var modifierContainer = domClosest(element, '[' + HANDLE_MODIFIER_ATTRIBUTE + ']', true);\n\n if (!modifierContainer || (this._node && !this._node.contains(modifierContainer))) {\n return [];\n }\n\n return modifierContainer.getAttribute(HANDLE_MODIFIER_ATTRIBUTE).split(',');\n};\n\nKeyboard.prototype.bind = function(node) {\n\n // make sure that the keyboard is only bound once to the DOM\n this.unbind();\n\n this._node = node;\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\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\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 {Function} listener\n * @param {string} type\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\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\n\n\n// helpers ///////\n\nfunction isInput(target) {\n return target && (domMatches(target, 'input, textarea') || target.contentEditable === 'true');\n}\n","import {\n isCmd,\n isKey,\n isCopy,\n isPaste,\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 // 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 {\n isCmd,\n isKey,\n isShift\n} from 'diagram-js/lib/features/keyboard/KeyboardUtil';\n\nimport {\n KEYS_REDO,\n KEYS_UNDO\n} from 'diagram-js/lib/features/keyboard/KeyboardBindings';\n\nconst LOW_PRIORITY = 500;\n\nexport default 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\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 (isCmd(keyEvent) && !isShift(keyEvent) && isKey(KEYS_UNDO, 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 (isCmd(keyEvent) && (isKey(KEYS_REDO, keyEvent) || (isKey(KEYS_UNDO, keyEvent) && isShift(keyEvent)))) {\n editorActions.trigger('redo');\n\n return true;\n }\n });\n\n }\n}\n\nFormEditorKeyboardBindings.$inject = [ 'eventBus', 'keyboard' ];","import KeyboardModule from 'diagram-js/lib/features/keyboard';\n\nimport FormEditorKeyboardBindings from './FormEditorKeyboardBindings';\n\nexport default {\n __depends__: [\n KeyboardModule\n ],\n __init__: [ 'keyboardBindings' ],\n keyboardBindings: [ 'type', FormEditorKeyboardBindings ]\n};","export function arrayAdd(array, index, item) {\n array.splice(index, 0, item);\n\n return array;\n}\n\nexport { mutate 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\n formField._path = [ ...parent._path, 'components', index ];\n\n return formField;\n}\n\nexport function updateRow(formField, rowId) {\n formField.layout = {\n ...formField.layout || {},\n row: rowId\n };\n\n return formField;\n}","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class AddFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n targetFormField,\n targetIndex\n } = 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 paths of new form field and its siblings\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 {\n formField,\n targetFormField,\n targetIndex\n } = 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 paths of new form field and its siblings\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' ];","export default class EditFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n properties\n } = 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 {\n formField,\n oldProperties\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n for (let key in oldProperties) {\n\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}\n\nEditFormFieldHandler.$inject = [\n 'formEditor',\n 'formFieldRegistry'\n];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayMove,\n arrayRemove,\n updatePath,\n updateRow\n} from './Util';\n\nexport default class MoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n this.moveFormField(context);\n }\n\n revert(context) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex,\n sourceRow,\n targetRow\n } = context;\n\n this.moveFormField({\n sourceFormField: targetFormField,\n targetFormField: sourceFormField,\n sourceIndex: targetIndex,\n targetIndex: sourceIndex,\n sourceRow: targetRow,\n targetRow: sourceRow\n }, true);\n }\n\n moveFormField(context, revert) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex,\n targetRow\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n if (sourceFormField.id === targetFormField.id) {\n\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\n updateRow(formField, targetRow ? targetRow.id : null);\n\n // (2) Move form field\n arrayMove(get(schema, sourcePath), sourceIndex, targetIndex);\n\n // (3) Update paths of new form field and its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n } else {\n const formField = get(schema, [ ...sourcePath, sourceIndex ]);\n\n formField._parent = targetFormField.id;\n\n // (1) Remove form field\n arrayRemove(get(schema, sourcePath), sourceIndex);\n\n // (2) Update paths of siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n // (3) Add to row\n updateRow(formField, targetRow ? targetRow.id : null);\n\n // (4) Add form field\n arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n // (5) Update paths of siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\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' ];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class RemoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n sourceFormField,\n sourceIndex\n } = 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 paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Remove 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 revert(context) {\n const {\n formField,\n sourceFormField,\n sourceIndex\n } = 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 paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Add 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\nRemoveFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","export default class UpdateIdClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n id\n } = 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 {\n claiming,\n formField,\n id\n } = 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' ];","export default class UpdateKeyClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.claim(key, formField);\n } else {\n this._formFieldRegistry._keys.unclaim(key);\n }\n }\n\n revert(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.unclaim(key);\n } else {\n this._formFieldRegistry._keys.claim(key, formField);\n }\n }\n}\n\nUpdateKeyClaimHandler.$inject = [ 'formFieldRegistry' ];","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';\n\nimport { isObject } from 'min-dash';\n\n\nexport default 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 };\n }\n\n addFormField(attrs, targetFormField, targetIndex) {\n\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\nModeling.$inject = [\n 'commandStack',\n 'eventBus',\n 'formEditor',\n 'formFieldRegistry',\n 'fieldFactory'\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 { updateRow } from './cmd/Util';\n\nimport CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nimport { clone } from '@bpmn-io/form-js-viewer';\n\n\nexport default class FormLayoutUpdater extends CommandInterceptor {\n\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([\n 'formField.add',\n 'formField.remove',\n 'formField.move',\n 'id.updateClaim'\n ], (event) => this.updateRowIds(event));\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\n updateLayout(schema) {\n this._formLayouter.clear();\n this._formLayouter.calculateLayout(clone(schema));\n }\n\n updateRowIds(event) {\n\n const { schema } = this._formEditor._getState();\n\n // make sure rows are persisted in schema (e.g. for migration case)\n schema.components.forEach(formField => {\n const row = this._formLayouter.getRowForField(formField);\n updateRow(formField, row.id);\n });\n }\n\n}\n\nFormLayoutUpdater.$inject = [ 'eventBus', 'formLayouter', 'modeling', 'formEditor' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class IdBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { id } = formField;\n\n modeling.unclaimId(formField, id);\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('id' in properties) {\n modeling.unclaimId(formField, formField.id);\n\n modeling.claimId(formField, properties.id);\n }\n }, true);\n }\n}\n\nIdBehavior.$inject = [ 'eventBus', 'modeling' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class KeyBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { key } = formField;\n\n if (key) {\n modeling.unclaimKey(formField, key);\n }\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('key' in properties) {\n modeling.unclaimKey(formField, formField.key);\n\n modeling.claimKey(formField, properties.key);\n }\n }, true);\n }\n}\n\nKeyBehavior.$inject = [ 'eventBus', 'modeling' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default 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 // @ts-ignore-next-line\n this.preExecute('formField.edit', 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 }, true);\n }\n}\n\nValidateBehavior.$inject = [ 'eventBus' ];","import IdBehavior from './IdBehavior';\nimport KeyBehavior from './KeyBehavior';\nimport ValidateBehavior from './ValidateBehavior';\n\nexport default {\n __init__: [\n 'idBehavior',\n 'keyBehavior',\n 'validateBehavior'\n ],\n idBehavior: [ 'type', IdBehavior ],\n keyBehavior: [ 'type', KeyBehavior ],\n validateBehavior: [ 'type', ValidateBehavior ]\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 Modeling from './Modeling';\n\nimport FormLayoutUpdater from './FormLayoutUpdater';\n\nimport behaviorModule from './behavior';\nimport commandModule from 'diagram-js/lib/command';\n\nexport default {\n __depends__: [\n behaviorModule,\n commandModule\n ],\n __init__: [ 'formLayoutUpdater', 'modeling' ],\n formLayoutUpdater: [ 'type', FormLayoutUpdater ],\n modeling: [ 'type', Modeling ]\n};\n","export default 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' ];","export default class SelectionBehavior {\n constructor(eventBus, selection) {\n eventBus.on([\n 'commandStack.formField.add.postExecuted',\n 'commandStack.formField.move.postExecuted'\n ], ({ context }) => {\n const { formField } = context;\n\n selection.set(formField);\n });\n\n eventBus.on('commandStack.formField.remove.postExecuted', ({ context }) => {\n const {\n sourceFormField,\n sourceIndex\n } = 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' ];","import Selection from './Selection';\nimport SelectionBehavior from './SelectionBehavior';\n\nexport default {\n __init__: [ 'selection', 'selectionBehavior' ],\n selection: [ 'type', Selection ],\n selectionBehavior: [ 'type', SelectionBehavior ]\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 default class SectionModuleBase {\n\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 }\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) { this._eventBus.fire(`${this.sectionKey}.attach`, { container }); }\n\n /**\n * Detach the managed section from its parent node.\n */\n detach() { this._eventBus.fire(`${this.sectionKey}.detach`); }\n\n /**\n * Reset the managed section to its initial state.\n */\n reset() { this._eventBus.fire(`${this.sectionKey}.reset`); }\n}\n","import SectionModuleBase from '../SectionModuleBase';\n\nexport default class PaletteModule extends SectionModuleBase {\n constructor(eventBus) { super(eventBus, 'palette'); }\n}\n\nPaletteModule.$inject = [ 'eventBus' ];","import PaletteModule from './PaletteModule';\n\nexport default {\n palette: [ 'type', PaletteModule ]\n};\n","import SectionModuleBase from '../SectionModuleBase';\n\nexport default class PropertiesPanelModule extends SectionModuleBase {\n constructor(eventBus) { super(eventBus, 'propertiesPanel'); }\n}\n\nPropertiesPanelModule.$inject = [ 'eventBus' ];","import PropertiesPanelModule from './PropertiesPanelModule';\n\nexport default {\n __init__: [ 'propertiesPanel' ],\n propertiesPanel: [ 'type', PropertiesPanelModule ]\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 default class RenderInjector extends SectionModuleBase {\n\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' ];","import RenderInjector from './RenderInjector';\n\nexport default {\n __init__: [ 'renderInjector' ],\n renderInjector: [ 'type', RenderInjector ],\n};","import { isString } from 'min-dash';\n\nexport default class EditorTemplating {\n\n // same rules as viewer templating\n isTemplate(value) { return isString(value) && (value.startsWith('=') || /{{/.test(value)); }\n\n // return the template raw, as we usually just want to display that\n evaluate(template) { return template; }\n}\n\nEditorTemplating.$inject = [];\n","import { FeelExpressionLanguage } from '@bpmn-io/form-js-viewer';\nimport EditorTemplating from './EditorTemplating';\n\nexport default {\n __init__: [ 'expressionLanguage', 'templating' ],\n expressionLanguage: [ 'type', FeelExpressionLanguage ],\n templating: [ 'type', EditorTemplating ]\n};\n","import { clone, createFormContainer, createInjector, schemaVersion } from '@bpmn-io/form-js-viewer';\nimport Ids from 'ids';\nimport { isString, set } from 'min-dash';\n\nimport core from './core';\n\nimport EditorActionsModule from './features/editor-actions';\nimport DraggingModule from './features/dragging';\nimport KeyboardModule from './features/keyboard';\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 ExpressionLanguageModule from './features/expression-language';\n\nimport { MarkdownModule } 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 default class FormEditor {\n\n /**\n * @constructor\n * @param {FormEditorOptions} options\n */\n constructor(options = {}) {\n\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('input-handle-modified-keys', 'z,y');\n\n const {\n container,\n exporter,\n injector = this._createInjector(options, this._container),\n properties = {}\n } = 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\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\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 {\n schema: importedSchema,\n warnings\n } = 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(\n schema,\n this.exporter,\n schemaVersion\n );\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 /**\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 {\n additionalModules = [],\n modules = this._getModules(),\n renderer = {}\n } = options;\n\n const config = {\n ...options,\n renderer: {\n ...renderer,\n container\n }\n };\n\n return createInjector([\n { config: [ 'value', config ] },\n { formEditor: [ 'value', this ] },\n core,\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 DraggingModule,\n KeyboardModule,\n SelectionModule,\n PaletteModule,\n ExpressionLanguageModule,\n MarkdownModule,\n PropertiesPanelModule,\n RenderInjectionModule\n ];\n }\n\n /**\n * @internal\n */\n _onEvent(type, priority, handler) {\n this.get('eventBus').on(type, priority, handler);\n }\n\n}\n\n// helpers //////////\n\nexport function exportSchema(schema, exporter, schemaVersion) {\n\n const exportDetails = exporter ? {\n exporter\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}","import FormEditor from './FormEditor';\r\n\r\nimport { schemaVersion } from '@bpmn-io/form-js-viewer';\r\n\r\nexport {\r\n FormEditor,\r\n schemaVersion\r\n};\r\n\r\n/**\r\n * @typedef { import('./types').CreateFormEditorOptions } CreateFormEditorOptions\r\n */\r\n\r\n/**\r\n * Create a form editor.\r\n *\r\n * @param {CreateFormEditorOptions} options\r\n *\r\n * @return {Promise<FormEditor>}\r\n */\r\nexport function createFormEditor(options) {\r\n const {\r\n schema,\r\n ...rest\r\n } = options;\r\n\r\n const formEditor = new FormEditor(rest);\r\n\r\n return formEditor.importSchema(schema).then(() => {\r\n return formEditor;\r\n });\r\n}"],"names":["FN_REF","DEFAULT_PRIORITY","slice","Array","prototype","EventBus","_listeners","on","_destroy","events","priority","callback","that","isArray","isFunction","isNumber","Error","actualCallback","bind","self","forEach","e","_addListener","next","once","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","FieldFactory","constructor","formFieldRegistry","formFields","_formFieldRegistry","_formFields","create","attrs","applyDefaults","id","key","fieldDefinition","get","_ids","assigned","_keys","labelAttrs","label","field","_ensureId","keyed","_ensureKey","claim","prefix","nextPrefixed","FormFieldRegistry","BaseFieldRegistry","updateId","formField","newId","_validateId","_eventBus","remove","add","component","components","_parent","MAX_COLUMNS_PER_ROW","MAX_COLUMNS","MIN_COLUMNS","MAX_FIELDS_PER_ROW","FormLayoutValidator","formLayouter","_formLayouter","validateField","columns","row","Number","isInteger","getRowForField","sumColumns","parseInt","sumFields","sumAutoCols","cols","layout","calculateMaxColumnsWithAuto","autoCols","Importer","fieldFactory","_fieldFactory","importSchema","schema","warnings","importedSchema","importFormField","clone","calculateLayout","err","fieldAttrs","parentId","index","parent","path","_path","importFormFields","map","importer","editorFormFieldClasses","disabled","classNames","createDragger","dragPreview","startX","startY","onDragStart","clientX","clientY","dataTransfer","setDragImage","document","addEventListener","onDrag","onEnd","delta","x","y","removeEventListener","throttle","active","lastArgs","lastThis","window","requestAnimationFrame","DragAndDropContext","createContext","drake","getService","strict","FormEditorContext","useContext","_extends","EditorText","props","text","Icon","iconsByType","templating","useService","expressionLanguage","_jsx","_jsxs","isExpression","isTemplate","Text","disableLinks","editorFormFields","EditorFormFields","FormFields","register","rootClass","RootElement","section","children","eventBus","sectionConfig","setParent","useState","shouldRender","setShouldRender","ParentElement","useMemo","element","querySelector","Element","useEffect","onAttach","container","onDetach","onReset","Root","useCallback","createPortal","FillContext","addFill","uid","removeFill","useRef","Symbol","fillContext","SlotContext","fills","fillRoot","FillFragment","groupFn","_groupByGroupName","separatorFn","limit","filtered","filter","fill","slot","cropped","groups","fillsAndSeparators","buildFills","Fragment","fillRenderer","separatorRenderer","array","idx","separator","push","groupsById","group","groupName","sort","_comparePriority","Object","keys","a","b","setFills","f","onSetFill","onRemoveFill","slotContext","PALETTE_ENTRIES","fieldConfig","PALETTE_GROUPS","Palette","entries","setEntries","searchTerm","setSearchTerm","inputRef","groupEntries","simplifyString","str","toLowerCase","replace","entry","simplifiedSearchTerm","simplifiedEntryLabel","simplifiedEntryType","includes","handleInput","target","value","handleClear","current","focus","getIndefiniteArticle","length","FillRoot","getGroup","find","g","Header","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","documentationRef","ElementIcon","class","width","height","viewBox","title","rel","href","ExternalLinkIcon","useVariables","form","getSchema","getSchemaVariables","arrayAdd","item","copy","splice","countDecimals","number","num","Big","toString","toFixed","split","isValidNumber","isNaN","textToLabel","line","displayLine","trim","INPUTS","VALUES_INPUTS","labelsByType","button","checkbox","checklist","default","datetime","image","radio","select","taglist","textfield","textarea","PropertiesPanelHeaderProvider","alt","PropertiesPanelPlaceholderProvider","getEmpty","getMultiple","ActionEntry","editField","Action","isEdited","isSelectEntryEdited","getValue","setValue","getOptions","SelectEntry","AltTextEntry","AltText","isFeelEntryEdited","variables","FeelEntry","feel","AUTO_OPTION_VALUE","ColumnsEntry","Columns","formLayoutValidator","validate","newValue","set","asArray","i","asOption","from","_","DescriptionEntry","Description","FeelTemplatingEntry","singleLine","EMPTY_OPTION","DefaultOptionEntry","values","defaultOptions","DefaultValueCheckbox","DefaultValueNumber","isTextFieldEntryEdited","DefaultValueSingleSelect","DefaultValueTextfield","DefaultValueTextarea","isTextAreaEntryEdited","defaultValue","parseStringToBoolean","parseBooleanToString","decimalDigits","serializeToString","decimalDigitsSet","TextFieldEntry","TextAreaEntry","DisabledEntry","Disabled","isToggleSwitchEntryEdited","ToggleSwitchEntry","inline","IdEntry","Id","isUndefined","validateId","SPACE_REGEX","QNAME_REGEX","ID_REGEX","idValue","containsSpace","test","KeyEntry","Key","description","LabelEntry","subtype","DATETIME_SUBTYPES","DATE","DATETIME","DateLabel","TIME","TimeLabel","Label","DATE_LABEL_PATH","TIME_LABEL_PATH","SourceEntry","Source","TextEntry","_Fragment","hostLanguage","NumberEntries","NumberDecimalDigits","isNumberFieldEntryEdited","NumberArrowStep","NumberFieldEntry","step","clearLeadingZeroes","trimmed","startsWith","cmp","minimumValue","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","DateTimeConstraintsEntry","TimeIntervalSelect","DisallowPassedDates","timeIntervals","getTimeIntervals","timeInterval","DateTimeFormatEntry","TimeFormatSelect","getTimeSerialisingFormats","format","TIME_SERIALISINGFORMAT_LABELS","simpleBoolEntryFactory","options","SimpleBoolComponent","SelectEntries","ValueEntry","idPrefix","validateFactory","Value","CustomValueEntry","properties","updateKey","updateValue","oldKey","newKey","reduce","newProperties","ValuesSourceSelectEntry","ValuesSourceSelect","getValuesSource","newField","VALUES_SOURCES","source","VALUES_SOURCES_DEFAULTS","VALUES_SOURCES_PATHS","getValuesSourceOptions","valueSource","VALUES_SOURCES_LABELS","InputKeyValuesSourceEntry","InputValuesKey","INPUT","StaticValuesSourceEntry","addEntry","getIndexedEntry","STATIC","removeEntry","without","isValueAssigned","items","autoFocusEntry","shouldSort","labelOrValueIsAlreadyAssignedForIndex","some","existingEntry","AdornerEntry","onChange","appearance","PrefixAdorner","SuffixAdorner","ReadonlyEntry","Readonly","FeelToggleSwitchEntry","ConditionEntry","Condition","hide","GeneralGroup","DefaultValueEntry","ImageSourceEntry","SerializationGroup","DateTimeSerializationEntry","ConstraintsGroup","VALIDATION_TYPE_OPTIONS","custom","email","phone","ValidationGroup","isCustomValidation","validationType","Required","ValidationType","MinLength","MaxLength","Pattern","Min","Max","min","ValuesGroups","fieldId","context","valuesSourceId","Group","valuesSource","dynamicValuesId","staticValuesId","ListGroup","CustomValuesGroup","has","removeKey","AppearanceGroup","LayoutGroup","ConditionGroup","getGroups","FormPropertiesPanel","injector","formEditor","modeling","selection","_getState","state","setState","selectedFormField","_update","useLayoutEffect","onSelectionChange","onFieldChanged","onFocus","onBlur","editFormField","renderInjector","injectedRenderers","fetchRenderers","injectedProps","Fill","Slot","Renderer","CURSOR_CLS_PATTERN","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","_modeling","getTargetIndex","targetRow","targetFormField","sibling","siblingFormFieldNode","siblingFormField","dataset","getFormFieldIndex","validateDrop","formFieldNode","getRow","rowId","moveField","targetIndex","sourceParent","getFormParent","sourceFormField","sourceIndex","sourceRow","moveFormField","createNewField","fieldType","nextRowId","addFormField","handleRowDrop","el","rowNode","siblingRowNode","siblingRow","handleElementDrop","isRow","unsetDropNotAllowed","validationError","cancel","isPalette","createDragulaInstance","direction","mirrorContainer","dragulaInstance","dragula","isContainer","cls","classList","contains","moves","handle","accepts","setDropNotAllowed","slideFactorX","slideFactorY","emit","isDragRow","fieldFormIndex","node","closest","setCursor","FieldDragPreview","className","COLUMNS_REGEX","ELEMENT_RESIZING_CLS","RESIZE_DRAG_PREVIEW_CLS","GRID_OFFSET_PX","FieldResizer","position","ref","startColumns","newColumns","onResize","dx","calculateNewColumns","errorMessage","columnNode","onResizeStart","getElementNode","getParent","blankPreview","getDragPreviewImage","createElement","appendChild","getColumnNode","startWidth","getBoundingClientRect","asColumns","setResizing","onResizeEnd","unsetResizing","totalWidth","oneColumn","Math","round","currentColumns","deltaX","deltaColumns","regex","domQuery","ContextPad","Empty","scrollIntoView","elementBounds","containerBounds","_container","top","bottom","isSelected","onClick","toggle","onRemove","parentField","removeFormField","onKeyPress","join","DeleteIcon","DebugColumns","debugColumnsConfig","Children","Row","Column","FormEditor","dragging","ariaLabel","formContainerRef","setSelection","handleSelectionChanged","setDrake","dragAndDropContext","destroy","onCreate","onDragEnd","unsetCursor","formRenderContext","formContext","errors","formId","_id","onSubmit","FormContext","FormRenderContext","FormComponent","PropertiesPanel","CreatePreview","handleCloned","original","findPaletteEntry","innerHTML","render","cloneNode","querySelectorAll","renderConfig","compact","App","formEditorContext","newState","__init__","renderer","__depends__","importModule","renderModule","FormLayouter","NOT_REGISTERED_ERROR","IS_REGISTERED_ERROR","EditorActions","_actions","_registerDefaultActions","editorActions","commandStack","zoomScroll","copyPaste","canvas","rules","keyboardMove","keyboardMoveSelection","undo","redo","selectedElements","paste","opts","stepZoom","zoom","allowed","elements","removableElements","removeElements","moveCanvas","moveSelection","accelerated","trigger","action","actions","_registerAction","isRegistered","unregister","getActions","message","FormEditorActions","EditorActionsModule","KEYS_COPY","KEYS_PASTE","KEYS_REDO","KEYS_UNDO","hasModifier","ctrlKey","metaKey","shiftKey","altKey","isCmd","isKey","indexOf","code","isShift","isCopy","isPaste","isUndo","isRedo","KEYDOWN_EVENT","KEYUP_EVENT","HANDLE_MODIFIER_ATTRIBUTE","Keyboard","_config","_keydownHandler","_keyupHandler","_fire","unbind","bindTo","_keyHandler","eventBusResult","_isEventIgnored","keyEvent","isInput","_isModifiedKeyIgnored","allowedModifiers","_getAllowedModifiers","modifierContainer","domClosest","_node","getAttribute","domEvent","getBinding","addListener","removeListener","domMatches","contentEditable","LOW_PRIORITY","KeyboardBindings","keyboard","registerBindings","keyboardBindings","FormEditorKeyboardBindings","KeyboardModule","arrayRemove","updatePath","updateRow","AddFormFieldHandler","_formEditor","execute","targetPath","_setState","revert","EditFormFieldHandler","oldProperties","property","MoveFormFieldHandler","sourcePath","arrayMove","RemoveFormFieldHandler","UpdateIdClaimHandler","claiming","unclaim","UpdateKeyClaimHandler","Modeling","_commandStack","registerHandlers","getHandlers","handler","registerHandler","isObject","claimId","unclaimId","claimKey","unclaimKey","CommandInterceptor","unwrapEvent","command","hook","handlerFn","unwrap","fullEvent","canExecute","createHook","preExecute","preExecuted","executed","postExecute","postExecuted","reverted","hookFn","FormLayoutUpdater","updateRowIds","updateLayout","clear","IdBehavior","KeyBehavior","ValidateBehavior","newValidate","minLength","maxLength","pattern","idBehavior","keyBehavior","validateBehavior","CommandStack","_handlerMap","_stack","_stackIdx","_currentExecution","dirty","_injector","_uid","_pushAction","_internalExecute","_popAction","_getHandler","_getUndoAction","_internalUndo","_getRedoAction","_setHandler","handlerCls","instantiate","canUndo","canRedo","_atomicDo","_markDirty","_revertedAction","qualifier","names","_createId","execution","atomic","_executedAction","baseAction","pop","uniqueBy","reverse","concat","stackIdx","behaviorModule","commandModule","formLayoutUpdater","Selection","_selection","newSelection","SelectionBehavior","selectionBehavior","SectionModuleBase","sectionKey","attachTo","detach","reset","PaletteModule","palette","PropertiesPanelModule","propertiesPanel","RenderInjector","registeredRenderers","attachRenderer","identifier","detachRenderer","r","EditorTemplating","isString","evaluate","template","FeelExpressionLanguage","ids","Ids","_onEvent","createFormContainer","setAttribute","exporter","_createInjector","_state","invoke","_emit","_detach","Promise","resolve","reject","saveSchema","exportSchema","schemaVersion","parentNode","removeChild","setProperty","additionalModules","modules","_getModules","createInjector","core","ModelingModule","DraggingModule","SelectionModule","ExpressionLanguageModule","MarkdownModule","RenderInjectionModule","exportDetails","cleanedSchema","createFormEditor","rest","then"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAIA,MAAM,GAAG,MAAM,CAAA;AAEnB,IAAIC,kBAAgB,GAAG,IAAI,CAAA;AAE3B,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAS,CAACF,KAAK,CAAA;;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;AACe,SAASG,QAAQ,GAAG;AAEjC;AACF;AACA;AACE,EAAA,IAAI,CAACC,UAAU,GAAG,EAAE,CAAA;;AAEpB;AACA;AACA,EAAA,IAAI,CAACC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAACC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACpD,CAAA;;AAGA;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,CAAEA,MAAM,CAAE,CAAA;AAE9C,EAAA,IAAIK,kBAAU,CAACJ,QAAQ,CAAC,EAAE;AACxBE,IAAAA,IAAI,GAAGD,QAAQ,CAAA;AACfA,IAAAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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GC,UAAU,CAAC,YAAY,CAAC,CAAA;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACo4B,UAAU,GAAGD,UAAU,CAAC,YAAY,CAAC,CAAA;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACq4B,WAAW,GAAGF,UAAU,CAAC,aAAa,CAAC,CAAA;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACi2B,OAAO,GAAGkC,UAAU,CAAC,SAAS,CAAC,CAAA;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACs4B,QAAQ,GAAGH,UAAU,CAAC,UAAU,CAAC,CAAA;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACu4B,WAAW,GAAGJ,UAAU,CAAC,aAAa,CAAC,CAAA;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACw4B,YAAY,GAAGL,UAAU,CAAC,cAAc,CAAC,CAAA;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACo2B,MAAM,GAAG+B,UAAU,CAAC,QAAQ,CAAC,CAAA;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAR,kBAAkB,CAAC33B,SAAS,CAACy4B,QAAQ,GAAGN,UAAU,CAAC,UAAU,CAAC,CAAA;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,CAACL,IAAI,EAAE;AAExB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,MAAMY,MAAM,GAAG,UAASr4B,MAAM,EAAEC,QAAQ,EAAEy3B,SAAS,EAAEC,MAAM,EAAEx3B,IAAI,EA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AM;AAAE3L,QAAAA,QAAQ,GAAG,EAAC;AAAE,OAAC,GAAGuH,UAAU,CAAA;MAEpC,IAAIvH,QAAQ,CAACgL,cAAc,EAAE;AAC3B,QAAA,MAAMiX,WAAW,GAAG;UAClB,GAAGjiB,QAAAA;SACJ,CAAA;QAED,OAAOiiB,WAAW,CAACC,SAAS,CAAA;QAC5B,OAAOD,WAAW,CAACE,SAAS,CAAA;QAC5B,OAAOF,WAAW,CAACG,OAAO,CAAA;AAE1B7a,QAAAA,UAAU,CAAC,UAAU,CAAC,GAAG0a,WAAW,CAAA;AACtC,OAAA;KACD,EAAE,IAAI,CAAC,CAAA;AACV,GAAA;AACF,CAAA;AAEAD,gBAAgB,CAACh1B,OAAO,GAAG,CAAE,UAAU,CAAE;;AC1BzC,qBAAe;AACb2rB,EAAAA,QAAQ,EAAE,CACR,YAAY,EACZ,aAAa,EACb,kBAAkB,CACnB;AACD0J,EAAAA,UAAU,EAAE,CAAE,MAAM,EAAEP,UAAU,CAAE;AAClCQ,EAAAA,WAAW,EAAE,CAAE,MAAM,EAAEP,WAAW,CAAE;AACpCQ,EAAAA,gBAAgB,EAAE,CAAE,MAAM,EAAEP,gBAAgB,CAAA;AAC9C,CAAC;;ACRD;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;;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,SAASQ,YAAY,CAACjtB,QAAQ,EAAEmX,QAAQ,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","x_google_ignoreList":[0,25,75,76,80,81,82,83,94,100,101]}