@bpmn-io/properties-panel 0.13.0 → 0.13.1
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.
- package/CHANGELOG.md +5 -0
- package/dist/index.esm.js +13 -479
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +12 -478
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../node_modules/diagram-js/lib/core/EventBus.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/hooks/useDescriptionContext.js","../src/hooks/useEvent.js","../src/hooks/useEventBuffer.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useShowErrorEvent.js","../src/components/Group.js","../src/PropertiesPanel.js","../src/components/DropdownButton.js","../src/components/HeaderButton.js","../src/components/entries/Collapsible.js","../src/components/ListItem.js","../src/components/ListGroup.js","../src/components/entries/Description.js","../src/components/entries/Checkbox.js","../src/components/entries/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/FeelIcon.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: djs.model.base) => string,\n * getTypeLabel: (element: djs.model.base) => string,\n * getElementIcon: (element: djs.model.base) => import('preact').Component,\n * getDocumentationRef: (element: djs.model.base) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nexport default function Header(props) {\n\n const {\n element,\n headerProvider\n } = props;\n\n const {\n getElementIcon,\n getDocumentationRef,\n getElementLabel,\n getTypeLabel,\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\n\n const ElementIcon = getElementIcon(element);\n\n return (<div class=\"bio-properties-panel-header\">\n <div class=\"bio-properties-panel-header-icon\">\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\n </div>\n <div class=\"bio-properties-panel-header-labels\">\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\n { label ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n <div class=\"bio-properties-panel-header-actions\">\n { documentationRef ?\n <a rel=\"noopener\" class=\"bio-properties-panel-header-link\" href={ documentationRef } target=\"_blank\">\n <ExternalLinkIcon />\n </a> :\n null\n }\n </div>\n </div>);\n}","import {\n createContext\n} from 'preact';\n\nconst DescriptionContext = createContext({\n description: {},\n getDescriptionForId: () => {}\n});\n\nexport default DescriptionContext;\n","import {\n isFunction,\n isArray,\n isNumber,\n bind,\n assign\n} from 'min-dash';\n\nvar FN_REF = '__fn';\n\nvar DEFAULT_PRIORITY = 1000;\n\nvar slice = Array.prototype.slice;\n\n/**\n * A general purpose event bus.\n *\n * This component is used to communicate across a diagram instance.\n * Other parts of a diagram can use it to listen to and broadcast events.\n *\n *\n * ## Registering for Events\n *\n * The event bus provides the {@link EventBus#on} and {@link EventBus#once}\n * methods to register for events. {@link EventBus#off} can be used to\n * remove event registrations. Listeners receive an instance of {@link Event}\n * as the first argument. It allows them to hook into the event execution.\n *\n * ```javascript\n *\n * // listen for event\n * eventBus.on('foo', function(event) {\n *\n * // access event type\n * event.type; // 'foo'\n *\n * // stop propagation to other listeners\n * event.stopPropagation();\n *\n * // prevent event default\n * event.preventDefault();\n * });\n *\n * // listen for event with custom payload\n * eventBus.on('bar', function(event, payload) {\n * console.log(payload);\n * });\n *\n * // listen for event returning value\n * eventBus.on('foobar', function(event) {\n *\n * // stop event propagation + prevent default\n * return false;\n *\n * // stop event propagation + return custom result\n * return {\n * complex: 'listening result'\n * };\n * });\n *\n *\n * // listen with custom priority (default=1000, higher is better)\n * eventBus.on('priorityfoo', 1500, function(event) {\n * console.log('invoked first!');\n * });\n *\n *\n * // listen for event and pass the context (`this`)\n * eventBus.on('foobar', function(event) {\n * this.foo();\n * }, this);\n * ```\n *\n *\n * ## Emitting Events\n *\n * Events can be emitted via the event bus using {@link EventBus#fire}.\n *\n * ```javascript\n *\n * // false indicates that the default action\n * // was prevented by listeners\n * if (eventBus.fire('foo') === false) {\n * console.log('default has been prevented!');\n * };\n *\n *\n * // custom args + return value listener\n * eventBus.on('sum', function(event, a, b) {\n * return a + b;\n * });\n *\n * // you can pass custom arguments + retrieve result values.\n * var sum = eventBus.fire('sum', 1, 2);\n * console.log(sum); // 3\n * ```\n */\nexport default function EventBus() {\n this._listeners = {};\n\n // cleanup on destroy on lowest priority to allow\n // message passing until the bitter end\n this.on('diagram.destroy', 1, this._destroy, this);\n}\n\n\n/**\n * Register an event listener for events with the given name.\n *\n * The callback will be invoked with `event, ...additionalArguments`\n * that have been passed to {@link EventBus#fire}.\n *\n * Returning false from a listener will prevent the events default action\n * (if any is specified). To stop an event from being processed further in\n * other listeners execute {@link Event#stopPropagation}.\n *\n * Returning anything but `undefined` from a listener will stop the listener propagation.\n *\n * @param {string|Array<string>} events\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.on = function(events, priority, callback, that) {\n\n events = isArray(events) ? events : [ events ];\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n var actualCallback = callback;\n\n if (that) {\n actualCallback = bind(callback, that);\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n actualCallback[FN_REF] = callback[FN_REF] || callback;\n }\n\n var self = this;\n\n events.forEach(function(e) {\n self._addListener(e, {\n priority: priority,\n callback: actualCallback,\n next: null\n });\n });\n};\n\n\n/**\n * Register an event listener that is executed only once.\n *\n * @param {string} event the event name to register for\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback the callback to execute\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.once = function(event, priority, callback, that) {\n var self = this;\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n function wrappedCallback() {\n wrappedCallback.__isTomb = true;\n\n var result = callback.apply(that, arguments);\n\n self.off(event, wrappedCallback);\n\n return result;\n }\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n wrappedCallback[FN_REF] = callback;\n\n this.on(event, priority, wrappedCallback);\n};\n\n\n/**\n * Removes event listeners by event and callback.\n *\n * If no callback is given, all listeners for a given event name are being removed.\n *\n * @param {string|Array<string>} events\n * @param {Function} [callback]\n */\nEventBus.prototype.off = function(events, callback) {\n\n events = isArray(events) ? events : [ events ];\n\n var self = this;\n\n events.forEach(function(event) {\n self._removeListener(event, callback);\n });\n\n};\n\n\n/**\n * Create an EventBus event.\n *\n * @param {Object} data\n *\n * @return {Object} event, recognized by the eventBus\n */\nEventBus.prototype.createEvent = function(data) {\n var event = new InternalEvent();\n\n event.init(data);\n\n return event;\n};\n\n\n/**\n * Fires a named event.\n *\n * @example\n *\n * // fire event by name\n * events.fire('foo');\n *\n * // fire event object with nested type\n * var event = { type: 'foo' };\n * events.fire(event);\n *\n * // fire event with explicit type\n * var event = { x: 10, y: 20 };\n * events.fire('element.moved', event);\n *\n * // pass additional arguments to the event\n * events.on('foo', function(event, bar) {\n * alert(bar);\n * });\n *\n * events.fire({ type: 'foo' }, 'I am bar!');\n *\n * @param {string} [name] the optional event name\n * @param {Object} [event] the event object\n * @param {...Object} additional arguments to be passed to the callback functions\n *\n * @return {boolean} the events return value, if specified or false if the\n * default action was prevented by listeners\n */\nEventBus.prototype.fire = function(type, data) {\n var event,\n firstListener,\n returnValue,\n args;\n\n args = slice.call(arguments);\n\n if (typeof type === 'object') {\n data = type;\n type = data.type;\n }\n\n if (!type) {\n throw new Error('no event type specified');\n }\n\n firstListener = this._listeners[type];\n\n if (!firstListener) {\n return;\n }\n\n // we make sure we fire instances of our home made\n // events here. We wrap them only once, though\n if (data instanceof InternalEvent) {\n\n // we are fine, we alread have an event\n event = data;\n } else {\n event = this.createEvent(data);\n }\n\n // ensure we pass the event as the first parameter\n args[0] = event;\n\n // original event type (in case we delegate)\n var originalType = event.type;\n\n // update event type before delegation\n if (type !== originalType) {\n event.type = type;\n }\n\n try {\n returnValue = this._invokeListeners(event, args, firstListener);\n } finally {\n\n // reset event type after delegation\n if (type !== originalType) {\n event.type = originalType;\n }\n }\n\n // set the return value to false if the event default\n // got prevented and no other return value exists\n if (returnValue === undefined && event.defaultPrevented) {\n returnValue = false;\n }\n\n return returnValue;\n};\n\n\nEventBus.prototype.handleError = function(error) {\n return this.fire('error', { error: error }) === false;\n};\n\n\nEventBus.prototype._destroy = function() {\n this._listeners = {};\n};\n\nEventBus.prototype._invokeListeners = function(event, args, listener) {\n\n var returnValue;\n\n while (listener) {\n\n // handle stopped propagation\n if (event.cancelBubble) {\n break;\n }\n\n returnValue = this._invokeListener(event, args, listener);\n\n listener = listener.next;\n }\n\n return returnValue;\n};\n\nEventBus.prototype._invokeListener = function(event, args, listener) {\n\n var returnValue;\n\n if (listener.callback.__isTomb) {\n return returnValue;\n }\n\n try {\n\n // returning false prevents the default action\n returnValue = invokeFunction(listener.callback, args);\n\n // stop propagation on return value\n if (returnValue !== undefined) {\n event.returnValue = returnValue;\n event.stopPropagation();\n }\n\n // prevent default on return false\n if (returnValue === false) {\n event.preventDefault();\n }\n } catch (error) {\n if (!this.handleError(error)) {\n console.error('unhandled error in event listener', error);\n\n throw error;\n }\n }\n\n return returnValue;\n};\n\n/*\n * Add new listener with a certain priority to the list\n * of listeners (for the given event).\n *\n * The semantics of listener registration / listener execution are\n * first register, first serve: New listeners will always be inserted\n * after existing listeners with the same priority.\n *\n * Example: Inserting two listeners with priority 1000 and 1300\n *\n * * before: [ 1500, 1500, 1000, 1000 ]\n * * after: [ 1500, 1500, (new=1300), 1000, 1000, (new=1000) ]\n *\n * @param {string} event\n * @param {Object} listener { priority, callback }\n */\nEventBus.prototype._addListener = function(event, newListener) {\n\n var listener = this._getListeners(event),\n previousListener;\n\n // no prior listeners\n if (!listener) {\n this._setListeners(event, newListener);\n\n return;\n }\n\n // ensure we order listeners by priority from\n // 0 (high) to n > 0 (low)\n while (listener) {\n\n if (listener.priority < newListener.priority) {\n\n newListener.next = listener;\n\n if (previousListener) {\n previousListener.next = newListener;\n } else {\n this._setListeners(event, newListener);\n }\n\n return;\n }\n\n previousListener = listener;\n listener = listener.next;\n }\n\n // add new listener to back\n previousListener.next = newListener;\n};\n\n\nEventBus.prototype._getListeners = function(name) {\n return this._listeners[name];\n};\n\nEventBus.prototype._setListeners = function(name, listener) {\n this._listeners[name] = listener;\n};\n\nEventBus.prototype._removeListener = function(event, callback) {\n\n var listener = this._getListeners(event),\n nextListener,\n previousListener,\n listenerCallback;\n\n if (!callback) {\n\n // clear listeners\n this._setListeners(event, null);\n\n return;\n }\n\n while (listener) {\n\n nextListener = listener.next;\n\n listenerCallback = listener.callback;\n\n if (listenerCallback === callback || listenerCallback[FN_REF] === callback) {\n if (previousListener) {\n previousListener.next = nextListener;\n } else {\n\n // new first listener\n this._setListeners(event, nextListener);\n }\n }\n\n previousListener = listener;\n listener = nextListener;\n }\n};\n\n/**\n * A event that is emitted via the event bus.\n */\nfunction InternalEvent() { }\n\nInternalEvent.prototype.stopPropagation = function() {\n this.cancelBubble = true;\n};\n\nInternalEvent.prototype.preventDefault = function() {\n this.defaultPrevented = true;\n};\n\nInternalEvent.prototype.init = function(data) {\n assign(this, data || {});\n};\n\n\n/**\n * Invoke function. Be fast...\n *\n * @param {Function} fn\n * @param {Array<Object>} args\n *\n * @return {Any}\n */\nfunction invokeFunction(fn, args) {\n return fn.apply(null, args);\n}\n","/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\n/**\n * @typedef {Function} <propertiesPanel.showError> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {string} context.message\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nimport { createContext } from 'preact';\n\nimport EventBus from 'diagram-js/lib/core/EventBus';\n\nconst eventBus = new EventBus();\n\nconst EventContext = createContext({ eventBus });\n\nexport default EventContext;\n","import {\n createContext\n} from 'preact';\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport {\n DescriptionContext\n} from '../context';\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 {djs.model.Base} element\n *\n * @returns {string}\n */\nexport function useDescriptionContext(id, element) {\n const {\n getDescriptionForId\n } = useContext(DescriptionContext);\n\n return getDescriptionForId(id, element);\n}\n","import { useContext, useEffect } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\nconst DEFAULT_PRIORITY = 1000;\n\n\n/**\n * Subscribe to an event.\n *\n * @param {string} event\n * @param {Function} callback\n * @param {number} [priority]\n *\n * @returns {import('preact').Ref}\n */\nexport function useEvent(event, callback, priority = DEFAULT_PRIORITY) {\n const { eventBus } = useContext(EventContext);\n\n useEffect(() => {\n eventBus.on(event, priority, callback);\n\n return () => eventBus.off(event, callback);\n }, [ event, eventBus, callback, priority ]);\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\nconst HIGH_PRIORITY = 10000;\n\n\n/**\n * Buffer events and re-fire during passive effect phase.\n *\n * @param {string[]} bufferedEvents\n * @param {Object} [eventBus]\n */\nexport function useEventBuffer(bufferedEvents, eventBus) {\n const buffer = useRef([]),\n buffering = useRef(true);\n\n const createCallback = (event) => (data) => {\n if (buffering.current === true) {\n buffer.current.unshift([ event, data ]);\n }\n };\n\n // (1) buffer events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n const listeners = bufferedEvents.map((event) => {\n return [ event, createCallback(event) ];\n });\n\n listeners.forEach(([ event, callback ]) => {\n eventBus.on(event, HIGH_PRIORITY, callback);\n });\n\n return () => {\n listeners.forEach(([ event, callback ]) => {\n eventBus.off(event, callback);\n });\n };\n }, [ bufferedEvents, eventBus ]);\n\n // (2) re-fire events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n buffering.current = false;\n\n while (buffer.current.length) {\n const [ event, data ] = buffer.current.pop();\n\n eventBus.fire(event, data);\n }\n\n buffering.current = true;\n });\n}","import { useMemo } from 'preact/hooks';\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 */\nexport function useKeyFactory(dependencies = []) {\n const map = useMemo(() => new Map(), dependencies);\n\n const getKey = el => {\n let key = map.get(el);\n\n if (!key) {\n key = Math.random().toString().slice(-KEY_LENGTH);\n map.set(el, key);\n }\n\n return key;\n };\n\n return getKey;\n}\n","import {\n useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\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 */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\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\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {Function} show\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(show) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const [ focus, setFocus ] = useState(false);\n\n const onShowEntry = useCallback((event) => {\n if (show(event)) {\n if (isFunction(onShow)) {\n onShow();\n }\n\n if (event.focus && !focus) {\n setFocus(true);\n }\n }\n }, [ show ]);\n\n useEffect(() => {\n if (focus && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n setFocus(false);\n }\n }, [ focus ]);\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showError`. On `propertiesPanel.showError` set\n * temporary error. Fire `propertiesPanel.showEntry` for temporary error to be\n * visible. Unset error on `propertiesPanel.updated`.\n *\n * @param {Function} show\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowErrorEvent(show) {\n const { eventBus } = useContext(EventContext);\n\n const [ temporaryError, setTemporaryError ] = useState(null);\n\n const onPropertiesPanelUpdated = useCallback(() => setTemporaryError(null), []);\n\n useEvent('propertiesPanel.updated', onPropertiesPanelUpdated);\n\n const onShowError = useCallback((event) => {\n setTemporaryError(null);\n\n if (show(event)) {\n eventBus.fire('propertiesPanel.showEntry', event);\n\n setTemporaryError(event.message);\n }\n }, [ show ]);\n\n useEvent('propertiesPanel.showError', onShowError);\n\n return temporaryError;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n isFunction\n} from 'min-dash';\n\nimport {\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { ArrowIcon } from './icons';\n\n/**\n * @param {import('../PropertiesPanel').GroupDefinition} props\n */\nexport default function Group(props) {\n const {\n element,\n entries = [],\n id,\n label,\n shouldOpen = false,\n } = props;\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n shouldOpen\n );\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const toggleOpen = () => setOpen(!open);\n\n const [ edited, setEdited ] = 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\n const entryNode = domQuery(`[data-entry-id=\"${id}\"]`);\n\n if (!isFunction(isEdited) || !entryNode) {\n return false;\n }\n\n const inputNode = domQuery('.bio-properties-panel-input', entryNode);\n\n return isEdited(inputNode);\n });\n\n setEdited(hasOneEditedEntry);\n }, [ entries ]);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open? 'open' : ''\n ) } onClick={ toggleOpen }>\n <div title={ label } class=\"bio-properties-panel-group-header-title\">\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n edited && <DataMarker />\n }\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-group-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","import {\n useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n set\n} from 'min-dash';\n\nimport classnames from 'classnames';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport {\n DescriptionContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEventBuffer } from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\nconst bufferedEvents = [\n 'propertiesPanel.showEntry',\n 'propertiesPanel.showError'\n];\n\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 {djs.model.base} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\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} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\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 */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\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 useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = createDescriptionContext(descriptionConfig);\n\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n useEventBuffer(bufferedEvents, eventBus);\n\n const eventContext = {\n eventBus\n };\n\n const propertiesPanelContext = {\n element\n };\n\n if (!element) {\n return <div class=\"bio-properties-panel-placeholder\">Select an element to edit its properties.</div>;\n }\n\n return (\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <div\n class={ classnames(\n 'bio-properties-panel',\n layout.open ? 'open' : '')\n }>\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<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 >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\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\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return <Component\n { ...entry }\n element={ element }\n key={ id } />;\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function 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 = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useLayoutState,\n usePrevious\n} from '../hooks';\n\nimport ListItem from './ListItem';\n\nimport {\n ArrowIcon,\n CreateIcon\n} from './icons';\n\nimport { PropertiesPanelContext } from '../context';\n\nconst noop = () => {};\n\n/**\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\n */\nexport default function ListGroup(props) {\n const {\n add,\n element,\n id,\n items,\n label,\n shouldOpen = true,\n shouldSort = true\n } = props;\n\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const [ ordering, setOrdering ] = useState([]);\n const [ newItemAdded, setNewItemAdded ] = useState(false);\n\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\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 if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open and configured\n if (!open && shouldOpen) {\n toggleOpen();\n\n // if I opened and I should sort, then sort items\n if (shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\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\n setOrdering(newOrdering);\n setNewItemAdded(true);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\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\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : ''\n ) }\n onClick={ hasItems ? toggleOpen : noop }>\n <div\n title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n add\n ? (\n <button\n title=\"Create new list item\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-add-entry\"\n onClick={ add }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n : null\n }\n {\n hasItems\n ? (\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n : null\n }\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-list',\n open && hasItems ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n {\n ordering.map((o, index) => {\n const item = getItem(items, o);\n\n if (!item) {\n return;\n }\n\n const { id } = item;\n\n // if item was added, open first or last item based on ordering\n const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1);\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\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}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n useDescriptionContext\n} from '../../hooks';\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.forId - id of the entry the description is used for\n * @param {String} props.value\n */\nexport default function Description(props) {\n const {\n element,\n forId,\n value\n } = props;\n\n const contextDescription = useDescriptionContext(forId, element);\n\n const description = value || contextDescription;\n\n if (description) {\n return (\n <div class=\"bio-properties-panel-description\">\n { description }\n </div>\n );\n }\n}\n","import {\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nimport Description from './Description';\n\nconst noop = () => {};\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n show = noop\n } = props;\n\n const handleChange = ({ target }) => {\n onChange(target.checked);\n };\n\n const ref = useShowEntryEvent(show);\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\n disabled={ disabled } />\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n </div>\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 {boolean} [props.disabled]\n */\nexport default function CheckboxEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n disabled,\n show = noop\n } = props;\n\n const value = getValue(element);\n\n const error = useShowErrorEvent(show);\n\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\n <Checkbox\n disabled={ disabled }\n id={ id }\n label={ label }\n onChange={ setValue }\n show={ show }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useKeyFactory,\n usePrevious\n} from '../../hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n CreateIcon,\n DeleteIcon\n} from '../icons';\n\n/**\n * Entry for handling lists represented as nested entries.\n *\n * @template Item\n * @param {object} props\n * @param {string} props.id\n * @param {*} props.element\n * @param {Function} props.onAdd\n * @param {import('preact').Component} props.component\n * @param {string} [props.label='<empty>']\n * @param {Function} [props.onRemove]\n * @param {Item[]} [props.items]\n * @param {boolean} [props.open]\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\n * @param {(a: Item, b: Item) => -1 | 0 | 1} [props.compareFn]\n * @returns\n */\nexport default function 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 } = props;\n\n const [ open, setOpen ] = useState(!!shouldOpen);\n\n const hasItems = !!items.length;\n const toggleOpen = () => hasItems && setOpen(!open);\n\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\n const newItems = useNewItems(items, elementChanged);\n\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\n if (!open) {\n setOpen(true);\n }\n }\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-entry',\n 'bio-properties-panel-list-entry',\n hasItems ? '' : 'empty',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-list-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label }\n class={ classnames(\n 'bio-properties-panel-list-entry-header-title',\n open && 'open'\n ) }>\n { label }\n </div>\n <div\n class=\"bio-properties-panel-list-entry-header-buttons\"\n >\n <button\n title=\"Create new list item\"\n onClick={ addItem }\n class=\"bio-properties-panel-add-entry\"\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n {\n hasItems && (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n }\n {\n hasItems && (\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n }\n </div>\n </div>\n {\n hasItems && (\n <ItemsList\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 }\n </div>\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 } = props;\n\n const getKey = useKeyFactory();\n\n const newItem = newItems[0];\n\n useEffect(() => {\n if (newItem && autoFocusEntry) {\n\n // (0) select the parent entry (containing all list items)\n const entry = domQuery(`[data-entry-id=\"${id}\"]`);\n\n // (1) select the first input or a custom element to be focussed\n const selector = typeof(autoFocusEntry) === 'boolean' ?\n '.bio-properties-panel-input' :\n autoFocusEntry;\n const focusableInput = domQuery(selector, entry);\n\n // (2) set focus\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ newItem, autoFocusEntry, id ]);\n\n return (\n <ol class={ classnames(\n 'bio-properties-panel-list-entry-items',\n open ? 'open' : ''\n ) }>\n {\n items.map((item, index) => {\n const key = getKey(item);\n\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\n <Component\n element={ element }\n id={ id }\n index={ index }\n item={ item }\n open={ item === newItem } />\n {\n onRemove && (\n <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 ><DeleteIcon /></button>\n )\n }\n </li>);\n })\n }\n </ol>);\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\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\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\n return itemsRef.current;\n}\n\nfunction useNewItems(items = [], shouldReset) {\n const previousItems = usePrevious(items.slice()) || [];\n\n if (shouldReset) {\n return [];\n }\n\n return previousItems ? items.filter(item => !previousItems.includes(item)) : [];\n}\n","import {\n useMemo\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction NumberField(props) {\n\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = ''\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(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 step={ step }\n value={ value } />\n </div>\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 {String} props.step\n */\nexport default function 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 } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n label={ label }\n onInput={ setValue }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\n\nimport {\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nimport Description from './Description';\n\nconst noop = () => {};\n\n/**\n * @typedef { { value: string, label: string, disabled: boolean } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value,\n disabled,\n show = noop\n } = props;\n\n const ref = useShowEntryEvent(show);\n\n const handleChange = ({ target }) => {\n onChange(target.value);\n };\n\n return (\n <div class=\"bio-properties-panel-select\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <select\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n value={ value }\n disabled={ disabled }\n >\n {\n options.map((option, idx) => {\n return (\n <option\n key={ idx }\n value={ option.value }\n disabled={ option.disabled }>\n { option.label }\n </option>\n );\n })\n }\n </select>\n </div>\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.getOptions\n * @param {boolean} [props.disabled]\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n show = noop\n } = props;\n\n const value = getValue(element);\n const options = getOptions(element);\n\n const error = useShowErrorEvent(show);\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Select\n id={ id }\n label={ label }\n value={ value }\n onChange={ setValue }\n options={ options }\n disabled={ disabled }\n show={ show } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n useMemo\n} from 'preact/hooks';\n\n/**\n * @param {Object} props\n * @param {Function} props.debounce\n * @param {Boolean} [props.disabled]\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {Function} [props.onBlur]\n * @param {Function} [props.onFocus]\n * @param {Function} props.setValue\n */\nexport default function Simple(props) {\n const {\n debounce,\n disabled,\n element,\n getValue,\n id,\n onBlur,\n onFocus,\n setValue\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const value = getValue(element);\n\n return (\n <div class=\"bio-properties-panel-simple\">\n <input\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 aria-label={ value || '<empty>' }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import { FeelOptionalIcon, FeelRequiredIcon } from '../icons';\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n label,\n feel = false,\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a FEEL expression';\n\n return (\n <i\n class=\"bio-properties-panel-feel-icon\"\n title={\n label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </i>\n );\n}","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useMemo\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n rows = 2,\n debounce,\n feel,\n onInput,\n value = '',\n disabled,\n monospace\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n { label }\n {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <textarea\n id={ prefixId(id) }\n name={ id }\n spellCheck=\"false\"\n class={ classnames(\n 'bio-properties-panel-input',\n monospace ? 'bio-properties-panel-input-monospace' : '')\n }\n onInput={ handleInput }\n onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n rows={ rows }\n value={ value }\n disabled={ disabled } />\n </div>\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 {number} props.rows\n * @param {boolean} props.monospace\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n feel,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <TextArea\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n feel={ feel }\n disabled={ disabled } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n usePrevious,\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nconst noop = () => {};\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n feel = false,\n value = '',\n show = noop\n } = props;\n\n const ref = useShowEntryEvent(show);\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n { label }\n {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <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={ props.onFocus }\n onBlur={ props.onBlur }\n value={ value || '' } />\n </div>\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.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n validate,\n show = noop\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n\n setValidationError(newValidationError);\n };\n\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\n }\n\n const temporaryError = useShowErrorEvent(show);\n\n const error = temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Textfield\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n label={ label }\n onInput={ onInput }\n show={ show }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import Description from './Description';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel\n } = props;\n\n const handleInput = async () => {\n onInput(!value);\n };\n\n return (\n <div class=\"bio-properties-panel-toggle-switch\">\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n name={ id }\n onInput={ handleInput }\n checked={ value } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p>\n </div>\n </div>\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 {Function} props.getValue\n * @param {Function} props.setValue\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n getValue,\n setValue\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\n <ToggleSwitch id={ id } label={ label } value={ value } onInput={ setValue } switcherLabel={ switcherLabel } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n debounce,\n isNumber\n} from 'min-dash';\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nexport default function debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n\n var debounceTime =\n isNumber(debounceDelay) ?\n debounceDelay :\n DEFAULT_DEBOUNCE_TIME;\n\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\n\ndebounceInput.$inject = [ 'config.debounceInput' ];\n","import debounceInput from './debounceInput';\n\nexport default {\n debounceInput: [ 'factory', debounceInput ]\n};\n"],"names":["Header","props","element","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","label","type","documentationRef","ElementIcon","_jsxs","_jsx","DescriptionContext","createContext","description","getDescriptionForId","FN_REF","DEFAULT_PRIORITY","slice","Array","prototype","EventBus","_listeners","on","_destroy","events","priority","callback","that","isArray","isFunction","isNumber","Error","actualCallback","bind","self","forEach","e","_addListener","next","once","event","wrappedCallback","__isTomb","result","apply","arguments","off","_removeListener","createEvent","data","InternalEvent","init","fire","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","eventBus","EventContext","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useDescriptionContext","id","useContext","useEvent","useEffect","HIGH_PRIORITY","useEventBuffer","bufferedEvents","buffer","useRef","buffering","createCallback","current","unshift","listeners","map","length","pop","KEY_LENGTH","useKeyFactory","dependencies","useMemo","Map","getKey","el","key","get","Math","random","toString","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","show","onShow","PropertiesPanelContext","focus","setFocus","onShowEntry","useCallback","select","useShowErrorEvent","temporaryError","setTemporaryError","onPropertiesPanelUpdated","onShowError","message","Group","entries","shouldOpen","open","setOpen","toggleOpen","edited","setEdited","hasOneEditedEntry","find","entry","isEdited","entryNode","domQuery","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","layoutContext","createDescriptionContext","descriptionContext","eventContext","group","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","contains","target","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","includes","push","newOrdering","filter","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","handleChange","checked","prefixId","CheckboxEntry","getValue","setValue","node","List","onAdd","onRemove","compareFn","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","debounce","max","min","onInput","step","handleInput","validity","valid","parseFloat","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","classNames","Simple","onBlur","onFocus","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","validate","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","previousValue","newValidationError","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","debounceTime","$inject"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBe,SAASA,MAAT,CAAgBC,KAAhB,EAAuB;AAEpC,QAAM;AACJC,IAAAA,OADI;AAEJC,IAAAA;AAFI,MAGFF,KAHJ;AAKA,QAAM;AACJG,IAAAA,cADI;AAEJC,IAAAA,mBAFI;AAGJC,IAAAA,eAHI;AAIJC,IAAAA;AAJI,MAKFJ,cALJ;AAOA,QAAMK,KAAK,GAAGF,eAAe,CAACJ,OAAD,CAA7B;AACA,QAAMO,IAAI,GAAGF,YAAY,CAACL,OAAD,CAAzB;AACA,QAAMQ,gBAAgB,GAAGL,mBAAmB,IAAIA,mBAAmB,CAACH,OAAD,CAAnE;AAEA,QAAMS,WAAW,GAAGP,cAAc,CAACF,OAAD,CAAlC;AAEA,SAAQU;AAAK,IAAA,KAAK,EAAC,6BAAX;AAAA,eACNC;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA,gBACIF,WAAW,IAAIE,eAAC,WAAD;AAAa,QAAA,KAAK,EAAC,IAAnB;AAAwB,QAAA,MAAM,EAAC,IAA/B;AAAoC,QAAA,OAAO,EAAC;AAA5C;AADnB,MADM,EAIND;AAAK,MAAA,KAAK,EAAC,oCAAX;AAAA,iBACEC;AAAK,QAAA,KAAK,EAAGJ,IAAb;AAAoB,QAAA,KAAK,EAAC,kCAA1B;AAAA,kBAA+DA;AAA/D,QADF,EAEID,KAAK,GACLK;AAAK,QAAA,KAAK,EAAGL,KAAb;AAAqB,QAAA,KAAK,EAAC,mCAA3B;AAAA,kBAAiEA;AAAjE,QADK,GAEL,IAJJ;AAAA,MAJM,EAWNK;AAAK,MAAA,KAAK,EAAC,qCAAX;AAAA,gBACIH,gBAAgB,GAChBG;AAAG,QAAA,GAAG,EAAC,UAAP;AAAkB,QAAA,KAAK,EAAC,kCAAxB;AAA2D,QAAA,IAAI,EAAGH,gBAAlE;AAAqF,QAAA,MAAM,EAAC,QAA5F;AAAA,kBACEG,eAAC,gBAAD;AADF,QADgB,GAIhB;AALJ,MAXM;AAAA,IAAR;AAoBD;;MCpDKC,kBAAkB,GAAGC,oBAAa,CAAC;AACvCC,EAAAA,WAAW,EAAE,EAD0B;AAEvCC,EAAAA,mBAAmB,EAAE,MAAM;AAFY,CAAD;;ACIxC,IAAIC,MAAM,GAAG,MAAb;AAEA,IAAIC,kBAAgB,GAAG,IAAvB;AAEA,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAN,CAAgBF,KAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASG,QAAT,GAAoB;AACjC,OAAKC,UAAL,GAAkB,EAAlB,CADiC;AAIjC;;AACA,OAAKC,EAAL,CAAQ,iBAAR,EAA2B,CAA3B,EAA8B,KAAKC,QAAnC,EAA6C,IAA7C;AACD;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAH,QAAQ,CAACD,SAAT,CAAmBG,EAAnB,GAAwB,UAASE,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,EAAqCC,IAArC,EAA2C;AAEjEH,EAAAA,MAAM,GAAGI,eAAO,CAACJ,MAAD,CAAP,GAAkBA,MAAlB,GAA2B,CAAEA,MAAF,CAApC;;AAEA,MAAIK,kBAAU,CAACJ,QAAD,CAAd,EAA0B;AACxBE,IAAAA,IAAI,GAAGD,QAAP;AACAA,IAAAA,QAAQ,GAAGD,QAAX;AACAA,IAAAA,QAAQ,GAAGT,kBAAX;AACD;;AAED,MAAI,CAACc,gBAAQ,CAACL,QAAD,CAAb,EAAyB;AACvB,UAAM,IAAIM,KAAJ,CAAU,2BAAV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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/hooks/useDescriptionContext.js","../src/hooks/useEvent.js","../src/hooks/useEventBuffer.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useShowErrorEvent.js","../src/components/Group.js","../src/PropertiesPanel.js","../src/components/DropdownButton.js","../src/components/HeaderButton.js","../src/components/entries/Collapsible.js","../src/components/ListItem.js","../src/components/ListGroup.js","../src/components/entries/Description.js","../src/components/entries/Checkbox.js","../src/components/entries/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/FeelIcon.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: djs.model.base) => string,\n * getTypeLabel: (element: djs.model.base) => string,\n * getElementIcon: (element: djs.model.base) => import('preact').Component,\n * getDocumentationRef: (element: djs.model.base) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nexport default function Header(props) {\n\n const {\n element,\n headerProvider\n } = props;\n\n const {\n getElementIcon,\n getDocumentationRef,\n getElementLabel,\n getTypeLabel,\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\n\n const ElementIcon = getElementIcon(element);\n\n return (<div class=\"bio-properties-panel-header\">\n <div class=\"bio-properties-panel-header-icon\">\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\n </div>\n <div class=\"bio-properties-panel-header-labels\">\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\n { label ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n <div class=\"bio-properties-panel-header-actions\">\n { documentationRef ?\n <a\n rel=\"noopener\"\n class=\"bio-properties-panel-header-link\"\n href={ documentationRef }\n title=\"Open documentation\"\n target=\"_blank\">\n <ExternalLinkIcon />\n </a> :\n null\n }\n </div>\n </div>);\n}","import {\n createContext\n} from 'preact';\n\nconst DescriptionContext = createContext({\n description: {},\n getDescriptionForId: () => {}\n});\n\nexport default DescriptionContext;\n","/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\n/**\n * @typedef {Function} <propertiesPanel.showError> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {string} context.message\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nimport { createContext } from 'preact';\n\nconst EventContext = createContext({ eventBus: null });\n\nexport default EventContext;\n","import {\n createContext\n} from 'preact';\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport {\n DescriptionContext\n} from '../context';\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 {djs.model.Base} element\n *\n * @returns {string}\n */\nexport function useDescriptionContext(id, element) {\n const {\n getDescriptionForId\n } = useContext(DescriptionContext);\n\n return getDescriptionForId(id, element);\n}\n","import { useContext, useEffect } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\nconst DEFAULT_PRIORITY = 1000;\n\n\n/**\n * Subscribe to an event.\n *\n * @param {string} event\n * @param {Function} callback\n * @param {number} [priority]\n *\n * @returns {import('preact').Ref}\n */\nexport function useEvent(event, callback, priority = DEFAULT_PRIORITY) {\n const { eventBus } = useContext(EventContext);\n\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n eventBus.on(event, priority, callback);\n\n return () => eventBus.off(event, callback);\n }, [ callback, event, eventBus, priority ]);\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\nconst HIGH_PRIORITY = 10000;\n\n\n/**\n * Buffer events and re-fire during passive effect phase.\n *\n * @param {string[]} bufferedEvents\n * @param {Object} [eventBus]\n */\nexport function useEventBuffer(bufferedEvents, eventBus) {\n const buffer = useRef([]),\n buffering = useRef(true);\n\n const createCallback = (event) => (data) => {\n if (buffering.current === true) {\n buffer.current.unshift([ event, data ]);\n }\n };\n\n // (1) buffer events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n const listeners = bufferedEvents.map((event) => {\n return [ event, createCallback(event) ];\n });\n\n listeners.forEach(([ event, callback ]) => {\n eventBus.on(event, HIGH_PRIORITY, callback);\n });\n\n return () => {\n listeners.forEach(([ event, callback ]) => {\n eventBus.off(event, callback);\n });\n };\n }, [ bufferedEvents, eventBus ]);\n\n // (2) re-fire events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n buffering.current = false;\n\n while (buffer.current.length) {\n const [ event, data ] = buffer.current.pop();\n\n eventBus.fire(event, data);\n }\n\n buffering.current = true;\n });\n}","import { useMemo } from 'preact/hooks';\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 */\nexport function useKeyFactory(dependencies = []) {\n const map = useMemo(() => new Map(), dependencies);\n\n const getKey = el => {\n let key = map.get(el);\n\n if (!key) {\n key = Math.random().toString().slice(-KEY_LENGTH);\n map.set(el, key);\n }\n\n return key;\n };\n\n return getKey;\n}\n","import {\n useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\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 */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\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\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {Function} show\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(show) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const [ focus, setFocus ] = useState(false);\n\n const onShowEntry = useCallback((event) => {\n if (show(event)) {\n if (isFunction(onShow)) {\n onShow();\n }\n\n if (event.focus && !focus) {\n setFocus(true);\n }\n }\n }, [ show ]);\n\n useEffect(() => {\n if (focus && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n setFocus(false);\n }\n }, [ focus ]);\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showError`. On `propertiesPanel.showError` set\n * temporary error. Fire `propertiesPanel.showEntry` for temporary error to be\n * visible. Unset error on `propertiesPanel.updated`.\n *\n * @param {Function} show\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowErrorEvent(show) {\n const { eventBus } = useContext(EventContext);\n\n const [ temporaryError, setTemporaryError ] = useState(null);\n\n const onPropertiesPanelUpdated = useCallback(() => setTemporaryError(null), []);\n\n useEvent('propertiesPanel.updated', onPropertiesPanelUpdated);\n\n const onShowError = useCallback((event) => {\n setTemporaryError(null);\n\n if (show(event)) {\n if (eventBus) {\n eventBus.fire('propertiesPanel.showEntry', event);\n }\n\n setTemporaryError(event.message);\n }\n }, [ show ]);\n\n useEvent('propertiesPanel.showError', onShowError);\n\n return temporaryError;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n isFunction\n} from 'min-dash';\n\nimport {\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { ArrowIcon } from './icons';\n\n/**\n * @param {import('../PropertiesPanel').GroupDefinition} props\n */\nexport default function Group(props) {\n const {\n element,\n entries = [],\n id,\n label,\n shouldOpen = false,\n } = props;\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n shouldOpen\n );\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const toggleOpen = () => setOpen(!open);\n\n const [ edited, setEdited ] = 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\n const entryNode = domQuery(`[data-entry-id=\"${id}\"]`);\n\n if (!isFunction(isEdited) || !entryNode) {\n return false;\n }\n\n const inputNode = domQuery('.bio-properties-panel-input', entryNode);\n\n return isEdited(inputNode);\n });\n\n setEdited(hasOneEditedEntry);\n }, [ entries ]);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open? 'open' : ''\n ) } onClick={ toggleOpen }>\n <div title={ label } class=\"bio-properties-panel-group-header-title\">\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n edited && <DataMarker />\n }\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-group-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","import {\n useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n set\n} from 'min-dash';\n\nimport classnames from 'classnames';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport {\n DescriptionContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEventBuffer } from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\nconst bufferedEvents = [\n 'propertiesPanel.showEntry',\n 'propertiesPanel.showError'\n];\n\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 {djs.model.base} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\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} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\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 */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\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 useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = createDescriptionContext(descriptionConfig);\n\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n useEventBuffer(bufferedEvents, eventBus);\n\n const eventContext = {\n eventBus\n };\n\n const propertiesPanelContext = {\n element\n };\n\n if (!element) {\n return <div class=\"bio-properties-panel-placeholder\">Select an element to edit its properties.</div>;\n }\n\n return (\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <div\n class={ classnames(\n 'bio-properties-panel',\n layout.open ? 'open' : '')\n }>\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<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 >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\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\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return <Component\n { ...entry }\n element={ element }\n key={ id } />;\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function 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 = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useLayoutState,\n usePrevious\n} from '../hooks';\n\nimport ListItem from './ListItem';\n\nimport {\n ArrowIcon,\n CreateIcon\n} from './icons';\n\nimport { PropertiesPanelContext } from '../context';\n\nconst noop = () => {};\n\n/**\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\n */\nexport default function ListGroup(props) {\n const {\n add,\n element,\n id,\n items,\n label,\n shouldOpen = true,\n shouldSort = true\n } = props;\n\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const [ ordering, setOrdering ] = useState([]);\n const [ newItemAdded, setNewItemAdded ] = useState(false);\n\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\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 if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open and configured\n if (!open && shouldOpen) {\n toggleOpen();\n\n // if I opened and I should sort, then sort items\n if (shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\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\n setOrdering(newOrdering);\n setNewItemAdded(true);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\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\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : ''\n ) }\n onClick={ hasItems ? toggleOpen : noop }>\n <div\n title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n add\n ? (\n <button\n title=\"Create new list item\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-add-entry\"\n onClick={ add }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n : null\n }\n {\n hasItems\n ? (\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n : null\n }\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-list',\n open && hasItems ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n {\n ordering.map((o, index) => {\n const item = getItem(items, o);\n\n if (!item) {\n return;\n }\n\n const { id } = item;\n\n // if item was added, open first or last item based on ordering\n const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1);\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\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}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n useDescriptionContext\n} from '../../hooks';\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.forId - id of the entry the description is used for\n * @param {String} props.value\n */\nexport default function Description(props) {\n const {\n element,\n forId,\n value\n } = props;\n\n const contextDescription = useDescriptionContext(forId, element);\n\n const description = value || contextDescription;\n\n if (description) {\n return (\n <div class=\"bio-properties-panel-description\">\n { description }\n </div>\n );\n }\n}\n","import {\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nimport Description from './Description';\n\nconst noop = () => {};\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n show = noop\n } = props;\n\n const handleChange = ({ target }) => {\n onChange(target.checked);\n };\n\n const ref = useShowEntryEvent(show);\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\n disabled={ disabled } />\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n </div>\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 {boolean} [props.disabled]\n */\nexport default function CheckboxEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n disabled,\n show = noop\n } = props;\n\n const value = getValue(element);\n\n const error = useShowErrorEvent(show);\n\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\n <Checkbox\n disabled={ disabled }\n id={ id }\n label={ label }\n onChange={ setValue }\n show={ show }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useKeyFactory,\n usePrevious\n} from '../../hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n CreateIcon,\n DeleteIcon\n} from '../icons';\n\n/**\n * Entry for handling lists represented as nested entries.\n *\n * @template Item\n * @param {object} props\n * @param {string} props.id\n * @param {*} props.element\n * @param {Function} props.onAdd\n * @param {import('preact').Component} props.component\n * @param {string} [props.label='<empty>']\n * @param {Function} [props.onRemove]\n * @param {Item[]} [props.items]\n * @param {boolean} [props.open]\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\n * @param {(a: Item, b: Item) => -1 | 0 | 1} [props.compareFn]\n * @returns\n */\nexport default function 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 } = props;\n\n const [ open, setOpen ] = useState(!!shouldOpen);\n\n const hasItems = !!items.length;\n const toggleOpen = () => hasItems && setOpen(!open);\n\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\n const newItems = useNewItems(items, elementChanged);\n\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\n if (!open) {\n setOpen(true);\n }\n }\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-entry',\n 'bio-properties-panel-list-entry',\n hasItems ? '' : 'empty',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-list-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label }\n class={ classnames(\n 'bio-properties-panel-list-entry-header-title',\n open && 'open'\n ) }>\n { label }\n </div>\n <div\n class=\"bio-properties-panel-list-entry-header-buttons\"\n >\n <button\n title=\"Create new list item\"\n onClick={ addItem }\n class=\"bio-properties-panel-add-entry\"\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n {\n hasItems && (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n }\n {\n hasItems && (\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n }\n </div>\n </div>\n {\n hasItems && (\n <ItemsList\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 }\n </div>\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 } = props;\n\n const getKey = useKeyFactory();\n\n const newItem = newItems[0];\n\n useEffect(() => {\n if (newItem && autoFocusEntry) {\n\n // (0) select the parent entry (containing all list items)\n const entry = domQuery(`[data-entry-id=\"${id}\"]`);\n\n // (1) select the first input or a custom element to be focussed\n const selector = typeof(autoFocusEntry) === 'boolean' ?\n '.bio-properties-panel-input' :\n autoFocusEntry;\n const focusableInput = domQuery(selector, entry);\n\n // (2) set focus\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ newItem, autoFocusEntry, id ]);\n\n return (\n <ol class={ classnames(\n 'bio-properties-panel-list-entry-items',\n open ? 'open' : ''\n ) }>\n {\n items.map((item, index) => {\n const key = getKey(item);\n\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\n <Component\n element={ element }\n id={ id }\n index={ index }\n item={ item }\n open={ item === newItem } />\n {\n onRemove && (\n <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 ><DeleteIcon /></button>\n )\n }\n </li>);\n })\n }\n </ol>);\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\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\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\n return itemsRef.current;\n}\n\nfunction useNewItems(items = [], shouldReset) {\n const previousItems = usePrevious(items.slice()) || [];\n\n if (shouldReset) {\n return [];\n }\n\n return previousItems ? items.filter(item => !previousItems.includes(item)) : [];\n}\n","import {\n useMemo\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction NumberField(props) {\n\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = ''\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(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 step={ step }\n value={ value } />\n </div>\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 {String} props.step\n */\nexport default function 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 } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n label={ label }\n onInput={ setValue }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\n\nimport {\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nimport Description from './Description';\n\nconst noop = () => {};\n\n/**\n * @typedef { { value: string, label: string, disabled: boolean } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value,\n disabled,\n show = noop\n } = props;\n\n const ref = useShowEntryEvent(show);\n\n const handleChange = ({ target }) => {\n onChange(target.value);\n };\n\n return (\n <div class=\"bio-properties-panel-select\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <select\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n value={ value }\n disabled={ disabled }\n >\n {\n options.map((option, idx) => {\n return (\n <option\n key={ idx }\n value={ option.value }\n disabled={ option.disabled }>\n { option.label }\n </option>\n );\n })\n }\n </select>\n </div>\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.getOptions\n * @param {boolean} [props.disabled]\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n show = noop\n } = props;\n\n const value = getValue(element);\n const options = getOptions(element);\n\n const error = useShowErrorEvent(show);\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Select\n id={ id }\n label={ label }\n value={ value }\n onChange={ setValue }\n options={ options }\n disabled={ disabled }\n show={ show } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n useMemo\n} from 'preact/hooks';\n\n/**\n * @param {Object} props\n * @param {Function} props.debounce\n * @param {Boolean} [props.disabled]\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {Function} [props.onBlur]\n * @param {Function} [props.onFocus]\n * @param {Function} props.setValue\n */\nexport default function Simple(props) {\n const {\n debounce,\n disabled,\n element,\n getValue,\n id,\n onBlur,\n onFocus,\n setValue\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const value = getValue(element);\n\n return (\n <div class=\"bio-properties-panel-simple\">\n <input\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 aria-label={ value || '<empty>' }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import { FeelOptionalIcon, FeelRequiredIcon } from '../icons';\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n label,\n feel = false,\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a FEEL expression';\n\n return (\n <i\n class=\"bio-properties-panel-feel-icon\"\n title={\n label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </i>\n );\n}","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useMemo\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n rows = 2,\n debounce,\n feel,\n onInput,\n value = '',\n disabled,\n monospace\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n { label }\n {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <textarea\n id={ prefixId(id) }\n name={ id }\n spellCheck=\"false\"\n class={ classnames(\n 'bio-properties-panel-input',\n monospace ? 'bio-properties-panel-input-monospace' : '')\n }\n onInput={ handleInput }\n onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n rows={ rows }\n value={ value }\n disabled={ disabled } />\n </div>\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 {number} props.rows\n * @param {boolean} props.monospace\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n feel,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <TextArea\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n feel={ feel }\n disabled={ disabled } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n usePrevious,\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nconst noop = () => {};\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n feel = false,\n value = '',\n show = noop\n } = props;\n\n const ref = useShowEntryEvent(show);\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n { label }\n {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <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={ props.onFocus }\n onBlur={ props.onBlur }\n value={ value || '' } />\n </div>\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.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n validate,\n show = noop\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n\n setValidationError(newValidationError);\n };\n\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\n }\n\n const temporaryError = useShowErrorEvent(show);\n\n const error = temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Textfield\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n label={ label }\n onInput={ onInput }\n show={ show }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import Description from './Description';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel\n } = props;\n\n const handleInput = async () => {\n onInput(!value);\n };\n\n return (\n <div class=\"bio-properties-panel-toggle-switch\">\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n name={ id }\n onInput={ handleInput }\n checked={ value } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p>\n </div>\n </div>\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 {Function} props.getValue\n * @param {Function} props.setValue\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n getValue,\n setValue\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\n <ToggleSwitch id={ id } label={ label } value={ value } onInput={ setValue } switcherLabel={ switcherLabel } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n debounce,\n isNumber\n} from 'min-dash';\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nexport default function debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n\n var debounceTime =\n isNumber(debounceDelay) ?\n debounceDelay :\n DEFAULT_DEBOUNCE_TIME;\n\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\n\ndebounceInput.$inject = [ 'config.debounceInput' ];\n","import debounceInput from './debounceInput';\n\nexport default {\n debounceInput: [ 'factory', debounceInput ]\n};\n"],"names":["Header","props","element","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","label","type","documentationRef","ElementIcon","_jsxs","_jsx","DescriptionContext","createContext","description","getDescriptionForId","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useDescriptionContext","id","useContext","DEFAULT_PRIORITY","useEvent","event","callback","priority","useEffect","on","off","HIGH_PRIORITY","useEventBuffer","bufferedEvents","buffer","useRef","buffering","createCallback","data","current","unshift","listeners","map","forEach","length","pop","fire","KEY_LENGTH","useKeyFactory","dependencies","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","show","onShow","PropertiesPanelContext","focus","setFocus","onShowEntry","useCallback","isFunction","select","useShowErrorEvent","temporaryError","setTemporaryError","onPropertiesPanelUpdated","onShowError","message","Group","entries","shouldOpen","open","setOpen","toggleOpen","edited","setEdited","hasOneEditedEntry","find","entry","isEdited","entryNode","domQuery","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","eventContext","group","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","includes","push","newOrdering","filter","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","handleChange","checked","prefixId","CheckboxEntry","getValue","setValue","error","node","List","onAdd","onRemove","compareFn","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","debounce","max","min","onInput","step","handleInput","validity","valid","parseFloat","undefined","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","classNames","Simple","onBlur","onFocus","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","validate","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","previousValue","newValidationError","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBe,SAASA,MAAT,CAAgBC,KAAhB,EAAuB;AAEpC,QAAM;AACJC,IAAAA,OADI;AAEJC,IAAAA;AAFI,MAGFF,KAHJ;AAKA,QAAM;AACJG,IAAAA,cADI;AAEJC,IAAAA,mBAFI;AAGJC,IAAAA,eAHI;AAIJC,IAAAA;AAJI,MAKFJ,cALJ;AAOA,QAAMK,KAAK,GAAGF,eAAe,CAACJ,OAAD,CAA7B;AACA,QAAMO,IAAI,GAAGF,YAAY,CAACL,OAAD,CAAzB;AACA,QAAMQ,gBAAgB,GAAGL,mBAAmB,IAAIA,mBAAmB,CAACH,OAAD,CAAnE;AAEA,QAAMS,WAAW,GAAGP,cAAc,CAACF,OAAD,CAAlC;AAEA,SAAQU;AAAK,IAAA,KAAK,EAAC,6BAAX;AAAA,eACNC;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA,gBACIF,WAAW,IAAIE,eAAC,WAAD;AAAa,QAAA,KAAK,EAAC,IAAnB;AAAwB,QAAA,MAAM,EAAC,IAA/B;AAAoC,QAAA,OAAO,EAAC;AAA5C;AADnB,MADM,EAIND;AAAK,MAAA,KAAK,EAAC,oCAAX;AAAA,iBACEC;AAAK,QAAA,KAAK,EAAGJ,IAAb;AAAoB,QAAA,KAAK,EAAC,kCAA1B;AAAA,kBAA+DA;AAA/D,QADF,EAEID,KAAK,GACLK;AAAK,QAAA,KAAK,EAAGL,KAAb;AAAqB,QAAA,KAAK,EAAC,mCAA3B;AAAA,kBAAiEA;AAAjE,QADK,GAEL,IAJJ;AAAA,MAJM,EAWNK;AAAK,MAAA,KAAK,EAAC,qCAAX;AAAA,gBACIH,gBAAgB,GAChBG;AACE,QAAA,GAAG,EAAC,UADN;AAEE,QAAA,KAAK,EAAC,kCAFR;AAGE,QAAA,IAAI,EAAGH,gBAHT;AAIE,QAAA,KAAK,EAAC,oBAJR;AAKE,QAAA,MAAM,EAAC,QALT;AAAA,kBAMEG,eAAC,gBAAD;AANF,QADgB,GAShB;AAVJ,MAXM;AAAA,IAAR;AAyBD;;MCzDKC,kBAAkB,GAAGC,oBAAa,CAAC;AACvCC,EAAAA,WAAW,EAAE,EAD0B;AAEvCC,EAAAA,mBAAmB,EAAE,MAAM;AAFY,CAAD;;ACJxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAoBMC,YAAY,GAAGH,oBAAa,CAAC;AAAEI,EAAAA,QAAQ,EAAE;AAAZ,CAAD;;MC7B5BC,aAAa,GAAGL,oBAAa,CAAC;AAClCM,EAAAA,MAAM,EAAE,EAD0B;AAElCC,EAAAA,SAAS,EAAE,MAAM,EAFiB;AAGlCC,EAAAA,eAAe,EAAE,MAAM,EAHW;AAIlCC,EAAAA,eAAe,EAAE,MAAM;AAJW,CAAD;;ACInC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,qBAAT,CAA+BC,EAA/B,EAAmCxB,OAAnC,EAA4C;AACjD,QAAM;AACJe,IAAAA;AADI,MAEFU,gBAAU,CAACb,kBAAD,CAFd;AAIA,SAAOG,mBAAmB,CAACS,EAAD,EAAKxB,OAAL,CAA1B;AACD;;ACzBD,MAAM0B,gBAAgB,GAAG,IAAzB;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,QAAT,CAAkBC,KAAlB,EAAyBC,QAAzB,EAAmCC,QAAQ,GAAGJ,gBAA9C,EAAgE;AACrE,QAAM;AAAET,IAAAA;AAAF,MAAeQ,gBAAU,CAACT,YAAD,CAA/B;AAEAe,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI,CAACd,QAAL,EAAe;AACb;AACD;;AAEDA,IAAAA,QAAQ,CAACe,EAAT,CAAYJ,KAAZ,EAAmBE,QAAnB,EAA6BD,QAA7B;AAEA,WAAO,MAAMZ,QAAQ,CAACgB,GAAT,CAAaL,KAAb,EAAoBC,QAApB,CAAb;AACD,GARQ,EAQN,CAAEA,QAAF,EAAYD,KAAZ,EAAmBX,QAAnB,EAA6Ba,QAA7B,CARM,CAAT;AASD;;ACvBD,MAAMI,aAAa,GAAG,KAAtB;AAGA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,cAAT,CAAwBC,cAAxB,EAAwCnB,QAAxC,EAAkD;AACvD,QAAMoB,MAAM,GAAGC,YAAM,CAAC,EAAD,CAArB;AAAA,QACMC,SAAS,GAAGD,YAAM,CAAC,IAAD,CADxB;;AAGA,QAAME,cAAc,GAAIZ,KAAD,IAAYa,IAAD,IAAU;AAC1C,QAAIF,SAAS,CAACG,OAAV,KAAsB,IAA1B,EAAgC;AAC9BL,MAAAA,MAAM,CAACK,OAAP,CAAeC,OAAf,CAAuB,CAAEf,KAAF,EAASa,IAAT,CAAvB;AACD;AACF,GAJD,CAJuD;;;AAWvDV,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI,CAACd,QAAL,EAAe;AACb;AACD;;AAED,UAAM2B,SAAS,GAAGR,cAAc,CAACS,GAAf,CAAoBjB,KAAD,IAAW;AAC9C,aAAO,CAAEA,KAAF,EAASY,cAAc,CAACZ,KAAD,CAAvB,CAAP;AACD,KAFiB,CAAlB;AAIAgB,IAAAA,SAAS,CAACE,OAAV,CAAkB,CAAC,CAAElB,KAAF,EAASC,QAAT,CAAD,KAAyB;AACzCZ,MAAAA,QAAQ,CAACe,EAAT,CAAYJ,KAAZ,EAAmBM,aAAnB,EAAkCL,QAAlC;AACD,KAFD;AAIA,WAAO,MAAM;AACXe,MAAAA,SAAS,CAACE,OAAV,CAAkB,CAAC,CAAElB,KAAF,EAASC,QAAT,CAAD,KAAyB;AACzCZ,QAAAA,QAAQ,CAACgB,GAAT,CAAaL,KAAb,EAAoBC,QAApB;AACD,OAFD;AAGD,KAJD;AAKD,GAlBQ,EAkBN,CAAEO,cAAF,EAAkBnB,QAAlB,CAlBM,CAAT,CAXuD;;AAgCvDc,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI,CAACd,QAAL,EAAe;AACb;AACD;;AAEDsB,IAAAA,SAAS,CAACG,OAAV,GAAoB,KAApB;;AAEA,WAAOL,MAAM,CAACK,OAAP,CAAeK,MAAtB,EAA8B;AAC5B,YAAM,CAAEnB,KAAF,EAASa,IAAT,IAAkBJ,MAAM,CAACK,OAAP,CAAeM,GAAf,EAAxB;AAEA/B,MAAAA,QAAQ,CAACgC,IAAT,CAAcrB,KAAd,EAAqBa,IAArB;AACD;;AAEDF,IAAAA,SAAS,CAACG,OAAV,GAAoB,IAApB;AACD,GAdQ,CAAT;AAeD;;AC3DD,MAAMQ,UAAU,GAAG,CAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,aAAT,CAAuBC,YAAY,GAAG,EAAtC,EAA0C;AAC/C,QAAMP,GAAG,GAAGQ,aAAO,CAAC,MAAM,IAAIC,GAAJ,EAAP,EAAkBF,YAAlB,CAAnB;;AAEA,QAAMG,MAAM,GAAGC,EAAE,IAAI;AACnB,QAAIC,GAAG,GAAGZ,GAAG,CAACa,GAAJ,CAAQF,EAAR,CAAV;;AAEA,QAAI,CAACC,GAAL,EAAU;AACRA,MAAAA,GAAG,GAAGE,IAAI,CAACC,MAAL,GAAcC,QAAd,GAAyBC,KAAzB,CAA+B,CAACZ,UAAhC,CAAN;AACAL,MAAAA,GAAG,CAACkB,GAAJ,CAAQP,EAAR,EAAYC,GAAZ;AACD;;AAED,WAAOA,GAAP;AACD,GATD;;AAWA,SAAOF,MAAP;AACD;;AC7BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASS,cAAT,CAAwBC,IAAxB,EAA8BC,YAA9B,EAA4C;AACjD,QAAM;AACJ7C,IAAAA,eADI;AAEJC,IAAAA;AAFI,MAGFG,gBAAU,CAACP,aAAD,CAHd;AAKA,QAAMiD,YAAY,GAAG9C,eAAe,CAAC4C,IAAD,EAAOC,YAAP,CAApC;AACA,QAAM,CAAEE,KAAF,EAASL,GAAT,IAAiBM,cAAQ,CAACF,YAAD,CAA/B;;AAEA,QAAMG,QAAQ,GAAIC,QAAD,IAAc;AAE7B;AACAR,IAAAA,GAAG,CAACQ,QAAD,CAAH,CAH6B;;AAM7BjD,IAAAA,eAAe,CAAC2C,IAAD,EAAOM,QAAP,CAAf;AACD,GAPD;;AASA,SAAO,CAAEH,KAAF,EAASE,QAAT,CAAP;AACD;;ACtCD;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASE,WAAT,CAAqBJ,KAArB,EAA4B;AACjC,QAAMK,GAAG,GAAGnC,YAAM,EAAlB;AACAP,EAAAA,eAAS,CAAC,MAAM;AACd0C,IAAAA,GAAG,CAAC/B,OAAJ,GAAc0B,KAAd;AACD,GAFQ,CAAT;AAGA,SAAOK,GAAG,CAAC/B,OAAX;AACD;;ACJD;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASgC,iBAAT,CAA2BC,IAA3B,EAAiC;AACtC,QAAM;AAAEC,IAAAA;AAAF,MAAanD,gBAAU,CAACoD,aAAD,CAA7B;AAEA,QAAMJ,GAAG,GAAGnC,YAAM,EAAlB;AAEA,QAAM,CAAEwC,KAAF,EAASC,QAAT,IAAsBV,cAAQ,CAAC,KAAD,CAApC;AAEA,QAAMW,WAAW,GAAGC,iBAAW,CAAErD,KAAD,IAAW;AACzC,QAAI+C,IAAI,CAAC/C,KAAD,CAAR,EAAiB;AACf,UAAIsD,kBAAU,CAACN,MAAD,CAAd,EAAwB;AACtBA,QAAAA,MAAM;AACP;;AAED,UAAIhD,KAAK,CAACkD,KAAN,IAAe,CAACA,KAApB,EAA2B;AACzBC,QAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;AACF;AACF,GAV8B,EAU5B,CAAEJ,IAAF,CAV4B,CAA/B;AAYA5C,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI+C,KAAK,IAAIL,GAAG,CAAC/B,OAAjB,EAA0B;AACxB,UAAIwC,kBAAU,CAACT,GAAG,CAAC/B,OAAJ,CAAYoC,KAAb,CAAd,EAAmC;AACjCL,QAAAA,GAAG,CAAC/B,OAAJ,CAAYoC,KAAZ;AACD;;AAED,UAAII,kBAAU,CAACT,GAAG,CAAC/B,OAAJ,CAAYyC,MAAb,CAAd,EAAoC;AAClCV,QAAAA,GAAG,CAAC/B,OAAJ,CAAYyC,MAAZ;AACD;;AAEDJ,MAAAA,QAAQ,CAAC,KAAD,CAAR;AACD;AACF,GAZQ,EAYN,CAAED,KAAF,CAZM,CAAT;AAcAnD,EAAAA,QAAQ,CAAC,2BAAD,EAA8BqD,WAA9B,CAAR;AAEA,SAAOP,GAAP;AACD;;AC/CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASW,iBAAT,CAA2BT,IAA3B,EAAiC;AACtC,QAAM;AAAE1D,IAAAA;AAAF,MAAeQ,gBAAU,CAACT,YAAD,CAA/B;AAEA,QAAM,CAAEqE,cAAF,EAAkBC,iBAAlB,IAAwCjB,cAAQ,CAAC,IAAD,CAAtD;AAEA,QAAMkB,wBAAwB,GAAGN,iBAAW,CAAC,MAAMK,iBAAiB,CAAC,IAAD,CAAxB,EAAgC,EAAhC,CAA5C;AAEA3D,EAAAA,QAAQ,CAAC,yBAAD,EAA4B4D,wBAA5B,CAAR;AAEA,QAAMC,WAAW,GAAGP,iBAAW,CAAErD,KAAD,IAAW;AACzC0D,IAAAA,iBAAiB,CAAC,IAAD,CAAjB;;AAEA,QAAIX,IAAI,CAAC/C,KAAD,CAAR,EAAiB;AACf,UAAIX,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAACgC,IAAT,CAAc,2BAAd,EAA2CrB,KAA3C;AACD;;AAED0D,MAAAA,iBAAiB,CAAC1D,KAAK,CAAC6D,OAAP,CAAjB;AACD;AACF,GAV8B,EAU5B,CAAEd,IAAF,CAV4B,CAA/B;AAYAhD,EAAAA,QAAQ,CAAC,2BAAD,EAA8B6D,WAA9B,CAAR;AAEA,SAAOH,cAAP;AACD;;ACfc,SAASK,KAAT,CAAe3F,KAAf,EAAsB;AACnC,QAAM;AACJC,IAAAA,OADI;AAEJ2F,IAAAA,OAAO,GAAG,EAFN;AAGJnE,IAAAA,EAHI;AAIJlB,IAAAA,KAJI;AAKJsF,IAAAA,UAAU,GAAG;AALT,MAMF7F,KANJ;AAQA,QAAM,CAAE8F,IAAF,EAAQC,OAAR,IAAoB9B,cAAc,CACtC,CAAE,QAAF,EAAYxC,EAAZ,EAAgB,MAAhB,CADsC,EAEtCoE,UAFsC,CAAxC;AAKA,QAAMhB,MAAM,GAAGK,iBAAW,CAAC,MAAMa,OAAO,CAAC,IAAD,CAAd,EAAsB,CAAEA,OAAF,CAAtB,CAA1B;;AAEA,QAAMC,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAF,CAAhC;;AAEA,QAAM,CAAEG,MAAF,EAAUC,SAAV,IAAwB5B,cAAQ,CAAC,KAAD,CAAtC,CAlBmC;;AAqBnCtC,EAAAA,eAAS,CAAC,MAAM;AACd,UAAMmE,iBAAiB,GAAGP,OAAO,CAACQ,IAAR,CAAaC,KAAK,IAAI;AAC9C,YAAM;AACJ5E,QAAAA,EADI;AAEJ6E,QAAAA;AAFI,UAGFD,KAHJ;AAKA,YAAME,SAAS,GAAGC,YAAQ,CAAE,mBAAkB/E,EAAG,IAAvB,CAA1B;;AAEA,UAAI,CAAC0D,kBAAU,CAACmB,QAAD,CAAX,IAAyB,CAACC,SAA9B,EAAyC;AACvC,eAAO,KAAP;AACD;;AAED,YAAME,SAAS,GAAGD,YAAQ,CAAC,6BAAD,EAAgCD,SAAhC,CAA1B;AAEA,aAAOD,QAAQ,CAACG,SAAD,CAAf;AACD,KAfyB,CAA1B;AAiBAP,IAAAA,SAAS,CAACC,iBAAD,CAAT;AACD,GAnBQ,EAmBN,CAAEP,OAAF,CAnBM,CAAT;AAqBA,QAAMc,sBAAsB,GAAG,EAC7B,GAAGhF,gBAAU,CAACoD,aAAD,CADgB;AAE7BD,IAAAA;AAF6B,GAA/B;AAKA,SAAOlE;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAwC,qBAAgB,WAAWc,EAAnE;AAAA,eACLd;AAAK,MAAA,KAAK,EAAGgG,8BAAU,CACrB,mCADqB,EAErBV,MAAM,GAAG,EAAH,GAAQ,OAFO,EAGrBH,IAAI,GAAE,MAAF,GAAW,EAHM,CAAvB;AAII,MAAA,OAAO,EAAGE,UAJd;AAAA,iBAKEpF;AAAK,QAAA,KAAK,EAAGL,KAAb;AAAqB,QAAA,KAAK,EAAC,yCAA3B;AAAA,kBACIA;AADJ,QALF,EAQEI;AAAK,QAAA,KAAK,EAAC,2CAAX;AAAA,mBAEIsF,MAAM,IAAIrF,eAAC,UAAD,KAFd,EAIEA;AACE,UAAA,KAAK,EAAC,gBADR;AAEE,UAAA,KAAK,EAAC,qEAFR;AAAA,oBAIEA,eAAC,SAAD;AAAW,YAAA,KAAK,EAAGkF,IAAI,GAAG,iCAAH,GAAuC;AAA9D;AAJF,UAJF;AAAA,QARF;AAAA,MADK,EAqBLlF;AAAK,MAAA,KAAK,EAAG+F,8BAAU,CACrB,oCADqB,EAErBb,IAAI,GAAG,MAAH,GAAY,EAFK,CAAvB;AAAA,gBAIElF,eAACkE,aAAD,CAAwB,QAAxB;AAAiC,QAAA,KAAK,EAAG4B,sBAAzC;AAAA,kBAEId,OAAO,CAAC9C,GAAR,CAAYuD,KAAK,IAAI;AACnB,gBAAM;AACJO,YAAAA,SAAS,EAAEC,SADP;AAEJpF,YAAAA;AAFI,cAGF4E,KAHJ;AAKA,iBACES,qBAAC,SAAD,OACOT,KADP;AAEE,YAAA,OAAO,EAAGpG,OAFZ;AAGE,YAAA,GAAG,EAAGwB;AAHR,YADF;AAMD,SAZD;AAFJ;AAJF,MArBK;AAAA,IAAP;AA4CD;;AAED,SAASsF,UAAT,GAAsB;AACpB,SACEnG;AAAK,IAAA,KAAK,EAAC,uBAAX;AAAmC,IAAA,KAAK,EAAC;AAAzC,IADF;AAGD;;ACnGD,MAAMoG,cAAc,GAAG;AACrBlB,EAAAA,IAAI,EAAE;AADe,CAAvB;AAIA,MAAMmB,mBAAmB,GAAG,EAA5B;AAEA,MAAM5E,cAAc,GAAG,CACrB,2BADqB,EAErB,2BAFqB,CAAvB;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS6E,eAAT,CAAyBlH,KAAzB,EAAgC;AAC7C,QAAM;AACJC,IAAAA,OADI;AAEJC,IAAAA,cAFI;AAGJiH,IAAAA,MAHI;AAIJC,IAAAA,YAAY,GAAG,EAJX;AAKJC,IAAAA,aALI;AAMJC,IAAAA,iBAAiB,GAAG,EANhB;AAOJC,IAAAA,iBAPI;AAQJrG,IAAAA;AARI,MASFlB,KATJ,CAD6C;;AAa7C,QAAM,CAAEoB,MAAF,EAAUC,SAAV,IAAwBiD,cAAQ,CAACkD,YAAY,CAACJ,YAAD,CAAb,CAAtC;AAEApF,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI,OAAOqF,aAAP,KAAyB,UAA7B,EAAyC;AACvCA,MAAAA,aAAa,CAACjG,MAAD,CAAb;AACD;AACF,GAJQ,EAIN,CAAEA,MAAF,EAAUiG,aAAV,CAJM,CAAT;;AAMA,QAAM/F,eAAe,GAAG,CAACoC,GAAD,EAAMS,YAAN,KAAuB;AAC7C,WAAOR,WAAG,CAACvC,MAAD,EAASsC,GAAT,EAAcS,YAAd,CAAV;AACD,GAFD;;AAIA,QAAM5C,eAAe,GAAG,CAACmC,GAAD,EAAM+D,MAAN,KAAiB;AACvC,UAAMC,SAAS,GAAGC,cAAM,CAAC,EAAD,EAAKvG,MAAL,CAAxB;AACA4C,IAAAA,WAAG,CAAC0D,SAAD,EAAYhE,GAAZ,EAAiB+D,MAAjB,CAAH;AACApG,IAAAA,SAAS,CAACqG,SAAD,CAAT;AACD,GAJD;;AAMA,QAAME,aAAa,GAAG;AACpBxG,IAAAA,MADoB;AAEpBC,IAAAA,SAFoB;AAGpBC,IAAAA,eAHoB;AAIpBC,IAAAA;AAJoB,GAAtB,CA/B6C;;AAuC7C,QAAMR,WAAW,GAAG8G,wBAAwB,CAACP,iBAAD,CAA5C;;AAEA,MAAI,OAAOC,iBAAP,KAA6B,UAAjC,EAA6C;AAC3CA,IAAAA,iBAAiB,CAACxG,WAAD,CAAjB;AACD;;AAED,QAAMC,mBAAmB,GAAG,CAACS,EAAD,EAAKxB,OAAL,KAAiB;AAC3C,WAAOc,WAAW,CAACU,EAAD,CAAX,IAAmBV,WAAW,CAACU,EAAD,CAAX,CAAgBxB,OAAhB,CAA1B;AACD,GAFD;;AAIA,QAAM6H,kBAAkB,GAAG;AACzB/G,IAAAA,WADyB;AAEzBC,IAAAA;AAFyB,GAA3B;AAKAoB,EAAAA,cAAc,CAACC,cAAD,EAAiBnB,QAAjB,CAAd;AAEA,QAAM6G,YAAY,GAAG;AACnB7G,IAAAA;AADmB,GAArB;AAIA,QAAMwF,sBAAsB,GAAG;AAC7BzG,IAAAA;AAD6B,GAA/B;;AAIA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAOW;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA;AAAA,MAAP;AACD;;AAED,SACEA,eAACkE,aAAD,CAAwB,QAAxB;AAAiC,IAAA,KAAK,EAAG4B,sBAAzC;AAAA,cAEE9F,eAAC,kBAAD,CAAoB,QAApB;AAA6B,MAAA,KAAK,EAAGkH,kBAArC;AAAA,gBACElH,eAAC,aAAD,CAAe,QAAf;AAAwB,QAAA,KAAK,EAAGgH,aAAhC;AAAA,kBACEhH,eAAC,YAAD,CAAc,QAAd;AAAuB,UAAA,KAAK,EAAGmH,YAA/B;AAAA,oBACEpH;AACE,YAAA,KAAK,EAAGgG,8BAAU,CAChB,sBADgB,EAEhBvF,MAAM,CAAC0E,IAAP,GAAc,MAAd,GAAuB,EAFP,CADpB;AAAA,uBAKElF,eAAC,MAAD;AACE,cAAA,OAAO,EAAGX,OADZ;AAEE,cAAA,cAAc,EAAGC;AAFnB,cALF,EAQEU;AAAK,cAAA,KAAK,EAAC,uCAAX;AAAA,wBAEIuG,MAAM,CAACrE,GAAP,CAAWkF,KAAK,IAAI;AAClB,sBAAM;AACJpB,kBAAAA,SAAS,EAAEC,SAAS,GAAGlB,KADnB;AAEJlE,kBAAAA;AAFI,oBAGFuG,KAHJ;AAKA,uBACElB,qBAAC,SAAD,OACOkB,KADP;AAEE,kBAAA,GAAG,EAAGvG,EAFR;AAGE,kBAAA,OAAO,EAAGxB;AAHZ,kBADF;AAMD,eAZD;AAFJ,cARF;AAAA;AADF;AADF;AADF;AAFF,IADF;AAqCD;;AAKD,SAASuH,YAAT,CAAsBS,SAAtB,EAAiC;AAC/B,SAAO,EACL,GAAGjB,cADE;AAEL,OAAGiB;AAFE,GAAP;AAID;;AAED,SAASJ,wBAAT,CAAkCI,SAAlC,EAA6C;AAC3C,SAAO,EACL,GAAGhB,mBADE;AAEL,OAAGgB;AAFE,GAAP;AAID;;AC/MM,SAASC,cAAT,CAAwBlI,KAAxB,EAA+B;AACpC,QAAM;AACJmI,IAAAA,KAAK,EAAEC,SADH;AAEJC,IAAAA,QAFI;AAGJC,IAAAA,SAAS,GAAG;AAHR,MAIFtI,KAJJ;AAMA,QAAMuI,WAAW,GAAGhG,YAAM,CAAC,IAAD,CAA1B;AACA,QAAMiG,OAAO,GAAGjG,YAAM,CAAC,IAAD,CAAtB;AAEA,QAAM,CAAEuD,IAAF,EAAQC,OAAR,IAAoBzB,cAAQ,CAAC,KAAD,CAAlC;;AACA,QAAMmE,KAAK,GAAG,MAAM1C,OAAO,CAAC,KAAD,CAA3B;;AAEA,WAAS2C,gBAAT,CAA0B7G,KAA1B,EAAiC;AAC/B,QAAI2G,OAAO,CAAC7F,OAAR,IAAmB6F,OAAO,CAAC7F,OAAR,CAAgBgG,QAAhB,CAAyB9G,KAAK,CAAC+G,MAA/B,CAAvB,EAA+D;AAC7D;AACD;;AAED/G,IAAAA,KAAK,CAACgH,eAAN;AAEA9C,IAAAA,OAAO,CAACD,IAAI,IAAI,CAACA,IAAV,CAAP;AACD;;AAED,WAASgD,aAAT,CAAuBjH,KAAvB,EAA8BkH,MAA9B,EAAsC;AACpClH,IAAAA,KAAK,CAACgH,eAAN;AAEAJ,IAAAA,KAAK;AACLM,IAAAA,MAAM;AACP;;AAEDC,EAAAA,cAAc,CAAC,CAAET,WAAW,CAAC5F,OAAd,CAAD,EAA0B,MAAM8F,KAAK,EAArC,CAAd;AAEA,SACE9H;AACE,IAAA,KAAK,EAAGgG,8BAAU,CAAC,sCAAD,EAAyC;AAAEb,MAAAA;AAAF,KAAzC,EAAmDsC,SAAnD,CADpB;AAEE,IAAA,OAAO,EAAGM,gBAFZ;AAGE,IAAA,GAAG,EAAGH,WAHR;AAAA,eAKIF,QALJ,EAMEzH;AAAK,MAAA,KAAK,EAAC,4CAAX;AAAwD,MAAA,GAAG,EAAG4H,OAA9D;AAAA,gBACIF,SAAS,CAACxF,GAAV,CAAc,CAACmG,IAAD,EAAOC,KAAP,KACdtI,eAAC,QAAD;AAAU,QAAA,OAAO,EAAGkI,aAApB;AAAoC,QAAA,IAAI,EAAGG;AAA3C,SAAwDC,KAAxD,CADA;AADJ,MANF;AAAA,IADF;AAcD;;AAED,SAASC,QAAT,CAAkB;AAAEF,EAAAA,IAAF;AAAQG,EAAAA;AAAR,CAAlB,EAAqC;AACnC,MAAIH,IAAI,CAACI,SAAT,EAAoB;AAClB,WAAOzI;AAAK,MAAA,KAAK,EAAC;AAAX,MAAP;AACD;;AAED,MAAIqI,IAAI,CAACF,MAAT,EAAiB;AACf,WAAQnI;AACN,MAAA,KAAK,EAAC,6GADA;AAEN,MAAA,OAAO,EAAGiB,KAAK,IAAIuH,OAAO,CAACvH,KAAD,EAAQoH,IAAI,CAACF,MAAb,CAFpB;AAAA,gBAILE,IAAI,CAAC5C;AAJA,MAAR;AAMD;;AAED,SAAOzF;AACL,IAAA,KAAK,EAAC,iDADD;AAAA,cAGJqI,IAAI,CAAC5C;AAHD,IAAP;AAKD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS2C,cAAT,CAAwBM,eAAxB,EAAyCxH,QAAzC,EAAmD;AACjDE,EAAAA,eAAS,CAAC,MAAM;AAEd;AACJ;AACA;AACI,aAASuH,QAAT,CAAkB1H,KAAlB,EAAyB;AACvB,UAAIyH,eAAe,CAACE,IAAhB,CAAqBvJ,OAAO,IAAIA,OAAO,IAAIA,OAAO,CAAC0I,QAAR,CAAiB9G,KAAK,CAAC+G,MAAvB,CAA3C,CAAJ,EAAgF;AAC9E;AACD;;AAED9G,MAAAA,QAAQ;AACT;;AAED2H,IAAAA,QAAQ,CAACC,gBAAT,CAA0B,OAA1B,EAAmCH,QAAnC,EAA6C;AAAEI,MAAAA,OAAO,EAAE;AAAX,KAA7C;AAEA,WAAO,MAAMF,QAAQ,CAACG,mBAAT,CAA6B,OAA7B,EAAsCL,QAAtC,EAAgD;AAAEI,MAAAA,OAAO,EAAE;AAAX,KAAhD,CAAb;AACD,GAhBQ,EAgBN,CAAE,GAAGL,eAAL,EAAsBxH,QAAtB,CAhBM,CAAT;AAiBD;;ACzGM,SAAS+H,YAAT,CAAsB7J,KAAtB,EAA6B;AAClC,QAAM;AACJqI,IAAAA,QAAQ,GAAG,IADP;AAEJF,IAAAA,KAAK,EAAE2B,SAFH;AAGJV,IAAAA,OAAO,GAAG,MAAM,EAHZ;AAIJ,OAAGW;AAJC,MAKF/J,KALJ;AAOA,SAAOY,8BACAmJ,UADA;AAEL,IAAA,OAAO,EAAGX,OAFL;AAGL,IAAA,KAAK,EAAGzC,8BAAU,CAAC,0CAAD,EAA6CmD,SAA7C,CAHb;AAAA,cAIHzB;AAJG,IAAP;AAMD;;ACEc,SAAS2B,gBAAT,CAA0BhK,KAA1B,EAAiC;AAC9C,QAAM;AACJC,IAAAA,OADI;AAEJ2F,IAAAA,OAAO,GAAG,EAFN;AAGJnE,IAAAA,EAHI;AAIJlB,IAAAA,KAJI;AAKJuF,IAAAA,IAAI,EAAED,UALF;AAMJoE,IAAAA;AANI,MAOFjK,KAPJ;AASA,QAAM,CAAE8F,IAAF,EAAQC,OAAR,IAAoBzB,cAAQ,CAACuB,UAAD,CAAlC;;AAEA,QAAMG,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAF,CAAhC;;AAEA,QAAM;AAAEjB,IAAAA;AAAF,MAAanD,gBAAU,CAACoD,aAAD,CAA7B;AAEA,QAAM4B,sBAAsB,GAAG,EAC7B,GAAGhF,gBAAU,CAACoD,aAAD,CADgB;AAE7BD,IAAAA,MAAM,EAAEK,iBAAW,CAAC,MAAM;AACxBa,MAAAA,OAAO,CAAC,IAAD,CAAP;;AAEA,UAAIZ,kBAAU,CAACN,MAAD,CAAd,EAAwB;AACtBA,QAAAA,MAAM;AACP;AACF,KANkB,EAMhB,CAAEA,MAAF,EAAUkB,OAAV,CANgB;AAFU,GAA/B,CAhB8C;;AA4B9C,QAAMmE,gBAAgB,GAAG,SAAzB;AAEA,SACEvJ;AACE,qBAAgBc,EADlB;AAEE,IAAA,KAAK,EAAGkF,8BAAU,CAChB,wCADgB,EAEhBb,IAAI,GAAG,MAAH,GAAY,EAFA,CAFpB;AAAA,eAMEnF;AAAK,MAAA,KAAK,EAAC,+CAAX;AAA2D,MAAA,OAAO,EAAGqF,UAArE;AAAA,iBACEpF;AACE,QAAA,KAAK,EAAGL,KAAK,IAAI2J,gBADnB;AAEE,QAAA,KAAK,EAAGvD,8BAAU,CAChB,qDADgB,EAEhB,CAACpG,KAAD,IAAU,OAFM,CAFpB;AAAA,kBAMIA,KAAK,IAAI2J;AANb,QADF,EASEtJ;AACE,QAAA,KAAK,EAAC,kBADR;AAEE,QAAA,KAAK,EAAC,0EAFR;AAAA,kBAIEA,eAAC,SAAD;AAAW,UAAA,KAAK,EAAGkF,IAAI,GAAG,iCAAH,GAAuC;AAA9D;AAJF,QATF,EAgBImE,MAAM,GAGFrJ;AAAQ,QAAA,KAAK,EAAC,aAAd;AAA4B,QAAA,KAAK,EAAC,mCAAlC;AAAsE,QAAA,OAAO,EAAGqJ,MAAhF;AAAA,kBACErJ,eAAC,UAAD;AADF,QAHE,GAOF,IAvBR;AAAA,MANF,EAgCEA;AAAK,MAAA,KAAK,EAAG+F,8BAAU,CACrB,gDADqB,EAErBb,IAAI,GAAG,MAAH,GAAY,EAFK,CAAvB;AAAA,gBAIElF,eAACkE,aAAD,CAAwB,QAAxB;AAAiC,QAAA,KAAK,EAAG4B,sBAAzC;AAAA,kBAEId,OAAO,CAAC9C,GAAR,CAAYuD,KAAK,IAAI;AACnB,gBAAM;AACJO,YAAAA,SAAS,EAAEC,SADP;AAEJpF,YAAAA;AAFI,cAGF4E,KAHJ;AAKA,iBAAOS,qBAAC,SAAD,OACAT,KADA;AAEL,YAAA,OAAO,EAAGpG,OAFL;AAGL,YAAA,GAAG,EAAGwB;AAHD,YAAP;AAID,SAVD;AAFJ;AAJF,MAhCF;AAAA,IADF;AAuDD;;ACxFc,SAAS0I,QAAT,CAAkBnK,KAAlB,EAAyB;AACtC,QAAM;AACJoK,IAAAA,cADI;AAEJC,IAAAA;AAFI,MAGFrK,KAHJ,CADsC;;AAOtCgC,EAAAA,eAAS,CAAC,MAAM;AACd,QAAIqI,QAAQ,IAAID,cAAhB,EAAgC;AAC9B,YAAM/D,KAAK,GAAGG,YAAQ,CAAE,mBAAkB4D,cAAe,IAAnC,CAAtB;AAEA,YAAME,cAAc,GAAG9D,YAAQ,CAAC,6BAAD,EAAgCH,KAAhC,CAA/B;;AAEA,UAAIiE,cAAJ,EAAoB;AAElB,YAAInF,kBAAU,CAACmF,cAAc,CAAClF,MAAhB,CAAd,EAAuC;AACrCkF,UAAAA,cAAc,CAAClF,MAAf;AACD,SAFD,MAEO,IAAID,kBAAU,CAACmF,cAAc,CAACvF,KAAhB,CAAd,EAAsC;AAC3CuF,UAAAA,cAAc,CAACvF,KAAf;AACD;AAEF;AACF;AACF,GAhBQ,EAgBN,CAAEsF,QAAF,EAAYD,cAAZ,CAhBM,CAAT;AAmBA,SACExJ;AAAK,IAAA,KAAK,EAAC,gCAAX;AAAA,cACEA,eAAC,gBAAD,OACOZ,KADP;AAEE,MAAA,IAAI,EAAGqK;AAFT;AADF,IADF;AAQD;;ACrBD,MAAME,MAAI,GAAG,MAAM,EAAnB;AAEA;AACA;AACA;;;AACe,SAASC,SAAT,CAAmBxK,KAAnB,EAA0B;AACvC,QAAM;AACJyK,IAAAA,GADI;AAEJxK,IAAAA,OAFI;AAGJwB,IAAAA,EAHI;AAIJiJ,IAAAA,KAJI;AAKJnK,IAAAA,KALI;AAMJsF,IAAAA,UAAU,GAAG,IANT;AAOJ8E,IAAAA,UAAU,GAAG;AAPT,MAQF3K,KARJ;AAWA,QAAM,CAAE8F,IAAF,EAAQC,OAAR,IAAoB9B,cAAc,CACtC,CAAE,QAAF,EAAYxC,EAAZ,EAAgB,MAAhB,CADsC,EAEtC,KAFsC,CAAxC;AAKA,QAAMoD,MAAM,GAAGK,iBAAW,CAAC,MAAMa,OAAO,CAAC,IAAD,CAAd,EAAsB,CAAEA,OAAF,CAAtB,CAA1B;AAEA,QAAM,CAAE6E,QAAF,EAAYC,WAAZ,IAA4BvG,cAAQ,CAAC,EAAD,CAA1C;AACA,QAAM,CAAEwG,YAAF,EAAgBC,eAAhB,IAAoCzG,cAAQ,CAAC,KAAD,CAAlD;AAEA,QAAM0G,SAAS,GAAGvG,WAAW,CAACiG,KAAD,CAA7B;AACA,QAAMO,WAAW,GAAGxG,WAAW,CAACxE,OAAD,CAA/B;AAEA,QAAMiL,cAAc,GAAGjL,OAAO,KAAKgL,WAAnC;AACA,QAAME,mBAAmB,GAAG,CAACD,cAAD,KAAoBP,UAAU,IAAI9E,UAAlC,CAA5B,CA1BuC;;AA6BvC,MAAIqF,cAAJ,EAAoB;AAClBL,IAAAA,WAAW,CAACO,cAAc,CAACT,UAAU,GAAGU,SAAS,CAACX,KAAD,CAAZ,GAAsBA,KAAjC,CAAf,CAAX;AACD,GA/BsC;AAmCvC;;;AACA1I,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI,CAACgJ,SAAD,IAAc,CAACL,UAAnB,EAA+B;AAC7BE,MAAAA,WAAW,CAACO,cAAc,CAACV,KAAD,CAAf,CAAX;AACD;AACF,GAJQ,EAIN,CAAEA,KAAF,EAASzK,OAAT,CAJM,CAAT,CApCuC;;AA2CvC+B,EAAAA,eAAS,CAAC,MAAM;AACd,QAAImJ,mBAAmB,IAAIH,SAAvB,IAAoCN,KAAK,CAAC1H,MAAN,GAAegI,SAAS,CAAChI,MAAjE,EAAyE;AAEvE,UAAIyH,GAAG,GAAG,EAAV;AAEAC,MAAAA,KAAK,CAAC3H,OAAN,CAAckG,IAAI,IAAI;AACpB,YAAI,CAAC2B,QAAQ,CAACU,QAAT,CAAkBrC,IAAI,CAACxH,EAAvB,CAAL,EAAiC;AAC/BgJ,UAAAA,GAAG,CAACc,IAAJ,CAAStC,IAAI,CAACxH,EAAd;AACD;AACF,OAJD;AAMA,UAAI+J,WAAW,GAAGZ,QAAlB,CAVuE;;AAavE,UAAI,CAAC9E,IAAD,IAASD,UAAb,EAAyB;AACvBG,QAAAA,UAAU,GADa;;AAIvB,YAAI2E,UAAJ,EAAgB;AACda,UAAAA,WAAW,GAAGJ,cAAc,CAACC,SAAS,CAACX,KAAD,CAAV,CAA5B;AACD;AACF,OApBsE;;;AAuBvEc,MAAAA,WAAW,GAAGA,WAAW,CAACC,MAAZ,CAAmBxC,IAAI,IAAI,CAACwB,GAAG,CAACa,QAAJ,CAAarC,IAAb,CAA5B,CAAd;;AACA,UAAI0B,UAAJ,EAAgB;AACda,QAAAA,WAAW,CAAC5I,OAAZ,CAAoB,GAAG6H,GAAvB;AACD,OAFD,MAEO;AACLe,QAAAA,WAAW,CAACD,IAAZ,CAAiB,GAAGd,GAApB;AACD;;AAEDI,MAAAA,WAAW,CAACW,WAAD,CAAX;AACAT,MAAAA,eAAe,CAAC,IAAD,CAAf;AACD,KAhCD,MAgCO;AACLA,MAAAA,eAAe,CAAC,KAAD,CAAf;AACD;AACF,GApCQ,EAoCN,CAAEL,KAAF,EAAS5E,IAAT,EAAeqF,mBAAf,CApCM,CAAT,CA3CuC;;AAkFvCnJ,EAAAA,eAAS,CAAC,MAAM;AAEd,QAAI2I,UAAU,IAAI7E,IAAd,IAAsB,CAACgF,YAA3B,EAAyC;AACvCD,MAAAA,WAAW,CAACO,cAAc,CAACC,SAAS,CAACX,KAAD,CAAV,CAAf,CAAX;AACD;AACF,GALQ,EAKN,CAAE5E,IAAF,EAAQ6E,UAAR,CALM,CAAT,CAlFuC;;AA0FvC3I,EAAAA,eAAS,CAAC,MAAM;AACd,QAAImJ,mBAAmB,IAAIH,SAAvB,IAAoCN,KAAK,CAAC1H,MAAN,GAAegI,SAAS,CAAChI,MAAjE,EAAyE;AACvE,UAAI0I,IAAI,GAAG,EAAX;AAEAd,MAAAA,QAAQ,CAAC7H,OAAT,CAAiB4I,CAAC,IAAI;AACpB,YAAIC,OAAO,CAAClB,KAAD,EAAQiB,CAAR,CAAX,EAAuB;AACrBD,UAAAA,IAAI,CAACH,IAAL,CAAUI,CAAV;AACD;AACF,OAJD;AAMAd,MAAAA,WAAW,CAACa,IAAD,CAAX;AACD;AACF,GAZQ,EAYN,CAAEhB,KAAF,EAASS,mBAAT,CAZM,CAAT;;AAcA,QAAMnF,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAF,CAAhC;;AAEA,QAAM+F,QAAQ,GAAG,CAAC,CAACnB,KAAK,CAAC1H,MAAzB;AAEA,QAAM0D,sBAAsB,GAAG,EAC7B,GAAGhF,gBAAU,CAACoD,aAAD,CADgB;AAE7BD,IAAAA;AAF6B,GAA/B;AAKA,SAAOlE;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAwC,qBAAgB,WAAWc,EAAnE;AAAA,eACLd;AACE,MAAA,KAAK,EAAGgG,8BAAU,CAChB,mCADgB,EAEhBkF,QAAQ,GAAG,EAAH,GAAQ,OAFA,EAGfA,QAAQ,IAAI/F,IAAb,GAAqB,MAArB,GAA8B,EAHd,CADpB;AAME,MAAA,OAAO,EAAG+F,QAAQ,GAAG7F,UAAH,GAAgBuE,MANpC;AAAA,iBAOE3J;AACE,QAAA,KAAK,EAAGL,KADV;AAEE,QAAA,KAAK,EAAC,yCAFR;AAAA,kBAIIA;AAJJ,QAPF,EAaEI;AAAK,QAAA,KAAK,EAAC,2CAAX;AAAA,mBAEI8J,GAAG,GAEC9J;AACE,UAAA,KAAK,EAAC,sBADR;AAEE,UAAA,KAAK,EAAC,yEAFR;AAGE,UAAA,OAAO,EAAG8J,GAHZ;AAAA,qBAKE7J,eAAC,UAAD,KALF,EAOI,CAACiL,QAAD,GACEjL;AAAM,YAAA,KAAK,EAAC,sCAAZ;AAAA;AAAA,YADF,GAGI,IAVR;AAAA,UAFD,GAgBC,IAlBR,EAqBIiL,QAAQ,GAEJjL;AACE,UAAA,KAAK,EAAI,iBAAgB8J,KAAK,CAAC1H,MAAO,QAAO0H,KAAK,CAAC1H,MAAN,IAAgB,CAAhB,GAAoB,GAApB,GAA0B,EAAG,EAD5E;AAEE,UAAA,KAAK,EAAC,iCAFR;AAAA,oBAII0H,KAAK,CAAC1H;AAJV,UAFI,GASJ,IA9BR,EAiCI6I,QAAQ,GAEJjL;AACE,UAAA,KAAK,EAAC,gBADR;AAEE,UAAA,KAAK,EAAC,qEAFR;AAAA,oBAIEA,eAAC,SAAD;AAAW,YAAA,KAAK,EAAGkF,IAAI,GAAG,iCAAH,GAAuC;AAA9D;AAJF,UAFI,GASJ,IA1CR;AAAA,QAbF;AAAA,MADK,EA4DLlF;AAAK,MAAA,KAAK,EAAG+F,8BAAU,CACrB,2BADqB,EAErBb,IAAI,IAAI+F,QAAR,GAAmB,MAAnB,GAA4B,EAFP,CAAvB;AAAA,gBAIEjL,eAACkE,aAAD,CAAwB,QAAxB;AAAiC,QAAA,KAAK,EAAG4B,sBAAzC;AAAA,kBAGIkE,QAAQ,CAAC9H,GAAT,CAAa,CAAC6I,CAAD,EAAIzC,KAAJ,KAAc;AACzB,gBAAMD,IAAI,GAAG2C,OAAO,CAAClB,KAAD,EAAQiB,CAAR,CAApB;;AAEA,cAAI,CAAC1C,IAAL,EAAW;AACT;AACD;;AAED,gBAAM;AAAExH,YAAAA;AAAF,cAASwH,IAAf,CAPyB;;AAUzB,gBAAMoB,QAAQ,GAAGS,YAAY,KAAKH,UAAU,GAAGzB,KAAK,KAAK,CAAb,GAAiBA,KAAK,KAAK0B,QAAQ,CAAC5H,MAAT,GAAkB,CAA5D,CAA7B;AAEA,iBACE8D,qBAAC,QAAD,OACOmC,IADP;AAEE,YAAA,QAAQ,EAAGoB,QAFb;AAGE,YAAA,OAAO,EAAGpK,OAHZ;AAIE,YAAA,KAAK,EAAGiJ,KAJV;AAKE,YAAA,GAAG,EAAGzH;AALR,YADF;AAQD,SApBD;AAHJ;AAJF,MA5DK;AAAA,IAAP;AA4FD;;AAKD;AACA;AACA;;AACA,SAAS4J,SAAT,CAAmBX,KAAnB,EAA0B;AACxB,SAAOoB,cAAM,CAACpB,KAAD,EAAQqB,CAAC,IAAIA,CAAC,CAACxL,KAAF,CAAQyL,WAAR,EAAb,CAAb;AACD;;AAED,SAASJ,OAAT,CAAiBlB,KAAjB,EAAwBjJ,EAAxB,EAA4B;AAC1B,SAAO2E,YAAI,CAACsE,KAAD,EAAQqB,CAAC,IAAIA,CAAC,CAACtK,EAAF,KAASA,EAAtB,CAAX;AACD;;AAED,SAAS2J,cAAT,CAAwBV,KAAxB,EAA+B;AAC7B,SAAOA,KAAK,CAAC5H,GAAN,CAAUiJ,CAAC,IAAIA,CAAC,CAACtK,EAAjB,CAAP;AACD;;ACtPc,SAASwK,WAAT,CAAqBjM,KAArB,EAA4B;AACzC,QAAM;AACJC,IAAAA,OADI;AAEJiM,IAAAA,KAFI;AAGJ7H,IAAAA;AAHI,MAIFrE,KAJJ;AAMA,QAAMmM,kBAAkB,GAAG3K,qBAAqB,CAAC0K,KAAD,EAAQjM,OAAR,CAAhD;AAEA,QAAMc,WAAW,GAAGsD,KAAK,IAAI8H,kBAA7B;;AAEA,MAAIpL,WAAJ,EAAiB;AACf,WACEH;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA,gBACIG;AADJ,MADF;AAKD;AACF;;ACrBD,MAAMwJ,MAAI,GAAG,MAAM,EAAnB;;AAEA,SAAS6B,QAAT,CAAkBpM,KAAlB,EAAyB;AACvB,QAAM;AACJyB,IAAAA,EADI;AAEJlB,IAAAA,KAFI;AAGJ8L,IAAAA,QAHI;AAIJC,IAAAA,QAJI;AAKJjI,IAAAA,KAAK,GAAG,KALJ;AAMJO,IAAAA,IAAI,GAAG2F;AANH,MAOFvK,KAPJ;;AASA,QAAMuM,YAAY,GAAG,CAAC;AAAE3D,IAAAA;AAAF,GAAD,KAAgB;AACnCyD,IAAAA,QAAQ,CAACzD,MAAM,CAAC4D,OAAR,CAAR;AACD,GAFD;;AAIA,QAAM9H,GAAG,GAAGC,iBAAiB,CAACC,IAAD,CAA7B;AAEA,SACEjE;AAAK,IAAA,KAAK,EAAC,+BAAX;AAAA,eACEC;AACE,MAAA,GAAG,EAAG8D,GADR;AAEE,MAAA,EAAE,EAAG+H,UAAQ,CAAChL,EAAD,CAFf;AAGE,MAAA,IAAI,EAAGA,EAHT;AAIE,MAAA,IAAI,EAAC,UAJP;AAKE,MAAA,KAAK,EAAC,4BALR;AAME,MAAA,QAAQ,EAAG8K,YANb;AAOE,MAAA,OAAO,EAAGlI,KAPZ;AAQE,MAAA,QAAQ,EAAGiI;AARb,MADF,EAUE1L;AAAO,MAAA,GAAG,EAAG6L,UAAQ,CAAChL,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiElB;AAAjE,MAVF;AAAA,IADF;AAcD;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASmM,aAAT,CAAuB1M,KAAvB,EAA8B;AAC3C,QAAM;AACJC,IAAAA,OADI;AAEJwB,IAAAA,EAFI;AAGJV,IAAAA,WAHI;AAIJR,IAAAA,KAJI;AAKJoM,IAAAA,QALI;AAMJC,IAAAA,QANI;AAOJN,IAAAA,QAPI;AAQJ1H,IAAAA,IAAI,GAAG2F;AARH,MASFvK,KATJ;AAWA,QAAMqE,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAAtB;AAEA,QAAM4M,KAAK,GAAGxH,iBAAiB,CAACT,IAAD,CAA/B;AAEA,SACEjE;AAAK,IAAA,KAAK,EAAC,gEAAX;AAA4E,qBAAgBc,EAA5F;AAAA,eACEb,eAAC,QAAD;AACE,MAAA,QAAQ,EAAG0L,QADb;AAEE,MAAA,EAAE,EAAG7K,EAFP;AAGE,MAAA,KAAK,EAAGlB,KAHV;AAIE,MAAA,QAAQ,EAAGqM,QAJb;AAKE,MAAA,IAAI,EAAGhI,IALT;AAME,MAAA,KAAK,EAAGP;AANV,MADF,EAQIwI,KAAK,IAAIjM;AAAK,MAAA,KAAK,EAAC,4BAAX;AAAA,gBAA0CiM;AAA1C,MARb,EASEjM,eAAC,WAAD;AAAa,MAAA,KAAK,EAAGa,EAArB;AAA0B,MAAA,OAAO,EAAGxB,OAApC;AAA8C,MAAA,KAAK,EAAGc;AAAtD,MATF;AAAA,IADF;AAaD;AAEM,SAASuF,UAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACN,OAAtB;AACD;;AAKD,SAASC,UAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;AClDc,SAASsL,IAAT,CAAc/M,KAAd,EAAqB;AAClC,QAAM;AACJyB,IAAAA,EADI;AAEJxB,IAAAA,OAFI;AAGJyK,IAAAA,KAAK,GAAG,EAHJ;AAIJ9D,IAAAA,SAJI;AAKJrG,IAAAA,KAAK,GAAG,SALJ;AAMJuF,IAAAA,IAAI,EAAED,UANF;AAOJmH,IAAAA,KAPI;AAQJC,IAAAA,QARI;AASJ7C,IAAAA,cATI;AAUJ8C,IAAAA;AAVI,MAWFlN,KAXJ;AAaA,QAAM,CAAE8F,IAAF,EAAQC,OAAR,IAAoBzB,cAAQ,CAAC,CAAC,CAACuB,UAAH,CAAlC;AAEA,QAAMgG,QAAQ,GAAG,CAAC,CAACnB,KAAK,CAAC1H,MAAzB;;AACA,QAAMgD,UAAU,GAAG,MAAM6F,QAAQ,IAAI9F,OAAO,CAAC,CAACD,IAAF,CAA5C;;AAEA,QAAMqH,OAAO,GAAG,CAAC1I,WAAW,CAACqB,IAAD,CAAZ,IAAsBA,IAAtC;AACA,QAAMoF,cAAc,GAAGzG,WAAW,CAACxE,OAAD,CAAX,KAAyBA,OAAhD;AACA,QAAMmN,WAAW,GAAGD,OAAO,IAAIjC,cAA/B;AACA,QAAMmC,WAAW,GAAGC,cAAc,CAAC5C,KAAD,EAAQwC,SAAR,EAAmBE,WAAnB,CAAlC;AAEA,QAAMG,QAAQ,GAAGC,WAAW,CAAC9C,KAAD,EAAQQ,cAAR,CAA5B;AAEAlJ,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI8D,IAAI,IAAI,CAAC+F,QAAb,EAAuB;AACrB9F,MAAAA,OAAO,CAAC,KAAD,CAAP;AACD;AACF,GAJQ,EAIN,CAAED,IAAF,EAAQ+F,QAAR,CAJM,CAAT;AAMA;AACF;AACA;;AACE,WAAS4B,OAAT,CAAiB5L,KAAjB,EAAwB;AACtBA,IAAAA,KAAK,CAACgH,eAAN;AACAmE,IAAAA,KAAK;;AAEL,QAAI,CAAClH,IAAL,EAAW;AACTC,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF;;AAED,SACEpF;AACE,qBAAgBc,EADlB;AAEE,IAAA,KAAK,EAAGkF,8BAAU,CAChB,4BADgB,EAEhB,iCAFgB,EAGhBkF,QAAQ,GAAG,EAAH,GAAQ,OAHA,EAIhB/F,IAAI,GAAG,MAAH,GAAY,EAJA,CAFpB;AAAA,eAQEnF;AAAK,MAAA,KAAK,EAAC,wCAAX;AAAoD,MAAA,OAAO,EAAGqF,UAA9D;AAAA,iBACEpF;AACE,QAAA,KAAK,EAAGL,KADV;AAEE,QAAA,KAAK,EAAGoG,8BAAU,CAChB,8CADgB,EAEhBb,IAAI,IAAI,MAFQ,CAFpB;AAAA,kBAMIvF;AANJ,QADF,EASEI;AACE,QAAA,KAAK,EAAC,gDADR;AAAA,mBAGEA;AACE,UAAA,KAAK,EAAC,sBADR;AAEE,UAAA,OAAO,EAAG8M,OAFZ;AAGE,UAAA,KAAK,EAAC,gCAHR;AAAA,qBAKE7M,eAAC,UAAD,KALF,EAOI,CAACiL,QAAD,GACEjL;AAAM,YAAA,KAAK,EAAC,sCAAZ;AAAA;AAAA,YADF,GAGI,IAVR;AAAA,UAHF,EAiBIiL,QAAQ,IACNjL;AACE,UAAA,KAAK,EAAI,iBAAgB8J,KAAK,CAAC1H,MAAO,QAAO0H,KAAK,CAAC1H,MAAN,IAAgB,CAAhB,GAAoB,GAApB,GAA0B,EAAG,EAD5E;AAEE,UAAA,KAAK,EAAC,iCAFR;AAAA,oBAII0H,KAAK,CAAC1H;AAJV,UAlBN,EA2BI6I,QAAQ,IACNjL;AACE,UAAA,KAAK,EAAC,kBADR;AAEE,UAAA,KAAK,EAAC,4BAFR;AAAA,oBAIEA,eAAC,SAAD;AAAW,YAAA,KAAK,EAAGkF,IAAI,GAAG,iCAAH,GAAuC;AAA9D;AAJF,UA5BN;AAAA,QATF;AAAA,MARF,EAwDI+F,QAAQ,IACNjL,eAAC,SAAD;AACE,MAAA,cAAc,EAAGwJ,cADnB;AAEE,MAAA,SAAS,EAAGxD,SAFd;AAGE,MAAA,OAAO,EAAG3G,OAHZ;AAIE,MAAA,EAAE,EAAGwB,EAJP;AAKE,MAAA,KAAK,EAAG4L,WALV;AAME,MAAA,QAAQ,EAAGE,QANb;AAOE,MAAA,QAAQ,EAAGN,QAPb;AAQE,MAAA,IAAI,EAAGnH;AART,MAzDN;AAAA,IADF;AAwED;;AAED,SAAS4H,SAAT,CAAmB1N,KAAnB,EAA0B;AACxB,QAAM;AACJoK,IAAAA,cADI;AAEJxD,IAAAA,SAAS,EAAEC,SAFP;AAGJ5G,IAAAA,OAHI;AAIJwB,IAAAA,EAJI;AAKJiJ,IAAAA,KALI;AAMJ6C,IAAAA,QANI;AAOJN,IAAAA,QAPI;AAQJnH,IAAAA;AARI,MASF9F,KATJ;AAWA,QAAMwD,MAAM,GAAGJ,aAAa,EAA5B;AAEA,QAAMuK,OAAO,GAAGJ,QAAQ,CAAC,CAAD,CAAxB;AAEAvL,EAAAA,eAAS,CAAC,MAAM;AACd,QAAI2L,OAAO,IAAIvD,cAAf,EAA+B;AAE7B;AACA,YAAM/D,KAAK,GAAGG,YAAQ,CAAE,mBAAkB/E,EAAG,IAAvB,CAAtB,CAH6B;;AAM7B,YAAMmM,QAAQ,GAAG,OAAOxD,cAAP,KAA2B,SAA3B,GACf,6BADe,GAEfA,cAFF;AAGA,YAAME,cAAc,GAAG9D,YAAQ,CAACoH,QAAD,EAAWvH,KAAX,CAA/B,CAT6B;;AAY7B,UAAIiE,cAAJ,EAAoB;AAElB,YAAInF,kBAAU,CAACmF,cAAc,CAAClF,MAAhB,CAAd,EAAuC;AACrCkF,UAAAA,cAAc,CAAClF,MAAf;AACD,SAFD,MAEO,IAAID,kBAAU,CAACmF,cAAc,CAACvF,KAAhB,CAAd,EAAsC;AAC3CuF,UAAAA,cAAc,CAACvF,KAAf;AACD;AAEF;AACF;AACF,GAvBQ,EAuBN,CAAE4I,OAAF,EAAWvD,cAAX,EAA2B3I,EAA3B,CAvBM,CAAT;AAyBA,SACEb;AAAI,IAAA,KAAK,EAAG+F,8BAAU,CACpB,uCADoB,EAEpBb,IAAI,GAAG,MAAH,GAAY,EAFI,CAAtB;AAAA,cAKI4E,KAAK,CAAC5H,GAAN,CAAU,CAACmG,IAAD,EAAOC,KAAP,KAAiB;AACzB,YAAMxF,GAAG,GAAGF,MAAM,CAACyF,IAAD,CAAlB;AAEA,aAAQtI;AAAI,QAAA,KAAK,EAAC,sCAAV;AAAA,mBACNC,eAAC,SAAD;AACE,UAAA,OAAO,EAAGX,OADZ;AAEE,UAAA,EAAE,EAAGwB,EAFP;AAGE,UAAA,KAAK,EAAGyH,KAHV;AAIE,UAAA,IAAI,EAAGD,IAJT;AAKE,UAAA,IAAI,EAAGA,IAAI,KAAK0E;AALlB,UADM,EAQJV,QAAQ,IACNrM;AACE,UAAA,IAAI,EAAC,QADP;AAEE,UAAA,KAAK,EAAC,aAFR;AAGE,UAAA,KAAK,EAAC,0EAHR;AAIE,UAAA,OAAO,EAAG,MAAMqM,QAAQ,IAAIA,QAAQ,CAAChE,IAAD,CAJtC;AAAA,oBAKCrI,eAAC,UAAD;AALD,UATE;AAAA,SAAuD8C,GAAvD,CAAR;AAkBD,KArBD;AALJ,IADF;AA8BD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4J,cAAT,CAAwBO,YAAxB,EAAsCX,SAAtC,EAAiDE,WAAW,GAAG,KAA/D,EAAsE;AACpE,QAAMU,QAAQ,GAAGvL,YAAM,CAACsL,YAAY,CAAC9J,KAAb,EAAD,CAAvB,CADoE;;AAIpE,MAAIqJ,WAAJ,EAAiB;AACfU,IAAAA,QAAQ,CAACnL,OAAT,GAAmBkL,YAAY,CAAC9J,KAAb,EAAnB;;AAEA,QAAImJ,SAAJ,EAAe;AACbY,MAAAA,QAAQ,CAACnL,OAAT,CAAiBoL,IAAjB,CAAsBb,SAAtB;AACD;AACF,GAND,MAMO;AACL,UAAMxC,KAAK,GAAGoD,QAAQ,CAACnL,OAAvB,CADK;;AAIL,SAAK,MAAMsG,IAAX,IAAmB4E,YAAnB,EAAiC;AAC/B,UAAI,CAACnD,KAAK,CAACY,QAAN,CAAerC,IAAf,CAAL,EAA2B;AAEzB;AACAiE,QAAAA,SAAS,GAAGxC,KAAK,CAAC9H,OAAN,CAAcqG,IAAd,CAAH,GAAyByB,KAAK,CAACa,IAAN,CAAWtC,IAAX,CAAlC;AACD;AACF,KAVI;;;AAaL6E,IAAAA,QAAQ,CAACnL,OAAT,GAAmB+H,KAAK,CAACe,MAAN,CAAaxC,IAAI,IAAI4E,YAAY,CAACvC,QAAb,CAAsBrC,IAAtB,CAArB,CAAnB;AACD;;AAED,SAAO6E,QAAQ,CAACnL,OAAhB;AACD;;AAED,SAAS6K,WAAT,CAAqB9C,KAAK,GAAG,EAA7B,EAAiC0C,WAAjC,EAA8C;AAC5C,QAAMY,aAAa,GAAGvJ,WAAW,CAACiG,KAAK,CAAC3G,KAAN,EAAD,CAAX,IAA8B,EAApD;;AAEA,MAAIqJ,WAAJ,EAAiB;AACf,WAAO,EAAP;AACD;;AAED,SAAOY,aAAa,GAAGtD,KAAK,CAACe,MAAN,CAAaxC,IAAI,IAAI,CAAC+E,aAAa,CAAC1C,QAAd,CAAuBrC,IAAvB,CAAtB,CAAH,GAAyD,EAA7E;AACD;;ACjRD,SAASgF,WAAT,CAAqBjO,KAArB,EAA4B;AAE1B,QAAM;AACJkO,IAAAA,QADI;AAEJ5B,IAAAA,QAFI;AAGJ7K,IAAAA,EAHI;AAIJlB,IAAAA,KAJI;AAKJ4N,IAAAA,GALI;AAMJC,IAAAA,GANI;AAOJC,IAAAA,OAPI;AAQJC,IAAAA,IARI;AASJjK,IAAAA,KAAK,GAAG;AATJ,MAUFrE,KAVJ;AAYA,QAAMuO,WAAW,GAAGjL,aAAO,CAAC,MAAM;AAChC,WAAO4K,QAAQ,CAACrM,KAAK,IAAI;AAEvB,YAAM;AACJ2M,QAAAA,QADI;AAEJnK,QAAAA;AAFI,UAGFxC,KAAK,CAAC+G,MAHV;;AAKA,UAAI4F,QAAQ,CAACC,KAAb,EAAoB;AAClBJ,QAAAA,OAAO,CAAChK,KAAK,GAAGqK,UAAU,CAACrK,KAAD,CAAb,GAAuBsK,SAA7B,CAAP;AACD;AACF,KAVc,CAAf;AAWD,GAZ0B,EAYxB,CAAEN,OAAF,EAAWH,QAAX,CAZwB,CAA3B;AAcA,SACEvN;AAAK,IAAA,KAAK,EAAC,kCAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAG6L,UAAQ,CAAChL,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiElB;AAAjE,MADF,EAEEK;AACE,MAAA,EAAE,EAAG6L,UAAQ,CAAChL,EAAD,CADf;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,IAAI,EAAGA,EAHT;AAIE,MAAA,UAAU,EAAC,OAJb;AAKE,MAAA,YAAY,EAAC,KALf;AAME,MAAA,QAAQ,EAAG6K,QANb;AAOE,MAAA,KAAK,EAAC,4BAPR;AAQE,MAAA,GAAG,EAAG6B,GARR;AASE,MAAA,GAAG,EAAGC,GATR;AAUE,MAAA,OAAO,EAAGG,WAVZ;AAWE,MAAA,IAAI,EAAGD,IAXT;AAYE,MAAA,KAAK,EAAGjK;AAZV,MAFF;AAAA,IADF;AAkBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASuK,gBAAT,CAA0B5O,KAA1B,EAAiC;AAC9C,QAAM;AACJkO,IAAAA,QADI;AAEJnN,IAAAA,WAFI;AAGJuL,IAAAA,QAHI;AAIJrM,IAAAA,OAJI;AAKJ0M,IAAAA,QALI;AAMJlL,IAAAA,EANI;AAOJlB,IAAAA,KAPI;AAQJ4N,IAAAA,GARI;AASJC,IAAAA,GATI;AAUJxB,IAAAA,QAVI;AAWJ0B,IAAAA;AAXI,MAYFtO,KAZJ;AAcA,QAAMqE,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAAtB;AACA,SACEU;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAwC,qBAAgBc,EAAxD;AAAA,eACEb,eAAC,WAAD;AACE,MAAA,QAAQ,EAAGsN,QADb;AAEE,MAAA,QAAQ,EAAG5B,QAFb;AAGE,MAAA,EAAE,EAAG7K,EAHP;AAIE,MAAA,KAAK,EAAGlB,KAJV;AAKE,MAAA,OAAO,EAAGqM,QALZ;AAME,MAAA,GAAG,EAAGuB,GANR;AAOE,MAAA,GAAG,EAAGC,GAPR;AAQE,MAAA,IAAI,EAAGE,IART;AASE,MAAA,KAAK,EAAGjK;AATV,MADF,EAWEzD,eAAC,WAAD;AAAa,MAAA,KAAK,EAAGa,EAArB;AAA0B,MAAA,OAAO,EAAGxB,OAApC;AAA8C,MAAA,KAAK,EAAGc;AAAtD,MAXF;AAAA,IADF;AAeD;AAEM,SAASuF,UAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACzI,KAAtB;AACD;;AAKD,SAASoI,UAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;ACrGD,MAAM8I,MAAI,GAAG,MAAM,EAAnB;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsE,MAAT,CAAgB7O,KAAhB,EAAuB;AACrB,QAAM;AACJyB,IAAAA,EADI;AAEJlB,IAAAA,KAFI;AAGJ8L,IAAAA,QAHI;AAIJyC,IAAAA,OAAO,GAAG,EAJN;AAKJzK,IAAAA,KALI;AAMJiI,IAAAA,QANI;AAOJ1H,IAAAA,IAAI,GAAG2F;AAPH,MAQFvK,KARJ;AAUA,QAAM0E,GAAG,GAAGC,iBAAiB,CAACC,IAAD,CAA7B;;AAEA,QAAM2H,YAAY,GAAG,CAAC;AAAE3D,IAAAA;AAAF,GAAD,KAAgB;AACnCyD,IAAAA,QAAQ,CAACzD,MAAM,CAACvE,KAAR,CAAR;AACD,GAFD;;AAIA,SACE1D;AAAK,IAAA,KAAK,EAAC,6BAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAG6L,UAAQ,CAAChL,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiElB;AAAjE,MADF,EAEEK;AACE,MAAA,GAAG,EAAG8D,GADR;AAEE,MAAA,EAAE,EAAG+H,UAAQ,CAAChL,EAAD,CAFf;AAGE,MAAA,IAAI,EAAGA,EAHT;AAIE,MAAA,KAAK,EAAC,4BAJR;AAKE,MAAA,OAAO,EAAG8K,YALZ;AAME,MAAA,KAAK,EAAGlI,KANV;AAOE,MAAA,QAAQ,EAAGiI,QAPb;AAAA,gBAUIwC,OAAO,CAAChM,GAAR,CAAY,CAACiM,MAAD,EAASC,GAAT,KAAiB;AAC3B,eACEpO;AAEE,UAAA,KAAK,EAAGmO,MAAM,CAAC1K,KAFjB;AAGE,UAAA,QAAQ,EAAG0K,MAAM,CAACzC,QAHpB;AAAA,oBAIIyC,MAAM,CAACxO;AAJX,WACQyO,GADR,CADF;AAQD,OATD;AAVJ,MAFF;AAAA,IADF;AA2BD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASC,WAAT,CAAqBjP,KAArB,EAA4B;AACzC,QAAM;AACJC,IAAAA,OADI;AAEJwB,IAAAA,EAFI;AAGJV,IAAAA,WAHI;AAIJR,IAAAA,KAJI;AAKJoM,IAAAA,QALI;AAMJC,IAAAA,QANI;AAOJsC,IAAAA,UAPI;AAQJ5C,IAAAA,QARI;AASJ1H,IAAAA,IAAI,GAAG2F;AATH,MAUFvK,KAVJ;AAYA,QAAMqE,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAAtB;AACA,QAAM6O,OAAO,GAAGI,UAAU,CAACjP,OAAD,CAA1B;AAEA,QAAM4M,KAAK,GAAGxH,iBAAiB,CAACT,IAAD,CAA/B;AAEA,SACEjE;AACE,IAAA,KAAK,EAAGwO,8BAAU,CAChB,4BADgB,EAEhBtC,KAAK,GAAG,WAAH,GAAiB,EAFN,CADpB;AAKE,qBAAgBpL,EALlB;AAAA,eAMEb,eAAC,MAAD;AACE,MAAA,EAAE,EAAGa,EADP;AAEE,MAAA,KAAK,EAAGlB,KAFV;AAGE,MAAA,KAAK,EAAG8D,KAHV;AAIE,MAAA,QAAQ,EAAGuI,QAJb;AAKE,MAAA,OAAO,EAAGkC,OALZ;AAME,MAAA,QAAQ,EAAGxC,QANb;AAOE,MAAA,IAAI,EAAG1H;AAPT,MANF,EAcIiI,KAAK,IAAIjM;AAAK,MAAA,KAAK,EAAC,4BAAX;AAAA,gBAA0CiM;AAA1C,MAdb,EAeEjM,eAAC,WAAD;AAAa,MAAA,KAAK,EAAGa,EAArB;AAA0B,MAAA,OAAO,EAAGxB,OAApC;AAA8C,MAAA,KAAK,EAAGc;AAAtD,MAfF;AAAA,IADF;AAmBD;AAEM,SAASuF,UAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACzI,KAAtB;AACD;;AAID,SAASoI,UAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;ACpHc,SAAS2N,MAAT,CAAgBpP,KAAhB,EAAuB;AACpC,QAAM;AACJkO,IAAAA,QADI;AAEJ5B,IAAAA,QAFI;AAGJrM,IAAAA,OAHI;AAIJ0M,IAAAA,QAJI;AAKJlL,IAAAA,EALI;AAMJ4N,IAAAA,MANI;AAOJC,IAAAA,OAPI;AAQJ1C,IAAAA;AARI,MASF5M,KATJ;AAWA,QAAMuO,WAAW,GAAGjL,aAAO,CAAC,MAAM;AAChC,WAAO4K,QAAQ,CAAC,CAAC;AAAEtF,MAAAA;AAAF,KAAD,KAAgBgE,QAAQ,CAAChE,MAAM,CAACvE,KAAP,CAAarB,MAAb,GAAsB4F,MAAM,CAACvE,KAA7B,GAAqCsK,SAAtC,CAAzB,CAAf;AACD,GAF0B,EAExB,CAAE/B,QAAF,EAAYsB,QAAZ,CAFwB,CAA3B;AAIA,QAAM7J,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAAtB;AAEA,SACEW;AAAK,IAAA,KAAK,EAAC,6BAAX;AAAA,cACEA;AACE,MAAA,EAAE,EAAG6L,UAAQ,CAAChL,EAAD,CADf;AAEE,MAAA,IAAI,EAAC,MAFP;AAGE,MAAA,IAAI,EAAGA,EAHT;AAIE,MAAA,UAAU,EAAC,OAJb;AAKE,MAAA,YAAY,EAAC,KALf;AAME,MAAA,QAAQ,EAAG6K,QANb;AAOE,MAAA,KAAK,EAAC,4BAPR;AAQE,MAAA,OAAO,EAAGiC,WARZ;AASE,oBAAalK,KAAK,IAAI,SATxB;AAUE,MAAA,OAAO,EAAGiL,OAVZ;AAWE,MAAA,MAAM,EAAGD,MAXX;AAYE,MAAA,KAAK,EAAGhL,KAAK,IAAI;AAZnB;AADF,IADF;AAiBD;AAEM,SAASiC,UAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACzI,KAAtB;AACD;;AAKD,SAASoI,UAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;ACtDc,SAAS8N,QAAT,CAAkBvP,KAAlB,EAAyB;AAEtC,QAAM;AACJO,IAAAA,KADI;AAEJiP,IAAAA,IAAI,GAAG;AAFH,MAGFxP,KAHJ;AAKA,QAAMyP,iBAAiB,GAAG,4BAA1B;AACA,QAAMC,iBAAiB,GAAG,sCAA1B;AAEA,SACE9O;AACE,IAAA,KAAK,EAAC,gCADR;AAEE,IAAA,KAAK,EACHL,KAAK,IACHiP,IAAI,KAAK,UAAT,GAAsBC,iBAAtB,GAA0CC,iBADvC,CAHT;AAAA,cAQGF,IAAI,KAAK,UAAT,GAAsB5O,eAAC,gBAAD,KAAtB,GAA6CA,eAAC,gBAAD;AARhD,IADF;AAYD;;ACpBD,SAAS+O,QAAT,CAAkB3P,KAAlB,EAAyB;AAEvB,QAAM;AACJyB,IAAAA,EADI;AAEJlB,IAAAA,KAFI;AAGJqP,IAAAA,IAAI,GAAG,CAHH;AAIJ1B,IAAAA,QAJI;AAKJsB,IAAAA,IALI;AAMJnB,IAAAA,OANI;AAOJhK,IAAAA,KAAK,GAAG,EAPJ;AAQJiI,IAAAA,QARI;AASJuD,IAAAA;AATI,MAUF7P,KAVJ;AAYA,QAAMuO,WAAW,GAAGjL,aAAO,CAAC,MAAM;AAChC,WAAO4K,QAAQ,CAAC,CAAC;AAAEtF,MAAAA;AAAF,KAAD,KAAgByF,OAAO,CAACzF,MAAM,CAACvE,KAAP,CAAarB,MAAb,GAAsB4F,MAAM,CAACvE,KAA7B,GAAqCsK,SAAtC,CAAxB,CAAf;AACD,GAF0B,EAExB,CAAEN,OAAF,EAAWH,QAAX,CAFwB,CAA3B;AAIA,SACEvN;AAAK,IAAA,KAAK,EAAC,+BAAX;AAAA,eACEA;AAAO,MAAA,GAAG,EAAG8L,UAAQ,CAAChL,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,iBACIlB,KADJ,EAEGiP,IAAI,IAAI5O,eAAC,QAAD;AAAU,QAAA,IAAI,EAAG4O,IAAjB;AAAwB,QAAA,KAAK,EAAGjP;AAAhC,QAFX;AAAA,MADF,EAKEK;AACE,MAAA,EAAE,EAAG6L,UAAQ,CAAChL,EAAD,CADf;AAEE,MAAA,IAAI,EAAGA,EAFT;AAGE,MAAA,UAAU,EAAC,OAHb;AAIE,MAAA,KAAK,EAAGkF,8BAAU,CAChB,4BADgB,EAEhBkJ,SAAS,GAAG,sCAAH,GAA4C,EAFrC,CAJpB;AAQE,MAAA,OAAO,EAAGtB,WARZ;AASE,MAAA,OAAO,EAAGvO,KAAK,CAACsP,OATlB;AAUE,MAAA,MAAM,EAAGtP,KAAK,CAACqP,MAVjB;AAWE,MAAA,IAAI,EAAGO,IAXT;AAYE,MAAA,KAAK,EAAGvL,KAZV;AAaE,MAAA,QAAQ,EAAGiI;AAbb,MALF;AAAA,IADF;AAsBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASwD,aAAT,CAAuB9P,KAAvB,EAA8B;AAC3C,QAAM;AACJC,IAAAA,OADI;AAEJwB,IAAAA,EAFI;AAGJV,IAAAA,WAHI;AAIJmN,IAAAA,QAJI;AAKJsB,IAAAA,IALI;AAMJjP,IAAAA,KANI;AAOJoM,IAAAA,QAPI;AAQJC,IAAAA,QARI;AASJgD,IAAAA,IATI;AAUJC,IAAAA,SAVI;AAWJvD,IAAAA;AAXI,MAYFtM,KAZJ;AAcA,QAAMqE,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAAtB;AACA,SACEU;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAwC,qBAAgBc,EAAxD;AAAA,eACEb,eAAC,QAAD;AACE,MAAA,EAAE,EAAGa,EADP;AAEE,MAAA,KAAK,EAAGlB,KAFV;AAGE,MAAA,KAAK,EAAG8D,KAHV;AAIE,MAAA,OAAO,EAAGuI,QAJZ;AAKE,MAAA,IAAI,EAAGgD,IALT;AAME,MAAA,QAAQ,EAAG1B,QANb;AAOE,MAAA,SAAS,EAAG2B,SAPd;AAQE,MAAA,IAAI,EAAGL,IART;AASE,MAAA,QAAQ,EAAGlD;AATb,MADF,EAWE1L,eAAC,WAAD;AAAa,MAAA,KAAK,EAAGa,EAArB;AAA0B,MAAA,OAAO,EAAGxB,OAApC;AAA8C,MAAA,KAAK,EAAGc;AAAtD,MAXF;AAAA,IADF;AAeD;AAEM,SAASuF,UAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACzI,KAAtB;AACD;;AAKD,SAASoI,UAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;ACvFD,MAAM8I,IAAI,GAAG,MAAM,EAAnB;;AAEA,SAASwF,SAAT,CAAmB/P,KAAnB,EAA0B;AAExB,QAAM;AACJkO,IAAAA,QADI;AAEJ5B,IAAAA,QAAQ,GAAG,KAFP;AAGJ7K,IAAAA,EAHI;AAIJlB,IAAAA,KAJI;AAKJ8N,IAAAA,OALI;AAMJmB,IAAAA,IAAI,GAAG,KANH;AAOJnL,IAAAA,KAAK,GAAG,EAPJ;AAQJO,IAAAA,IAAI,GAAG2F;AARH,MASFvK,KATJ;AAWA,QAAM0E,GAAG,GAAGC,iBAAiB,CAACC,IAAD,CAA7B;AAEA,QAAM2J,WAAW,GAAGjL,aAAO,CAAC,MAAM;AAChC,WAAO4K,QAAQ,CAAC,CAAC;AAAEtF,MAAAA;AAAF,KAAD,KAAgByF,OAAO,CAACzF,MAAM,CAACvE,KAAP,CAAarB,MAAb,GAAsB4F,MAAM,CAACvE,KAA7B,GAAqCsK,SAAtC,CAAxB,CAAf;AACD,GAF0B,EAExB,CAAEN,OAAF,EAAWH,QAAX,CAFwB,CAA3B;AAIA,SACEvN;AAAK,IAAA,KAAK,EAAC,gCAAX;AAAA,eACEA;AAAO,MAAA,GAAG,EAAG8L,UAAQ,CAAChL,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,iBACIlB,KADJ,EAEGiP,IAAI,IAAI5O,eAAC,QAAD;AAAU,QAAA,IAAI,EAAG4O,IAAjB;AAAwB,QAAA,KAAK,EAAGjP;AAAhC,QAFX;AAAA,MADF,EAKEK;AACE,MAAA,GAAG,EAAG8D,GADR;AAEE,MAAA,EAAE,EAAG+H,UAAQ,CAAChL,EAAD,CAFf;AAGE,MAAA,IAAI,EAAC,MAHP;AAIE,MAAA,IAAI,EAAGA,EAJT;AAKE,MAAA,UAAU,EAAC,OALb;AAME,MAAA,YAAY,EAAC,KANf;AAOE,MAAA,QAAQ,EAAG6K,QAPb;AAQE,MAAA,KAAK,EAAC,4BARR;AASE,MAAA,OAAO,EAAGiC,WATZ;AAUE,MAAA,OAAO,EAAGvO,KAAK,CAACsP,OAVlB;AAWE,MAAA,MAAM,EAAGtP,KAAK,CAACqP,MAXjB;AAYE,MAAA,KAAK,EAAGhL,KAAK,IAAI;AAZnB,MALF;AAAA,IADF;AAqBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAAS2L,cAAT,CAAwBhQ,KAAxB,EAA+B;AAC5C,QAAM;AACJC,IAAAA,OADI;AAEJwB,IAAAA,EAFI;AAGJV,IAAAA,WAHI;AAIJmN,IAAAA,QAJI;AAKJ5B,IAAAA,QALI;AAMJkD,IAAAA,IANI;AAOJjP,IAAAA,KAPI;AAQJoM,IAAAA,QARI;AASJC,IAAAA,QATI;AAUJqD,IAAAA,QAVI;AAWJrL,IAAAA,IAAI,GAAG2F;AAXH,MAYFvK,KAZJ;AAcA,QAAM,CAAEkQ,kBAAF,EAAsBC,qBAAtB,IAAgD7L,cAAQ,CAAC,IAAD,CAA9D;AACA,QAAM,CAAE8L,eAAF,EAAmBC,kBAAnB,IAA0C/L,cAAQ,CAAC,IAAD,CAAxD;AAEA,MAAID,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAApB;AAEA,QAAMqQ,aAAa,GAAG7L,WAAW,CAACJ,KAAD,CAAjC;AAEArC,EAAAA,eAAS,CAAC,MAAM;AACd,QAAImD,kBAAU,CAAC8K,QAAD,CAAd,EAA0B;AACxB,YAAMM,kBAAkB,GAAGN,QAAQ,CAAC5L,KAAD,CAAR,IAAmB,IAA9C;AAEAgM,MAAAA,kBAAkB,CAACE,kBAAD,CAAlB;AACD;AACF,GANQ,EAMN,CAAElM,KAAF,CANM,CAAT;;AAQA,QAAMgK,OAAO,GAAI7J,QAAD,IAAc;AAC5B,QAAI+L,kBAAkB,GAAG,IAAzB;;AAEA,QAAIpL,kBAAU,CAAC8K,QAAD,CAAd,EAA0B;AACxBM,MAAAA,kBAAkB,GAAGN,QAAQ,CAACzL,QAAD,CAAR,IAAsB,IAA3C;AACD;;AAED,QAAI+L,kBAAJ,EAAwB;AACtBJ,MAAAA,qBAAqB,CAAC3L,QAAD,CAArB;AACD,KAFD,MAEO;AACLoI,MAAAA,QAAQ,CAACpI,QAAD,CAAR;AACD;;AAED6L,IAAAA,kBAAkB,CAACE,kBAAD,CAAlB;AACD,GAdD;;AAgBA,MAAID,aAAa,KAAKjM,KAAlB,IAA2B+L,eAA/B,EAAgD;AAC9C/L,IAAAA,KAAK,GAAG6L,kBAAR;AACD;;AAED,QAAM5K,cAAc,GAAGD,iBAAiB,CAACT,IAAD,CAAxC;AAEA,QAAMiI,KAAK,GAAGvH,cAAc,IAAI8K,eAAhC;AAEA,SACEzP;AACE,IAAA,KAAK,EAAGgG,8BAAU,CAChB,4BADgB,EAEhBkG,KAAK,GAAG,WAAH,GAAiB,EAFN,CADpB;AAKE,qBAAgBpL,EALlB;AAAA,eAMEb,eAAC,SAAD;AACE,MAAA,QAAQ,EAAGsN,QADb;AAEE,MAAA,QAAQ,EAAG5B,QAFb;AAGE,MAAA,IAAI,EAAGkD,IAHT;AAIE,MAAA,EAAE,EAAG/N,EAJP;AAKE,MAAA,KAAK,EAAGlB,KALV;AAME,MAAA,OAAO,EAAG8N,OANZ;AAOE,MAAA,IAAI,EAAGzJ,IAPT;AAQE,MAAA,KAAK,EAAGP;AARV,MANF,EAeIwI,KAAK,IAAIjM;AAAK,MAAA,KAAK,EAAC,4BAAX;AAAA,gBAA0CiM;AAA1C,MAfb,EAgBEjM,eAAC,WAAD;AAAa,MAAA,KAAK,EAAGa,EAArB;AAA0B,MAAA,OAAO,EAAGxB,OAApC;AAA8C,MAAA,KAAK,EAAGc;AAAtD,MAhBF;AAAA,IADF;AAoBD;AAEM,SAASuF,UAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACzI,KAAtB;AACD;;AAKD,SAASoI,UAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;AC9JD,SAAS+O,YAAT,CAAsBxQ,KAAtB,EAA6B;AAC3B,QAAM;AACJyB,IAAAA,EADI;AAEJlB,IAAAA,KAFI;AAGJ8N,IAAAA,OAHI;AAIJhK,IAAAA,KAJI;AAKJoM,IAAAA;AALI,MAMFzQ,KANJ;;AAQA,QAAMuO,WAAW,GAAG,YAAY;AAC9BF,IAAAA,OAAO,CAAC,CAAChK,KAAF,CAAP;AACD,GAFD;;AAIA,SACE1D;AAAK,IAAA,KAAK,EAAC,oCAAX;AAAA,eACEC;AAAO,MAAA,KAAK,EAAC,4BAAb;AACE,MAAA,GAAG,EAAG6L,QAAQ,CAAChL,EAAD,CADhB;AAAA,gBAEIlB;AAFJ,MADF,EAKEI;AAAK,MAAA,KAAK,EAAC,oCAAX;AAAA,iBACEA;AAAO,QAAA,KAAK,EAAC,8CAAb;AAAA,mBACEC;AACE,UAAA,EAAE,EAAG6L,QAAQ,CAAChL,EAAD,CADf;AAEE,UAAA,KAAK,EAAC,4BAFR;AAGE,UAAA,IAAI,EAAC,UAHP;AAIE,UAAA,IAAI,EAAGA,EAJT;AAKE,UAAA,OAAO,EAAG8M,WALZ;AAME,UAAA,OAAO,EAAGlK;AANZ,UADF,EAQEzD;AAAM,UAAA,KAAK,EAAC;AAAZ,UARF;AAAA,QADF,EAWEA;AAAG,QAAA,KAAK,EAAC,2CAAT;AAAA,kBAAuD6P;AAAvD,QAXF;AAAA,MALF;AAAA,IADF;AAqBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASC,iBAAT,CAA2B1Q,KAA3B,EAAkC;AAC/C,QAAM;AACJC,IAAAA,OADI;AAEJwB,IAAAA,EAFI;AAGJV,IAAAA,WAHI;AAIJR,IAAAA,KAJI;AAKJkQ,IAAAA,aALI;AAMJ9D,IAAAA,QANI;AAOJC,IAAAA;AAPI,MAQF5M,KARJ;AAUA,QAAMqE,KAAK,GAAGsI,QAAQ,CAAC1M,OAAD,CAAtB;AACA,SACEU;AAAK,IAAA,KAAK,EAAC,qEAAX;AAAiF,qBAAgBc,EAAjG;AAAA,eACEb,eAAC,YAAD;AAAc,MAAA,EAAE,EAAGa,EAAnB;AAAwB,MAAA,KAAK,EAAGlB,KAAhC;AAAwC,MAAA,KAAK,EAAG8D,KAAhD;AAAwD,MAAA,OAAO,EAAGuI,QAAlE;AAA6E,MAAA,aAAa,EAAG6D;AAA7F,MADF,EAEE7P,eAAC,WAAD;AAAa,MAAA,KAAK,EAAGa,EAArB;AAA0B,MAAA,OAAO,EAAGxB,OAApC;AAA8C,MAAA,KAAK,EAAGc;AAAtD,MAFF;AAAA,IADF;AAMD;AAEM,SAASuF,QAAT,CAAkBwG,IAAlB,EAAwB;AAC7B,SAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACN,OAAtB;AACD;;AAKD,SAASC,QAAT,CAAkBhL,EAAlB,EAAsB;AACpB,SAAQ,wBAAwBA,EAAI,EAApC;AACD;;ACxED,MAAMkP,qBAAqB,GAAG,GAA9B;AAEe,SAASC,aAAT,CAAuBC,aAAvB,EAAsC;AACnD,SAAO,SAASC,cAAT,CAAwBC,EAAxB,EAA4B;AACjC,QAAIF,aAAa,KAAK,KAAtB,EAA6B;AAE3B,UAAIG,YAAY,GACdC,gBAAQ,CAACJ,aAAD,CAAR,GACEA,aADF,GAEEF,qBAHJ;AAKA,aAAOzC,gBAAQ,CAAC6C,EAAD,EAAKC,YAAL,CAAf;AACD,KARD,MAQO;AACL,aAAOD,EAAP;AACD;AACF,GAZD;AAaD;AAEDH,aAAa,CAACM,OAAd,GAAwB,CAAE,sBAAF,CAAxB;;ACrBA,YAAe;AACbN,EAAAA,aAAa,EAAE,CAAE,SAAF,EAAaA,aAAb;AADF,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|