@bpmn-io/properties-panel 3.3.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/context/TooltipContext.js","../src/hooks/useTooltipContext.js","../src/components/entries/Tooltip.js","../src/hooks/useDescriptionContext.js","../src/hooks/useError.js","../src/hooks/useEvent.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useStickyIntersectionObserver.js","../src/hooks/useStaticCallback.js","../src/components/Group.js","../src/components/Placeholder.js","../src/components/entries/Description.js","../src/components/entries/templating/TemplatingEditor.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/FEEL/context/FeelPopupContext.js","../src/components/util/dragger.js","../src/components/Popup.js","../src/components/entries/FEEL/FeelPopup.js","../src/components/entries/ToggleSwitch.js","../src/components/entries/NumberField.js","../src/components/entries/FEEL/Feel.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/Checkbox.js","../src/components/entries/templating/Templating.js","../src/components/entries/List.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.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: object) => string,\n * getTypeLabel: (element: object) => string,\n * getElementIcon: (element: object) => import('preact').Component,\n * getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\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","import {\n createContext\n} from 'preact';\n\nconst ErrorsContext = createContext({\n errors: {}\n});\n\nexport default ErrorsContext;","/**\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 createContext\n} from 'preact';\n\nconst TooltipContext = createContext({\n tooltip: {},\n getTooltipForId: () => {}\n});\n\nexport default TooltipContext;\n","import {\n useContext\n} from 'preact/hooks';\n\nimport {\n TooltipContext\n} from '../context';\n\n/**\n * Accesses the global TooltipContext and returns a tooltip for a given id and element.\n *\n * @example\n * ```jsx\n * function TextField(props) {\n * const tooltip = useTooltipContext('input1', element);\n * }\n * ```\n *\n * @param {string} id\n * @param {object} element\n *\n * @returns {string}\n */\nexport function useTooltipContext(id, element) {\n const {\n getTooltipForId\n } = useContext(TooltipContext);\n\n return getTooltipForId(id, element);\n}\n","import {\n useRef,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport { useTooltipContext } from '../../hooks/useTooltipContext';\n\nimport { createPortal } from 'preact/compat';\n\n/**\n * @param {Object} props\n * @param {String} props.forId\n * @param {String} props.value\n */\nexport default function TooltipWrapper(props) {\n const {\n forId,\n element\n } = props;\n\n const contextDescription = useTooltipContext(forId, element);\n\n const value = props.value || contextDescription;\n\n if (!value) {\n return props.children;\n }\n\n return <Tooltip { ...props } value={ value } forId={ prefixId(forId) } />;\n}\n\nfunction Tooltip(props) {\n const {\n forId,\n value,\n parent\n } = props;\n\n const [ visible, setShow ] = useState(false);\n\n let timeout = null;\n\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n\n const showTooltip = async (event) => {\n const show = () => !visible && setShow(true);\n\n if (event instanceof MouseEvent) {\n timeout = setTimeout(show, 200);\n } else {\n show();\n }\n };\n\n const hideTooltip = () => setShow(false);\n\n const hideTooltipViaEscape = (e) => {\n e.code === 'Escape' && hideTooltip();\n };\n\n const isTooltipHovered = ({ x, y }) => {\n const tooltip = tooltipRef.current;\n const wrapper = wrapperRef.current;\n\n return tooltip && (\n inBounds(x, y, wrapper.getBoundingClientRect()) ||\n inBounds(x, y, tooltip.getBoundingClientRect())\n );\n };\n\n useEffect(() => {\n const { current } = wrapperRef;\n\n if (!current) {\n return;\n }\n\n const hideHoveredTooltip = (e) => {\n const isFocused = document.activeElement === wrapperRef.current\n || document.activeElement.closest('.bio-properties-panel-tooltip');\n\n if (visible && !isTooltipHovered({ x: e.x, y: e.y }) && !isFocused) {\n hideTooltip();\n }\n };\n\n const hideFocusedTooltip = (e) => {\n const { relatedTarget } = e;\n const isTooltipChild = (el) => el && !!el.closest('.bio-properties-panel-tooltip');\n\n if (visible && !isHovered(wrapperRef.current) && !isTooltipChild(relatedTarget)) {\n hideTooltip();\n }\n };\n\n document.addEventListener('wheel', hideHoveredTooltip);\n document.addEventListener('focusout', hideFocusedTooltip);\n document.addEventListener('mousemove', hideHoveredTooltip);\n\n return () => {\n document.removeEventListener('wheel', hideHoveredTooltip);\n document.removeEventListener('mousemove', hideHoveredTooltip);\n document.removeEventListener('focusout', hideFocusedTooltip);\n };\n }, [ wrapperRef.current, visible ]);\n\n const renderTooltip = () => {\n return (\n <div\n class=\"bio-properties-panel-tooltip\"\n role=\"tooltip\"\n id=\"bio-properties-panel-tooltip\"\n aria-labelledby={ forId }\n style={ getTooltipPosition(wrapperRef.current) }\n ref={ tooltipRef }\n onClick={ (e)=> e.stopPropagation() }\n >\n <div class=\"bio-properties-panel-tooltip-content\">\n {value}\n </div>\n <div class=\"bio-properties-panel-tooltip-arrow\" />\n </div>\n );};\n\n return (\n <div class=\"bio-properties-panel-tooltip-wrapper\" tabIndex=\"0\"\n ref={ wrapperRef }\n onMouseEnter={ showTooltip }\n onMouseLeave={ ()=> clearTimeout(timeout) }\n onFocus={ showTooltip }\n onKeyDown={ hideTooltipViaEscape }\n onMouseDown={ (e)=> {e.preventDefault();} }\n >\n {props.children}\n {visible ?\n (parent ?\n createPortal(renderTooltip(), parent.current)\n : renderTooltip()\n ) : null\n }\n </div>\n );\n}\n\n\n// helper\nfunction inBounds(x, y, bounds) {\n const { top, right, bottom, left } = bounds;\n return x >= left && x <= right && y >= top && y <= bottom;\n}\n\nfunction getTooltipPosition(refElement) {\n const refPosition = refElement.getBoundingClientRect();\n\n const right = `calc(100% - ${refPosition.x}px)`;\n const top = `${refPosition.top - 10}px`;\n\n return `right: ${right}; top: ${top};`;\n}\n\nfunction isHovered(element) {\n return element.matches(':hover');\n}\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","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 {object} 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 } from 'preact/hooks';\n\nimport { ErrorsContext } from '../context';\n\nexport function useError(id) {\n const { errors } = useContext(ErrorsContext);\n\n return errors[ id ];\n}\n\nexport function useErrors() {\n const { errors } = useContext(ErrorsContext);\n\n return errors;\n}","import { useContext, useEffect, useRef } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\n\n/**\n * Subscribe to an event immediately. Update subscription after inputs changed.\n *\n * @param {string} event\n * @param {Function} callback\n */\nexport function useEvent(event, callback, eventBus) {\n const eventContext = useContext(EventContext);\n\n if (!eventBus) {\n ({ eventBus } = eventContext);\n }\n\n const didMount = useRef(false);\n\n // (1) subscribe immediately\n if (eventBus && !didMount.current) {\n eventBus.on(event, callback);\n }\n\n // (2) update subscription after inputs changed\n useEffect(() => {\n if (eventBus && didMount.current) {\n eventBus.on(event, callback);\n }\n\n didMount.current = true;\n\n return () => {\n if (eventBus) {\n eventBus.off(event, callback);\n }\n };\n }, [ callback, event, eventBus ]);\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 useCallback,\n useContext\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\n const setState = useCallback ((newValue) => {\n setLayoutForKey(path, newValue);\n }, [ setLayoutForKey ]);\n\n\n return [ layoutForKey, 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} 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 {string} id\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(id) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const focus = useRef(false);\n\n const onShowEntry = useCallback((event) => {\n if (event.id === id) {\n onShow();\n\n if (!focus.current) {\n focus.current = true;\n }\n }\n }, [ id ]);\n\n useEffect(() => {\n if (focus.current && 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 focus.current = false;\n }\n });\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { useEvent } from './useEvent';\n\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n\n const [ scrollContainer, setScrollContainer ] = useState(domQuery(scrollContainerSelector));\n\n const updateScrollContainer = useCallback(() => {\n const newScrollContainer = domQuery(scrollContainerSelector);\n\n if (newScrollContainer !== scrollContainer) {\n setScrollContainer(newScrollContainer);\n }\n }, [ scrollContainerSelector, scrollContainer ]);\n\n useEffect(() => {\n updateScrollContainer();\n }, [ updateScrollContainer ]);\n\n useEvent('propertiesPanel.attach', updateScrollContainer);\n useEvent('propertiesPanel.detach', updateScrollContainer);\n\n useEffect(() => {\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n // TODO(@barmac): test this\n if (!ref.current || !scrollContainer) {\n return;\n }\n\n const observer = new Observer((entries) => {\n\n // scroll container is unmounted, do not update sticky state\n if (scrollContainer.scrollHeight === 0) {\n return;\n }\n\n entries.forEach(entry => {\n if (entry.intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entry.intersectionRatio === 1) {\n setSticky(false);\n }\n });\n },\n {\n root: scrollContainer,\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\n threshold: [ 1 ]\n });\n observer.observe(ref.current);\n\n // Unobserve if unmounted\n return () => {\n observer.unobserve(ref.current);\n };\n\n }, [ ref.current, scrollContainer, setSticky ]);\n}\n","import { useCallback, useRef } from 'preact/hooks';\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nexport function useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n return useCallback(\n (...args) => callbackRef.current(...args),\n []\n );\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport Tooltip from './entries/Tooltip';\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 useErrors,\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useStickyIntersectionObserver } from '../hooks';\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 groupRef = useRef(null);\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 const [ sticky, setSticky ] = useState(false);\n\n // set edited state depending on all entries\n useEffect(() => {\n const hasOneEditedEntry = entries.find(entry => {\n const {\n id,\n isEdited\n } = entry;\n\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 // set error state depending on all entries\n const allErrors = useErrors();\n const hasErrors = entries.some(entry => allErrors[entry.id]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) } onClick={ toggleOpen }>\n <div title={ label } class=\"bio-properties-panel-group-header-title\">\n <Tooltip value={ props.tooltip } forId={ 'group-' + id } element={ element } parent={ groupRef }>\n { label }\n </Tooltip>\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n <DataMarker\n edited={ edited }\n hasErrors={ hasErrors }\n />\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(props) {\n const {\n edited,\n hasErrors\n } = props;\n\n if (hasErrors) {\n return (\n <div title=\"Section contains an error\" class=\"bio-properties-panel-dot bio-properties-panel-dot--error\"></div>\n );\n }\n\n if (edited) {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n }\n return null;\n}","/**\n * @typedef { {\n * text: (element: object) => string,\n * icon?: (element: Object) => import('preact').Component\n * } } PlaceholderDefinition\n *\n * @param { PlaceholderDefinition } props\n */\nexport default function Placeholder(props) {\n const {\n text,\n icon: Icon\n } = props;\n\n return (\n <div class=\"bio-properties-panel open\">\n <section class=\"bio-properties-panel-placeholder\">\n { Icon && <Icon class=\"bio-properties-panel-placeholder-icon\" /> }\n <p class=\"bio-properties-panel-placeholder-text\">{ text }</p>\n </section>\n </div>\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 classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport { FeelersEditor } from 'feelers';\nimport { useStaticCallback } from '../../../hooks';\n\nimport { ExternalLinkIcon } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function(editor, ref) {\n\n const [ buffer, setBuffer ] = useState(undefined);\n\n ref.current = useMemo(() => ({\n focus: (offset) => {\n if (editor) {\n editor.focus(offset);\n } else {\n if (typeof offset === 'undefined') {\n offset = Infinity;\n }\n setBuffer(offset);\n }\n }\n }), [ editor ]);\n\n useEffect(() => {\n if (typeof buffer !== 'undefined' && editor) {\n editor.focus(buffer);\n setBuffer(false);\n }\n }, [ editor, buffer ]);\n};\n\nconst CodeEditor = forwardRef((props, ref) => {\n\n const {\n onInput,\n disabled,\n tooltipContainer,\n enableGutters,\n value,\n onLint = noop,\n onPopupOpen = noop,\n popupOpen,\n contentAttributes = {},\n hostLanguage = null,\n singleLine = false\n } = props;\n\n const inputRef = useRef();\n const [ editor, setEditor ] = useState();\n const [ localValue, setLocalValue ] = useState(value || '');\n\n useBufferedFocus(editor, ref);\n\n const handleInput = useStaticCallback(newValue => {\n onInput(newValue);\n setLocalValue(newValue);\n });\n\n useEffect(() => {\n\n let editor;\n\n editor = new FeelersEditor({\n container: inputRef.current,\n onChange: handleInput,\n value: localValue,\n onLint,\n contentAttributes,\n tooltipContainer,\n enableGutters,\n hostLanguage,\n singleLine\n });\n\n setEditor(\n editor\n );\n\n return () => {\n onLint([]);\n inputRef.current.innerHTML = '';\n setEditor(null);\n };\n }, []);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div class={ classNames(\n 'bio-properties-panel-feelers-editor-container',\n popupOpen ? 'popupOpen' : null\n ) }>\n <div class=\"bio-properties-panel-feelers-editor__open-popup-placeholder\">Opened in editor</div>\n <div\n name={ props.name }\n class={ classNames('bio-properties-panel-feelers-editor bio-properties-panel-input', localValue ? 'edited' : null, disabled ? 'disabled' : null) }\n ref={ inputRef }\n onClick={ handleClick }\n ></div>\n\n <button\n title=\"Open pop-up editor\"\n class=\"bio-properties-panel-open-feel-popup\"\n onClick={ () => onPopupOpen('feelers') }><ExternalLinkIcon /></button>\n </div>;\n});\n\nexport default CodeEditor;","import classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport FeelEditor from '@bpmn-io/feel-editor';\n\nimport { lineNumbers } from '@codemirror/view';\n\nimport { useStaticCallback } from '../../../hooks';\n\nimport { ExternalLinkIcon } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function(editor, ref) {\n\n const [ buffer, setBuffer ] = useState(undefined);\n\n ref.current = useMemo(() => ({\n focus: (offset) => {\n if (editor) {\n editor.focus(offset);\n } else {\n if (typeof offset === 'undefined') {\n offset = Infinity;\n }\n setBuffer(offset);\n }\n }\n }), [ editor ]);\n\n useEffect(() => {\n if (typeof buffer !== 'undefined' && editor) {\n editor.focus(buffer);\n setBuffer(false);\n }\n }, [ editor, buffer ]);\n};\n\nconst CodeEditor = forwardRef((props, ref) => {\n\n const {\n enableGutters,\n value,\n onInput,\n onFeelToggle = noop,\n onLint = noop,\n onPopupOpen = noop,\n popupOpen,\n disabled,\n tooltipContainer,\n variables\n } = props;\n\n const inputRef = useRef();\n const [ editor, setEditor ] = useState();\n const [ localValue, setLocalValue ] = useState(value || '');\n\n useBufferedFocus(editor, ref);\n\n const handleInput = useStaticCallback(newValue => {\n onInput(newValue);\n setLocalValue(newValue);\n });\n\n useEffect(() => {\n\n let editor;\n\n /* Trigger FEEL toggle when\n *\n * - `backspace` is pressed\n * - AND the cursor is at the beginning of the input\n */\n const onKeyDown = e => {\n if (e.key !== 'Backspace' || !editor) {\n return;\n }\n\n const selection = editor.getSelection();\n const range = selection.ranges[selection.mainIndex];\n\n if (range.from === 0 && range.to === 0) {\n onFeelToggle();\n }\n };\n\n editor = new FeelEditor({\n container: inputRef.current,\n onChange: handleInput,\n onKeyDown: onKeyDown,\n onLint: onLint,\n tooltipContainer: tooltipContainer,\n value: localValue,\n variables: variables,\n extensions: [\n ...enableGutters ? [ lineNumbers() ] : []\n ]\n });\n\n setEditor(\n editor\n );\n\n return () => {\n onLint([]);\n inputRef.current.innerHTML = '';\n setEditor(null);\n };\n }, []);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n editor.setVariables(variables);\n }, [ variables ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div class={ classNames(\n 'bio-properties-panel-feel-editor-container',\n disabled ? 'disabled' : null,\n popupOpen ? 'popupOpen' : null)\n }>\n <div class=\"bio-properties-panel-feel-editor__open-popup-placeholder\">Opened in editor</div>\n <div\n name={ props.name }\n class={ classNames('bio-properties-panel-input', localValue ? 'edited' : null) }\n ref={ inputRef }\n onClick={ handleClick }\n ></div>\n <button\n title=\"Open pop-up editor\"\n class=\"bio-properties-panel-open-feel-popup\"\n onClick={ () => onPopupOpen() }><ExternalLinkIcon /></button>\n </div>;\n});\n\nexport default CodeEditor;","export function FeelIndicator(props) {\n const {\n active\n } = props;\n\n if (!active) {\n return null;\n }\n\n return <span class=\"bio-properties-panel-feel-indicator\">\n =\n </span>;\n}","import classNames from 'classnames';\nimport { FeelIcon as FeelIconSvg } from '../../icons';\n\nconst noop = () => {};\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 feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = 'FEEL expression is mandatory';\n const feelOptionalLabel = `Click to ${active ? 'remove' : 'set a'} dynamic value with FEEL expression`;\n\n const handleClick = e => {\n onClick(e);\n\n // when pointer event was created from keyboard, keep focus on button\n if (!e.pointerType) {\n e.stopPropagation();\n }\n };\n\n return (\n <button\n class={ classNames('bio-properties-panel-feel-icon',\n active ? 'active' : null,\n feel === 'required' ? 'required' : 'optional') }\n onClick={ handleClick }\n disabled={ feel === 'required' || disabled }\n title={\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n }\n >\n <FeelIconSvg />\n </button>\n );\n}","import {\n createContext\n} from 'preact';\n\nconst FeelPopupContext = createContext({\n open: () => {},\n close: () => {},\n source: null\n});\n\nexport default FeelPopupContext;","import { domify } from 'min-dom';\n\n/**\n * Add a dragger that calls back the passed function with\n * { event, delta } on drag.\n *\n * @example\n *\n * function dragMove(event, delta) {\n * // we are dragging (!!)\n * }\n *\n * domElement.addEventListener('dragstart', dragger(dragMove));\n *\n * @param {Function} fn\n * @param {Element} [dragPreview]\n *\n * @return {Function} drag start callback function\n */\nexport function createDragger(fn, dragPreview) {\n\n let self;\n\n let startX, startY;\n\n /** drag start */\n function onDragStart(event) {\n\n self = this;\n\n startX = event.clientX;\n startY = event.clientY;\n\n // (1) prevent preview image\n if (event.dataTransfer) {\n event.dataTransfer.setDragImage(dragPreview || emptyCanvas(), 0, 0);\n }\n\n // (2) setup drag listeners\n\n // attach drag + cleanup event\n document.addEventListener('dragover', onDrag);\n document.addEventListener('dragend', onEnd);\n document.addEventListener('drop', preventDefault);\n }\n\n function onDrag(event) {\n const delta = {\n x: event.clientX - startX,\n y: event.clientY - startY\n };\n\n // call provided fn with event, delta\n return fn.call(self, event, delta);\n }\n\n function onEnd() {\n document.removeEventListener('dragover', onDrag);\n document.removeEventListener('dragend', onEnd);\n document.removeEventListener('drop', preventDefault);\n }\n\n return onDragStart;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nfunction emptyCanvas() {\n return domify('<canvas width=\"0\" height=\"0\" />');\n}","import { createPortal } from 'preact/compat';\n\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport classNames from 'classnames';\n\nimport { throttle } from 'min-dash';\n\nimport * as focusTrap from 'focus-trap';\n\nimport { DragIcon } from './icons';\n\nimport { createDragger } from './util/dragger';\n\n\n\n\nconst noop = () => {};\n\n/**\n * A generic popup component.\n *\n * @param {Object} props\n * @param {HTMLElement} [props.container]\n * @param {string} [props.className]\n * @param {{x: number, y: number}} [props.position]\n * @param {number} [props.width]\n * @param {number} [props.height]\n * @param {Function} props.onClose\n * @param {Function} [props.onPostActivate]\n * @param {Function} [props.onPostDeactivate]\n * @param {boolean} [props.returnFocus]\n * @param {string} props.title\n */\nexport function Popup(props) {\n\n const {\n container,\n className,\n position,\n width,\n height,\n onClose,\n onPostActivate = noop,\n onPostDeactivate = noop,\n returnFocus = true,\n title\n } = props;\n\n const focusTrapRef = useRef(null);\n const popupRef = useRef(null);\n\n const handleKeyPress = event => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n\n // re-activate focus trap on focus\n const handleFocus = () => {\n if (focusTrapRef.current) {\n focusTrapRef.current.activate();\n }\n };\n\n let style = {};\n\n if (position) {\n style = {\n ...style,\n top: position.top + 'px',\n left: position.left + 'px'\n };\n }\n\n if (width) {\n style.width = width + 'px';\n }\n\n if (height) {\n style.height = height + 'px';\n }\n\n useEffect(() => {\n if (popupRef.current) {\n popupRef.current.addEventListener('keydown', handleKeyPress);\n }\n\n return () => { popupRef.current.removeEventListener('keydown', handleKeyPress); };\n }, [ popupRef ]);\n\n useEffect(() => {\n if (popupRef.current) {\n popupRef.current.addEventListener('focusin', handleFocus);\n }\n\n return () => { popupRef.current.removeEventListener('focusin', handleFocus); };\n }, [ popupRef ]);\n\n useEffect(() => {\n if (popupRef.current) {\n focusTrapRef.current = focusTrap.createFocusTrap(popupRef.current, {\n clickOutsideDeactivates: true,\n fallbackFocus: popupRef.current,\n onPostActivate,\n onPostDeactivate,\n returnFocusOnDeactivate: returnFocus\n });\n\n focusTrapRef.current.activate();\n }\n\n return () => focusTrapRef.current && focusTrapRef.current.deactivate();\n }, [ popupRef ]);\n\n return createPortal(\n\n <div\n aria-label={ title }\n tabIndex={ -1 }\n ref={ popupRef }\n role=\"dialog\"\n class={ classNames('bio-properties-panel-popup', className) }\n style={ style }>{ props.children }</div>\n , container || document.body\n );\n}\n\nPopup.Title = Title;\nPopup.Body = Body;\nPopup.Footer = Footer;\n\nfunction Title(props) {\n const {\n children,\n className,\n draggable,\n title,\n ...rest\n } = props;\n\n // we can't use state as we need to\n // manipulate this inside dragging events\n const context = useRef({\n startPosition: null,\n newPosition: null\n });\n\n const dragPreviewRef = useRef();\n\n const titleRef = useRef();\n\n const onMove = throttle((_, delta) => {\n const { x: dx, y: dy } = delta;\n\n const newPosition = {\n x: context.current.startPosition.x + dx,\n y: context.current.startPosition.y + dy\n };\n\n const popupParent = getPopupParent(titleRef.current);\n\n popupParent.style.top = newPosition.y + 'px';\n popupParent.style.left = newPosition.x + 'px';\n });\n\n const onMoveStart = (event) => {\n\n // initialize drag handler\n const onDragStart = createDragger(onMove, dragPreviewRef.current);\n onDragStart(event);\n\n const popupParent = getPopupParent(titleRef.current);\n\n const bounds = popupParent.getBoundingClientRect();\n context.current.startPosition = {\n x: bounds.left,\n y: bounds.top\n };\n };\n\n const onMoveEnd = () => {\n context.current.newPosition = null;\n };\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-popup__header',\n draggable && 'draggable',\n className\n ) }\n ref={ titleRef }\n draggable={ draggable }\n onDragStart={ onMoveStart }\n onDragEnd={ onMoveEnd }\n { ...rest }>\n { draggable && (\n <>\n <div ref={ dragPreviewRef } class=\"bio-properties-panel-popup__drag-preview\"></div>\n <div class=\"bio-properties-panel-popup__drag-handle\">\n <DragIcon />\n </div>\n </>\n )}\n <div class=\"bio-properties-panel-popup__title\">{ title }</div>\n { children }\n </div>\n );\n}\n\nfunction Body(props) {\n const {\n children,\n className,\n ...rest\n } = props;\n\n return (\n <div class={ classNames('bio-properties-panel-popup__body', className) } { ...rest }>\n { children }\n </div>\n );\n}\n\nfunction Footer(props) {\n const {\n children,\n className,\n ...rest\n } = props;\n\n return (\n <div class={ classNames('bio-properties-panel-popup__footer', className) } { ...rest }>\n { props.children }\n </div>\n );\n}\n\n\n// helpers //////////////////////\n\nfunction getPopupParent(node) {\n return node.closest('.bio-properties-panel-popup');\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { FeelPopupContext } from './context';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { Popup } from '../../Popup';\n\nimport CodeEditor from './FeelEditor';\n\nimport TemplatingEditor from '../templating/TemplatingEditor';\n\nexport const FEEL_POPUP_WIDTH = 700;\nexport const FEEL_POPUP_HEIGHT = 250;\n\n\n/**\n * FEEL popup component, built as a singleton.\n */\nexport default function FEELPopupRoot(props) {\n const {\n element\n } = props;\n\n const prevElement = usePrevious(element);\n\n const [ popupConfig, setPopupConfig ] = useState({});\n const [ open, setOpen ] = useState(false);\n const [ source, setSource ] = useState(null);\n const [ sourceElement, setSourceElement ] = useState(null);\n\n const handleOpen = (key, config, _sourceElement) => {\n setSource(key);\n setPopupConfig(config);\n setOpen(true);\n setSourceElement(_sourceElement);\n };\n\n const handleClose = () => {\n setOpen(false);\n setSource(null);\n };\n\n const feelPopupContext = {\n open: handleOpen,\n close: handleClose,\n source\n };\n\n // close popup on element change, cf. https://github.com/bpmn-io/properties-panel/issues/270\n useEffect(() => {\n if (element && element !== prevElement) {\n handleClose();\n }\n }, [ element ]);\n\n return (\n <FeelPopupContext.Provider value={ feelPopupContext }>\n { open && (\n <FeelPopupComponent\n onClose={ handleClose }\n sourceElement={ sourceElement }\n { ...popupConfig } />\n )}\n { props.children }\n </FeelPopupContext.Provider>\n );\n}\n\nfunction FeelPopupComponent(props) {\n const {\n id,\n hostLanguage,\n onInput,\n onClose,\n position,\n singleLine,\n sourceElement,\n title,\n tooltipContainer,\n type,\n value,\n variables\n } = props;\n\n const editorRef = useRef();\n\n const handleSetReturnFocus = () => {\n sourceElement && sourceElement.focus();\n };\n\n useEffect(() => {\n const editor = editorRef.current;\n\n if (editor) {\n editor.focus();\n }\n }, [ editorRef, id ]);\n\n return (\n <Popup\n className=\"bio-properties-panel-feel-popup\"\n position={ position }\n title={ title }\n onClose={ onClose }\n\n // handle focus manually on deactivate\n returnFocus={ false }\n onPostDeactivate={ handleSetReturnFocus }\n height={ FEEL_POPUP_HEIGHT }\n width={ FEEL_POPUP_WIDTH }\n >\n <Popup.Title\n title={ title }\n draggable />\n <Popup.Body>\n <div class=\"bio-properties-panel-feel-popup__body\">\n\n {\n type === 'feel' && (\n <CodeEditor\n enableGutters={ true }\n id={ prefixId(id) }\n name={ id }\n onInput={ onInput }\n value={ value }\n variables={ variables }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n />\n )\n }\n\n {\n type === 'feelers' && (\n <TemplatingEditor\n id={ prefixId(id) }\n contentAttributes={ { 'aria-label': title } }\n enableGutters={ true }\n hostLanguage={ hostLanguage }\n name={ id }\n onInput={ onInput }\n value={ value }\n ref={ editorRef }\n singleLine={ singleLine }\n tooltipContainer={ tooltipContainer }\n />\n )\n }\n </div>\n </Popup.Body>\n <Popup.Footer>\n <button\n onClick={ onClose }\n title=\"Close pop-up editor\"\n class=\"bio-properties-panel-feel-popup__close-btn\">Close</button>\n </Popup.Footer>\n </Popup>\n );\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classNames from 'classnames';\nimport Tooltip from './Tooltip';\n\nexport function ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n inline,\n onFocus,\n onBlur,\n inputRef,\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = async () => {\n onInput(!value);\n };\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class={ classNames(\n 'bio-properties-panel-toggle-switch',\n { inline }\n ) }>\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n ref={ inputRef }\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n onFocus={ onFocus }\n onBlur={ onBlur }\n name={ id }\n onInput={ handleInput }\n checked={ !!localValue } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n { switcherLabel && <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 {Boolean} props.inline\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n inline,\n getValue,\n setValue,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\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\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel }\n inline={ inline }\n tooltip={ tooltip }\n element={ element } />\n <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 Description from './Description';\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 useError\n} from '../../hooks';\n\nexport function NumberField(props) {\n\n const {\n debounce,\n disabled,\n displayLabel = true,\n id,\n inputRef,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = 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 const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n {displayLabel && <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label> }\n <input\n id={ prefixId(id) }\n ref={ inputRef }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n step={ step }\n value={ localValue } />\n </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 {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {String} props.step\n * @param {Function} props.validate\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 onFocus,\n onBlur,\n validate\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(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 setValue(newValue, newValidationError);\n setLocalError(newValidationError);\n };\n\n const error = globalError || localError;\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '') } data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onInput={ onInput }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n { 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}\n","import Description from '../Description';\nimport TemplatingEditor from '../templating/TemplatingEditor';\n\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { forwardRef } from 'preact/compat';\n\nimport classnames from 'classnames';\n\nimport { isFunction, isString } from 'min-dash';\n\nimport {\n useShowEntryEvent,\n useError,\n useStaticCallback\n} from '../../../hooks';\n\nimport CodeEditor from './FeelEditor';\nimport { FeelIndicator } from './FeelIndicator';\nimport FeelIcon from './FeelIcon';\n\nimport { FEEL_POPUP_WIDTH } from './FeelPopup';\n\nimport { FeelPopupContext } from './context';\n\nimport { ToggleSwitch } from '../ToggleSwitch';\n\nimport { NumberField } from '../NumberField';\nimport Tooltip from '../Tooltip';\n\nconst noop = () => { };\n\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n element,\n label,\n hostLanguage,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n variables,\n singleLine,\n tooltipContainer,\n OptionalComponent = OptionalFeelInput,\n tooltip\n } = props;\n\n const [ localValue, _setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const feelActive = (isString(localValue) && localValue.startsWith('=')) || feel === 'required';\n const feelOnlyValue = (isString(localValue) && localValue.startsWith('=')) ? localValue.substring(1) : localValue;\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const {\n open: openPopup,\n source: popupSource\n } = useContext(FeelPopupContext);\n\n const popuOpen = popupSource === id;\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => {\n onInput(newValue);\n });\n }, [ onInput, debounce ]);\n\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n\n };\n\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n\n const handleLocalInput = (newValue) => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n\n if (newValue === localValue) {\n return;\n }\n\n setLocalValue(newValue);\n\n if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n\n const handleLint = useStaticCallback(lint => {\n\n if (!(lint && lint.length)) {\n onError(undefined);\n return;\n }\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n const handlePopupOpen = (type = 'feel') => {\n const popupOptions = {\n id,\n hostLanguage,\n onInput: handleLocalInput,\n position: calculatePopupPosition(containerRef.current),\n singleLine,\n title: getPopupTitle(element, label),\n tooltipContainer,\n type,\n value: feelOnlyValue,\n variables\n };\n\n openPopup(id, popupOptions, editorRef.current);\n };\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n // External value change removed content => keep FEEL configuration\n if (!value) {\n setLocalValue(feelActive ? '=' : '');\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n // copy-paste integration\n useEffect(() => {\n const copyHandler = event => {\n if (!feelActive) {\n return;\n }\n event.clipboardData.setData('application/FEEL', event.clipboardData.getData('text'));\n };\n\n const pasteHandler = event => {\n if (feelActive || popuOpen) {\n return;\n }\n\n const data = event.clipboardData.getData('application/FEEL');\n\n if (data) {\n setTimeout(() => {\n handleFeelToggle();\n setFocus();\n });\n }\n };\n containerRef.current.addEventListener('copy', copyHandler);\n containerRef.current.addEventListener('cut', copyHandler);\n containerRef.current.addEventListener('paste', pasteHandler);\n\n return () => {\n containerRef.current.removeEventListener('copy', copyHandler);\n containerRef.current.removeEventListener('cut', copyHandler);\n containerRef.current.removeEventListener('paste', pasteHandler);\n };\n }, [ containerRef, feelActive, handleFeelToggle, setFocus ]);\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-feel-entry',\n { 'feel-active': feelActive }\n ) }>\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n {label}\n </Tooltip>\n <FeelIcon\n label={ label }\n feel={ feel }\n onClick={ handleFeelToggle }\n active={ feelActive }></FeelIcon>\n </label>\n\n <div class=\"bio-properties-panel-feel-container\" ref={ containerRef }>\n <FeelIndicator\n active={ feelActive }\n disabled={ feel !== 'optional' || disabled }\n onClick={ handleFeelToggle }\n />\n {feelActive ?\n <CodeEditor\n id={ prefixId(id) }\n name={ id }\n onInput={ handleLocalInput }\n disabled={ disabled }\n popupOpen={ popuOpen }\n onFeelToggle={ () => { handleFeelToggle(); setFocus(true); } }\n onLint={ handleLint }\n onPopupOpen={ handlePopupOpen }\n value={ feelOnlyValue }\n variables={ variables }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n /> :\n <OptionalComponent\n { ...props }\n popupOpen={ popuOpen }\n onInput={ handleLocalInput }\n contentAttributes={ { 'id': prefixId(id), 'aria-label': label } }\n value={ localValue }\n ref={ editorRef }\n onPopupOpen={ handlePopupOpen }\n containerRef={ containerRef }\n />\n }\n </div>\n </div>\n );\n}\n\nconst OptionalFeelInput = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number') {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <input\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />;\n});\n\n\nconst OptionalFeelNumberField = forwardRef((props, ref) => {\n const {\n id,\n debounce,\n disabled,\n onInput,\n value,\n min,\n max,\n step,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number' && position !== Infinity) {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <NumberField\n id={ id }\n debounce={ debounce }\n disabled={ disabled }\n displayLabel={ false }\n inputRef={ inputRef }\n max={ max }\n min={ min }\n onInput={ onInput }\n step={ step }\n value={ value }\n onFocus={ onFocus }\n onBlur={ onBlur }\n />;\n});\n\n\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n input.setSelectionRange(0, 0);\n }\n };\n\n return <textarea\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' }\n data-gramm=\"false\"\n />;\n});\n\nconst OptionalFeelToggleSwitch = forwardRef((props, ref) => {\n const {\n id,\n onInput,\n value,\n onFocus,\n onBlur,\n switcherLabel\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <ToggleSwitch\n id={ id }\n value={ value }\n inputRef={ inputRef }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel } />;\n});\n\n\nconst OptionalFeelCheckbox = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n const handleChange = ({ target }) => {\n onInput(target.checked);\n };\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <input\n ref={ inputRef }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\n disabled={ disabled } />;\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n */\nexport default function FeelEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n tooltipContainer,\n hostLanguage,\n singleLine,\n validate,\n show = noop,\n example,\n variables,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue, newValidationError);\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n const temporaryError = useError(id);\n\n const error = localError || temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n props.class,\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <FeelTextfield\n { ...props }\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n onFocus={ onFocus }\n onBlur={ onBlur }\n example={ example }\n hostLanguage={ hostLanguage }\n singleLine={ singleLine }\n show={ show }\n value={ value }\n variables={ variables }\n tooltipContainer={ tooltipContainer }\n OptionalComponent={ props.OptionalComponent }\n tooltip={ tooltip } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\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.max\n * @param {String} props.min\n * @param {String} props.step\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelNumberEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-number\" OptionalComponent={ OptionalFeelNumberField } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTextAreaEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelToggleSwitchEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-toggle-switch\" OptionalComponent={ OptionalFeelToggleSwitch } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelCheckboxEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-checkbox\" OptionalComponent={ OptionalFeelCheckbox } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.hostLanguage\n * @param {Boolean} props.singleLine\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTemplatingEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-templating\" OptionalComponent={ TemplatingEditor } { ...props } />;\n}\n\nexport function isEdited(node) {\n if (!node) {\n return false;\n }\n\n if (node.type === 'checkbox') {\n return !!node.checked || node.classList.contains('edited');\n }\n\n return !!node.value || node.classList.contains('edited');\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}\n\nfunction calculatePopupPosition(element) {\n const { top, left } = element.getBoundingClientRect();\n\n return {\n left: left - FEEL_POPUP_WIDTH - 20,\n top: top\n };\n}\n\n// todo(pinussilvestrus): make this configurable in the future\nfunction getPopupTitle(element, label) {\n let popupTitle;\n\n if (element && element.type) {\n popupTitle = `${element.type} / `;\n }\n\n return `${popupTitle}${label}`;\n}\n","import {\n useState,\n useEffect,\n useMemo,\n useRef,\n useLayoutEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext,\n TooltipContext\n} from './context';\n\nimport { FeelPopupRoot } from './components/entries/FEEL';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {};\n\nconst DEFAULT_DESCRIPTION = {};\n\nconst DEFAULT_TOOLTIP = {};\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 * @typedef { {\n * [id: String]: GetTooltipFunction\n * } } TooltipConfig\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetTooltipFunction\n *\n * @typedef { {\n * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\n * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\n * } } PlaceholderProvider\n *\n */\n\n\n/**\n * A basic properties panel component. Describes *how* content will be rendered, accepts\n * data from implementor to describe *what* will be rendered.\n *\n * @param {Object} props\n * @param {Object|Array} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\n * @param {PlaceholderProvider} [props.placeholderProvider]\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\n * @param {Object} [props.layoutConfig]\n * @param {Function} [props.layoutChanged]\n * @param {DescriptionConfig} [props.descriptionConfig]\n * @param {Function} [props.descriptionLoaded]\n * @param {TooltipConfig} [props.tooltipConfig]\n * @param {Function} [props.tooltipLoaded]\n * @param {Object} [props.eventBus]\n */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n placeholderProvider,\n groups,\n layoutConfig,\n layoutChanged,\n descriptionConfig,\n descriptionLoaded,\n tooltipConfig,\n tooltipLoaded,\n eventBus\n } = props;\n\n // set-up layout context\n const [ layout, setLayout ] = useState(createLayout(layoutConfig));\n\n // react to external changes in the layout config\n useUpdateLayoutEffect(() => {\n const newLayout = createLayout(layoutConfig);\n\n setLayout(newLayout);\n }, [ 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 = useMemo(() => createDescriptionContext(descriptionConfig), [ descriptionConfig ]);\n\n useEffect(() => {\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n }, [ description, descriptionLoaded ]);\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 // set-up tooltip context\n const tooltip = useMemo(() => createTooltipContext(tooltipConfig), [ tooltipConfig ]);\n\n useEffect(() => {\n if (typeof tooltipLoaded === 'function') {\n tooltipLoaded(tooltip);\n }\n }, [ tooltip, tooltipLoaded ]);\n\n const getTooltipForId = (id, element) => {\n return tooltip[id] && tooltip[id](element);\n };\n\n const tooltipContext = {\n tooltip,\n getTooltipForId\n };\n\n const [ errors, setErrors ] = useState({});\n\n const onSetErrors = ({ errors }) => setErrors(errors);\n\n useEvent('propertiesPanel.setErrors', onSetErrors, eventBus);\n\n const errorsContext = {\n errors\n };\n\n const eventContext = {\n eventBus\n };\n\n const propertiesPanelContext = {\n element\n };\n\n // empty state\n if (placeholderProvider && !element) {\n return <Placeholder { ...placeholderProvider.getEmpty() } />;\n }\n\n // multiple state\n if (placeholderProvider && isArray(element)) {\n return <Placeholder { ...placeholderProvider.getMultiple() } />;\n }\n\n return (\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n <ErrorsContext.Provider value={ errorsContext }>\n <DescriptionContext.Provider value={ descriptionContext }>\n <TooltipContext.Provider value={ tooltipContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <FeelPopupRoot element={ element }>\n <div class=\"bio-properties-panel\">\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 </FeelPopupRoot>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </TooltipContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides = {}, defaults = DEFAULT_LAYOUT) {\n return {\n ...defaults,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides = {}) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}\n\nfunction createTooltipContext(overrides = {}) {\n return {\n ...DEFAULT_TOOLTIP,\n ...overrides\n };\n}\n\n// hooks //////////////////\n\n/**\n * This hook behaves like useLayoutEffect, but does not trigger on the first render.\n *\n * @param {Function} effect\n * @param {Array} deps\n */\nfunction useUpdateLayoutEffect(effect, deps) {\n const isMounted = useRef(false);\n\n useLayoutEffect(() => {\n if (isMounted.current) {\n return effect();\n } else {\n isMounted.current = true;\n }\n }, deps);\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 (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\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 useRef,\n useState\n} from 'preact/hooks';\n\nimport Tooltip from './entries/Tooltip';\n\nimport classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useErrors,\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\nimport { useStickyIntersectionObserver } from '../hooks';\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 groupRef = useRef(null);\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n\n const [ sticky, setSticky ] = useState(false);\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const [ ordering, setOrdering ] = useState([]);\n const [ newItemAdded, setNewItemAdded ] = useState(false);\n\n // Flag to mark that add button was clicked in the last render cycle\n const [ addTriggered, setAddTriggered ] = useState(false);\n\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\n // reset addTriggered flag\n setAddTriggered(false);\n\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, configured and triggered by add button\n //\n // TODO(marstamm): remove once we refactor layout handling for listGroups.\n // Ideally, opening should be handled as part of the `add` callback and\n // not be a concern for the ListGroup component.\n if (addTriggered && !open && shouldOpen) {\n toggleOpen();\n }\n\n // filter when not open and configured\n if (!open && shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(addTriggered);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects, addTriggered ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\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 // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n const handleAddClick = e => {\n setAddTriggered(true);\n add(e);\n };\n\n const allErrors = useErrors();\n const hasError = items.some(item => {\n if (allErrors[item.id]) {\n return true;\n }\n\n if (!item.entries) {\n return;\n }\n\n // also check if the error is nested, e.g. for name-value entries\n return item.entries.some(entry => allErrors[entry.id]);\n }\n );\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) }\n onClick={ hasItems ? toggleOpen : noop }>\n <div\n title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n <Tooltip value={ props.tooltip } forId={ 'group-' + id } element={ element } parent={ groupRef }>\n { label }\n </Tooltip>\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={ handleAddClick }\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={\n classnames(\n 'bio-properties-panel-list-badge',\n hasError ? 'bio-properties-panel-list-badge--error' : ''\n )\n }\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 it\n // Existing items will not be affected as autoOpen is only applied on first render\n const autoOpen = newItemAdded;\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 useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\nimport Tooltip from './Tooltip';\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleChangeCallback = ({ target }) => {\n onChange(target.checked);\n };\n\n const handleChange = e => {\n handleChangeCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n const ref = useShowEntryEvent(id);\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ localValue }\n disabled={ disabled } />\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\n </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 {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\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 onFocus,\n onBlur,\n tooltip\n } = props;\n\n const value = getValue(element);\n\n const error = useError(id);\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 key={ element }\n label={ label }\n onChange={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value }\n tooltip={ tooltip }\n element={ element } />\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 { useCallback, useEffect, useState, useMemo, useRef } from 'preact/hooks';\nimport { useStaticCallback, useShowEntryEvent } from '../../../hooks';\nimport { isFunction } from 'min-dash';\nimport { useError } from '../../../hooks';\nimport classnames from 'classnames';\nimport Description from '../Description';\nimport TemplatingEditor from './TemplatingEditor';\n\nconst noop = () => { };\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n */\nexport default function TemplatingEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n tooltipContainer,\n validate,\n show = noop,\n } = props;\n\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue, newValidationError);\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n const temporaryError = useError(id);\n\n const error = localError || 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 <Templating\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n show={ show }\n value={ value }\n tooltipContainer={ tooltipContainer } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nfunction Templating(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n value = '',\n disabled = false,\n tooltipContainer\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => onInput(newValue.length ? newValue : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = newValue => {\n handleInputCallback(newValue);\n setLocalValue(newValue);\n };\n\n const handleLint = useStaticCallback(lint => {\n\n const errors = lint && lint.length && lint.filter(e => e.severity === 'error') || [];\n\n if (!errors.length) {\n onError(undefined);\n return;\n }\n\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n setLocalValue(value ? value : '');\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-feelers\">\n <label id={ prefixIdLabel(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\n </label>\n <div class=\"bio-properties-panel-feelers-input\" ref={ containerRef }>\n <TemplatingEditor\n name={ id }\n onInput={ handleInput }\n contentAttributes={ { 'aria-labelledby': prefixIdLabel(id) } }\n disabled={ disabled }\n onLint={ handleLint }\n value={ localValue }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n />\n </div>\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n// helpers /////////////////\n\nfunction prefixIdLabel(id) {\n return `bio-properties-panel-feelers-${id}-label`;\n}","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 ...restProps\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 { ...restProps }\n autoFocusEntry={ autoFocusEntry }\n component={ component }\n element={ element }\n id={ id }\n items={ sortedItems }\n newItems={ newItems }\n onRemove={ onRemove }\n open={ open }\n />\n )\n }\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 ...restProps\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 <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 { ...restProps }\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 classNames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\nimport Tooltip from './Tooltip';\n\n/**\n * @typedef { { value: string, label: string, disabled: boolean, children: { value: string, label: string, disabled: boolean } } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value = '',\n disabled,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const ref = useShowEntryEvent(id);\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleChangeCallback = ({ target }) => {\n onChange(target.value);\n };\n\n const handleChange = e => {\n handleChangeCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-select\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n {label}\n </Tooltip>\n </label>\n <select\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ localValue }\n disabled={ disabled }\n >\n {options.map((option, idx) => {\n if (option.children) {\n return (\n <optgroup key={ idx } label={ option.label }>\n {option.children.map((child, idx) => (\n <option\n key={ idx }\n value={ child.value }\n disabled={ child.disabled }\n >\n {child.label}\n </option>\n ))}\n </optgroup>\n );\n }\n\n return (\n <option key={ idx } value={ option.value } disabled={ option.disabled }>\n {option.label}\n </option>\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.onFocus\n * @param {Function} props.onBlur\n * @param {Function} props.getOptions\n * @param {boolean} [props.disabled]\n * @param {Function} [props.validate]\n * @param {string|import('preact').Component} props.tooltip\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n onFocus,\n onBlur,\n validate,\n tooltip\n } = props;\n\n const options = getOptions(element);\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n\n const onChange = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n setValue(newValue, newValidationError);\n setLocalError(newValidationError);\n };\n\n const error = globalError || localError;\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 key={ element }\n label={ label }\n value={ value }\n onChange={ onChange }\n onFocus={ onFocus }\n onBlur={ onBlur }\n options={ options }\n disabled={ disabled }\n tooltip={ tooltip }\n element={ element } />\n { 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}","import {\n useMemo,\n useEffect,\n useState\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 value = getValue(element);\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n return (\n <div class=\"bio-properties-panel-simple\">\n <input\n id={ prefixId(id) }\n key={ element }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n aria-label={ localValue || '<empty>' }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ localValue } />\n </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';\n\nimport {\n useEffect,\n useLayoutEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport { isFunction } from 'min-dash';\nimport Tooltip from './Tooltip';\n\nfunction resizeToContents(element) {\n element.style.height = 'auto';\n\n // a 2px pixel offset is required to prevent scrollbar from\n // appearing on OS with a full length scroll bar (Windows/Linux)\n element.style.height = `${ element.scrollHeight + 2 }px`;\n}\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n debounce,\n onInput,\n value = '',\n disabled,\n monospace,\n onFocus,\n onBlur,\n autoResize,\n rows = autoResize ? 1 : 2,\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const ref = useShowEntryEvent(id);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n\n autoResize && resizeToContents(e.target);\n\n setLocalValue(e.target.value);\n };\n\n useLayoutEffect(() => {\n autoResize && resizeToContents(ref.current);\n }, []);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\n </label>\n <textarea\n ref={ ref }\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 autoResize ? 'auto-resize' : '')\n }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n value={ localValue }\n disabled={ disabled }\n data-gramm=\"false\"\n />\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 {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {Function} [props.validate]\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled,\n validate,\n onFocus,\n onBlur,\n autoResize,\n tooltip\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(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 setValue(newValue, newValidationError);\n\n setLocalError(newValidationError);\n };\n\n\n const error = globalError || localError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <TextArea\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n disabled={ disabled }\n autoResize={ autoResize }\n tooltip={ tooltip }\n element={ element } />\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}\n","import Description from './Description';\nimport Tooltip from './Tooltip';\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 useError,\n useShowEntryEvent\n} from '../../hooks';\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n onFocus,\n onBlur,\n value = '',\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value || '');\n\n const ref = useShowEntryEvent(id);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\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={ onFocus }\n onBlur={ onBlur }\n value={ localValue } />\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.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n * @param {Function} props.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n validate,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(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 setValue(newValue, newValidationError);\n\n setLocalError(newValidationError);\n };\n\n\n const error = globalError || localError;\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 id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value }\n tooltip={ tooltip }\n element={ element } />\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 {\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","ErrorsContext","errors","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","TooltipContext","tooltip","getTooltipForId","useTooltipContext","id","useContext","TooltipWrapper","forId","contextDescription","value","children","prefixId","Tooltip","parent","visible","setShow","useState","timeout","wrapperRef","useRef","tooltipRef","showTooltip","event","show","MouseEvent","setTimeout","hideTooltip","hideTooltipViaEscape","e","code","isTooltipHovered","x","y","current","wrapper","inBounds","getBoundingClientRect","useEffect","hideHoveredTooltip","isFocused","document","activeElement","closest","hideFocusedTooltip","relatedTarget","isTooltipChild","el","isHovered","addEventListener","removeEventListener","renderTooltip","getTooltipPosition","stopPropagation","clearTimeout","preventDefault","createPortal","bounds","top","right","bottom","left","refElement","refPosition","matches","useDescriptionContext","useError","useErrors","useEvent","callback","eventContext","didMount","on","off","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","setState","useCallback","newValue","usePrevious","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","scrollContainer","setScrollContainer","domQuery","updateScrollContainer","newScrollContainer","Observer","IntersectionObserver","observer","entries","scrollHeight","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","allErrors","hasErrors","some","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","Description","noop","useBufferedFocus","editor","buffer","setBuffer","undefined","offset","Infinity","CodeEditor","forwardRef","onInput","disabled","tooltipContainer","enableGutters","onLint","onPopupOpen","popupOpen","contentAttributes","hostLanguage","singleLine","inputRef","setEditor","localValue","setLocalValue","handleInput","FeelersEditor","container","onChange","innerHTML","setValue","handleClick","classNames","name","onFeelToggle","variables","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","extensions","lineNumbers","setVariables","FeelIndicator","active","FeelIcon","feel","onClick","feelRequiredLabel","feelOptionalLabel","pointerType","FeelIconSvg","FeelPopupContext","close","source","createDragger","fn","dragPreview","self","startX","startY","onDragStart","clientX","clientY","dataTransfer","setDragImage","emptyCanvas","onDrag","onEnd","delta","call","domify","Popup","className","position","width","height","onClose","onPostActivate","onPostDeactivate","returnFocus","title","focusTrapRef","popupRef","handleKeyPress","handleFocus","activate","style","focusTrap","createFocusTrap","clickOutsideDeactivates","fallbackFocus","returnFocusOnDeactivate","deactivate","body","Title","Body","Footer","draggable","rest","context","startPosition","newPosition","dragPreviewRef","titleRef","onMove","throttle","_","dx","dy","popupParent","getPopupParent","onMoveStart","onMoveEnd","node","FEEL_POPUP_WIDTH","FEEL_POPUP_HEIGHT","FEELPopupRoot","prevElement","popupConfig","setPopupConfig","setSource","sourceElement","setSourceElement","handleOpen","config","_sourceElement","handleClose","feelPopupContext","FeelPopupComponent","editorRef","handleSetReturnFocus","TemplatingEditor","ToggleSwitch","switcherLabel","inline","onFocus","onBlur","handleInputCallback","target","ToggleSwitchEntry","getValue","checked","NumberField","debounce","displayLabel","max","min","step","validity","valid","parseFloat","NumberFieldEntry","validate","globalError","localError","setLocalError","newValidationError","error","FeelTextfield","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","containerRef","feelActive","isString","startsWith","feelOnlyValue","substring","_setFocus","openPopup","popupSource","popuOpen","setFocus","hasFocus","contains","selectionStart","handleFeelToggle","handleLocalInput","handleLint","lint","length","message","handlePopupOpen","popupOptions","calculatePopupPosition","getPopupTitle","copyHandler","clipboardData","setData","getData","pasteHandler","data","input","setSelectionRange","OptionalFeelNumberField","OptionalFeelTextArea","OptionalFeelToggleSwitch","OptionalFeelCheckbox","handleChange","FeelEntry","example","validationError","setValidationError","err","temporaryError","class","FeelNumberEntry","FeelTextAreaEntry","FeelToggleSwitchEntry","FeelCheckboxEntry","FeelTemplatingEntry","classList","popupTitle","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","DEFAULT_TOOLTIP","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","tooltipConfig","tooltipLoaded","createLayout","useUpdateLayoutEffect","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","createTooltipContext","tooltipContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","FeelPopupRoot","group","overrides","defaults","effect","deps","isMounted","useLayoutEffect","DropdownButton","menuItems","dropdownRef","menuRef","onDropdownToggle","onActionClick","action","useGlobalClick","item","index","MenuItem","separator","ignoredElements","listener","capture","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","addTriggered","setAddTriggered","prevItems","elementChanged","shouldHandleEffects","createOrdering","sortItems","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","handleAddClick","hasError","sortBy","i","toLowerCase","Checkbox","handleChangeCallback","CheckboxEntry","TemplatingEntry","Templating","severity","prefixIdLabel","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","Select","options","option","idx","child","SelectEntry","getOptions","Simple","resizeToContents","TextArea","monospace","autoResize","rows","TextAreaEntry","Textfield","TextfieldEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","debounceTime","isNumber","$inject"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/context/TooltipContext.js","../src/hooks/useTooltipContext.js","../src/components/entries/Tooltip.js","../src/hooks/useDescriptionContext.js","../src/hooks/useError.js","../src/hooks/useEvent.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useStickyIntersectionObserver.js","../src/hooks/useStaticCallback.js","../src/components/Group.js","../src/components/Placeholder.js","../src/components/entries/Description.js","../src/components/entries/templating/TemplatingEditor.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/FEEL/context/FeelPopupContext.js","../src/components/util/dragger.js","../src/components/Popup.js","../src/components/entries/FEEL/FeelPopup.js","../src/components/entries/ToggleSwitch.js","../src/components/entries/NumberField.js","../src/components/entries/FEEL/Feel.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/Checkbox.js","../src/components/entries/templating/Templating.js","../src/components/entries/List.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.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: object) => string,\n * getTypeLabel: (element: object) => string,\n * getElementIcon: (element: object) => import('preact').Component,\n * getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\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","import {\n createContext\n} from 'preact';\n\nconst ErrorsContext = createContext({\n errors: {}\n});\n\nexport default ErrorsContext;","/**\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 createContext\n} from 'preact';\n\nconst TooltipContext = createContext({\n tooltip: {},\n getTooltipForId: () => {}\n});\n\nexport default TooltipContext;\n","import {\n useContext\n} from 'preact/hooks';\n\nimport {\n TooltipContext\n} from '../context';\n\n/**\n * Accesses the global TooltipContext and returns a tooltip for a given id and element.\n *\n * @example\n * ```jsx\n * function TextField(props) {\n * const tooltip = useTooltipContext('input1', element);\n * }\n * ```\n *\n * @param {string} id\n * @param {object} element\n *\n * @returns {string}\n */\nexport function useTooltipContext(id, element) {\n const {\n getTooltipForId\n } = useContext(TooltipContext);\n\n return getTooltipForId(id, element);\n}\n","import {\n useRef,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport { useTooltipContext } from '../../hooks/useTooltipContext';\n\nimport { createPortal } from 'preact/compat';\n\n/**\n * @param {Object} props\n * @param {String} props.forId\n * @param {String} props.value\n */\nexport default function TooltipWrapper(props) {\n const {\n forId,\n element\n } = props;\n\n const contextDescription = useTooltipContext(forId, element);\n\n const value = props.value || contextDescription;\n\n if (!value) {\n return props.children;\n }\n\n return <Tooltip { ...props } value={ value } forId={ prefixId(forId) } />;\n}\n\nfunction Tooltip(props) {\n const {\n forId,\n value,\n parent\n } = props;\n\n const [ visible, setShow ] = useState(false);\n const [ focusedViaKeyboard, setFocusedViaKeyboard ] = useState(false);\n\n let timeout = null;\n\n const wrapperRef = useRef(null);\n const tooltipRef = useRef(null);\n\n const showTooltip = async (event) => {\n const show = () => setShow(true);\n\n if (!visible && !timeout) {\n if (event instanceof MouseEvent) {\n timeout = setTimeout(show, 200);\n } else {\n show();\n setFocusedViaKeyboard(true);\n }\n }\n };\n\n const hideTooltip = () => {\n setShow(false);\n setFocusedViaKeyboard(false);\n };\n\n const hideTooltipViaEscape = (e) => {\n e.code === 'Escape' && hideTooltip();\n };\n\n const isTooltipHovered = ({ x, y }) => {\n const tooltip = tooltipRef.current;\n const wrapper = wrapperRef.current;\n\n return tooltip && (\n inBounds(x, y, wrapper.getBoundingClientRect()) ||\n inBounds(x, y, tooltip.getBoundingClientRect())\n );\n };\n\n useEffect(() => {\n const { current } = wrapperRef;\n\n if (!current) {\n return;\n }\n\n const hideHoveredTooltip = (e) => {\n const isFocused = document.activeElement === wrapperRef.current\n || document.activeElement.closest('.bio-properties-panel-tooltip');\n\n if (visible && !isTooltipHovered({ x: e.x, y: e.y }) && !(isFocused && focusedViaKeyboard)) {\n hideTooltip();\n }\n };\n\n const hideFocusedTooltip = (e) => {\n const { relatedTarget } = e;\n const isTooltipChild = (el) => !!el.closest('.bio-properties-panel-tooltip');\n\n\n if (visible && !isHovered(wrapperRef.current) && relatedTarget && !isTooltipChild(relatedTarget)) {\n hideTooltip();\n }\n };\n\n document.addEventListener('wheel', hideHoveredTooltip);\n document.addEventListener('focusout', hideFocusedTooltip);\n document.addEventListener('mousemove', hideHoveredTooltip);\n\n return () => {\n document.removeEventListener('wheel', hideHoveredTooltip);\n document.removeEventListener('mousemove', hideHoveredTooltip);\n document.removeEventListener('focusout', hideFocusedTooltip);\n };\n }, [ wrapperRef.current, visible, focusedViaKeyboard ]);\n\n const renderTooltip = () => {\n return (\n <div\n class=\"bio-properties-panel-tooltip\"\n role=\"tooltip\"\n id=\"bio-properties-panel-tooltip\"\n aria-labelledby={ forId }\n style={ getTooltipPosition(wrapperRef.current) }\n ref={ tooltipRef }\n onClick={ (e)=> e.stopPropagation() }\n >\n <div class=\"bio-properties-panel-tooltip-content\">\n {value}\n </div>\n <div class=\"bio-properties-panel-tooltip-arrow\" />\n </div>\n );};\n\n return (\n <div class=\"bio-properties-panel-tooltip-wrapper\" tabIndex=\"0\"\n ref={ wrapperRef }\n onMouseEnter={ showTooltip }\n onMouseLeave={ ()=> {\n clearTimeout(timeout);\n timeout = null;\n } }\n onFocus={ showTooltip }\n onKeyDown={ hideTooltipViaEscape }\n >\n {props.children}\n {visible ?\n (parent ?\n createPortal(renderTooltip(), parent.current)\n : renderTooltip()\n ) : null\n }\n </div>\n );\n}\n\n\n// helper\nfunction inBounds(x, y, bounds) {\n const { top, right, bottom, left } = bounds;\n return x >= left && x <= right && y >= top && y <= bottom;\n}\n\nfunction getTooltipPosition(refElement) {\n const refPosition = refElement.getBoundingClientRect();\n\n const right = `calc(100% - ${refPosition.x}px)`;\n const top = `${refPosition.top - 10}px`;\n\n return `right: ${right}; top: ${top};`;\n}\n\nfunction isHovered(element) {\n return element.matches(':hover');\n}\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","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 {object} 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 } from 'preact/hooks';\n\nimport { ErrorsContext } from '../context';\n\nexport function useError(id) {\n const { errors } = useContext(ErrorsContext);\n\n return errors[ id ];\n}\n\nexport function useErrors() {\n const { errors } = useContext(ErrorsContext);\n\n return errors;\n}","import { useContext, useEffect, useRef } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\n\n/**\n * Subscribe to an event immediately. Update subscription after inputs changed.\n *\n * @param {string} event\n * @param {Function} callback\n */\nexport function useEvent(event, callback, eventBus) {\n const eventContext = useContext(EventContext);\n\n if (!eventBus) {\n ({ eventBus } = eventContext);\n }\n\n const didMount = useRef(false);\n\n // (1) subscribe immediately\n if (eventBus && !didMount.current) {\n eventBus.on(event, callback);\n }\n\n // (2) update subscription after inputs changed\n useEffect(() => {\n if (eventBus && didMount.current) {\n eventBus.on(event, callback);\n }\n\n didMount.current = true;\n\n return () => {\n if (eventBus) {\n eventBus.off(event, callback);\n }\n };\n }, [ callback, event, eventBus ]);\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 useCallback,\n useContext\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\n const setState = useCallback ((newValue) => {\n setLayoutForKey(path, newValue);\n }, [ setLayoutForKey ]);\n\n\n return [ layoutForKey, 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} 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 {string} id\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(id) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const focus = useRef(false);\n\n const onShowEntry = useCallback((event) => {\n if (event.id === id) {\n onShow();\n\n if (!focus.current) {\n focus.current = true;\n }\n }\n }, [ id ]);\n\n useEffect(() => {\n if (focus.current && 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 focus.current = false;\n }\n });\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { useEvent } from './useEvent';\n\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n\n const [ scrollContainer, setScrollContainer ] = useState(domQuery(scrollContainerSelector));\n\n const updateScrollContainer = useCallback(() => {\n const newScrollContainer = domQuery(scrollContainerSelector);\n\n if (newScrollContainer !== scrollContainer) {\n setScrollContainer(newScrollContainer);\n }\n }, [ scrollContainerSelector, scrollContainer ]);\n\n useEffect(() => {\n updateScrollContainer();\n }, [ updateScrollContainer ]);\n\n useEvent('propertiesPanel.attach', updateScrollContainer);\n useEvent('propertiesPanel.detach', updateScrollContainer);\n\n useEffect(() => {\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n // TODO(@barmac): test this\n if (!ref.current || !scrollContainer) {\n return;\n }\n\n const observer = new Observer((entries) => {\n\n // scroll container is unmounted, do not update sticky state\n if (scrollContainer.scrollHeight === 0) {\n return;\n }\n\n entries.forEach(entry => {\n if (entry.intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entry.intersectionRatio === 1) {\n setSticky(false);\n }\n });\n },\n {\n root: scrollContainer,\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\n threshold: [ 1 ]\n });\n observer.observe(ref.current);\n\n // Unobserve if unmounted\n return () => {\n observer.unobserve(ref.current);\n };\n\n }, [ ref.current, scrollContainer, setSticky ]);\n}\n","import { useCallback, useRef } from 'preact/hooks';\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nexport function useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n return useCallback(\n (...args) => callbackRef.current(...args),\n []\n );\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport Tooltip from './entries/Tooltip';\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 useErrors,\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useStickyIntersectionObserver } from '../hooks';\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 groupRef = useRef(null);\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 const [ sticky, setSticky ] = useState(false);\n\n // set edited state depending on all entries\n useEffect(() => {\n const hasOneEditedEntry = entries.find(entry => {\n const {\n id,\n isEdited\n } = entry;\n\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 // set error state depending on all entries\n const allErrors = useErrors();\n const hasErrors = entries.some(entry => allErrors[entry.id]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) } onClick={ toggleOpen }>\n <div\n title={ props.tooltip ? null : label }\n data-title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n <Tooltip value={ props.tooltip } forId={ 'group-' + id } element={ element } parent={ groupRef }>\n { label }\n </Tooltip>\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n <DataMarker\n edited={ edited }\n hasErrors={ hasErrors }\n />\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(props) {\n const {\n edited,\n hasErrors\n } = props;\n\n if (hasErrors) {\n return (\n <div title=\"Section contains an error\" class=\"bio-properties-panel-dot bio-properties-panel-dot--error\"></div>\n );\n }\n\n if (edited) {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n }\n return null;\n}","/**\n * @typedef { {\n * text: (element: object) => string,\n * icon?: (element: Object) => import('preact').Component\n * } } PlaceholderDefinition\n *\n * @param { PlaceholderDefinition } props\n */\nexport default function Placeholder(props) {\n const {\n text,\n icon: Icon\n } = props;\n\n return (\n <div class=\"bio-properties-panel open\">\n <section class=\"bio-properties-panel-placeholder\">\n { Icon && <Icon class=\"bio-properties-panel-placeholder-icon\" /> }\n <p class=\"bio-properties-panel-placeholder-text\">{ text }</p>\n </section>\n </div>\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 classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport { FeelersEditor } from 'feelers';\nimport { useStaticCallback } from '../../../hooks';\n\nimport { ExternalLinkIcon } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function(editor, ref) {\n\n const [ buffer, setBuffer ] = useState(undefined);\n\n ref.current = useMemo(() => ({\n focus: (offset) => {\n if (editor) {\n editor.focus(offset);\n } else {\n if (typeof offset === 'undefined') {\n offset = Infinity;\n }\n setBuffer(offset);\n }\n }\n }), [ editor ]);\n\n useEffect(() => {\n if (typeof buffer !== 'undefined' && editor) {\n editor.focus(buffer);\n setBuffer(false);\n }\n }, [ editor, buffer ]);\n};\n\nconst CodeEditor = forwardRef((props, ref) => {\n\n const {\n onInput,\n disabled,\n tooltipContainer,\n enableGutters,\n value,\n onLint = noop,\n onPopupOpen = noop,\n popupOpen,\n contentAttributes = {},\n hostLanguage = null,\n singleLine = false\n } = props;\n\n const inputRef = useRef();\n const [ editor, setEditor ] = useState();\n const [ localValue, setLocalValue ] = useState(value || '');\n\n useBufferedFocus(editor, ref);\n\n const handleInput = useStaticCallback(newValue => {\n onInput(newValue);\n setLocalValue(newValue);\n });\n\n useEffect(() => {\n\n let editor;\n\n editor = new FeelersEditor({\n container: inputRef.current,\n onChange: handleInput,\n value: localValue,\n onLint,\n contentAttributes,\n tooltipContainer,\n enableGutters,\n hostLanguage,\n singleLine\n });\n\n setEditor(\n editor\n );\n\n return () => {\n onLint([]);\n inputRef.current.innerHTML = '';\n setEditor(null);\n };\n }, []);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div class={ classNames(\n 'bio-properties-panel-feelers-editor-container',\n popupOpen ? 'popupOpen' : null\n ) }>\n <div class=\"bio-properties-panel-feelers-editor__open-popup-placeholder\">Opened in editor</div>\n <div\n name={ props.name }\n class={ classNames('bio-properties-panel-feelers-editor bio-properties-panel-input', localValue ? 'edited' : null, disabled ? 'disabled' : null) }\n ref={ inputRef }\n onClick={ handleClick }\n ></div>\n\n <button\n title=\"Open pop-up editor\"\n class=\"bio-properties-panel-open-feel-popup\"\n onClick={ () => onPopupOpen('feelers') }><ExternalLinkIcon /></button>\n </div>;\n});\n\nexport default CodeEditor;","import classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport FeelEditor from '@bpmn-io/feel-editor';\n\nimport { lineNumbers } from '@codemirror/view';\n\nimport { useStaticCallback } from '../../../hooks';\n\nimport { ExternalLinkIcon } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function(editor, ref) {\n\n const [ buffer, setBuffer ] = useState(undefined);\n\n ref.current = useMemo(() => ({\n focus: (offset) => {\n if (editor) {\n editor.focus(offset);\n } else {\n if (typeof offset === 'undefined') {\n offset = Infinity;\n }\n setBuffer(offset);\n }\n }\n }), [ editor ]);\n\n useEffect(() => {\n if (typeof buffer !== 'undefined' && editor) {\n editor.focus(buffer);\n setBuffer(false);\n }\n }, [ editor, buffer ]);\n};\n\nconst CodeEditor = forwardRef((props, ref) => {\n\n const {\n enableGutters,\n value,\n onInput,\n onFeelToggle = noop,\n onLint = noop,\n onPopupOpen = noop,\n popupOpen,\n disabled,\n tooltipContainer,\n variables\n } = props;\n\n const inputRef = useRef();\n const [ editor, setEditor ] = useState();\n const [ localValue, setLocalValue ] = useState(value || '');\n\n useBufferedFocus(editor, ref);\n\n const handleInput = useStaticCallback(newValue => {\n onInput(newValue);\n setLocalValue(newValue);\n });\n\n useEffect(() => {\n\n let editor;\n\n /* Trigger FEEL toggle when\n *\n * - `backspace` is pressed\n * - AND the cursor is at the beginning of the input\n */\n const onKeyDown = e => {\n if (e.key !== 'Backspace' || !editor) {\n return;\n }\n\n const selection = editor.getSelection();\n const range = selection.ranges[selection.mainIndex];\n\n if (range.from === 0 && range.to === 0) {\n onFeelToggle();\n }\n };\n\n editor = new FeelEditor({\n container: inputRef.current,\n onChange: handleInput,\n onKeyDown: onKeyDown,\n onLint: onLint,\n tooltipContainer: tooltipContainer,\n value: localValue,\n variables: variables,\n extensions: [\n ...enableGutters ? [ lineNumbers() ] : []\n ]\n });\n\n setEditor(\n editor\n );\n\n return () => {\n onLint([]);\n inputRef.current.innerHTML = '';\n setEditor(null);\n };\n }, []);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n editor.setVariables(variables);\n }, [ variables ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div class={ classNames(\n 'bio-properties-panel-feel-editor-container',\n disabled ? 'disabled' : null,\n popupOpen ? 'popupOpen' : null)\n }>\n <div class=\"bio-properties-panel-feel-editor__open-popup-placeholder\">Opened in editor</div>\n <div\n name={ props.name }\n class={ classNames('bio-properties-panel-input', localValue ? 'edited' : null) }\n ref={ inputRef }\n onClick={ handleClick }\n ></div>\n <button\n title=\"Open pop-up editor\"\n class=\"bio-properties-panel-open-feel-popup\"\n onClick={ () => onPopupOpen() }><ExternalLinkIcon /></button>\n </div>;\n});\n\nexport default CodeEditor;","export function FeelIndicator(props) {\n const {\n active\n } = props;\n\n if (!active) {\n return null;\n }\n\n return <span class=\"bio-properties-panel-feel-indicator\">\n =\n </span>;\n}","import classNames from 'classnames';\nimport { FeelIcon as FeelIconSvg } from '../../icons';\n\nconst noop = () => {};\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 feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = 'FEEL expression is mandatory';\n const feelOptionalLabel = `Click to ${active ? 'remove' : 'set a'} dynamic value with FEEL expression`;\n\n const handleClick = e => {\n onClick(e);\n\n // when pointer event was created from keyboard, keep focus on button\n if (!e.pointerType) {\n e.stopPropagation();\n }\n };\n\n return (\n <button\n class={ classNames('bio-properties-panel-feel-icon',\n active ? 'active' : null,\n feel === 'required' ? 'required' : 'optional') }\n onClick={ handleClick }\n disabled={ feel === 'required' || disabled }\n title={\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n }\n >\n <FeelIconSvg />\n </button>\n );\n}","import {\n createContext\n} from 'preact';\n\nconst FeelPopupContext = createContext({\n open: () => {},\n close: () => {},\n source: null\n});\n\nexport default FeelPopupContext;","import { domify } from 'min-dom';\n\n/**\n * Add a dragger that calls back the passed function with\n * { event, delta } on drag.\n *\n * @example\n *\n * function dragMove(event, delta) {\n * // we are dragging (!!)\n * }\n *\n * domElement.addEventListener('dragstart', dragger(dragMove));\n *\n * @param {Function} fn\n * @param {Element} [dragPreview]\n *\n * @return {Function} drag start callback function\n */\nexport function createDragger(fn, dragPreview) {\n\n let self;\n\n let startX, startY;\n\n /** drag start */\n function onDragStart(event) {\n\n self = this;\n\n startX = event.clientX;\n startY = event.clientY;\n\n // (1) prevent preview image\n if (event.dataTransfer) {\n event.dataTransfer.setDragImage(dragPreview || emptyCanvas(), 0, 0);\n }\n\n // (2) setup drag listeners\n\n // attach drag + cleanup event\n document.addEventListener('dragover', onDrag);\n document.addEventListener('dragend', onEnd);\n document.addEventListener('drop', preventDefault);\n }\n\n function onDrag(event) {\n const delta = {\n x: event.clientX - startX,\n y: event.clientY - startY\n };\n\n // call provided fn with event, delta\n return fn.call(self, event, delta);\n }\n\n function onEnd() {\n document.removeEventListener('dragover', onDrag);\n document.removeEventListener('dragend', onEnd);\n document.removeEventListener('drop', preventDefault);\n }\n\n return onDragStart;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nfunction emptyCanvas() {\n return domify('<canvas width=\"0\" height=\"0\" />');\n}","import { createPortal } from 'preact/compat';\n\nimport { useEffect, useRef } from 'preact/hooks';\n\nimport classNames from 'classnames';\n\nimport { throttle } from 'min-dash';\n\nimport * as focusTrap from 'focus-trap';\n\nimport { DragIcon } from './icons';\n\nimport { createDragger } from './util/dragger';\n\n\n\n\nconst noop = () => {};\n\n/**\n * A generic popup component.\n *\n * @param {Object} props\n * @param {HTMLElement} [props.container]\n * @param {string} [props.className]\n * @param {{x: number, y: number}} [props.position]\n * @param {number} [props.width]\n * @param {number} [props.height]\n * @param {Function} props.onClose\n * @param {Function} [props.onPostActivate]\n * @param {Function} [props.onPostDeactivate]\n * @param {boolean} [props.returnFocus]\n * @param {string} props.title\n */\nexport function Popup(props) {\n\n const {\n container,\n className,\n position,\n width,\n height,\n onClose,\n onPostActivate = noop,\n onPostDeactivate = noop,\n returnFocus = true,\n title\n } = props;\n\n const focusTrapRef = useRef(null);\n const popupRef = useRef(null);\n\n const handleKeyPress = event => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n\n // re-activate focus trap on focus\n const handleFocus = () => {\n if (focusTrapRef.current) {\n focusTrapRef.current.activate();\n }\n };\n\n let style = {};\n\n if (position) {\n style = {\n ...style,\n top: position.top + 'px',\n left: position.left + 'px'\n };\n }\n\n if (width) {\n style.width = width + 'px';\n }\n\n if (height) {\n style.height = height + 'px';\n }\n\n useEffect(() => {\n if (popupRef.current) {\n popupRef.current.addEventListener('keydown', handleKeyPress);\n }\n\n return () => { popupRef.current.removeEventListener('keydown', handleKeyPress); };\n }, [ popupRef ]);\n\n useEffect(() => {\n if (popupRef.current) {\n popupRef.current.addEventListener('focusin', handleFocus);\n }\n\n return () => { popupRef.current.removeEventListener('focusin', handleFocus); };\n }, [ popupRef ]);\n\n useEffect(() => {\n if (popupRef.current) {\n focusTrapRef.current = focusTrap.createFocusTrap(popupRef.current, {\n clickOutsideDeactivates: true,\n fallbackFocus: popupRef.current,\n onPostActivate,\n onPostDeactivate,\n returnFocusOnDeactivate: returnFocus\n });\n\n focusTrapRef.current.activate();\n }\n\n return () => focusTrapRef.current && focusTrapRef.current.deactivate();\n }, [ popupRef ]);\n\n return createPortal(\n\n <div\n aria-label={ title }\n tabIndex={ -1 }\n ref={ popupRef }\n role=\"dialog\"\n class={ classNames('bio-properties-panel-popup', className) }\n style={ style }>{ props.children }</div>\n , container || document.body\n );\n}\n\nPopup.Title = Title;\nPopup.Body = Body;\nPopup.Footer = Footer;\n\nfunction Title(props) {\n const {\n children,\n className,\n draggable,\n title,\n ...rest\n } = props;\n\n // we can't use state as we need to\n // manipulate this inside dragging events\n const context = useRef({\n startPosition: null,\n newPosition: null\n });\n\n const dragPreviewRef = useRef();\n\n const titleRef = useRef();\n\n const onMove = throttle((_, delta) => {\n const { x: dx, y: dy } = delta;\n\n const newPosition = {\n x: context.current.startPosition.x + dx,\n y: context.current.startPosition.y + dy\n };\n\n const popupParent = getPopupParent(titleRef.current);\n\n popupParent.style.top = newPosition.y + 'px';\n popupParent.style.left = newPosition.x + 'px';\n });\n\n const onMoveStart = (event) => {\n\n // initialize drag handler\n const onDragStart = createDragger(onMove, dragPreviewRef.current);\n onDragStart(event);\n\n const popupParent = getPopupParent(titleRef.current);\n\n const bounds = popupParent.getBoundingClientRect();\n context.current.startPosition = {\n x: bounds.left,\n y: bounds.top\n };\n };\n\n const onMoveEnd = () => {\n context.current.newPosition = null;\n };\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-popup__header',\n draggable && 'draggable',\n className\n ) }\n ref={ titleRef }\n draggable={ draggable }\n onDragStart={ onMoveStart }\n onDragEnd={ onMoveEnd }\n { ...rest }>\n { draggable && (\n <>\n <div ref={ dragPreviewRef } class=\"bio-properties-panel-popup__drag-preview\"></div>\n <div class=\"bio-properties-panel-popup__drag-handle\">\n <DragIcon />\n </div>\n </>\n )}\n <div class=\"bio-properties-panel-popup__title\">{ title }</div>\n { children }\n </div>\n );\n}\n\nfunction Body(props) {\n const {\n children,\n className,\n ...rest\n } = props;\n\n return (\n <div class={ classNames('bio-properties-panel-popup__body', className) } { ...rest }>\n { children }\n </div>\n );\n}\n\nfunction Footer(props) {\n const {\n children,\n className,\n ...rest\n } = props;\n\n return (\n <div class={ classNames('bio-properties-panel-popup__footer', className) } { ...rest }>\n { props.children }\n </div>\n );\n}\n\n\n// helpers //////////////////////\n\nfunction getPopupParent(node) {\n return node.closest('.bio-properties-panel-popup');\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { FeelPopupContext } from './context';\n\nimport { usePrevious } from '../../../hooks';\n\nimport { Popup } from '../../Popup';\n\nimport CodeEditor from './FeelEditor';\n\nimport TemplatingEditor from '../templating/TemplatingEditor';\n\nexport const FEEL_POPUP_WIDTH = 700;\nexport const FEEL_POPUP_HEIGHT = 250;\n\n\n/**\n * FEEL popup component, built as a singleton.\n */\nexport default function FEELPopupRoot(props) {\n const {\n element\n } = props;\n\n const prevElement = usePrevious(element);\n\n const [ popupConfig, setPopupConfig ] = useState({});\n const [ open, setOpen ] = useState(false);\n const [ source, setSource ] = useState(null);\n const [ sourceElement, setSourceElement ] = useState(null);\n\n const handleOpen = (key, config, _sourceElement) => {\n setSource(key);\n setPopupConfig(config);\n setOpen(true);\n setSourceElement(_sourceElement);\n };\n\n const handleClose = () => {\n setOpen(false);\n setSource(null);\n };\n\n const feelPopupContext = {\n open: handleOpen,\n close: handleClose,\n source\n };\n\n // close popup on element change, cf. https://github.com/bpmn-io/properties-panel/issues/270\n useEffect(() => {\n if (element && element !== prevElement) {\n handleClose();\n }\n }, [ element ]);\n\n return (\n <FeelPopupContext.Provider value={ feelPopupContext }>\n { open && (\n <FeelPopupComponent\n onClose={ handleClose }\n sourceElement={ sourceElement }\n { ...popupConfig } />\n )}\n { props.children }\n </FeelPopupContext.Provider>\n );\n}\n\nfunction FeelPopupComponent(props) {\n const {\n id,\n hostLanguage,\n onInput,\n onClose,\n position,\n singleLine,\n sourceElement,\n title,\n tooltipContainer,\n type,\n value,\n variables\n } = props;\n\n const editorRef = useRef();\n\n const handleSetReturnFocus = () => {\n sourceElement && sourceElement.focus();\n };\n\n useEffect(() => {\n const editor = editorRef.current;\n\n if (editor) {\n editor.focus();\n }\n }, [ editorRef, id ]);\n\n return (\n <Popup\n className=\"bio-properties-panel-feel-popup\"\n position={ position }\n title={ title }\n onClose={ onClose }\n\n // handle focus manually on deactivate\n returnFocus={ false }\n onPostDeactivate={ handleSetReturnFocus }\n height={ FEEL_POPUP_HEIGHT }\n width={ FEEL_POPUP_WIDTH }\n >\n <Popup.Title\n title={ title }\n draggable />\n <Popup.Body>\n <div class=\"bio-properties-panel-feel-popup__body\">\n\n {\n type === 'feel' && (\n <CodeEditor\n enableGutters={ true }\n id={ prefixId(id) }\n name={ id }\n onInput={ onInput }\n value={ value }\n variables={ variables }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n />\n )\n }\n\n {\n type === 'feelers' && (\n <TemplatingEditor\n id={ prefixId(id) }\n contentAttributes={ { 'aria-label': title } }\n enableGutters={ true }\n hostLanguage={ hostLanguage }\n name={ id }\n onInput={ onInput }\n value={ value }\n ref={ editorRef }\n singleLine={ singleLine }\n tooltipContainer={ tooltipContainer }\n />\n )\n }\n </div>\n </Popup.Body>\n <Popup.Footer>\n <button\n onClick={ onClose }\n title=\"Close pop-up editor\"\n class=\"bio-properties-panel-feel-popup__close-btn\">Close</button>\n </Popup.Footer>\n </Popup>\n );\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classNames from 'classnames';\nimport Tooltip from './Tooltip';\n\nexport function ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n inline,\n onFocus,\n onBlur,\n inputRef,\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = async () => {\n onInput(!value);\n };\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class={ classNames(\n 'bio-properties-panel-toggle-switch',\n { inline }\n ) }>\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n ref={ inputRef }\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n onFocus={ onFocus }\n onBlur={ onBlur }\n name={ id }\n onInput={ handleInput }\n checked={ !!localValue } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n { switcherLabel && <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 {Boolean} props.inline\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n inline,\n getValue,\n setValue,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\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\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel }\n inline={ inline }\n tooltip={ tooltip }\n element={ element } />\n <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 Description from './Description';\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 useError\n} from '../../hooks';\n\nexport function NumberField(props) {\n\n const {\n debounce,\n disabled,\n displayLabel = true,\n id,\n inputRef,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = 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 const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n {displayLabel && <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label> }\n <input\n id={ prefixId(id) }\n ref={ inputRef }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n step={ step }\n value={ localValue } />\n </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 {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {String} props.step\n * @param {Function} props.validate\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 onFocus,\n onBlur,\n validate\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(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 setValue(newValue, newValidationError);\n setLocalError(newValidationError);\n };\n\n const error = globalError || localError;\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '') } data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onInput={ onInput }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n { 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}\n","import Description from '../Description';\nimport TemplatingEditor from '../templating/TemplatingEditor';\n\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { forwardRef } from 'preact/compat';\n\nimport classnames from 'classnames';\n\nimport { isFunction, isString } from 'min-dash';\n\nimport {\n useShowEntryEvent,\n useError,\n useStaticCallback\n} from '../../../hooks';\n\nimport CodeEditor from './FeelEditor';\nimport { FeelIndicator } from './FeelIndicator';\nimport FeelIcon from './FeelIcon';\n\nimport { FEEL_POPUP_WIDTH } from './FeelPopup';\n\nimport { FeelPopupContext } from './context';\n\nimport { ToggleSwitch } from '../ToggleSwitch';\n\nimport { NumberField } from '../NumberField';\nimport Tooltip from '../Tooltip';\n\nconst noop = () => { };\n\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n element,\n label,\n hostLanguage,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n variables,\n singleLine,\n tooltipContainer,\n OptionalComponent = OptionalFeelInput,\n tooltip\n } = props;\n\n const [ localValue, _setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const feelActive = (isString(localValue) && localValue.startsWith('=')) || feel === 'required';\n const feelOnlyValue = (isString(localValue) && localValue.startsWith('=')) ? localValue.substring(1) : localValue;\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const {\n open: openPopup,\n source: popupSource\n } = useContext(FeelPopupContext);\n\n const popuOpen = popupSource === id;\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => {\n onInput(newValue);\n });\n }, [ onInput, debounce ]);\n\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n\n };\n\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n\n const handleLocalInput = (newValue) => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n\n if (newValue === localValue) {\n return;\n }\n\n setLocalValue(newValue);\n\n if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n\n const handleLint = useStaticCallback(lint => {\n\n if (!(lint && lint.length)) {\n onError(undefined);\n return;\n }\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n const handlePopupOpen = (type = 'feel') => {\n const popupOptions = {\n id,\n hostLanguage,\n onInput: handleLocalInput,\n position: calculatePopupPosition(containerRef.current),\n singleLine,\n title: getPopupTitle(element, label),\n tooltipContainer,\n type,\n value: feelOnlyValue,\n variables\n };\n\n openPopup(id, popupOptions, editorRef.current);\n };\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n // External value change removed content => keep FEEL configuration\n if (!value) {\n setLocalValue(feelActive ? '=' : '');\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n // copy-paste integration\n useEffect(() => {\n const copyHandler = event => {\n if (!feelActive) {\n return;\n }\n event.clipboardData.setData('application/FEEL', event.clipboardData.getData('text'));\n };\n\n const pasteHandler = event => {\n if (feelActive || popuOpen) {\n return;\n }\n\n const data = event.clipboardData.getData('application/FEEL');\n\n if (data) {\n setTimeout(() => {\n handleFeelToggle();\n setFocus();\n });\n }\n };\n containerRef.current.addEventListener('copy', copyHandler);\n containerRef.current.addEventListener('cut', copyHandler);\n containerRef.current.addEventListener('paste', pasteHandler);\n\n return () => {\n containerRef.current.removeEventListener('copy', copyHandler);\n containerRef.current.removeEventListener('cut', copyHandler);\n containerRef.current.removeEventListener('paste', pasteHandler);\n };\n }, [ containerRef, feelActive, handleFeelToggle, setFocus ]);\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-feel-entry',\n { 'feel-active': feelActive }\n ) }>\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n {label}\n </Tooltip>\n <FeelIcon\n label={ label }\n feel={ feel }\n onClick={ handleFeelToggle }\n active={ feelActive }></FeelIcon>\n </label>\n\n <div class=\"bio-properties-panel-feel-container\" ref={ containerRef }>\n <FeelIndicator\n active={ feelActive }\n disabled={ feel !== 'optional' || disabled }\n onClick={ handleFeelToggle }\n />\n {feelActive ?\n <CodeEditor\n id={ prefixId(id) }\n name={ id }\n onInput={ handleLocalInput }\n disabled={ disabled }\n popupOpen={ popuOpen }\n onFeelToggle={ () => { handleFeelToggle(); setFocus(true); } }\n onLint={ handleLint }\n onPopupOpen={ handlePopupOpen }\n value={ feelOnlyValue }\n variables={ variables }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n /> :\n <OptionalComponent\n { ...props }\n popupOpen={ popuOpen }\n onInput={ handleLocalInput }\n contentAttributes={ { 'id': prefixId(id), 'aria-label': label } }\n value={ localValue }\n ref={ editorRef }\n onPopupOpen={ handlePopupOpen }\n containerRef={ containerRef }\n />\n }\n </div>\n </div>\n );\n}\n\nconst OptionalFeelInput = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number') {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <input\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />;\n});\n\n\nconst OptionalFeelNumberField = forwardRef((props, ref) => {\n const {\n id,\n debounce,\n disabled,\n onInput,\n value,\n min,\n max,\n step,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number' && position !== Infinity) {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <NumberField\n id={ id }\n debounce={ debounce }\n disabled={ disabled }\n displayLabel={ false }\n inputRef={ inputRef }\n max={ max }\n min={ min }\n onInput={ onInput }\n step={ step }\n value={ value }\n onFocus={ onFocus }\n onBlur={ onBlur }\n />;\n});\n\n\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n input.setSelectionRange(0, 0);\n }\n };\n\n return <textarea\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' }\n data-gramm=\"false\"\n />;\n});\n\nconst OptionalFeelToggleSwitch = forwardRef((props, ref) => {\n const {\n id,\n onInput,\n value,\n onFocus,\n onBlur,\n switcherLabel\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <ToggleSwitch\n id={ id }\n value={ value }\n inputRef={ inputRef }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel } />;\n});\n\n\nconst OptionalFeelCheckbox = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n const handleChange = ({ target }) => {\n onInput(target.checked);\n };\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <input\n ref={ inputRef }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\n disabled={ disabled } />;\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n */\nexport default function FeelEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n tooltipContainer,\n hostLanguage,\n singleLine,\n validate,\n show = noop,\n example,\n variables,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue, newValidationError);\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n const temporaryError = useError(id);\n\n const error = localError || temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n props.class,\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <FeelTextfield\n { ...props }\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n onFocus={ onFocus }\n onBlur={ onBlur }\n example={ example }\n hostLanguage={ hostLanguage }\n singleLine={ singleLine }\n show={ show }\n value={ value }\n variables={ variables }\n tooltipContainer={ tooltipContainer }\n OptionalComponent={ props.OptionalComponent }\n tooltip={ tooltip } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\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.max\n * @param {String} props.min\n * @param {String} props.step\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelNumberEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-number\" OptionalComponent={ OptionalFeelNumberField } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTextAreaEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelToggleSwitchEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-toggle-switch\" OptionalComponent={ OptionalFeelToggleSwitch } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelCheckboxEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-checkbox\" OptionalComponent={ OptionalFeelCheckbox } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.hostLanguage\n * @param {Boolean} props.singleLine\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTemplatingEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-templating\" OptionalComponent={ TemplatingEditor } { ...props } />;\n}\n\nexport function isEdited(node) {\n if (!node) {\n return false;\n }\n\n if (node.type === 'checkbox') {\n return !!node.checked || node.classList.contains('edited');\n }\n\n return !!node.value || node.classList.contains('edited');\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}\n\nfunction calculatePopupPosition(element) {\n const { top, left } = element.getBoundingClientRect();\n\n return {\n left: left - FEEL_POPUP_WIDTH - 20,\n top: top\n };\n}\n\n// todo(pinussilvestrus): make this configurable in the future\nfunction getPopupTitle(element, label) {\n let popupTitle;\n\n if (element && element.type) {\n popupTitle = `${element.type} / `;\n }\n\n return `${popupTitle}${label}`;\n}\n","import {\n useState,\n useEffect,\n useMemo,\n useRef,\n useLayoutEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext,\n TooltipContext\n} from './context';\n\nimport { FeelPopupRoot } from './components/entries/FEEL';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {};\n\nconst DEFAULT_DESCRIPTION = {};\n\nconst DEFAULT_TOOLTIP = {};\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 * @typedef { {\n * [id: String]: GetTooltipFunction\n * } } TooltipConfig\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetTooltipFunction\n *\n * @typedef { {\n * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\n * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\n * } } PlaceholderProvider\n *\n */\n\n\n/**\n * A basic properties panel component. Describes *how* content will be rendered, accepts\n * data from implementor to describe *what* will be rendered.\n *\n * @param {Object} props\n * @param {Object|Array} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\n * @param {PlaceholderProvider} [props.placeholderProvider]\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\n * @param {Object} [props.layoutConfig]\n * @param {Function} [props.layoutChanged]\n * @param {DescriptionConfig} [props.descriptionConfig]\n * @param {Function} [props.descriptionLoaded]\n * @param {TooltipConfig} [props.tooltipConfig]\n * @param {Function} [props.tooltipLoaded]\n * @param {Object} [props.eventBus]\n */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n placeholderProvider,\n groups,\n layoutConfig,\n layoutChanged,\n descriptionConfig,\n descriptionLoaded,\n tooltipConfig,\n tooltipLoaded,\n eventBus\n } = props;\n\n // set-up layout context\n const [ layout, setLayout ] = useState(createLayout(layoutConfig));\n\n // react to external changes in the layout config\n useUpdateLayoutEffect(() => {\n const newLayout = createLayout(layoutConfig);\n\n setLayout(newLayout);\n }, [ 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 = useMemo(() => createDescriptionContext(descriptionConfig), [ descriptionConfig ]);\n\n useEffect(() => {\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n }, [ description, descriptionLoaded ]);\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 // set-up tooltip context\n const tooltip = useMemo(() => createTooltipContext(tooltipConfig), [ tooltipConfig ]);\n\n useEffect(() => {\n if (typeof tooltipLoaded === 'function') {\n tooltipLoaded(tooltip);\n }\n }, [ tooltip, tooltipLoaded ]);\n\n const getTooltipForId = (id, element) => {\n return tooltip[id] && tooltip[id](element);\n };\n\n const tooltipContext = {\n tooltip,\n getTooltipForId\n };\n\n const [ errors, setErrors ] = useState({});\n\n const onSetErrors = ({ errors }) => setErrors(errors);\n\n useEvent('propertiesPanel.setErrors', onSetErrors, eventBus);\n\n const errorsContext = {\n errors\n };\n\n const eventContext = {\n eventBus\n };\n\n const propertiesPanelContext = {\n element\n };\n\n // empty state\n if (placeholderProvider && !element) {\n return <Placeholder { ...placeholderProvider.getEmpty() } />;\n }\n\n // multiple state\n if (placeholderProvider && isArray(element)) {\n return <Placeholder { ...placeholderProvider.getMultiple() } />;\n }\n\n return (\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n <ErrorsContext.Provider value={ errorsContext }>\n <DescriptionContext.Provider value={ descriptionContext }>\n <TooltipContext.Provider value={ tooltipContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <FeelPopupRoot element={ element }>\n <div class=\"bio-properties-panel\">\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 </FeelPopupRoot>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </TooltipContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides = {}, defaults = DEFAULT_LAYOUT) {\n return {\n ...defaults,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides = {}) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}\n\nfunction createTooltipContext(overrides = {}) {\n return {\n ...DEFAULT_TOOLTIP,\n ...overrides\n };\n}\n\n// hooks //////////////////\n\n/**\n * This hook behaves like useLayoutEffect, but does not trigger on the first render.\n *\n * @param {Function} effect\n * @param {Array} deps\n */\nfunction useUpdateLayoutEffect(effect, deps) {\n const isMounted = useRef(false);\n\n useLayoutEffect(() => {\n if (isMounted.current) {\n return effect();\n } else {\n isMounted.current = true;\n }\n }, deps);\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 (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\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 useRef,\n useState\n} from 'preact/hooks';\n\nimport Tooltip from './entries/Tooltip';\n\nimport classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useErrors,\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\nimport { useStickyIntersectionObserver } from '../hooks';\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 groupRef = useRef(null);\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n\n const [ sticky, setSticky ] = useState(false);\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const [ ordering, setOrdering ] = useState([]);\n const [ newItemAdded, setNewItemAdded ] = useState(false);\n\n // Flag to mark that add button was clicked in the last render cycle\n const [ addTriggered, setAddTriggered ] = useState(false);\n\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\n // reset addTriggered flag\n setAddTriggered(false);\n\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, configured and triggered by add button\n //\n // TODO(marstamm): remove once we refactor layout handling for listGroups.\n // Ideally, opening should be handled as part of the `add` callback and\n // not be a concern for the ListGroup component.\n if (addTriggered && !open && shouldOpen) {\n toggleOpen();\n }\n\n // filter when not open and configured\n if (!open && shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(addTriggered);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects, addTriggered ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\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 // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n const handleAddClick = e => {\n setAddTriggered(true);\n add(e);\n };\n\n const allErrors = useErrors();\n const hasError = items.some(item => {\n if (allErrors[item.id]) {\n return true;\n }\n\n if (!item.entries) {\n return;\n }\n\n // also check if the error is nested, e.g. for name-value entries\n return item.entries.some(entry => allErrors[entry.id]);\n }\n );\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) }\n onClick={ hasItems ? toggleOpen : noop }>\n <div\n title={ props.tooltip ? null : label }\n data-title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n <Tooltip value={ props.tooltip } forId={ 'group-' + id } element={ element } parent={ groupRef }>\n { label }\n </Tooltip>\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={ handleAddClick }\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={\n classnames(\n 'bio-properties-panel-list-badge',\n hasError ? 'bio-properties-panel-list-badge--error' : ''\n )\n }\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 it\n // Existing items will not be affected as autoOpen is only applied on first render\n const autoOpen = newItemAdded;\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 useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\nimport Tooltip from './Tooltip';\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleChangeCallback = ({ target }) => {\n onChange(target.checked);\n };\n\n const handleChange = e => {\n handleChangeCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n const ref = useShowEntryEvent(id);\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ localValue }\n disabled={ disabled } />\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\n </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 {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\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 onFocus,\n onBlur,\n tooltip\n } = props;\n\n const value = getValue(element);\n\n const error = useError(id);\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 key={ element }\n label={ label }\n onChange={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value }\n tooltip={ tooltip }\n element={ element } />\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 { useCallback, useEffect, useState, useMemo, useRef } from 'preact/hooks';\nimport { useStaticCallback, useShowEntryEvent } from '../../../hooks';\nimport { isFunction } from 'min-dash';\nimport { useError } from '../../../hooks';\nimport classnames from 'classnames';\nimport Description from '../Description';\nimport TemplatingEditor from './TemplatingEditor';\n\nconst noop = () => { };\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n */\nexport default function TemplatingEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n tooltipContainer,\n validate,\n show = noop,\n } = props;\n\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue, newValidationError);\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n const temporaryError = useError(id);\n\n const error = localError || 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 <Templating\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n show={ show }\n value={ value }\n tooltipContainer={ tooltipContainer } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nfunction Templating(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n value = '',\n disabled = false,\n tooltipContainer\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => onInput(newValue.length ? newValue : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = newValue => {\n handleInputCallback(newValue);\n setLocalValue(newValue);\n };\n\n const handleLint = useStaticCallback(lint => {\n\n const errors = lint && lint.length && lint.filter(e => e.severity === 'error') || [];\n\n if (!errors.length) {\n onError(undefined);\n return;\n }\n\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n setLocalValue(value ? value : '');\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-feelers\">\n <label id={ prefixIdLabel(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\n </label>\n <div class=\"bio-properties-panel-feelers-input\" ref={ containerRef }>\n <TemplatingEditor\n name={ id }\n onInput={ handleInput }\n contentAttributes={ { 'aria-labelledby': prefixIdLabel(id) } }\n disabled={ disabled }\n onLint={ handleLint }\n value={ localValue }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n />\n </div>\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n// helpers /////////////////\n\nfunction prefixIdLabel(id) {\n return `bio-properties-panel-feelers-${id}-label`;\n}","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 ...restProps\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 { ...restProps }\n autoFocusEntry={ autoFocusEntry }\n component={ component }\n element={ element }\n id={ id }\n items={ sortedItems }\n newItems={ newItems }\n onRemove={ onRemove }\n open={ open }\n />\n )\n }\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 ...restProps\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 <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 { ...restProps }\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 classNames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\nimport Tooltip from './Tooltip';\n\n/**\n * @typedef { { value: string, label: string, disabled: boolean, children: { value: string, label: string, disabled: boolean } } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value = '',\n disabled,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const ref = useShowEntryEvent(id);\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleChangeCallback = ({ target }) => {\n onChange(target.value);\n };\n\n const handleChange = e => {\n handleChangeCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-select\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n {label}\n </Tooltip>\n </label>\n <select\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ localValue }\n disabled={ disabled }\n >\n {options.map((option, idx) => {\n if (option.children) {\n return (\n <optgroup key={ idx } label={ option.label }>\n {option.children.map((child, idx) => (\n <option\n key={ idx }\n value={ child.value }\n disabled={ child.disabled }\n >\n {child.label}\n </option>\n ))}\n </optgroup>\n );\n }\n\n return (\n <option key={ idx } value={ option.value } disabled={ option.disabled }>\n {option.label}\n </option>\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.onFocus\n * @param {Function} props.onBlur\n * @param {Function} props.getOptions\n * @param {boolean} [props.disabled]\n * @param {Function} [props.validate]\n * @param {string|import('preact').Component} props.tooltip\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n onFocus,\n onBlur,\n validate,\n tooltip\n } = props;\n\n const options = getOptions(element);\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n\n const onChange = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n setValue(newValue, newValidationError);\n setLocalError(newValidationError);\n };\n\n const error = globalError || localError;\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 key={ element }\n label={ label }\n value={ value }\n onChange={ onChange }\n onFocus={ onFocus }\n onBlur={ onBlur }\n options={ options }\n disabled={ disabled }\n tooltip={ tooltip }\n element={ element } />\n { 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}","import {\n useMemo,\n useEffect,\n useState\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 value = getValue(element);\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n return (\n <div class=\"bio-properties-panel-simple\">\n <input\n id={ prefixId(id) }\n key={ element }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n aria-label={ localValue || '<empty>' }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ localValue } />\n </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';\n\nimport {\n useEffect,\n useLayoutEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport { isFunction } from 'min-dash';\nimport Tooltip from './Tooltip';\n\nfunction resizeToContents(element) {\n element.style.height = 'auto';\n\n // a 2px pixel offset is required to prevent scrollbar from\n // appearing on OS with a full length scroll bar (Windows/Linux)\n element.style.height = `${ element.scrollHeight + 2 }px`;\n}\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n debounce,\n onInput,\n value = '',\n disabled,\n monospace,\n onFocus,\n onBlur,\n autoResize,\n rows = autoResize ? 1 : 2,\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const ref = useShowEntryEvent(id);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n\n autoResize && resizeToContents(e.target);\n\n setLocalValue(e.target.value);\n };\n\n useLayoutEffect(() => {\n autoResize && resizeToContents(ref.current);\n }, []);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\n </label>\n <textarea\n ref={ ref }\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 autoResize ? 'auto-resize' : '')\n }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n value={ localValue }\n disabled={ disabled }\n data-gramm=\"false\"\n />\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 {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {Function} [props.validate]\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled,\n validate,\n onFocus,\n onBlur,\n autoResize,\n tooltip\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(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 setValue(newValue, newValidationError);\n\n setLocalError(newValidationError);\n };\n\n\n const error = globalError || localError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <TextArea\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n disabled={ disabled }\n autoResize={ autoResize }\n tooltip={ tooltip }\n element={ element } />\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}\n","import Description from './Description';\nimport Tooltip from './Tooltip';\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 useError,\n useShowEntryEvent\n} from '../../hooks';\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n onFocus,\n onBlur,\n value = '',\n tooltip\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value || '');\n\n const ref = useShowEntryEvent(id);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n <Tooltip value={ tooltip } forId={ id } element={ props.element }>\n { label }\n </Tooltip>\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={ onFocus }\n onBlur={ onBlur }\n value={ localValue } />\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.onFocus\n * @param {Function} props.onBlur\n * @param {string|import('preact').Component} props.tooltip\n * @param {Function} props.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n validate,\n onFocus,\n onBlur,\n tooltip\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(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 setValue(newValue, newValidationError);\n\n setLocalError(newValidationError);\n };\n\n\n const error = globalError || localError;\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 id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value }\n tooltip={ tooltip }\n element={ element } />\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 {\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","ErrorsContext","errors","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","TooltipContext","tooltip","getTooltipForId","useTooltipContext","id","useContext","TooltipWrapper","forId","contextDescription","value","children","prefixId","Tooltip","parent","visible","setShow","useState","focusedViaKeyboard","setFocusedViaKeyboard","timeout","wrapperRef","useRef","tooltipRef","showTooltip","event","show","MouseEvent","setTimeout","hideTooltip","hideTooltipViaEscape","e","code","isTooltipHovered","x","y","current","wrapper","inBounds","getBoundingClientRect","useEffect","hideHoveredTooltip","isFocused","document","activeElement","closest","hideFocusedTooltip","relatedTarget","isTooltipChild","el","isHovered","addEventListener","removeEventListener","renderTooltip","getTooltipPosition","stopPropagation","clearTimeout","createPortal","bounds","top","right","bottom","left","refElement","refPosition","matches","useDescriptionContext","useError","useErrors","useEvent","callback","eventContext","didMount","on","off","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","setState","useCallback","newValue","usePrevious","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","scrollContainer","setScrollContainer","domQuery","updateScrollContainer","newScrollContainer","Observer","IntersectionObserver","observer","entries","scrollHeight","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","allErrors","hasErrors","some","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","Description","noop","useBufferedFocus","editor","buffer","setBuffer","undefined","offset","Infinity","CodeEditor","forwardRef","onInput","disabled","tooltipContainer","enableGutters","onLint","onPopupOpen","popupOpen","contentAttributes","hostLanguage","singleLine","inputRef","setEditor","localValue","setLocalValue","handleInput","FeelersEditor","container","onChange","innerHTML","setValue","handleClick","classNames","name","onFeelToggle","variables","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","extensions","lineNumbers","setVariables","FeelIndicator","active","FeelIcon","feel","onClick","feelRequiredLabel","feelOptionalLabel","pointerType","FeelIconSvg","FeelPopupContext","close","source","createDragger","fn","dragPreview","self","startX","startY","onDragStart","clientX","clientY","dataTransfer","setDragImage","emptyCanvas","onDrag","onEnd","preventDefault","delta","call","domify","Popup","className","position","width","height","onClose","onPostActivate","onPostDeactivate","returnFocus","title","focusTrapRef","popupRef","handleKeyPress","handleFocus","activate","style","focusTrap","createFocusTrap","clickOutsideDeactivates","fallbackFocus","returnFocusOnDeactivate","deactivate","body","Title","Body","Footer","draggable","rest","context","startPosition","newPosition","dragPreviewRef","titleRef","onMove","throttle","_","dx","dy","popupParent","getPopupParent","onMoveStart","onMoveEnd","node","FEEL_POPUP_WIDTH","FEEL_POPUP_HEIGHT","FEELPopupRoot","prevElement","popupConfig","setPopupConfig","setSource","sourceElement","setSourceElement","handleOpen","config","_sourceElement","handleClose","feelPopupContext","FeelPopupComponent","editorRef","handleSetReturnFocus","TemplatingEditor","ToggleSwitch","switcherLabel","inline","onFocus","onBlur","handleInputCallback","target","ToggleSwitchEntry","getValue","checked","NumberField","debounce","displayLabel","max","min","step","validity","valid","parseFloat","NumberFieldEntry","validate","globalError","localError","setLocalError","newValidationError","error","FeelTextfield","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","containerRef","feelActive","isString","startsWith","feelOnlyValue","substring","_setFocus","openPopup","popupSource","popuOpen","setFocus","hasFocus","contains","selectionStart","handleFeelToggle","handleLocalInput","handleLint","lint","length","message","handlePopupOpen","popupOptions","calculatePopupPosition","getPopupTitle","copyHandler","clipboardData","setData","getData","pasteHandler","data","input","setSelectionRange","OptionalFeelNumberField","OptionalFeelTextArea","OptionalFeelToggleSwitch","OptionalFeelCheckbox","handleChange","FeelEntry","example","validationError","setValidationError","err","temporaryError","class","FeelNumberEntry","FeelTextAreaEntry","FeelToggleSwitchEntry","FeelCheckboxEntry","FeelTemplatingEntry","classList","popupTitle","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","DEFAULT_TOOLTIP","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","tooltipConfig","tooltipLoaded","createLayout","useUpdateLayoutEffect","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","createTooltipContext","tooltipContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","FeelPopupRoot","group","overrides","defaults","effect","deps","isMounted","useLayoutEffect","DropdownButton","menuItems","dropdownRef","menuRef","onDropdownToggle","onActionClick","action","useGlobalClick","item","index","MenuItem","separator","ignoredElements","listener","capture","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","addTriggered","setAddTriggered","prevItems","elementChanged","shouldHandleEffects","createOrdering","sortItems","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","handleAddClick","hasError","sortBy","i","toLowerCase","Checkbox","handleChangeCallback","CheckboxEntry","TemplatingEntry","Templating","severity","prefixIdLabel","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","Select","options","option","idx","child","SelectEntry","getOptions","Simple","resizeToContents","TextArea","monospace","autoResize","rows","TextAreaEntry","Textfield","TextfieldEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","debounceTime","isNumber","$inject"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBe,SAASA,MAAM,CAACC,KAAK,EAAE;EAEpC,MAAM;IACJC,OAAO;IACPC;GACD,GAAGF,KAAK;EAET,MAAM;IACJG,cAAc;IACdC,mBAAmB;IACnBC,eAAe;IACfC;GACD,GAAGJ,cAAc;EAElB,MAAMK,KAAK,GAAGF,eAAe,CAACJ,OAAO,CAAC;EACtC,MAAMO,IAAI,GAAGF,YAAY,CAACL,OAAO,CAAC;EAClC,MAAMQ,gBAAgB,GAAGL,mBAAmB,IAAIA,mBAAmB,CAACH,OAAO,CAAC;EAE5E,MAAMS,WAAW,GAAGP,cAAc,CAACF,OAAO,CAAC;EAE3C,OAAQU;IAAK,KAAK,EAAC,6BAA6B;IAAA,WAC9CC;MAAK,KAAK,EAAC,kCAAkC;MAAA,UACzCF,WAAW,IAAIE,eAAC,WAAW;QAAC,KAAK,EAAC,IAAI;QAAC,MAAM,EAAC,IAAI;QAAC,OAAO,EAAC;;MACzD,EACND;MAAK,KAAK,EAAC,oCAAoC;MAAA,WAC7CC;QAAK,KAAK,EAAGJ,IAAM;QAAC,KAAK,EAAC,kCAAkC;QAAA,UAAGA;QAAY,EACzED,KAAK,GACLK;QAAK,KAAK,EAAGL,KAAO;QAAC,KAAK,EAAC,mCAAmC;QAAA,UAAGA;QAAa,GAC9E,IAAI;MAEF,EACNK;MAAK,KAAK,EAAC,qCAAqC;MAAA,UAC5CH,gBAAgB,GAChBG;QACE,GAAG,EAAC,UAAU;QACd,KAAK,EAAC,kCAAkC;QACxC,IAAI,EAAGH,gBAAkB;QACzB,KAAK,EAAC,oBAAoB;QAC1B,MAAM,EAAC,QAAQ;QAAA,UACfG,eAAC,gBAAgB;QACf,GACJ;MAEE;IACF;AACR;;MCzDMC,kBAAkB,GAAGC,oBAAa,CAAC;EACvCC,WAAW,EAAE,EAAE;EACfC,mBAAmB,EAAE,MAAM;AAC7B,CAAC;;MCHKC,aAAa,GAAGH,oBAAa,CAAC;EAClCI,MAAM,EAAE;AACV,CAAC;;ACND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAoBMC,YAAY,GAAGL,oBAAa,CAAC;EAAEM,QAAQ,EAAE;AAAK,CAAC;;MC7B/CC,aAAa,GAAGP,oBAAa,CAAC;EAClCQ,MAAM,EAAE,EAAE;EACVC,SAAS,EAAE,MAAM,EAAE;EACnBC,eAAe,EAAE,MAAM,EAAE;EACzBC,eAAe,EAAE,MAAM;AACzB,CAAC;;MCLKC,cAAc,GAAGZ,oBAAa,CAAC;EACnCa,OAAO,EAAE,EAAE;EACXC,eAAe,EAAE,MAAM;AACzB,CAAC;;ACCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiB,CAACC,EAAE,EAAE7B,OAAO,EAAE;EAC7C,MAAM;IACJ2B;GACD,GAAGG,gBAAU,CAACL,cAAc,CAAC;EAE9B,OAAOE,eAAe,CAACE,EAAE,EAAE7B,OAAO,CAAC;AACrC;;ACde,SAAS+B,cAAc,CAAChC,KAAK,EAAE;EAC5C,MAAM;IACJiC,KAAK;IACLhC;GACD,GAAGD,KAAK;EAET,MAAMkC,kBAAkB,GAAGL,iBAAiB,CAACI,KAAK,EAAEhC,OAAO,CAAC;EAE5D,MAAMkC,KAAK,GAAGnC,KAAK,CAACmC,KAAK,IAAID,kBAAkB;EAE/C,IAAI,CAACC,KAAK,EAAE;IACV,OAAOnC,KAAK,CAACoC,QAAQ;;EAGvB,OAAOxB,eAAC,OAAO;IAAA,GAAMZ,KAAK;IAAG,KAAK,EAAGmC,KAAO;IAAC,KAAK,EAAGE,UAAQ,CAACJ,KAAK;IAAM;AAC3E;AAEA,SAASK,OAAO,CAACtC,KAAK,EAAE;EACtB,MAAM;IACJiC,KAAK;IACLE,KAAK;IACLI;GACD,GAAGvC,KAAK;EAET,MAAM,CAAEwC,OAAO,EAAEC,OAAO,CAAE,GAAGC,cAAQ,CAAC,KAAK,CAAC;EAC5C,MAAM,CAAEC,kBAAkB,EAAEC,qBAAqB,CAAE,GAAGF,cAAQ,CAAC,KAAK,CAAC;EAErE,IAAIG,OAAO,GAAG,IAAI;EAElB,MAAMC,UAAU,GAAGC,YAAM,CAAC,IAAI,CAAC;EAC/B,MAAMC,UAAU,GAAGD,YAAM,CAAC,IAAI,CAAC;EAE/B,MAAME,WAAW,GAAG,MAAOC,KAAK,IAAK;IACnC,MAAMC,IAAI,GAAG,MAAMV,OAAO,CAAC,IAAI,CAAC;IAEhC,IAAI,CAACD,OAAO,IAAI,CAACK,OAAO,EAAE;MACxB,IAAIK,KAAK,YAAYE,UAAU,EAAE;QAC/BP,OAAO,GAAGQ,UAAU,CAACF,IAAI,EAAE,GAAG,CAAC;OAChC,MAAM;QACLA,IAAI,EAAE;QACNP,qBAAqB,CAAC,IAAI,CAAC;;;GAGhC;EAED,MAAMU,WAAW,GAAG,MAAM;IACxBb,OAAO,CAAC,KAAK,CAAC;IACdG,qBAAqB,CAAC,KAAK,CAAC;GAC7B;EAED,MAAMW,oBAAoB,GAAIC,CAAC,IAAK;IAClCA,CAAC,CAACC,IAAI,KAAK,QAAQ,IAAIH,WAAW,EAAE;GACrC;EAED,MAAMI,gBAAgB,GAAG,CAAC;IAAEC,CAAC;IAAEC;GAAG,KAAK;IACrC,MAAMjC,OAAO,GAAGqB,UAAU,CAACa,OAAO;IAClC,MAAMC,OAAO,GAAGhB,UAAU,CAACe,OAAO;IAElC,OAAOlC,OAAO,KACZoC,QAAQ,CAACJ,CAAC,EAAEC,CAAC,EAAEE,OAAO,CAACE,qBAAqB,EAAE,CAAC,IAC/CD,QAAQ,CAACJ,CAAC,EAAEC,CAAC,EAAEjC,OAAO,CAACqC,qBAAqB,EAAE,CAAC,CAChD;GACF;EAEDC,eAAS,CAAC,MAAM;IACd,MAAM;MAAEJ;KAAS,GAAGf,UAAU;IAE9B,IAAI,CAACe,OAAO,EAAE;MACZ;;IAGF,MAAMK,kBAAkB,GAAIV,CAAC,IAAK;MAChC,MAAMW,SAAS,GAAGC,QAAQ,CAACC,aAAa,KAAKvB,UAAU,CAACe,OAAO,IAC1CO,QAAQ,CAACC,aAAa,CAACC,OAAO,CAAC,+BAA+B,CAAC;MAEpF,IAAI9B,OAAO,IAAI,CAACkB,gBAAgB,CAAC;QAAEC,CAAC,EAAEH,CAAC,CAACG,CAAC;QAAEC,CAAC,EAAEJ,CAAC,CAACI;OAAG,CAAC,IAAI,EAAEO,SAAS,IAAIxB,kBAAkB,CAAC,EAAE;QAC1FW,WAAW,EAAE;;KAEhB;IAED,MAAMiB,kBAAkB,GAAIf,CAAC,IAAK;MAChC,MAAM;QAAEgB;OAAe,GAAGhB,CAAC;MAC3B,MAAMiB,cAAc,GAAIC,EAAE,IAAK,CAAC,CAACA,EAAE,CAACJ,OAAO,CAAC,+BAA+B,CAAC;MAG5E,IAAI9B,OAAO,IAAI,CAACmC,SAAS,CAAC7B,UAAU,CAACe,OAAO,CAAC,IAAIW,aAAa,IAAI,CAACC,cAAc,CAACD,aAAa,CAAC,EAAE;QAChGlB,WAAW,EAAE;;KAEhB;IAEDc,QAAQ,CAACQ,gBAAgB,CAAC,OAAO,EAAEV,kBAAkB,CAAC;IACtDE,QAAQ,CAACQ,gBAAgB,CAAC,UAAU,EAAEL,kBAAkB,CAAC;IACzDH,QAAQ,CAACQ,gBAAgB,CAAC,WAAW,EAAEV,kBAAkB,CAAC;IAE1D,OAAO,MAAM;MACXE,QAAQ,CAACS,mBAAmB,CAAC,OAAO,EAAEX,kBAAkB,CAAC;MACzDE,QAAQ,CAACS,mBAAmB,CAAC,WAAW,EAAEX,kBAAkB,CAAC;MAC7DE,QAAQ,CAACS,mBAAmB,CAAC,UAAU,EAAEN,kBAAkB,CAAC;KAC7D;GACF,EAAE,CAAEzB,UAAU,CAACe,OAAO,EAAErB,OAAO,EAAEG,kBAAkB,CAAE,CAAC;EAEvD,MAAMmC,aAAa,GAAG,MAAM;IAC1B,OACEnE;MACE,KAAK,EAAC,8BAA8B;MACpC,IAAI,EAAC,SAAS;MACd,EAAE,EAAC,8BAA8B;MACjC,mBAAkBsB,KAAO;MACzB,KAAK,EAAG8C,kBAAkB,CAACjC,UAAU,CAACe,OAAO,CAAG;MAChD,GAAG,EAAGb,UAAY;MAClB,OAAO,EAAIQ,CAAC,IAAIA,CAAC,CAACwB,eAAe,EAAI;MAAA,WAErCpE;QAAK,KAAK,EAAC,sCAAsC;QAAA,UAC9CuB;QACG,EACNvB;QAAK,KAAK,EAAC;QAAuC;MAC9C;GACL;EAEL,OACED;IAAK,KAAK,EAAC,sCAAsC;IAAC,QAAQ,EAAC,GAAG;IAC5D,GAAG,EAAGmC,UAAY;IAClB,YAAY,EAAGG,WAAa;IAC5B,YAAY,EAAG,MAAK;MAClBgC,YAAY,CAACpC,OAAO,CAAC;MACrBA,OAAO,GAAG,IAAI;KACb;IACH,OAAO,EAAGI,WAAa;IACvB,SAAS,EAAGM,oBAAsB;IAAA,WAEjCvD,KAAK,CAACoC,QAAQ,EACdI,OAAO,GACLD,MAAM,GACL2C,mBAAY,CAACJ,aAAa,EAAE,EAAEvC,MAAM,CAACsB,OAAO,CAAC,GAC3CiB,aAAa,EAAE,GACf,IAAI;IAEN;AAEV;;AAGA;AACA,SAASf,QAAQ,CAACJ,CAAC,EAAEC,CAAC,EAAEuB,MAAM,EAAE;EAC9B,MAAM;IAAEC,GAAG;IAAEC,KAAK;IAAEC,MAAM;IAAEC;GAAM,GAAGJ,MAAM;EAC3C,OAAOxB,CAAC,IAAI4B,IAAI,IAAI5B,CAAC,IAAI0B,KAAK,IAAIzB,CAAC,IAAIwB,GAAG,IAAIxB,CAAC,IAAI0B,MAAM;AAC3D;AAEA,SAASP,kBAAkB,CAACS,UAAU,EAAE;EACtC,MAAMC,WAAW,GAAGD,UAAU,CAACxB,qBAAqB,EAAE;EAEtD,MAAMqB,KAAK,GAAI,eAAcI,WAAW,CAAC9B,CAAE,KAAI;EAC/C,MAAMyB,GAAG,GAAI,GAAEK,WAAW,CAACL,GAAG,GAAG,EAAG,IAAG;EAEvC,OAAQ,UAASC,KAAM,UAASD,GAAI,GAAE;AACxC;AAEA,SAAST,SAAS,CAAC1E,OAAO,EAAE;EAC1B,OAAOA,OAAO,CAACyF,OAAO,CAAC,QAAQ,CAAC;AAClC;AAEA,SAASrD,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS6D,qBAAqB,CAAC7D,EAAE,EAAE7B,OAAO,EAAE;EACjD,MAAM;IACJe;GACD,GAAGe,gBAAU,CAAClB,kBAAkB,CAAC;EAElC,OAAOG,mBAAmB,CAACc,EAAE,EAAE7B,OAAO,CAAC;AACzC;;ACzBO,SAAS2F,QAAQ,CAAC9D,EAAE,EAAE;EAC3B,MAAM;IAAEZ;GAAQ,GAAGa,gBAAU,CAACd,aAAa,CAAC;EAE5C,OAAOC,MAAM,CAAEY,EAAE,CAAE;AACrB;AAEO,SAAS+D,SAAS,GAAG;EAC1B,MAAM;IAAE3E;GAAQ,GAAGa,gBAAU,CAACd,aAAa,CAAC;EAE5C,OAAOC,MAAM;AACf;;ACTA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4E,QAAQ,CAAC5C,KAAK,EAAE6C,QAAQ,EAAE3E,QAAQ,EAAE;EAClD,MAAM4E,YAAY,GAAGjE,gBAAU,CAACZ,YAAY,CAAC;EAE7C,IAAI,CAACC,QAAQ,EAAE;IACb,CAAC;MAAEA;KAAU,GAAG4E,YAAY;;EAG9B,MAAMC,QAAQ,GAAGlD,YAAM,CAAC,KAAK,CAAC;;;EAG9B,IAAI3B,QAAQ,IAAI,CAAC6E,QAAQ,CAACpC,OAAO,EAAE;IACjCzC,QAAQ,CAAC8E,EAAE,CAAChD,KAAK,EAAE6C,QAAQ,CAAC;;;;EAI9B9B,eAAS,CAAC,MAAM;IACd,IAAI7C,QAAQ,IAAI6E,QAAQ,CAACpC,OAAO,EAAE;MAChCzC,QAAQ,CAAC8E,EAAE,CAAChD,KAAK,EAAE6C,QAAQ,CAAC;;IAG9BE,QAAQ,CAACpC,OAAO,GAAG,IAAI;IAEvB,OAAO,MAAM;MACX,IAAIzC,QAAQ,EAAE;QACZA,QAAQ,CAAC+E,GAAG,CAACjD,KAAK,EAAE6C,QAAQ,CAAC;;KAEhC;GACF,EAAE,CAAEA,QAAQ,EAAE7C,KAAK,EAAE9B,QAAQ,CAAE,CAAC;AACnC;;ACrCA,MAAMgF,UAAU,GAAG,CAAC;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAa,CAACC,YAAY,GAAG,EAAE,EAAE;EAC/C,MAAMC,GAAG,GAAGC,aAAO,CAAC,MAAM,IAAIC,GAAG,EAAE,EAAEH,YAAY,CAAC;EAElD,MAAMI,MAAM,GAAGhC,EAAE,IAAI;IACnB,IAAIiC,GAAG,GAAGJ,GAAG,CAACK,GAAG,CAAClC,EAAE,CAAC;IAErB,IAAI,CAACiC,GAAG,EAAE;MACRA,GAAG,GAAGE,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,EAAE,CAACC,KAAK,CAAC,CAACZ,UAAU,CAAC;MACjDG,GAAG,CAACU,GAAG,CAACvC,EAAE,EAAEiC,GAAG,CAAC;;IAGlB,OAAOA,GAAG;GACX;EAED,OAAOD,MAAM;AACf;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,cAAc,CAACC,IAAI,EAAEC,YAAY,EAAE;EACjD,MAAM;IACJ5F,eAAe;IACfC;GACD,GAAGM,gBAAU,CAACV,aAAa,CAAC;EAE7B,MAAMgG,YAAY,GAAG7F,eAAe,CAAC2F,IAAI,EAAEC,YAAY,CAAC;EAExD,MAAME,QAAQ,GAAGC,iBAAW,CAAGC,QAAQ,IAAK;IAC1C/F,eAAe,CAAC0F,IAAI,EAAEK,QAAQ,CAAC;GAChC,EAAE,CAAE/F,eAAe,CAAE,CAAC;EAGvB,OAAO,CAAE4F,YAAY,EAAEC,QAAQ,CAAE;AACnC;;ACjCA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASG,WAAW,CAACtF,KAAK,EAAE;EACjC,MAAMuF,GAAG,GAAG3E,YAAM,EAAE;EACpBkB,eAAS,CAAC,MAAM;IACdyD,GAAG,CAAC7D,OAAO,GAAG1B,KAAK;GACpB,CAAC;EACF,OAAOuF,GAAG,CAAC7D,OAAO;AACpB;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS8D,iBAAiB,CAAC7F,EAAE,EAAE;EACpC,MAAM;IAAE8F;GAAQ,GAAG7F,gBAAU,CAAC8F,aAAsB,CAAC;EAErD,MAAMH,GAAG,GAAG3E,YAAM,EAAE;EAEpB,MAAM+E,KAAK,GAAG/E,YAAM,CAAC,KAAK,CAAC;EAE3B,MAAMgF,WAAW,GAAGR,iBAAW,CAAErE,KAAK,IAAK;IACzC,IAAIA,KAAK,CAACpB,EAAE,KAAKA,EAAE,EAAE;MACnB8F,MAAM,EAAE;MAER,IAAI,CAACE,KAAK,CAACjE,OAAO,EAAE;QAClBiE,KAAK,CAACjE,OAAO,GAAG,IAAI;;;GAGzB,EAAE,CAAE/B,EAAE,CAAE,CAAC;EAEVmC,eAAS,CAAC,MAAM;IACd,IAAI6D,KAAK,CAACjE,OAAO,IAAI6D,GAAG,CAAC7D,OAAO,EAAE;MAChC,IAAImE,kBAAU,CAACN,GAAG,CAAC7D,OAAO,CAACiE,KAAK,CAAC,EAAE;QACjCJ,GAAG,CAAC7D,OAAO,CAACiE,KAAK,EAAE;;MAGrB,IAAIE,kBAAU,CAACN,GAAG,CAAC7D,OAAO,CAACoE,MAAM,CAAC,EAAE;QAClCP,GAAG,CAAC7D,OAAO,CAACoE,MAAM,EAAE;;MAGtBH,KAAK,CAACjE,OAAO,GAAG,KAAK;;GAExB,CAAC;EAEFiC,QAAQ,CAAC,2BAA2B,EAAEiC,WAAW,CAAC;EAElD,OAAOL,GAAG;AACZ;;ACzCA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,6BAA6B,CAACR,GAAG,EAAES,uBAAuB,EAAEC,SAAS,EAAE;EAErF,MAAM,CAAEC,eAAe,EAAEC,kBAAkB,CAAE,GAAG5F,cAAQ,CAAC6F,YAAQ,CAACJ,uBAAuB,CAAC,CAAC;EAE3F,MAAMK,qBAAqB,GAAGjB,iBAAW,CAAC,MAAM;IAC9C,MAAMkB,kBAAkB,GAAGF,YAAQ,CAACJ,uBAAuB,CAAC;IAE5D,IAAIM,kBAAkB,KAAKJ,eAAe,EAAE;MAC1CC,kBAAkB,CAACG,kBAAkB,CAAC;;GAEzC,EAAE,CAAEN,uBAAuB,EAAEE,eAAe,CAAE,CAAC;EAEhDpE,eAAS,CAAC,MAAM;IACduE,qBAAqB,EAAE;GACxB,EAAE,CAAEA,qBAAqB,CAAE,CAAC;EAE7B1C,QAAQ,CAAC,wBAAwB,EAAE0C,qBAAqB,CAAC;EACzD1C,QAAQ,CAAC,wBAAwB,EAAE0C,qBAAqB,CAAC;EAEzDvE,eAAS,CAAC,MAAM;IACd,MAAMyE,QAAQ,GAAGC,oBAAoB;;;IAGrC,IAAI,CAACD,QAAQ,EAAE;MACb;;;;IAIF,IAAI,CAAChB,GAAG,CAAC7D,OAAO,IAAI,CAACwE,eAAe,EAAE;MACpC;;IAGF,MAAMO,QAAQ,GAAG,IAAIF,QAAQ,CAAEG,OAAO,IAAK;;MAGzC,IAAIR,eAAe,CAACS,YAAY,KAAK,CAAC,EAAE;QACtC;;MAGFD,OAAO,CAACE,OAAO,CAACC,KAAK,IAAI;QACvB,IAAIA,KAAK,CAACC,iBAAiB,GAAG,CAAC,EAAE;UAC/Bb,SAAS,CAAC,IAAI,CAAC;SAChB,MACI,IAAIY,KAAK,CAACC,iBAAiB,KAAK,CAAC,EAAE;UACtCb,SAAS,CAAC,KAAK,CAAC;;OAEnB,CAAC;KACH,EACD;MACEc,IAAI,EAAEb,eAAe;MACrBc,UAAU,EAAE,qBAAqB;;MACjCC,SAAS,EAAE,CAAE,CAAC;KACf,CAAC;IACFR,QAAQ,CAACS,OAAO,CAAC3B,GAAG,CAAC7D,OAAO,CAAC;;;IAG7B,OAAO,MAAM;MACX+E,QAAQ,CAACU,SAAS,CAAC5B,GAAG,CAAC7D,OAAO,CAAC;KAChC;GAEF,EAAE,CAAE6D,GAAG,CAAC7D,OAAO,EAAEwE,eAAe,EAAED,SAAS,CAAE,CAAC;AACjD;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASmB,iBAAiB,CAACxD,QAAQ,EAAE;EAC1C,MAAMyD,WAAW,GAAGzG,YAAM,CAACgD,QAAQ,CAAC;EACpCyD,WAAW,CAAC3F,OAAO,GAAGkC,QAAQ;EAE9B,OAAOwB,iBAAW,CAChB,CAAC,GAAGkC,IAAI,KAAKD,WAAW,CAAC3F,OAAO,CAAC,GAAG4F,IAAI,CAAC,EACzC,EAAE,CACH;AACH;;ACUe,SAASC,KAAK,CAAC1J,KAAK,EAAE;EACnC,MAAM;IACJC,OAAO;IACP4I,OAAO,GAAG,EAAE;IACZ/G,EAAE;IACFvB,KAAK;IACLoJ,UAAU,GAAG;GACd,GAAG3J,KAAK;EAET,MAAM4J,QAAQ,GAAG7G,YAAM,CAAC,IAAI,CAAC;EAE7B,MAAM,CAAE8G,IAAI,EAAEC,OAAO,CAAE,GAAG5C,cAAc,CACtC,CAAE,QAAQ,EAAEpF,EAAE,EAAE,MAAM,CAAE,EACxB6H,UAAU,CACX;EAED,MAAM/B,MAAM,GAAGL,iBAAW,CAAC,MAAMuC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAEA,OAAO,CAAE,CAAC;EAE5D,MAAMC,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAI,CAAC;EAEvC,MAAM,CAAEG,MAAM,EAAEC,SAAS,CAAE,GAAGvH,cAAQ,CAAC,KAAK,CAAC;EAE7C,MAAM,CAAEwH,MAAM,EAAE9B,SAAS,CAAE,GAAG1F,cAAQ,CAAC,KAAK,CAAC;;;EAG7CuB,eAAS,CAAC,MAAM;IACd,MAAMkG,iBAAiB,GAAGtB,OAAO,CAACuB,IAAI,CAACpB,KAAK,IAAI;MAC9C,MAAM;QACJlH,EAAE;QACFuI;OACD,GAAGrB,KAAK;MAET,MAAMsB,SAAS,GAAG/B,YAAQ,CAAE,mBAAkBzG,EAAG,IAAG,CAAC;MAErD,IAAI,CAACkG,kBAAU,CAACqC,QAAQ,CAAC,IAAI,CAACC,SAAS,EAAE;QACvC,OAAO,KAAK;;MAGd,MAAMC,SAAS,GAAGhC,YAAQ,CAAC,6BAA6B,EAAE+B,SAAS,CAAC;MAEpE,OAAOD,QAAQ,CAACE,SAAS,CAAC;KAC3B,CAAC;IAEFN,SAAS,CAACE,iBAAiB,CAAC;GAC7B,EAAE,CAAEtB,OAAO,CAAE,CAAC;;;EAGf,MAAM2B,SAAS,GAAG3E,SAAS,EAAE;EAC7B,MAAM4E,SAAS,GAAG5B,OAAO,CAAC6B,IAAI,CAAC1B,KAAK,IAAIwB,SAAS,CAACxB,KAAK,CAAClH,EAAE,CAAC,CAAC;;;EAG5DoG,6BAA6B,CAAC0B,QAAQ,EAAE,2CAA2C,EAAExB,SAAS,CAAC;EAE/F,MAAMuC,sBAAsB,GAAG;IAC7B,GAAG5I,gBAAU,CAAC8F,aAAsB,CAAC;IACrCD;GACD;EAED,OAAOjH;IAAK,KAAK,EAAC,4BAA4B;IAAC,iBAAgB,QAAQ,GAAGmB,EAAI;IAAC,GAAG,EAAG8H,QAAU;IAAA,WAC7FjJ;MAAK,KAAK,EAAGiK,8BAAU,CACrB,mCAAmC,EACnCZ,MAAM,GAAG,EAAE,GAAG,OAAO,EACrBH,IAAI,GAAG,MAAM,GAAG,EAAE,EACjBK,MAAM,IAAIL,IAAI,GAAI,QAAQ,GAAG,EAAE,CAC/B;MAAC,OAAO,EAAGE,UAAY;MAAA,WACxBnJ;QACE,KAAK,EAAGZ,KAAK,CAAC2B,OAAO,GAAG,IAAI,GAAGpB,KAAO;QACtC,cAAaA,KAAO;QACpB,KAAK,EAAC,yCAAyC;QAAA,UAE/CK,eAAC0B,cAAO;UAAC,KAAK,EAAGtC,KAAK,CAAC2B,OAAS;UAAC,KAAK,EAAG,QAAQ,GAAGG,EAAI;UAAC,OAAO,EAAG7B,OAAS;UAAC,MAAM,EAAG2J,QAAU;UAAA,UAC5FrJ;;QAEA,EACNI;QAAK,KAAK,EAAC,2CAA2C;QAAA,WAElDC,eAAC,UAAU;UACT,MAAM,EAAGoJ,MAAQ;UACjB,SAAS,EAAGS;UACZ,EAEJ7J;UACE,KAAK,EAAC,gBAAgB;UACtB,KAAK,EAAC,qEAAqE;UAAA,UAE3EA,eAAC,SAAS;YAAC,KAAK,EAAGiJ,IAAI,GAAG,iCAAiC,GAAG;;UACvD;QACL;MACF,EACNjJ;MAAK,KAAK,EAAGgK,8BAAU,CACrB,oCAAoC,EACpCf,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;MAAA,UACDjJ,eAACiH,aAAsB,CAAC,QAAQ;QAAC,KAAK,EAAG8C,sBAAwB;QAAA,UAE7D9B,OAAO,CAACtC,GAAG,CAACyC,KAAK,IAAI;UACnB,MAAM;YACJ6B,SAAS,EAAEC,SAAS;YACpBhJ;WACD,GAAGkH,KAAK;UAET,OACE+B,qBAAC,SAAS;YAAA,GACH/B,KAAK;YACV,OAAO,EAAG/I,OAAS;YACnB,GAAG,EAAG6B;YAAO;SAElB;;MAGD;IACF;AACR;AAEA,SAASkJ,UAAU,CAAChL,KAAK,EAAE;EACzB,MAAM;IACJgK,MAAM;IACNS;GACD,GAAGzK,KAAK;EAET,IAAIyK,SAAS,EAAE;IACb,OACE7J;MAAK,KAAK,EAAC,2BAA2B;MAAC,KAAK,EAAC;MAAiE;;EAIlH,IAAIoJ,MAAM,EAAE;IACV,OACEpJ;MAAK,KAAK,EAAC,uBAAuB;MAAC,KAAK,EAAC;MAAiC;;EAG9E,OAAO,IAAI;AACb;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASqK,WAAW,CAACjL,KAAK,EAAE;EACzC,MAAM;IACJkL,IAAI;IACJC,IAAI,EAAEC;GACP,GAAGpL,KAAK;EAET,OACEY;IAAK,KAAK,EAAC,2BAA2B;IAAA,UACpCD;MAAS,KAAK,EAAC,kCAAkC;MAAA,WAC7CyK,IAAI,IAAIxK,eAAC,IAAI;QAAC,KAAK,EAAC;QAA0C,EAChEA;QAAG,KAAK,EAAC,uCAAuC;QAAA,UAAGsK;QAAU;;IAE3D;AAEV;;ACZe,SAASG,WAAW,CAACrL,KAAK,EAAE;EACzC,MAAM;IACJC,OAAO;IACPgC,KAAK;IACLE;GACD,GAAGnC,KAAK;EAET,MAAMkC,kBAAkB,GAAGyD,qBAAqB,CAAC1D,KAAK,EAAEhC,OAAO,CAAC;EAEhE,MAAMc,WAAW,GAAGoB,KAAK,IAAID,kBAAkB;EAE/C,IAAInB,WAAW,EAAE;IACf,OACEH;MAAK,KAAK,EAAC,kCAAkC;MAAA,UACzCG;MACE;;AAGZ;;ACnBA,MAAMuK,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACA;AACA,MAAMC,kBAAgB,GAAG,UAASC,MAAM,EAAE9D,GAAG,EAAE;EAE7C,MAAM,CAAE+D,MAAM,EAAEC,SAAS,CAAE,GAAGhJ,cAAQ,CAACiJ,SAAS,CAAC;EAEjDjE,GAAG,CAAC7D,OAAO,GAAG2C,aAAO,CAAC,OAAO;IAC3BsB,KAAK,EAAG8D,MAAM,IAAK;MACjB,IAAIJ,MAAM,EAAE;QACVA,MAAM,CAAC1D,KAAK,CAAC8D,MAAM,CAAC;OACrB,MAAM;QACL,IAAI,OAAOA,MAAM,KAAK,WAAW,EAAE;UACjCA,MAAM,GAAGC,QAAQ;;QAEnBH,SAAS,CAACE,MAAM,CAAC;;;GAGtB,CAAC,EAAE,CAAEJ,MAAM,CAAE,CAAC;EAEfvH,eAAS,CAAC,MAAM;IACd,IAAI,OAAOwH,MAAM,KAAK,WAAW,IAAID,MAAM,EAAE;MAC3CA,MAAM,CAAC1D,KAAK,CAAC2D,MAAM,CAAC;MACpBC,SAAS,CAAC,KAAK,CAAC;;GAEnB,EAAE,CAAEF,MAAM,EAAEC,MAAM,CAAE,CAAC;AACxB,CAAC;AAED,MAAMK,YAAU,GAAGC,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EAE5C,MAAM;IACJsE,OAAO;IACPC,QAAQ;IACRC,gBAAgB;IAChBC,aAAa;IACbhK,KAAK;IACLiK,MAAM,GAAGd,MAAI;IACbe,WAAW,GAAGf,MAAI;IAClBgB,SAAS;IACTC,iBAAiB,GAAG,EAAE;IACtBC,YAAY,GAAG,IAAI;IACnBC,UAAU,GAAG;GACd,GAAGzM,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;EACzB,MAAM,CAAEyI,MAAM,EAAEmB,SAAS,CAAE,GAAGjK,cAAQ,EAAE;EACxC,MAAM,CAAEkK,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,IAAI,EAAE,CAAC;EAE3DoJ,kBAAgB,CAACC,MAAM,EAAE9D,GAAG,CAAC;EAE7B,MAAMoF,WAAW,GAAGvD,iBAAiB,CAAC/B,QAAQ,IAAI;IAChDwE,OAAO,CAACxE,QAAQ,CAAC;IACjBqF,aAAa,CAACrF,QAAQ,CAAC;GACxB,CAAC;EAEFvD,eAAS,CAAC,MAAM;IAEd,IAAIuH,MAAM;IAEVA,MAAM,GAAG,IAAIuB,qBAAa,CAAC;MACzBC,SAAS,EAAEN,QAAQ,CAAC7I,OAAO;MAC3BoJ,QAAQ,EAAEH,WAAW;MACrB3K,KAAK,EAAEyK,UAAU;MACjBR,MAAM;MACNG,iBAAiB;MACjBL,gBAAgB;MAChBC,aAAa;MACbK,YAAY;MACZC;KACD,CAAC;IAEFE,SAAS,CACPnB,MAAM,CACP;IAED,OAAO,MAAM;MACXY,MAAM,CAAC,EAAE,CAAC;MACVM,QAAQ,CAAC7I,OAAO,CAACqJ,SAAS,GAAG,EAAE;MAC/BP,SAAS,CAAC,IAAI,CAAC;KAChB;GACF,EAAE,EAAE,CAAC;EAEN1I,eAAS,CAAC,MAAM;IACd,IAAI,CAACuH,MAAM,EAAE;MACX;;IAGF,IAAIrJ,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFpB,MAAM,CAAC2B,QAAQ,CAAChL,KAAK,CAAC;IACtB0K,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,MAAMiL,WAAW,GAAG,MAAM;IACxB1F,GAAG,CAAC7D,OAAO,CAACiE,KAAK,EAAE;GACpB;EAED,OAAOnH;IAAK,KAAK,EAAG0M,8BAAU,CAC5B,+CAA+C,EAC/Cf,SAAS,GAAG,WAAW,GAAG,IAAI,CAC7B;IAAA,WACD1L;MAAK,KAAK,EAAC,6DAA6D;MAAA;MAAuB,EAC/FA;MACE,IAAI,EAAGZ,KAAK,CAACsN,IAAM;MACnB,KAAK,EAAGD,8BAAU,CAAC,gEAAgE,EAAET,UAAU,GAAG,QAAQ,GAAG,IAAI,EAAEX,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAG;MAClJ,GAAG,EAAGS,QAAU;MAChB,OAAO,EAAGU;MACL,EAEPxM;MACE,KAAK,EAAC,oBAAoB;MAC1B,KAAK,EAAC,sCAAsC;MAC5C,OAAO,EAAG,MAAMyL,WAAW,CAAC,SAAS,CAAG;MAAA,UAACzL,eAAC,gBAAgB;MAAY;IACpE;AACR,CAAC,CAAC;;ACpHF,MAAM0K,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,UAASC,MAAM,EAAE9D,GAAG,EAAE;EAE7C,MAAM,CAAE+D,MAAM,EAAEC,SAAS,CAAE,GAAGhJ,cAAQ,CAACiJ,SAAS,CAAC;EAEjDjE,GAAG,CAAC7D,OAAO,GAAG2C,aAAO,CAAC,OAAO;IAC3BsB,KAAK,EAAG8D,MAAM,IAAK;MACjB,IAAIJ,MAAM,EAAE;QACVA,MAAM,CAAC1D,KAAK,CAAC8D,MAAM,CAAC;OACrB,MAAM;QACL,IAAI,OAAOA,MAAM,KAAK,WAAW,EAAE;UACjCA,MAAM,GAAGC,QAAQ;;QAEnBH,SAAS,CAACE,MAAM,CAAC;;;GAGtB,CAAC,EAAE,CAAEJ,MAAM,CAAE,CAAC;EAEfvH,eAAS,CAAC,MAAM;IACd,IAAI,OAAOwH,MAAM,KAAK,WAAW,IAAID,MAAM,EAAE;MAC3CA,MAAM,CAAC1D,KAAK,CAAC2D,MAAM,CAAC;MACpBC,SAAS,CAAC,KAAK,CAAC;;GAEnB,EAAE,CAAEF,MAAM,EAAEC,MAAM,CAAE,CAAC;AACxB,CAAC;AAED,MAAMK,UAAU,GAAGC,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EAE5C,MAAM;IACJyE,aAAa;IACbhK,KAAK;IACL6J,OAAO;IACPuB,YAAY,GAAGjC,MAAI;IACnBc,MAAM,GAAGd,MAAI;IACbe,WAAW,GAAGf,MAAI;IAClBgB,SAAS;IACTL,QAAQ;IACRC,gBAAgB;IAChBsB;GACD,GAAGxN,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;EACzB,MAAM,CAAEyI,MAAM,EAAEmB,SAAS,CAAE,GAAGjK,cAAQ,EAAE;EACxC,MAAM,CAAEkK,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,IAAI,EAAE,CAAC;EAE3DoJ,gBAAgB,CAACC,MAAM,EAAE9D,GAAG,CAAC;EAE7B,MAAMoF,WAAW,GAAGvD,iBAAiB,CAAC/B,QAAQ,IAAI;IAChDwE,OAAO,CAACxE,QAAQ,CAAC;IACjBqF,aAAa,CAACrF,QAAQ,CAAC;GACxB,CAAC;EAEFvD,eAAS,CAAC,MAAM;IAEd,IAAIuH,MAAM;;;AAGd;AACA;AACA;AACA;IACI,MAAMiC,SAAS,GAAGjK,CAAC,IAAI;MACrB,IAAIA,CAAC,CAACmD,GAAG,KAAK,WAAW,IAAI,CAAC6E,MAAM,EAAE;QACpC;;MAGF,MAAMkC,SAAS,GAAGlC,MAAM,CAACmC,YAAY,EAAE;MACvC,MAAMC,KAAK,GAAGF,SAAS,CAACG,MAAM,CAACH,SAAS,CAACI,SAAS,CAAC;MAEnD,IAAIF,KAAK,CAACG,IAAI,KAAK,CAAC,IAAIH,KAAK,CAACI,EAAE,KAAK,CAAC,EAAE;QACtCT,YAAY,EAAE;;KAEjB;IAED/B,MAAM,GAAG,IAAIyC,8BAAU,CAAC;MACtBjB,SAAS,EAAEN,QAAQ,CAAC7I,OAAO;MAC3BoJ,QAAQ,EAAEH,WAAW;MACrBW,SAAS,EAAEA,SAAS;MACpBrB,MAAM,EAAEA,MAAM;MACdF,gBAAgB,EAAEA,gBAAgB;MAClC/J,KAAK,EAAEyK,UAAU;MACjBY,SAAS,EAAEA,SAAS;MACpBU,UAAU,EAAE,CACV,IAAG/B,aAAa,GAAG,CAAEgC,gBAAW,EAAE,CAAE,GAAG,EAAE;KAE5C,CAAC;IAEFxB,SAAS,CACPnB,MAAM,CACP;IAED,OAAO,MAAM;MACXY,MAAM,CAAC,EAAE,CAAC;MACVM,QAAQ,CAAC7I,OAAO,CAACqJ,SAAS,GAAG,EAAE;MAC/BP,SAAS,CAAC,IAAI,CAAC;KAChB;GACF,EAAE,EAAE,CAAC;EAEN1I,eAAS,CAAC,MAAM;IACd,IAAI,CAACuH,MAAM,EAAE;MACX;;IAGF,IAAIrJ,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFpB,MAAM,CAAC2B,QAAQ,CAAChL,KAAK,CAAC;IACtB0K,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb8B,eAAS,CAAC,MAAM;IACd,IAAI,CAACuH,MAAM,EAAE;MACX;;IAGFA,MAAM,CAAC4C,YAAY,CAACZ,SAAS,CAAC;GAC/B,EAAE,CAAEA,SAAS,CAAE,CAAC;EAEjB,MAAMJ,WAAW,GAAG,MAAM;IACxB1F,GAAG,CAAC7D,OAAO,CAACiE,KAAK,EAAE;GACpB;EAED,OAAOnH;IAAK,KAAK,EAAG0M,8BAAU,CAC5B,4CAA4C,EAC5CpB,QAAQ,GAAG,UAAU,GAAG,IAAI,EAC5BK,SAAS,GAAG,WAAW,GAAG,IAAI,CAC/B;IAAA,WACC1L;MAAK,KAAK,EAAC,0DAA0D;MAAA;MAAuB,EAC5FA;MACE,IAAI,EAAGZ,KAAK,CAACsN,IAAM;MACnB,KAAK,EAAGD,8BAAU,CAAC,4BAA4B,EAAET,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAG;MAChF,GAAG,EAAGF,QAAU;MAChB,OAAO,EAAGU;MACL,EACPxM;MACE,KAAK,EAAC,oBAAoB;MAC1B,KAAK,EAAC,sCAAsC;MAC5C,OAAO,EAAG,MAAMyL,WAAW,EAAI;MAAA,UAACzL,eAAC,gBAAgB;MAAY;IAC3D;AACR,CAAC,CAAC;;AC7JK,SAASyN,aAAa,CAACrO,KAAK,EAAE;EACnC,MAAM;IACJsO;GACD,GAAGtO,KAAK;EAET,IAAI,CAACsO,MAAM,EAAE;IACX,OAAO,IAAI;;EAGb,OAAO1N;IAAM,KAAK,EAAC,qCAAqC;IAAA;IAEjD;AACT;;ACTA,MAAM0K,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACA;AACA;AACe,SAASiD,QAAQ,CAACvO,KAAK,EAAE;EAEtC,MAAM;IACJwO,IAAI,GAAG,KAAK;IACZF,MAAM;IACNrC,QAAQ,GAAG,KAAK;IAChBwC,OAAO,GAAGnD;GACX,GAAGtL,KAAK;EAET,MAAM0O,iBAAiB,GAAG,8BAA8B;EACxD,MAAMC,iBAAiB,GAAI,YAAWL,MAAM,GAAG,QAAQ,GAAG,OAAQ,qCAAoC;EAEtG,MAAMlB,WAAW,GAAG5J,CAAC,IAAI;IACvBiL,OAAO,CAACjL,CAAC,CAAC;;;IAGV,IAAI,CAACA,CAAC,CAACoL,WAAW,EAAE;MAClBpL,CAAC,CAACwB,eAAe,EAAE;;GAEtB;EAED,OACEpE;IACE,KAAK,EAAGyM,8BAAU,CAAC,gCAAgC,EACjDiB,MAAM,GAAG,QAAQ,GAAG,IAAI,EACxBE,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,CAAG;IAClD,OAAO,EAAGpB,WAAa;IACvB,QAAQ,EAAGoB,IAAI,KAAK,UAAU,IAAIvC,QAAU;IAC5C,KAAK,EACHuC,IAAI,KAAK,UAAU,GAAGE,iBAAiB,GAAGC,iBAC3C;IAAA,UAED/N,eAACiO,UAAW;IACL;AAEb;;ACzCA,MAAMC,gBAAgB,GAAGhO,oBAAa,CAAC;EACrC+I,IAAI,EAAE,MAAM,EAAE;EACdkF,KAAK,EAAE,MAAM,EAAE;EACfC,MAAM,EAAE;AACV,CAAC,CAAC;;ACNF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAa,CAACC,EAAE,EAAEC,WAAW,EAAE;EAE7C,IAAIC,IAAI;EAER,IAAIC,MAAM,EAAEC,MAAM;;;EAGlB,SAASC,WAAW,CAACrM,KAAK,EAAE;IAE1BkM,IAAI,GAAG,IAAI;IAEXC,MAAM,GAAGnM,KAAK,CAACsM,OAAO;IACtBF,MAAM,GAAGpM,KAAK,CAACuM,OAAO;;;IAGtB,IAAIvM,KAAK,CAACwM,YAAY,EAAE;MACtBxM,KAAK,CAACwM,YAAY,CAACC,YAAY,CAACR,WAAW,IAAIS,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;;;;;;IAMrExL,QAAQ,CAACQ,gBAAgB,CAAC,UAAU,EAAEiL,MAAM,CAAC;IAC7CzL,QAAQ,CAACQ,gBAAgB,CAAC,SAAS,EAAEkL,KAAK,CAAC;IAC3C1L,QAAQ,CAACQ,gBAAgB,CAAC,MAAM,EAAEmL,cAAc,CAAC;;EAGnD,SAASF,MAAM,CAAC3M,KAAK,EAAE;IACrB,MAAM8M,KAAK,GAAG;MACZrM,CAAC,EAAET,KAAK,CAACsM,OAAO,GAAGH,MAAM;MACzBzL,CAAC,EAAEV,KAAK,CAACuM,OAAO,GAAGH;KACpB;;;IAGD,OAAOJ,EAAE,CAACe,IAAI,CAACb,IAAI,EAAElM,KAAK,EAAE8M,KAAK,CAAC;;EAGpC,SAASF,KAAK,GAAG;IACf1L,QAAQ,CAACS,mBAAmB,CAAC,UAAU,EAAEgL,MAAM,CAAC;IAChDzL,QAAQ,CAACS,mBAAmB,CAAC,SAAS,EAAEiL,KAAK,CAAC;IAC9C1L,QAAQ,CAACS,mBAAmB,CAAC,MAAM,EAAEkL,cAAc,CAAC;;EAGtD,OAAOR,WAAW;AACpB;AAEA,SAASQ,cAAc,CAAC7M,KAAK,EAAE;EAC7BA,KAAK,CAAC6M,cAAc,EAAE;EACtB7M,KAAK,CAAC8B,eAAe,EAAE;AACzB;AAEA,SAAS4K,WAAW,GAAG;EACrB,OAAOM,aAAM,CAAC,iCAAiC,CAAC;AAClD;;ACvDA,MAAM5E,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS6E,KAAK,CAACnQ,KAAK,EAAE;EAE3B,MAAM;IACJgN,SAAS;IACToD,SAAS;IACTC,QAAQ;IACRC,KAAK;IACLC,MAAM;IACNC,OAAO;IACPC,cAAc,GAAGnF,MAAI;IACrBoF,gBAAgB,GAAGpF,MAAI;IACvBqF,WAAW,GAAG,IAAI;IAClBC;GACD,GAAG5Q,KAAK;EAET,MAAM6Q,YAAY,GAAG9N,YAAM,CAAC,IAAI,CAAC;EACjC,MAAM+N,QAAQ,GAAG/N,YAAM,CAAC,IAAI,CAAC;EAE7B,MAAMgO,cAAc,GAAG7N,KAAK,IAAI;IAC9B,IAAIA,KAAK,CAACyD,GAAG,KAAK,QAAQ,EAAE;MAC1B6J,OAAO,EAAE;;GAEZ;;;EAGD,MAAMQ,WAAW,GAAG,MAAM;IACxB,IAAIH,YAAY,CAAChN,OAAO,EAAE;MACxBgN,YAAY,CAAChN,OAAO,CAACoN,QAAQ,EAAE;;GAElC;EAED,IAAIC,KAAK,GAAG,EAAE;EAEd,IAAIb,QAAQ,EAAE;IACZa,KAAK,GAAG;MACN,GAAGA,KAAK;MACR9L,GAAG,EAAEiL,QAAQ,CAACjL,GAAG,GAAG,IAAI;MACxBG,IAAI,EAAE8K,QAAQ,CAAC9K,IAAI,GAAG;KACvB;;EAGH,IAAI+K,KAAK,EAAE;IACTY,KAAK,CAACZ,KAAK,GAAGA,KAAK,GAAG,IAAI;;EAG5B,IAAIC,MAAM,EAAE;IACVW,KAAK,CAACX,MAAM,GAAGA,MAAM,GAAG,IAAI;;EAG9BtM,eAAS,CAAC,MAAM;IACd,IAAI6M,QAAQ,CAACjN,OAAO,EAAE;MACpBiN,QAAQ,CAACjN,OAAO,CAACe,gBAAgB,CAAC,SAAS,EAAEmM,cAAc,CAAC;;IAG9D,OAAO,MAAM;MAAED,QAAQ,CAACjN,OAAO,CAACgB,mBAAmB,CAAC,SAAS,EAAEkM,cAAc,CAAC;KAAG;GAClF,EAAE,CAAED,QAAQ,CAAE,CAAC;EAEhB7M,eAAS,CAAC,MAAM;IACd,IAAI6M,QAAQ,CAACjN,OAAO,EAAE;MACpBiN,QAAQ,CAACjN,OAAO,CAACe,gBAAgB,CAAC,SAAS,EAAEoM,WAAW,CAAC;;IAG3D,OAAO,MAAM;MAAEF,QAAQ,CAACjN,OAAO,CAACgB,mBAAmB,CAAC,SAAS,EAAEmM,WAAW,CAAC;KAAG;GAC/E,EAAE,CAAEF,QAAQ,CAAE,CAAC;EAEhB7M,eAAS,CAAC,MAAM;IACd,IAAI6M,QAAQ,CAACjN,OAAO,EAAE;MACpBgN,YAAY,CAAChN,OAAO,GAAGsN,oBAAS,CAACC,eAAe,CAACN,QAAQ,CAACjN,OAAO,EAAE;QACjEwN,uBAAuB,EAAE,IAAI;QAC7BC,aAAa,EAAER,QAAQ,CAACjN,OAAO;QAC/B4M,cAAc;QACdC,gBAAgB;QAChBa,uBAAuB,EAAEZ;OAC1B,CAAC;MAEFE,YAAY,CAAChN,OAAO,CAACoN,QAAQ,EAAE;;IAGjC,OAAO,MAAMJ,YAAY,CAAChN,OAAO,IAAIgN,YAAY,CAAChN,OAAO,CAAC2N,UAAU,EAAE;GACvE,EAAE,CAAEV,QAAQ,CAAE,CAAC;EAEhB,OAAO5L,mBAAY,CAEjBtE;IACE,cAAagQ,KAAO;IACpB,QAAQ,EAAG,CAAC,CAAG;IACf,GAAG,EAAGE,QAAU;IAChB,IAAI,EAAC,QAAQ;IACb,KAAK,EAAGzD,8BAAU,CAAC,4BAA4B,EAAE+C,SAAS,CAAG;IAC7D,KAAK,EAAGc,KAAO;IAAA,UAAGlR,KAAK,CAACoC;IAAgB,EACxC4K,SAAS,IAAI5I,QAAQ,CAACqN,IAAI,CAC7B;AACH;AAEAtB,KAAK,CAACuB,KAAK,GAAGA,KAAK;AACnBvB,KAAK,CAACwB,IAAI,GAAGA,IAAI;AACjBxB,KAAK,CAACyB,MAAM,GAAGA,MAAM;AAErB,SAASF,KAAK,CAAC1R,KAAK,EAAE;EACpB,MAAM;IACJoC,QAAQ;IACRgO,SAAS;IACTyB,SAAS;IACTjB,KAAK;IACL,GAAGkB;GACJ,GAAG9R,KAAK;;;;EAIT,MAAM+R,OAAO,GAAGhP,YAAM,CAAC;IACrBiP,aAAa,EAAE,IAAI;IACnBC,WAAW,EAAE;GACd,CAAC;EAEF,MAAMC,cAAc,GAAGnP,YAAM,EAAE;EAE/B,MAAMoP,QAAQ,GAAGpP,YAAM,EAAE;EAEzB,MAAMqP,MAAM,GAAGC,gBAAQ,CAAC,CAACC,CAAC,EAAEtC,KAAK,KAAK;IACpC,MAAM;MAAErM,CAAC,EAAE4O,EAAE;MAAE3O,CAAC,EAAE4O;KAAI,GAAGxC,KAAK;IAE9B,MAAMiC,WAAW,GAAG;MAClBtO,CAAC,EAAEoO,OAAO,CAAClO,OAAO,CAACmO,aAAa,CAACrO,CAAC,GAAG4O,EAAE;MACvC3O,CAAC,EAAEmO,OAAO,CAAClO,OAAO,CAACmO,aAAa,CAACpO,CAAC,GAAG4O;KACtC;IAED,MAAMC,WAAW,GAAGC,cAAc,CAACP,QAAQ,CAACtO,OAAO,CAAC;IAEpD4O,WAAW,CAACvB,KAAK,CAAC9L,GAAG,GAAG6M,WAAW,CAACrO,CAAC,GAAG,IAAI;IAC5C6O,WAAW,CAACvB,KAAK,CAAC3L,IAAI,GAAG0M,WAAW,CAACtO,CAAC,GAAG,IAAI;GAC9C,CAAC;EAEF,MAAMgP,WAAW,GAAIzP,KAAK,IAAK;;IAG7B,MAAMqM,WAAW,GAAGN,aAAa,CAACmD,MAAM,EAAEF,cAAc,CAACrO,OAAO,CAAC;IACjE0L,WAAW,CAACrM,KAAK,CAAC;IAElB,MAAMuP,WAAW,GAAGC,cAAc,CAACP,QAAQ,CAACtO,OAAO,CAAC;IAEpD,MAAMsB,MAAM,GAAGsN,WAAW,CAACzO,qBAAqB,EAAE;IAClD+N,OAAO,CAAClO,OAAO,CAACmO,aAAa,GAAG;MAC9BrO,CAAC,EAAEwB,MAAM,CAACI,IAAI;MACd3B,CAAC,EAAEuB,MAAM,CAACC;KACX;GACF;EAED,MAAMwN,SAAS,GAAG,MAAM;IACtBb,OAAO,CAAClO,OAAO,CAACoO,WAAW,GAAG,IAAI;GACnC;EAED,OACEtR;IACE,KAAK,EAAG0M,8BAAU,CAChB,oCAAoC,EACpCwE,SAAS,IAAI,WAAW,EACxBzB,SAAS,CACR;IACH,GAAG,EAAG+B,QAAU;IAChB,SAAS,EAAGN,SAAW;IACvB,WAAW,EAAGc,WAAa;IAC3B,SAAS,EAAGC,SAAW;IAAA,GAClBd,IAAI;IAAA,WACPD,SAAS,IACTlR;MAAA,WACEC;QAAK,GAAG,EAAGsR,cAAgB;QAAC,KAAK,EAAC;QAAiD,EACnFtR;QAAK,KAAK,EAAC,yCAAyC;QAAA,UAClDA,eAAC,QAAQ;QACL;MAET,EACDA;MAAK,KAAK,EAAC,mCAAmC;MAAA,UAAGgQ;MAAa,EAC5DxO,QAAQ;IACN;AAEV;AAEA,SAASuP,IAAI,CAAC3R,KAAK,EAAE;EACnB,MAAM;IACJoC,QAAQ;IACRgO,SAAS;IACT,GAAG0B;GACJ,GAAG9R,KAAK;EAET,OACEY;IAAK,KAAK,EAAGyM,8BAAU,CAAC,kCAAkC,EAAE+C,SAAS,CAAG;IAAA,GAAM0B,IAAI;IAAA,UAC9E1P;IACE;AAEV;AAEA,SAASwP,MAAM,CAAC5R,KAAK,EAAE;EACrB,MAAM;IACJoC,QAAQ;IACRgO,SAAS;IACT,GAAG0B;GACJ,GAAG9R,KAAK;EAET,OACEY;IAAK,KAAK,EAAGyM,8BAAU,CAAC,oCAAoC,EAAE+C,SAAS,CAAG;IAAA,GAAM0B,IAAI;IAAA,UAChF9R,KAAK,CAACoC;IACJ;AAEV;;AAGA;;AAEA,SAASsQ,cAAc,CAACG,IAAI,EAAE;EAC5B,OAAOA,IAAI,CAACvO,OAAO,CAAC,6BAA6B,CAAC;AACpD;;ACpOO,MAAMwO,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,iBAAiB,GAAG,GAAG;;AAGpC;AACA;AACA;AACe,SAASC,aAAa,CAAChT,KAAK,EAAE;EAC3C,MAAM;IACJC;GACD,GAAGD,KAAK;EAET,MAAMiT,WAAW,GAAGxL,WAAW,CAACxH,OAAO,CAAC;EAExC,MAAM,CAAEiT,WAAW,EAAEC,cAAc,CAAE,GAAGzQ,cAAQ,CAAC,EAAE,CAAC;EACpD,MAAM,CAAEmH,IAAI,EAAEC,OAAO,CAAE,GAAGpH,cAAQ,CAAC,KAAK,CAAC;EACzC,MAAM,CAAEsM,MAAM,EAAEoE,SAAS,CAAE,GAAG1Q,cAAQ,CAAC,IAAI,CAAC;EAC5C,MAAM,CAAE2Q,aAAa,EAAEC,gBAAgB,CAAE,GAAG5Q,cAAQ,CAAC,IAAI,CAAC;EAE1D,MAAM6Q,UAAU,GAAG,CAAC5M,GAAG,EAAE6M,MAAM,EAAEC,cAAc,KAAK;IAClDL,SAAS,CAACzM,GAAG,CAAC;IACdwM,cAAc,CAACK,MAAM,CAAC;IACtB1J,OAAO,CAAC,IAAI,CAAC;IACbwJ,gBAAgB,CAACG,cAAc,CAAC;GACjC;EAED,MAAMC,WAAW,GAAG,MAAM;IACxB5J,OAAO,CAAC,KAAK,CAAC;IACdsJ,SAAS,CAAC,IAAI,CAAC;GAChB;EAED,MAAMO,gBAAgB,GAAG;IACvB9J,IAAI,EAAE0J,UAAU;IAChBxE,KAAK,EAAE2E,WAAW;IAClB1E;GACD;;;EAGD/K,eAAS,CAAC,MAAM;IACd,IAAIhE,OAAO,IAAIA,OAAO,KAAKgT,WAAW,EAAE;MACtCS,WAAW,EAAE;;GAEhB,EAAE,CAAEzT,OAAO,CAAE,CAAC;EAEf,OACEU,gBAAC,gBAAgB,CAAC,QAAQ;IAAC,KAAK,EAAGgT,gBAAkB;IAAA,WACjD9J,IAAI,IACJjJ,eAAC,kBAAkB;MACjB,OAAO,EAAG8S,WAAa;MACvB,aAAa,EAAGL,aAAe;MAAA,GAC1BH;MACR,EACClT,KAAK,CAACoC,QAAQ;IACU;AAEhC;AAEA,SAASwR,kBAAkB,CAAC5T,KAAK,EAAE;EACjC,MAAM;IACJ8B,EAAE;IACF0K,YAAY;IACZR,OAAO;IACPwE,OAAO;IACPH,QAAQ;IACR5D,UAAU;IACV4G,aAAa;IACbzC,KAAK;IACL1E,gBAAgB;IAChB1L,IAAI;IACJ2B,KAAK;IACLqL;GACD,GAAGxN,KAAK;EAET,MAAM6T,SAAS,GAAG9Q,YAAM,EAAE;EAE1B,MAAM+Q,oBAAoB,GAAG,MAAM;IACjCT,aAAa,IAAIA,aAAa,CAACvL,KAAK,EAAE;GACvC;EAED7D,eAAS,CAAC,MAAM;IACd,MAAMuH,MAAM,GAAGqI,SAAS,CAAChQ,OAAO;IAEhC,IAAI2H,MAAM,EAAE;MACVA,MAAM,CAAC1D,KAAK,EAAE;;GAEjB,EAAE,CAAE+L,SAAS,EAAE/R,EAAE,CAAE,CAAC;EAErB,OACEnB,gBAAC,KAAK;IACJ,SAAS,EAAC,iCAAiC;IAC3C,QAAQ,EAAG0P,QAAU;IACrB,KAAK,EAAGO,KAAO;IACf,OAAO,EAAGJ;;;;IAGV,WAAW,EAAG,KAAO;IACrB,gBAAgB,EAAGsD,oBAAsB;IACzC,MAAM,EAAGf,iBAAmB;IAC5B,KAAK,EAAGD,gBAAkB;IAAA,WAE1BlS,eAAC,KAAK,CAAC,KAAK;MACV,KAAK,EAAGgQ,KAAO;MACf,SAAS;MAAG,EACdhQ,eAAC,KAAK,CAAC,IAAI;MAAA,UACTD;QAAK,KAAK,EAAC,uCAAuC;QAAA,WAG9CH,IAAI,KAAK,MAAM,IACbI,eAAC,UAAU;UACT,aAAa,EAAG,IAAM;UACtB,EAAE,EAAGyB,UAAQ,CAACP,EAAE,CAAG;UACnB,IAAI,EAAGA,EAAI;UACX,OAAO,EAAGkK,OAAS;UACnB,KAAK,EAAG7J,KAAO;UACf,SAAS,EAAGqL,SAAW;UACvB,GAAG,EAAGqG,SAAW;UACjB,gBAAgB,EAAG3H;UAEtB,EAID1L,IAAI,KAAK,SAAS,IAChBI,eAACmT,YAAgB;UACf,EAAE,EAAG1R,UAAQ,CAACP,EAAE,CAAG;UACnB,iBAAiB,EAAG;YAAE,YAAY,EAAE8O;WAAS;UAC7C,aAAa,EAAG,IAAM;UACtB,YAAY,EAAGpE,YAAc;UAC7B,IAAI,EAAG1K,EAAI;UACX,OAAO,EAAGkK,OAAS;UACnB,KAAK,EAAG7J,KAAO;UACf,GAAG,EAAG0R,SAAW;UACjB,UAAU,EAAGpH,UAAY;UACzB,gBAAgB,EAAGP;UAEtB;;MAGM,EACbtL,eAAC,KAAK,CAAC,MAAM;MAAA,UACXA;QACE,OAAO,EAAG4P,OAAS;QACnB,KAAK,EAAC,qBAAqB;QAC3B,KAAK,EAAC,4CAA4C;QAAA;;MACvC;IACT;AAEZ;;AAEA;;AAEA,SAASnO,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAuBA,EAAG,EAAC;AACrC;;AC/JO,SAASkS,YAAY,CAAChU,KAAK,EAAE;EAClC,MAAM;IACJ8B,EAAE;IACFvB,KAAK;IACLyL,OAAO;IACP7J,KAAK;IACL8R,aAAa;IACbC,MAAM;IACNC,OAAO;IACPC,MAAM;IACN1H,QAAQ;IACR/K;GACD,GAAG3B,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAMkS,mBAAmB,GAAG,YAAY;IACtCrI,OAAO,CAAC,CAAC7J,KAAK,CAAC;GAChB;EAED,MAAM2K,WAAW,GAAGtJ,CAAC,IAAI;IACvB6Q,mBAAmB,CAAE,CAAC;IACtBxH,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAED8B,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACExB;IAAK,KAAK,EAAG0M,8BAAU,CACrB,oCAAoC,EACpC;MAAE6G;KAAQ,CACT;IAAA,WACDtT;MAAO,KAAK,EAAC,4BAA4B;MACvC,GAAG,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MAAA,UACpBlB,eAAC0B,cAAO;QAAC,KAAK,EAAGX,OAAS;QAAC,KAAK,EAAGG,EAAI;QAAC,OAAO,EAAG9B,KAAK,CAACC,OAAS;QAAA,UAC7DM;;MAEE,EACRI;MAAK,KAAK,EAAC,oCAAoC;MAAA,WAC7CA;QAAO,KAAK,EAAC,8CAA8C;QAAA,WACzDC;UACE,GAAG,EAAG8L,QAAU;UAChB,EAAE,EAAGrK,UAAQ,CAACP,EAAE,CAAG;UACnB,KAAK,EAAC,4BAA4B;UAClC,IAAI,EAAC,UAAU;UACf,OAAO,EAAGqS,OAAS;UACnB,MAAM,EAAGC,MAAQ;UACjB,IAAI,EAAGtS,EAAI;UACX,OAAO,EAAGgL,WAAa;UACvB,OAAO,EAAG,CAAC,CAACF;UAAe,EAC7BhM;UAAM,KAAK,EAAC;UAA+C;QACrD,EACNqT,aAAa,IAAIrT;QAAG,KAAK,EAAC,2CAA2C;QAAA,UAAGqT;QAAmB;MACzF;IACF;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASM,iBAAiB,CAACvU,KAAK,EAAE;EAC/C,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACXR,KAAK;IACL0T,aAAa;IACbC,MAAM;IACNM,QAAQ;IACRrH,QAAQ;IACRgH,OAAO;IACPC,MAAM;IACNzS;GACD,GAAG3B,KAAK;EAET,MAAMmC,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAC/B,OACEU;IAAK,KAAK,EAAC,qEAAqE;IAAC,iBAAgBmB,EAAI;IAAA,WACnGlB,eAAC,YAAY;MACX,EAAE,EAAGkB,EAAI;MACT,KAAK,EAAGvB,KAAO;MACf,KAAK,EAAG4B,KAAO;MACf,OAAO,EAAGgL,QAAU;MACpB,OAAO,EAAGgH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,aAAa,EAAGH,aAAe;MAC/B,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAGvS,OAAS;MACnB,OAAO,EAAG1B;MAAY,EACxBW,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASsJ,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC4B,OAAO;AAC/B;;AAGA;;AAEA,SAASpS,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;ACnHO,SAAS4S,WAAW,CAAC1U,KAAK,EAAE;EAEjC,MAAM;IACJ2U,QAAQ;IACR1I,QAAQ;IACR2I,YAAY,GAAG,IAAI;IACnB9S,EAAE;IACF4K,QAAQ;IACRnM,KAAK;IACLsU,GAAG;IACHC,GAAG;IACH9I,OAAO;IACP+I,IAAI;IACJ5S,KAAK,GAAG,EAAE;IACVgS,OAAO;IACPC;GACD,GAAGpU,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAMkS,mBAAmB,GAAG7N,aAAO,CAAC,MAAM;IACxC,OAAOmO,QAAQ,CAACzR,KAAK,IAAI;MAEvB,MAAM;QACJ8R,QAAQ;QACR7S;OACD,GAAGe,KAAK,CAACoR,MAAM;MAEhB,IAAIU,QAAQ,CAACC,KAAK,EAAE;QAClBjJ,OAAO,CAAC7J,KAAK,GAAG+S,UAAU,CAAC/S,KAAK,CAAC,GAAGwJ,SAAS,CAAC;;KAEjD,CAAC;GACH,EAAE,CAAEK,OAAO,EAAE2I,QAAQ,CAAE,CAAC;EAEzB,MAAM7H,WAAW,GAAGtJ,CAAC,IAAI;IACvB6Q,mBAAmB,CAAC7Q,CAAC,CAAC;IACtBqJ,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAED8B,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACExB;IAAK,KAAK,EAAC,kCAAkC;IAAA,WAC1CiU,YAAY,IAAIhU;MAAO,GAAG,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAAGvB;MAAe,EACjGK;MACE,EAAE,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MACnB,GAAG,EAAG4K,QAAU;MAChB,IAAI,EAAC,QAAQ;MACb,IAAI,EAAG5K,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,YAAY,EAAC,KAAK;MAClB,QAAQ,EAAGmK,QAAU;MACrB,KAAK,EAAC,4BAA4B;MAClC,GAAG,EAAG4I,GAAK;MACX,GAAG,EAAGC,GAAK;MACX,OAAO,EAAGhI,WAAa;MACvB,OAAO,EAAGqH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAGW,IAAM;MACb,KAAK,EAAGnI;MAAe;IACrB;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASuI,gBAAgB,CAACnV,KAAK,EAAE;EAC9C,MAAM;IACJ2U,QAAQ;IACR5T,WAAW;IACXkL,QAAQ;IACRhM,OAAO;IACPuU,QAAQ;IACR1S,EAAE;IACFvB,KAAK;IACLsU,GAAG;IACHC,GAAG;IACH3H,QAAQ;IACR4H,IAAI;IACJZ,OAAO;IACPC,MAAM;IACNgB;GACD,GAAGpV,KAAK;EAET,MAAMqV,WAAW,GAAGzP,QAAQ,CAAC9D,EAAE,CAAC;EAChC,MAAM,CAAEwT,UAAU,EAAEC,aAAa,CAAE,GAAG7S,cAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIP,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE7BgE,eAAS,CAAC,MAAM;IACd,IAAI+D,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxB,MAAMI,kBAAkB,GAAGJ,QAAQ,CAACjT,KAAK,CAAC,IAAI,IAAI;MAElDoT,aAAa,CAACC,kBAAkB,CAAC;;GAEpC,EAAE,CAAErT,KAAK,CAAE,CAAC;EAEb,MAAM6J,OAAO,GAAIxE,QAAQ,IAAK;IAC5B,IAAIgO,kBAAkB,GAAG,IAAI;IAE7B,IAAIxN,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxBI,kBAAkB,GAAGJ,QAAQ,CAAC5N,QAAQ,CAAC,IAAI,IAAI;;IAGjD2F,QAAQ,CAAC3F,QAAQ,EAAEgO,kBAAkB,CAAC;IACtCD,aAAa,CAACC,kBAAkB,CAAC;GAClC;EAED,MAAMC,KAAK,GAAGJ,WAAW,IAAIC,UAAU;EAEvC,OACE3U;IAAK,KAAK,EAAGiK,8BAAU,CACrB,4BAA4B,EAC5B6K,KAAK,GAAG,WAAW,GAAG,EAAE,CAAG;IAAC,iBAAgB3T,EAAI;IAAA,WAChDlB,eAAC,WAAW;MACV,QAAQ,EAAG+T,QAAU;MACrB,QAAQ,EAAG1I,QAAU;MACrB,EAAE,EAAGnK,EAAI;MAET,KAAK,EAAGvB,KAAO;MACf,OAAO,EAAG4T,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAGpI,OAAS;MACnB,GAAG,EAAG6I,GAAK;MACX,GAAG,EAAGC,GAAK;MACX,IAAI,EAAGC,IAAM;MACb,KAAK,EAAG5S;OARFlC,OAAO,CAQK,EAClBwV,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAG6U;MAAa,EAClE7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASsJ,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC1Q,KAAK;AAC7B;;AAGA;;AAEA,SAASE,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC9IA,MAAMwJ,MAAI,GAAG,MAAM,EAAG;AAEtB,SAASoK,aAAa,CAAC1V,KAAK,EAAE;EAC5B,MAAM;IACJ2U,QAAQ;IACR7S,EAAE;IACF7B,OAAO;IACPM,KAAK;IACLiM,YAAY;IACZR,OAAO;IACP2J,OAAO;IACPnH,IAAI;IACJrM,KAAK,GAAG,EAAE;IACV8J,QAAQ,GAAG,KAAK;IAChBuB,SAAS;IACTf,UAAU;IACVP,gBAAgB;IAChB0J,iBAAiB,GAAGC,iBAAiB;IACrClU;GACD,GAAG3B,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEkJ,cAAc,CAAE,GAAGpT,cAAQ,CAACP,KAAK,CAAC;EAEtD,MAAM0R,SAAS,GAAGlM,iBAAiB,CAAC7F,EAAE,CAAC;EACvC,MAAMiU,YAAY,GAAGhT,YAAM,EAAE;EAE7B,MAAMiT,UAAU,GAAIC,gBAAQ,CAACrJ,UAAU,CAAC,IAAIA,UAAU,CAACsJ,UAAU,CAAC,GAAG,CAAC,IAAK1H,IAAI,KAAK,UAAU;EAC9F,MAAM2H,aAAa,GAAIF,gBAAQ,CAACrJ,UAAU,CAAC,IAAIA,UAAU,CAACsJ,UAAU,CAAC,GAAG,CAAC,GAAItJ,UAAU,CAACwJ,SAAS,CAAC,CAAC,CAAC,GAAGxJ,UAAU;EAEjH,MAAM,CAAE9E,KAAK,EAAEuO,SAAS,CAAE,GAAG3T,cAAQ,CAACiJ,SAAS,CAAC;EAEhD,MAAM;IACJ9B,IAAI,EAAEyM,SAAS;IACftH,MAAM,EAAEuH;GACT,GAAGxU,gBAAU,CAAC+M,gBAAgB,CAAC;EAEhC,MAAM0H,QAAQ,GAAGD,WAAW,KAAKzU,EAAE;EAEnC,MAAM2U,QAAQ,GAAG,CAAC7K,MAAM,GAAG,CAAC,KAAK;IAC/B,MAAM8K,QAAQ,GAAGX,YAAY,CAAClS,OAAO,CAAC8S,QAAQ,CAACvS,QAAQ,CAACC,aAAa,CAAC;;;IAGtE,MAAMgM,QAAQ,GAAGqG,QAAQ,GAAGtS,QAAQ,CAACC,aAAa,CAACuS,cAAc,GAAG/K,QAAQ;IAE5EwK,SAAS,CAAChG,QAAQ,GAAGzE,MAAM,CAAC;GAC7B;EAED,MAAMyI,mBAAmB,GAAG7N,aAAO,CAAC,MAAM;IACxC,OAAOmO,QAAQ,CAAEnN,QAAQ,IAAK;MAC5BwE,OAAO,CAACxE,QAAQ,CAAC;KAClB,CAAC;GACH,EAAE,CAAEwE,OAAO,EAAE2I,QAAQ,CAAE,CAAC;EAEzB,MAAM9H,aAAa,GAAGrF,QAAQ,IAAI;IAChCsO,cAAc,CAACtO,QAAQ,CAAC;IAExB,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;MACjC6M,mBAAmB,CAAC1I,SAAS,CAAC;KAC/B,MAAM;MACL0I,mBAAmB,CAAC7M,QAAQ,CAAC;;GAGhC;EAED,MAAMqP,gBAAgB,GAAGtN,iBAAiB,CAAC,MAAM;IAC/C,IAAIiF,IAAI,KAAK,UAAU,EAAE;MACvB;;IAGF,IAAI,CAACwH,UAAU,EAAE;MACfnJ,aAAa,CAAC,GAAG,GAAGD,UAAU,CAAC;KAChC,MAAM;MACLC,aAAa,CAACsJ,aAAa,CAAC;;GAE/B,CAAC;EAEF,MAAMW,gBAAgB,GAAItP,QAAQ,IAAK;IACrC,IAAIwO,UAAU,EAAE;MACdxO,QAAQ,GAAG,GAAG,GAAGA,QAAQ;;IAG3B,IAAIA,QAAQ,KAAKoF,UAAU,EAAE;MAC3B;;IAGFC,aAAa,CAACrF,QAAQ,CAAC;IAEvB,IAAI,CAACwO,UAAU,IAAIC,gBAAQ,CAACzO,QAAQ,CAAC,IAAIA,QAAQ,CAAC0O,UAAU,CAAC,GAAG,CAAC,EAAE;;MAGjEO,QAAQ,CAAC,CAAC,CAAC,CAAC;;GAEf;EAED,MAAMM,UAAU,GAAGxN,iBAAiB,CAACyN,IAAI,IAAI;IAE3C,IAAI,EAAEA,IAAI,IAAIA,IAAI,CAACC,MAAM,CAAC,EAAE;MAC1BtB,OAAO,CAAChK,SAAS,CAAC;MAClB;;IAEF,MAAM8J,KAAK,GAAGuB,IAAI,CAAC,CAAC,CAAC;IACrB,MAAME,OAAO,GAAI,GAAEzB,KAAK,CAACzG,MAAO,KAAIyG,KAAK,CAACyB,OAAQ,EAAC;IAEnDvB,OAAO,CAACuB,OAAO,CAAC;GACjB,CAAC;EAEF,MAAMC,eAAe,GAAG,CAAC3W,IAAI,GAAG,MAAM,KAAK;IACzC,MAAM4W,YAAY,GAAG;MACnBtV,EAAE;MACF0K,YAAY;MACZR,OAAO,EAAE8K,gBAAgB;MACzBzG,QAAQ,EAAEgH,sBAAsB,CAACtB,YAAY,CAAClS,OAAO,CAAC;MACtD4I,UAAU;MACVmE,KAAK,EAAE0G,aAAa,CAACrX,OAAO,EAAEM,KAAK,CAAC;MACpC2L,gBAAgB;MAChB1L,IAAI;MACJ2B,KAAK,EAAEgU,aAAa;MACpB3I;KACD;IAED8I,SAAS,CAACxU,EAAE,EAAEsV,YAAY,EAAEvD,SAAS,CAAChQ,OAAO,CAAC;GAC/C;EAEDI,eAAS,CAAC,MAAM;IACd,IAAI,OAAO6D,KAAK,KAAK,WAAW,EAAE;MAChC+L,SAAS,CAAChQ,OAAO,CAACiE,KAAK,CAACA,KAAK,CAAC;MAC9BuO,SAAS,CAAC1K,SAAS,CAAC;;GAEvB,EAAE,CAAE7D,KAAK,CAAE,CAAC;EAEb7D,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;;;IAIF,IAAI,CAACzK,KAAK,EAAE;MACV0K,aAAa,CAACmJ,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC;MACpC;;IAGFnJ,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;;;EAIb8B,eAAS,CAAC,MAAM;IACd,MAAMsT,WAAW,GAAGrU,KAAK,IAAI;MAC3B,IAAI,CAAC8S,UAAU,EAAE;QACf;;MAEF9S,KAAK,CAACsU,aAAa,CAACC,OAAO,CAAC,kBAAkB,EAAEvU,KAAK,CAACsU,aAAa,CAACE,OAAO,CAAC,MAAM,CAAC,CAAC;KACrF;IAED,MAAMC,YAAY,GAAGzU,KAAK,IAAI;MAC5B,IAAI8S,UAAU,IAAIQ,QAAQ,EAAE;QAC1B;;MAGF,MAAMoB,IAAI,GAAG1U,KAAK,CAACsU,aAAa,CAACE,OAAO,CAAC,kBAAkB,CAAC;MAE5D,IAAIE,IAAI,EAAE;QACRvU,UAAU,CAAC,MAAM;UACfwT,gBAAgB,EAAE;UAClBJ,QAAQ,EAAE;SACX,CAAC;;KAEL;IACDV,YAAY,CAAClS,OAAO,CAACe,gBAAgB,CAAC,MAAM,EAAE2S,WAAW,CAAC;IAC1DxB,YAAY,CAAClS,OAAO,CAACe,gBAAgB,CAAC,KAAK,EAAE2S,WAAW,CAAC;IACzDxB,YAAY,CAAClS,OAAO,CAACe,gBAAgB,CAAC,OAAO,EAAE+S,YAAY,CAAC;IAE5D,OAAO,MAAM;MACX5B,YAAY,CAAClS,OAAO,CAACgB,mBAAmB,CAAC,MAAM,EAAE0S,WAAW,CAAC;MAC7DxB,YAAY,CAAClS,OAAO,CAACgB,mBAAmB,CAAC,KAAK,EAAE0S,WAAW,CAAC;MAC5DxB,YAAY,CAAClS,OAAO,CAACgB,mBAAmB,CAAC,OAAO,EAAE8S,YAAY,CAAC;KAChE;GACF,EAAE,CAAE5B,YAAY,EAAEC,UAAU,EAAEa,gBAAgB,EAAEJ,QAAQ,CAAE,CAAC;EAE5D,OACE9V;IAAK,KAAK,EAAGiK,8BAAU,CACrB,iCAAiC,EACjC;MAAE,aAAa,EAAEoL;KAAY,CAC5B;IAAA,WACDrV;MAAO,GAAG,EAAG0B,UAAQ,CAACP,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAC,OAAO,EAAG,MAAM2U,QAAQ,EAAI;MAAA,WACzF7V,eAAC0B,cAAO;QAAC,KAAK,EAAGX,OAAS;QAAC,KAAK,EAAGG,EAAI;QAAC,OAAO,EAAG9B,KAAK,CAACC,OAAS;QAAA,UAC9DM;QACO,EACVK,eAAC,QAAQ;QACP,KAAK,EAAGL,KAAO;QACf,IAAI,EAAGiO,IAAM;QACb,OAAO,EAAGqI,gBAAkB;QAC5B,MAAM,EAAGb;QAAwB;MAC7B,EAERrV;MAAK,KAAK,EAAC,qCAAqC;MAAC,GAAG,EAAGoV,YAAc;MAAA,WACnEnV,eAAC,aAAa;QACZ,MAAM,EAAGoV,UAAY;QACrB,QAAQ,EAAGxH,IAAI,KAAK,UAAU,IAAIvC,QAAU;QAC5C,OAAO,EAAG4K;QACV,EACDb,UAAU,GACTpV,eAAC,UAAU;QACT,EAAE,EAAGyB,UAAQ,CAACP,EAAE,CAAG;QACnB,IAAI,EAAGA,EAAI;QACX,OAAO,EAAGgV,gBAAkB;QAC5B,QAAQ,EAAG7K,QAAU;QACrB,SAAS,EAAGuK,QAAU;QACtB,YAAY,EAAG,MAAM;UAAEK,gBAAgB,EAAE;UAAEJ,QAAQ,CAAC,IAAI,CAAC;SAAK;QAC9D,MAAM,EAAGM,UAAY;QACrB,WAAW,EAAGI,eAAiB;QAC/B,KAAK,EAAGhB,aAAe;QACvB,SAAS,EAAG3I,SAAW;QACvB,GAAG,EAAGqG,SAAW;QACjB,gBAAgB,EAAG3H;QACnB,GACFtL,eAAC,iBAAiB;QAAA,GACXZ,KAAK;QACV,SAAS,EAAGwW,QAAU;QACtB,OAAO,EAAGM,gBAAkB;QAC5B,iBAAiB,EAAG;UAAE,IAAI,EAAEzU,UAAQ,CAACP,EAAE,CAAC;UAAE,YAAY,EAAEvB;SAAS;QACjE,KAAK,EAAGqM,UAAY;QACpB,GAAG,EAAGiH,SAAW;QACjB,WAAW,EAAGsD,eAAiB;QAC/B,YAAY,EAAGpB;QACf;MAEA;IACF;AAEV;AAEA,MAAMF,iBAAiB,GAAG9J,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EACnD,MAAM;IACJ5F,EAAE;IACFmK,QAAQ;IACRD,OAAO;IACP7J,KAAK;IACLgS,OAAO;IACPC;GACD,GAAGpU,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;;;;EAIzB2E,GAAG,CAAC7D,OAAO,GAAG;IACZiE,KAAK,EAAGuI,QAAQ,IAAK;MACnB,MAAMwH,KAAK,GAAGnL,QAAQ,CAAC7I,OAAO;MAC9B,IAAI,CAACgU,KAAK,EAAE;QACV;;MAGFA,KAAK,CAAC/P,KAAK,EAAE;MACb,IAAI,OAAOuI,QAAQ,KAAK,QAAQ,EAAE;QAChC,IAAIA,QAAQ,GAAGlO,KAAK,CAAC8U,MAAM,EAAE;UAC3B5G,QAAQ,GAAGlO,KAAK,CAAC8U,MAAM;;QAEzBY,KAAK,CAACC,iBAAiB,CAACzH,QAAQ,EAAEA,QAAQ,CAAC;;;GAIhD;EAED,OAAOzP;IACL,EAAE,EAAGyB,UAAQ,CAACP,EAAE,CAAG;IACnB,IAAI,EAAC,MAAM;IACX,GAAG,EAAG4K,QAAU;IAChB,IAAI,EAAG5K,EAAI;IACX,UAAU,EAAC,OAAO;IAClB,YAAY,EAAC,KAAK;IAClB,QAAQ,EAAGmK,QAAU;IACrB,KAAK,EAAC,4BAA4B;IAClC,OAAO,EAAGzI,CAAC,IAAIwI,OAAO,CAACxI,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAG;IACxC,OAAO,EAAGgS,OAAS;IACnB,MAAM,EAAGC,MAAQ;IACjB,KAAK,EAAGjS,KAAK,IAAI;IAAO;AAC5B,CAAC,CAAC;AAGF,MAAM4V,uBAAuB,GAAGhM,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EACzD,MAAM;IACJ5F,EAAE;IACF6S,QAAQ;IACR1I,QAAQ;IACRD,OAAO;IACP7J,KAAK;IACL2S,GAAG;IACHD,GAAG;IACHE,IAAI;IACJZ,OAAO;IACPC;GACD,GAAGpU,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;;;;EAIzB2E,GAAG,CAAC7D,OAAO,GAAG;IACZiE,KAAK,EAAGuI,QAAQ,IAAK;MACnB,MAAMwH,KAAK,GAAGnL,QAAQ,CAAC7I,OAAO;MAC9B,IAAI,CAACgU,KAAK,EAAE;QACV;;MAGFA,KAAK,CAAC/P,KAAK,EAAE;MACb,IAAI,OAAOuI,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAKxE,QAAQ,EAAE;QACzD,IAAIwE,QAAQ,GAAGlO,KAAK,CAAC8U,MAAM,EAAE;UAC3B5G,QAAQ,GAAGlO,KAAK,CAAC8U,MAAM;;QAEzBY,KAAK,CAACC,iBAAiB,CAACzH,QAAQ,EAAEA,QAAQ,CAAC;;;GAIhD;EAED,OAAOzP,eAAC,WAAW;IACjB,EAAE,EAAGkB,EAAI;IACT,QAAQ,EAAG6S,QAAU;IACrB,QAAQ,EAAG1I,QAAU;IACrB,YAAY,EAAG,KAAO;IACtB,QAAQ,EAAGS,QAAU;IACrB,GAAG,EAAGmI,GAAK;IACX,GAAG,EAAGC,GAAK;IACX,OAAO,EAAG9I,OAAS;IACnB,IAAI,EAAG+I,IAAM;IACb,KAAK,EAAG5S,KAAO;IACf,OAAO,EAAGgS,OAAS;IACnB,MAAM,EAAGC;IACT;AACJ,CAAC,CAAC;AAGF,MAAM4D,oBAAoB,GAAGjM,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EACtD,MAAM;IACJ5F,EAAE;IACFmK,QAAQ;IACRD,OAAO;IACP7J,KAAK;IACLgS,OAAO;IACPC;GACD,GAAGpU,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;;;;EAIzB2E,GAAG,CAAC7D,OAAO,GAAG;IACZiE,KAAK,EAAE,MAAM;MACX,MAAM+P,KAAK,GAAGnL,QAAQ,CAAC7I,OAAO;MAC9B,IAAI,CAACgU,KAAK,EAAE;QACV;;MAGFA,KAAK,CAAC/P,KAAK,EAAE;MACb+P,KAAK,CAACC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;;GAEhC;EAED,OAAOlX;IACL,EAAE,EAAGyB,UAAQ,CAACP,EAAE,CAAG;IACnB,IAAI,EAAC,MAAM;IACX,GAAG,EAAG4K,QAAU;IAChB,IAAI,EAAG5K,EAAI;IACX,UAAU,EAAC,OAAO;IAClB,YAAY,EAAC,KAAK;IAClB,QAAQ,EAAGmK,QAAU;IACrB,KAAK,EAAC,4BAA4B;IAClC,OAAO,EAAGzI,CAAC,IAAIwI,OAAO,CAACxI,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAG;IACxC,OAAO,EAAGgS,OAAS;IACnB,MAAM,EAAGC,MAAQ;IACjB,KAAK,EAAGjS,KAAK,IAAI,EAAI;IACrB,cAAW;IACX;AACJ,CAAC,CAAC;AAEF,MAAM8V,wBAAwB,GAAGlM,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EAC1D,MAAM;IACJ5F,EAAE;IACFkK,OAAO;IACP7J,KAAK;IACLgS,OAAO;IACPC,MAAM;IACNH;GACD,GAAGjU,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;;;;EAIzB2E,GAAG,CAAC7D,OAAO,GAAG;IACZiE,KAAK,EAAE,MAAM;MACX,MAAM+P,KAAK,GAAGnL,QAAQ,CAAC7I,OAAO;MAC9B,IAAI,CAACgU,KAAK,EAAE;QACV;;MAGFA,KAAK,CAAC/P,KAAK,EAAE;;GAEhB;EAED,OAAOlH,eAAC,YAAY;IAClB,EAAE,EAAGkB,EAAI;IACT,KAAK,EAAGK,KAAO;IACf,QAAQ,EAAGuK,QAAU;IACrB,OAAO,EAAGV,OAAS;IACnB,OAAO,EAAGmI,OAAS;IACnB,MAAM,EAAGC,MAAQ;IACjB,aAAa,EAAGH;IAAkB;AACtC,CAAC,CAAC;AAGF,MAAMiE,oBAAoB,GAAGnM,iBAAU,CAAC,CAAC/L,KAAK,EAAE0H,GAAG,KAAK;EACtD,MAAM;IACJ5F,EAAE;IACFmK,QAAQ;IACRD,OAAO;IACP7J,KAAK;IACLgS,OAAO;IACPC;GACD,GAAGpU,KAAK;EAET,MAAM0M,QAAQ,GAAG3J,YAAM,EAAE;EAEzB,MAAMoV,YAAY,GAAG,CAAC;IAAE7D;GAAQ,KAAK;IACnCtI,OAAO,CAACsI,MAAM,CAACG,OAAO,CAAC;GACxB;;;;EAID/M,GAAG,CAAC7D,OAAO,GAAG;IACZiE,KAAK,EAAE,MAAM;MACX,MAAM+P,KAAK,GAAGnL,QAAQ,CAAC7I,OAAO;MAC9B,IAAI,CAACgU,KAAK,EAAE;QACV;;MAGFA,KAAK,CAAC/P,KAAK,EAAE;;GAEhB;EAED,OAAOlH;IACL,GAAG,EAAG8L,QAAU;IAChB,EAAE,EAAGrK,UAAQ,CAACP,EAAE,CAAG;IACnB,IAAI,EAAGA,EAAI;IACX,OAAO,EAAGqS,OAAS;IACnB,MAAM,EAAGC,MAAQ;IACjB,IAAI,EAAC,UAAU;IACf,KAAK,EAAC,4BAA4B;IAClC,QAAQ,EAAG+D,YAAc;IACzB,OAAO,EAAGhW,KAAO;IACjB,QAAQ,EAAG8J;IAAa;AAC5B,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASmM,SAAS,CAACpY,KAAK,EAAE;EACvC,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACX4T,QAAQ;IACR1I,QAAQ;IACRuC,IAAI;IACJjO,KAAK;IACLiU,QAAQ;IACRrH,QAAQ;IACRjB,gBAAgB;IAChBM,YAAY;IACZC,UAAU;IACV2I,QAAQ;IACRjS,IAAI,GAAGmI,MAAI;IACX+M,OAAO;IACP7K,SAAS;IACT2G,OAAO;IACPC,MAAM;IACNzS;GACD,GAAG3B,KAAK;EAET,MAAM,CAAEsY,eAAe,EAAEC,kBAAkB,CAAE,GAAG7V,cAAQ,CAAC,IAAI,CAAC;EAC9D,MAAM,CAAE4S,UAAU,EAAEC,aAAa,CAAE,GAAG7S,cAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIP,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE7BgE,eAAS,CAAC,MAAM;IACd,IAAI+D,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxB,MAAMI,kBAAkB,GAAGJ,QAAQ,CAACjT,KAAK,CAAC,IAAI,IAAI;MAElDoW,kBAAkB,CAAC/C,kBAAkB,CAAC;;GAEzC,EAAE,CAAErT,KAAK,CAAE,CAAC;EAEb,MAAM6J,OAAO,GAAGzC,iBAAiB,CAAE/B,QAAQ,IAAK;IAC9C,IAAIgO,kBAAkB,GAAG,IAAI;IAE7B,IAAIxN,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxBI,kBAAkB,GAAGJ,QAAQ,CAAC5N,QAAQ,CAAC,IAAI,IAAI;;;;IAIjD,IAAIA,QAAQ,KAAKrF,KAAK,EAAE;MACtBgL,QAAQ,CAAC3F,QAAQ,EAAEgO,kBAAkB,CAAC;;IAGxC+C,kBAAkB,CAAC/C,kBAAkB,CAAC;GACvC,CAAC;EAEF,MAAMG,OAAO,GAAGpO,iBAAW,CAACiR,GAAG,IAAI;IACjCjD,aAAa,CAACiD,GAAG,CAAC;GACnB,EAAE,EAAE,CAAC;EAEN,MAAMC,cAAc,GAAG7S,QAAQ,CAAC9D,EAAE,CAAC;EAEnC,MAAM2T,KAAK,GAAGH,UAAU,IAAImD,cAAc,IAAIH,eAAe;EAE7D,OACE3X;IACE,KAAK,EAAGiK,8BAAU,CAChB5K,KAAK,CAAC0Y,KAAK,EACX,4BAA4B,EAC5BjD,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgB3T,EAAI;IAAA,WACpBiJ,qBAAC,aAAa;MAAA,GACP/K,KAAK;MACV,QAAQ,EAAG2U,QAAU;MACrB,QAAQ,EAAG1I,QAAU;MACrB,IAAI,EAAGuC,IAAM;MACb,EAAE,EAAG1M,EAAI;MACT,GAAG,EAAG7B,OAAS;MACf,KAAK,EAAGM,KAAO;MACf,OAAO,EAAGyL,OAAS;MACnB,OAAO,EAAG2J,OAAS;MACnB,OAAO,EAAGxB,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAGiE,OAAS;MACnB,YAAY,EAAG7L,YAAc;MAC7B,UAAU,EAAGC,UAAY;MACzB,IAAI,EAAGtJ,IAAM;MACb,KAAK,EAAGhB,KAAO;MACf,SAAS,EAAGqL,SAAW;MACvB,gBAAgB,EAAGtB,gBAAkB;MACrC,iBAAiB,EAAGlM,KAAK,CAAC4V,iBAAmB;MAC7C,OAAO,EAAGjU;MAAY,EACvB8T,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAE6U;MAAY,EAC/D7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4X,eAAe,CAAC3Y,KAAK,EAAE;EACrC,OAAOY,eAAC,SAAS;IAAC,KAAK,EAAC,kCAAkC;IAAC,iBAAiB,EAAGmX,uBAAyB;IAAA,GAAM/X;IAAU;AAC1H;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4Y,iBAAiB,CAAC5Y,KAAK,EAAE;EACvC,OAAOY,eAAC,SAAS;IAAC,KAAK,EAAC,oCAAoC;IAAC,iBAAiB,EAAGoX,oBAAsB;IAAA,GAAMhY;IAAU;AACzH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS6Y,qBAAqB,CAAC7Y,KAAK,EAAE;EAC3C,OAAOY,eAAC,SAAS;IAAC,KAAK,EAAC,yCAAyC;IAAC,iBAAiB,EAAGqX,wBAA0B;IAAA,GAAMjY;IAAU;AAClI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS8Y,iBAAiB,CAAC9Y,KAAK,EAAE;EACvC,OAAOY,eAAC,SAAS;IAAC,KAAK,EAAC,oCAAoC;IAAC,iBAAiB,EAAGsX,oBAAsB;IAAA,GAAMlY;IAAU;AACzH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS+Y,mBAAmB,CAAC/Y,KAAK,EAAE;EACzC,OAAOY,eAAC,SAAS;IAAC,KAAK,EAAC,sCAAsC;IAAC,iBAAiB,EAAGmT,YAAkB;IAAA,GAAM/T;IAAU;AACvH;AAEO,SAASqK,UAAQ,CAACwI,IAAI,EAAE;EAC7B,IAAI,CAACA,IAAI,EAAE;IACT,OAAO,KAAK;;EAGd,IAAIA,IAAI,CAACrS,IAAI,KAAK,UAAU,EAAE;IAC5B,OAAO,CAAC,CAACqS,IAAI,CAAC4B,OAAO,IAAI5B,IAAI,CAACmG,SAAS,CAACrC,QAAQ,CAAC,QAAQ,CAAC;;EAG5D,OAAO,CAAC,CAAC9D,IAAI,CAAC1Q,KAAK,IAAI0Q,IAAI,CAACmG,SAAS,CAACrC,QAAQ,CAAC,QAAQ,CAAC;AAC1D;;AAGA;;AAEA,SAAStU,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAuBA,EAAG,EAAC;AACrC;AAEA,SAASuV,sBAAsB,CAACpX,OAAO,EAAE;EACvC,MAAM;IAAEmF,GAAG;IAAEG;GAAM,GAAGtF,OAAO,CAAC+D,qBAAqB,EAAE;EAErD,OAAO;IACLuB,IAAI,EAAEA,IAAI,GAAGuN,gBAAgB,GAAG,EAAE;IAClC1N,GAAG,EAAEA;GACN;AACH;;AAEA;AACA,SAASkS,aAAa,CAACrX,OAAO,EAAEM,KAAK,EAAE;EACrC,IAAI0Y,UAAU;EAEd,IAAIhZ,OAAO,IAAIA,OAAO,CAACO,IAAI,EAAE;IAC3ByY,UAAU,GAAI,GAAEhZ,OAAO,CAACO,IAAK,KAAI;;EAGnC,OAAQ,GAAEyY,UAAW,GAAE1Y,KAAM,EAAC;AAChC;;ACxtBA,MAAM2Y,cAAc,GAAG,EAAE;AAEzB,MAAMC,mBAAmB,GAAG,EAAE;AAE9B,MAAMC,eAAe,GAAG,EAAE;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACe,SAASC,eAAe,CAACrZ,KAAK,EAAE;EAC7C,MAAM;IACJC,OAAO;IACPC,cAAc;IACdoZ,mBAAmB;IACnBC,MAAM;IACNC,YAAY;IACZC,aAAa;IACbC,iBAAiB;IACjBC,iBAAiB;IACjBC,aAAa;IACbC,aAAa;IACbzY;GACD,GAAGpB,KAAK;;;EAGT,MAAM,CAAEsB,MAAM,EAAEC,SAAS,CAAE,GAAGmB,cAAQ,CAACoX,YAAY,CAACN,YAAY,CAAC,CAAC;;;EAGlEO,qBAAqB,CAAC,MAAM;IAC1B,MAAMC,SAAS,GAAGF,YAAY,CAACN,YAAY,CAAC;IAE5CjY,SAAS,CAACyY,SAAS,CAAC;GACrB,EAAE,CAAER,YAAY,CAAE,CAAC;EAEpBvV,eAAS,CAAC,MAAM;IACd,IAAI,OAAOwV,aAAa,KAAK,UAAU,EAAE;MACvCA,aAAa,CAACnY,MAAM,CAAC;;GAExB,EAAE,CAAEA,MAAM,EAAEmY,aAAa,CAAE,CAAC;EAE7B,MAAMjY,eAAe,GAAG,CAACmF,GAAG,EAAES,YAAY,KAAK;IAC7C,OAAOR,WAAG,CAACtF,MAAM,EAAEqF,GAAG,EAAES,YAAY,CAAC;GACtC;EAED,MAAM3F,eAAe,GAAG,CAACkF,GAAG,EAAE6M,MAAM,KAAK;IACvC,MAAMwG,SAAS,GAAGC,cAAM,CAAC,EAAE,EAAE3Y,MAAM,CAAC;IACpC2F,WAAG,CAAC+S,SAAS,EAAErT,GAAG,EAAE6M,MAAM,CAAC;IAC3BjS,SAAS,CAACyY,SAAS,CAAC;GACrB;EAED,MAAME,aAAa,GAAG;IACpB5Y,MAAM;IACNC,SAAS;IACTC,eAAe;IACfC;GACD;;;EAGD,MAAMV,WAAW,GAAGyF,aAAO,CAAC,MAAM2T,wBAAwB,CAACT,iBAAiB,CAAC,EAAE,CAAEA,iBAAiB,CAAE,CAAC;EAErGzV,eAAS,CAAC,MAAM;IACd,IAAI,OAAO0V,iBAAiB,KAAK,UAAU,EAAE;MAC3CA,iBAAiB,CAAC5Y,WAAW,CAAC;;GAEjC,EAAE,CAAEA,WAAW,EAAE4Y,iBAAiB,CAAE,CAAC;EAGtC,MAAM3Y,mBAAmB,GAAG,CAACc,EAAE,EAAE7B,OAAO,KAAK;IAC3C,OAAOc,WAAW,CAACe,EAAE,CAAC,IAAIf,WAAW,CAACe,EAAE,CAAC,CAAC7B,OAAO,CAAC;GACnD;EAED,MAAMma,kBAAkB,GAAG;IACzBrZ,WAAW;IACXC;GACD;;;EAGD,MAAMW,OAAO,GAAG6E,aAAO,CAAC,MAAM6T,oBAAoB,CAACT,aAAa,CAAC,EAAE,CAAEA,aAAa,CAAE,CAAC;EAErF3V,eAAS,CAAC,MAAM;IACd,IAAI,OAAO4V,aAAa,KAAK,UAAU,EAAE;MACvCA,aAAa,CAAClY,OAAO,CAAC;;GAEzB,EAAE,CAAEA,OAAO,EAAEkY,aAAa,CAAE,CAAC;EAE9B,MAAMjY,eAAe,GAAG,CAACE,EAAE,EAAE7B,OAAO,KAAK;IACvC,OAAO0B,OAAO,CAACG,EAAE,CAAC,IAAIH,OAAO,CAACG,EAAE,CAAC,CAAC7B,OAAO,CAAC;GAC3C;EAED,MAAMqa,cAAc,GAAG;IACrB3Y,OAAO;IACPC;GACD;EAED,MAAM,CAAEV,MAAM,EAAEqZ,SAAS,CAAE,GAAG7X,cAAQ,CAAC,EAAE,CAAC;EAE1C,MAAM8X,WAAW,GAAG,CAAC;IAAEtZ;GAAQ,KAAKqZ,SAAS,CAACrZ,MAAM,CAAC;EAErD4E,QAAQ,CAAC,2BAA2B,EAAE0U,WAAW,EAAEpZ,QAAQ,CAAC;EAE5D,MAAMqZ,aAAa,GAAG;IACpBvZ;GACD;EAED,MAAM8E,YAAY,GAAG;IACnB5E;GACD;EAED,MAAMuJ,sBAAsB,GAAG;IAC7B1K;GACD;;;EAGD,IAAIqZ,mBAAmB,IAAI,CAACrZ,OAAO,EAAE;IACnC,OAAOW,eAAC,WAAW;MAAA,GAAM0Y,mBAAmB,CAACoB,QAAQ;MAAO;;;;EAI9D,IAAIpB,mBAAmB,IAAIqB,eAAO,CAAC1a,OAAO,CAAC,EAAE;IAC3C,OAAOW,eAAC,WAAW;MAAA,GAAM0Y,mBAAmB,CAACsB,WAAW;MAAO;;EAGjE,OACEha,eAACiH,aAAsB,CAAC,QAAQ;IAAC,KAAK,EAAG8C,sBAAwB;IAAA,UAC/D/J,eAAC,aAAa,CAAC,QAAQ;MAAC,KAAK,EAAG6Z,aAAe;MAAA,UAC7C7Z,eAAC,kBAAkB,CAAC,QAAQ;QAAC,KAAK,EAAGwZ,kBAAoB;QAAA,UACvDxZ,eAAC,cAAc,CAAC,QAAQ;UAAC,KAAK,EAAG0Z,cAAgB;UAAA,UAC/C1Z,eAAC,aAAa,CAAC,QAAQ;YAAC,KAAK,EAAGsZ,aAAe;YAAA,UAC7CtZ,eAAC,YAAY,CAAC,QAAQ;cAAC,KAAK,EAAGoF,YAAc;cAAA,UAC3CpF,eAACia,aAAa;gBAAC,OAAO,EAAG5a,OAAS;gBAAA,UAChCU;kBAAK,KAAK,EAAC,sBAAsB;kBAAA,WAC/BC,eAAC,MAAM;oBACL,OAAO,EAAGX,OAAS;oBACnB,cAAc,EAAGC;oBAAmB,EACtCU;oBAAK,KAAK,EAAC,uCAAuC;oBAAA,UAE9C2Y,MAAM,CAAChT,GAAG,CAACuU,KAAK,IAAI;sBAClB,MAAM;wBACJjQ,SAAS,EAAEC,SAAS,GAAGpB,KAAK;wBAC5B5H;uBACD,GAAGgZ,KAAK;sBAET,OACE/P,qBAAC,SAAS;wBAAA,GACH+P,KAAK;wBACV,GAAG,EAAGhZ,EAAI;wBACV,OAAO,EAAG7B;wBAAY;qBAE3B;oBAEC;;;;;;;;IAQY;AAEtC;;AAGA;;AAEA,SAAS6Z,YAAY,CAACiB,SAAS,GAAG,EAAE,EAAEC,QAAQ,GAAG9B,cAAc,EAAE;EAC/D,OAAO;IACL,GAAG8B,QAAQ;IACX,GAAGD;GACJ;AACH;AAEA,SAASZ,wBAAwB,CAACY,SAAS,GAAG,EAAE,EAAE;EAChD,OAAO;IACL,GAAG5B,mBAAmB;IACtB,GAAG4B;GACJ;AACH;AAEA,SAASV,oBAAoB,CAACU,SAAS,GAAG,EAAE,EAAE;EAC5C,OAAO;IACL,GAAG3B,eAAe;IAClB,GAAG2B;GACJ;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAShB,qBAAqB,CAACkB,MAAM,EAAEC,IAAI,EAAE;EAC3C,MAAMC,SAAS,GAAGpY,YAAM,CAAC,KAAK,CAAC;EAE/BqY,qBAAe,CAAC,MAAM;IACpB,IAAID,SAAS,CAACtX,OAAO,EAAE;MACrB,OAAOoX,MAAM,EAAE;KAChB,MAAM;MACLE,SAAS,CAACtX,OAAO,GAAG,IAAI;;GAE3B,EAAEqX,IAAI,CAAC;AACV;;AC7SO,SAASG,cAAc,CAACrb,KAAK,EAAE;EACpC,MAAM;IACJ0Y,KAAK,EAAEtI,SAAS;IAChBhO,QAAQ;IACRkZ,SAAS,GAAG;GACb,GAAGtb,KAAK;EAET,MAAMub,WAAW,GAAGxY,YAAM,CAAC,IAAI,CAAC;EAChC,MAAMyY,OAAO,GAAGzY,YAAM,CAAC,IAAI,CAAC;EAE5B,MAAM,CAAE8G,IAAI,EAAEC,OAAO,CAAE,GAAGpH,cAAQ,CAAC,KAAK,CAAC;EACzC,MAAMqM,KAAK,GAAG,MAAMjF,OAAO,CAAC,KAAK,CAAC;EAElC,SAAS2R,gBAAgB,CAACvY,KAAK,EAAE;IAC/B,IAAIsY,OAAO,CAAC3X,OAAO,IAAI2X,OAAO,CAAC3X,OAAO,CAAC8S,QAAQ,CAACzT,KAAK,CAACoR,MAAM,CAAC,EAAE;MAC7D;;IAGFpR,KAAK,CAAC8B,eAAe,EAAE;IAEvB8E,OAAO,CAACD,IAAI,IAAI,CAACA,IAAI,CAAC;;EAGxB,SAAS6R,aAAa,CAACxY,KAAK,EAAEyY,MAAM,EAAE;IACpCzY,KAAK,CAAC8B,eAAe,EAAE;IAEvB+J,KAAK,EAAE;IACP4M,MAAM,EAAE;;EAGVC,cAAc,CAAC,CAAEL,WAAW,CAAC1X,OAAO,CAAE,EAAE,MAAMkL,KAAK,EAAE,CAAC;EAEtD,OACEpO;IACE,KAAK,EAAGiK,8BAAU,CAAC,sCAAsC,EAAE;MAAEf;KAAM,EAAEuG,SAAS,CAAG;IACjF,OAAO,EAAGqL,gBAAkB;IAC5B,GAAG,EAAGF,WAAa;IAAA,WAEjBnZ,QAAQ,EACVxB;MAAK,KAAK,EAAC,4CAA4C;MAAC,GAAG,EAAG4a,OAAS;MAAA,UACnEF,SAAS,CAAC/U,GAAG,CAAC,CAACsV,IAAI,EAAEC,KAAK,KAC1Blb,eAAC,QAAQ;QAAC,OAAO,EAAG8a,aAAe;QAAC,IAAI,EAAGG;SAAaC,KAAK,CAC9D;MACG;IACF;AAEV;AAEA,SAASC,QAAQ,CAAC;EAAEF,IAAI;EAAEpN;AAAQ,CAAC,EAAE;EACnC,IAAIoN,IAAI,CAACG,SAAS,EAAE;IAClB,OAAOpb;MAAK,KAAK,EAAC;MAA+G;;EAGnI,IAAIib,IAAI,CAACF,MAAM,EAAE;IACf,OAAQ/a;MACN,KAAK,EAAC,6GAA6G;MACnH,OAAO,EAAGsC,KAAK,IAAIuL,OAAO,CAACvL,KAAK,EAAE2Y,IAAI,CAACF,MAAM,CAAG;MAAA,UAE/CE,IAAI,CAAC7S;MACC;;EAGX,OAAOpI;IACL,KAAK,EAAC,iDAAiD;IAAA,UAEtDib,IAAI,CAAC7S;IACF;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS4S,cAAc,CAACK,eAAe,EAAElW,QAAQ,EAAE;EACjD9B,eAAS,CAAC,MAAM;;AAGlB;AACA;IACI,SAASiY,QAAQ,CAAChZ,KAAK,EAAE;MACvB,IAAI+Y,eAAe,CAACvR,IAAI,CAACzK,OAAO,IAAIA,OAAO,IAAIA,OAAO,CAAC0W,QAAQ,CAACzT,KAAK,CAACoR,MAAM,CAAC,CAAC,EAAE;QAC9E;;MAGFvO,QAAQ,EAAE;;IAGZ3B,QAAQ,CAACQ,gBAAgB,CAAC,OAAO,EAAEsX,QAAQ,EAAE;MAAEC,OAAO,EAAE;KAAM,CAAC;IAE/D,OAAO,MAAM/X,QAAQ,CAACS,mBAAmB,CAAC,OAAO,EAAEqX,QAAQ,EAAE;MAAEC,OAAO,EAAE;KAAM,CAAC;GAChF,EAAE,CAAE,GAAGF,eAAe,EAAElW,QAAQ,CAAE,CAAC;AACtC;;ACzGO,SAASqW,YAAY,CAACpc,KAAK,EAAE;EAClC,MAAM;IACJoC,QAAQ,GAAG,IAAI;IACfsW,KAAK,EAAE2D,SAAS;IAChB5N,OAAO,GAAG,MAAM,EAAE;IAClB,GAAG6N;GACJ,GAAGtc,KAAK;EAET,OAAOY;IAAA,GACA0b,UAAU;IACf,OAAO,EAAG7N,OAAS;IACnB,KAAK,EAAG7D,8BAAU,CAAC,0CAA0C,EAAEyR,SAAS,CAAG;IAAA,UACzEja;IACK;AACX;;ACEe,SAASma,gBAAgB,CAACvc,KAAK,EAAE;EAC9C,MAAM;IACJC,OAAO;IACP4I,OAAO,GAAG,EAAE;IACZ/G,EAAE;IACFvB,KAAK;IACLsJ,IAAI,EAAEF,UAAU;IAChB6S;GACD,GAAGxc,KAAK;EAET,MAAM,CAAE6J,IAAI,EAAEC,OAAO,CAAE,GAAGpH,cAAQ,CAACiH,UAAU,CAAC;EAE9C,MAAMI,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAI,CAAC;EAEvC,MAAM;IAAEjC;GAAQ,GAAG7F,gBAAU,CAAC8F,aAAsB,CAAC;EAErD,MAAM8C,sBAAsB,GAAG;IAC7B,GAAG5I,gBAAU,CAAC8F,aAAsB,CAAC;IACrCD,MAAM,EAAEL,iBAAW,CAAC,MAAM;MACxBuC,OAAO,CAAC,IAAI,CAAC;MAEb,IAAI9B,kBAAU,CAACJ,MAAM,CAAC,EAAE;QACtBA,MAAM,EAAE;;KAEX,EAAE,CAAEA,MAAM,EAAEkC,OAAO,CAAE;GACvB;;;EAGD,MAAM2S,gBAAgB,GAAG,SAAS;EAElC,OACE9b;IACE,iBAAgBmB,EAAI;IACpB,KAAK,EAAG8I,8BAAU,CAChB,wCAAwC,EACxCf,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;IAAA,WACHlJ;MAAK,KAAK,EAAC,+CAA+C;MAAC,OAAO,EAAGoJ,UAAY;MAAA,WAC/EnJ;QACE,KAAK,EAAGL,KAAK,IAAIkc,gBAAkB;QACnC,KAAK,EAAG7R,8BAAU,CAChB,qDAAqD,EACrD,CAACrK,KAAK,IAAI,OAAO,CAChB;QAAA,UACDA,KAAK,IAAIkc;QACP,EACN7b;QACE,KAAK,EAAC,kBAAkB;QACxB,KAAK,EAAC,0EAA0E;QAAA,UAEhFA,eAAC,SAAS;UAAC,KAAK,EAAGiJ,IAAI,GAAG,iCAAiC,GAAG;;QACvD,EAEP2S,MAAM,GAGF5b;QAAQ,KAAK,EAAC,aAAa;QAAC,KAAK,EAAC,mCAAmC;QAAC,OAAO,EAAG4b,MAAQ;QAAA,UACtF5b,eAAC,UAAU;QACJ,GAET,IAAI;MAEN,EACNA;MAAK,KAAK,EAAGgK,8BAAU,CACrB,gDAAgD,EAChDf,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;MAAA,UACDjJ,eAACiH,aAAsB,CAAC,QAAQ;QAAC,KAAK,EAAG8C,sBAAwB;QAAA,UAE7D9B,OAAO,CAACtC,GAAG,CAACyC,KAAK,IAAI;UACnB,MAAM;YACJ6B,SAAS,EAAEC,SAAS;YACpBhJ;WACD,GAAGkH,KAAK;UAET,OACE+B,qBAAC,SAAS;YAAA,GACH/B,KAAK;YACV,OAAO,EAAG/I,OAAS;YACnB,GAAG,EAAG6B;YAAO;SAElB;;MAGD;IACF;AAEV;;AC1Fe,SAAS4a,QAAQ,CAAC1c,KAAK,EAAE;EACtC,MAAM;IACJ2c,cAAc;IACdC;GACD,GAAG5c,KAAK;;;EAGTiE,eAAS,CAAC,MAAM;IACd,IAAI2Y,QAAQ,IAAID,cAAc,EAAE;MAC9B,MAAM3T,KAAK,GAAGT,YAAQ,CAAE,mBAAkBoU,cAAe,IAAG,CAAC;MAE7D,MAAME,cAAc,GAAGtU,YAAQ,CAAC,6BAA6B,EAAES,KAAK,CAAC;MAErE,IAAI6T,cAAc,EAAE;QAElB,IAAI7U,kBAAU,CAAC6U,cAAc,CAAC5U,MAAM,CAAC,EAAE;UACrC4U,cAAc,CAAC5U,MAAM,EAAE;SACxB,MAAM,IAAID,kBAAU,CAAC6U,cAAc,CAAC/U,KAAK,CAAC,EAAE;UAC3C+U,cAAc,CAAC/U,KAAK,EAAE;;;;GAK7B,EAAE,CAAE8U,QAAQ,EAAED,cAAc,CAAE,CAAC;EAGhC,OACE/b;IAAK,KAAK,EAAC,gCAAgC;IAAA,UACzCA,eAAC,gBAAgB;MAAA,GACVZ,KAAK;MACV,IAAI,EAAG4c;;IACL;AAGV;;ACfA,MAAMtR,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACe,SAASwR,SAAS,CAAC9c,KAAK,EAAE;EACvC,MAAM;IACJ+c,GAAG;IACH9c,OAAO;IACP6B,EAAE;IACFkb,KAAK;IACLzc,KAAK;IACLoJ,UAAU,GAAG,IAAI;IACjBsT,UAAU,GAAG;GACd,GAAGjd,KAAK;EAGT,MAAM4J,QAAQ,GAAG7G,YAAM,CAAC,IAAI,CAAC;EAE7B,MAAM,CAAE8G,IAAI,EAAEC,OAAO,CAAE,GAAG5C,cAAc,CACtC,CAAE,QAAQ,EAAEpF,EAAE,EAAE,MAAM,CAAE,EACxB,KAAK,CACN;EAED,MAAM,CAAEoI,MAAM,EAAE9B,SAAS,CAAE,GAAG1F,cAAQ,CAAC,KAAK,CAAC;EAE7C,MAAMkF,MAAM,GAAGL,iBAAW,CAAC,MAAMuC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAEA,OAAO,CAAE,CAAC;EAE5D,MAAM,CAAEoT,QAAQ,EAAEC,WAAW,CAAE,GAAGza,cAAQ,CAAC,EAAE,CAAC;EAC9C,MAAM,CAAE0a,YAAY,EAAEC,eAAe,CAAE,GAAG3a,cAAQ,CAAC,KAAK,CAAC;;;EAGzD,MAAM,CAAE4a,YAAY,EAAEC,eAAe,CAAE,GAAG7a,cAAQ,CAAC,KAAK,CAAC;EAEzD,MAAM8a,SAAS,GAAG/V,WAAW,CAACuV,KAAK,CAAC;EACpC,MAAM/J,WAAW,GAAGxL,WAAW,CAACxH,OAAO,CAAC;EAExC,MAAMwd,cAAc,GAAGxd,OAAO,KAAKgT,WAAW;EAC9C,MAAMyK,mBAAmB,GAAG,CAACD,cAAc,KAAKR,UAAU,IAAItT,UAAU,CAAC;;;EAGzE,IAAI8T,cAAc,EAAE;IAClBN,WAAW,CAACQ,cAAc,CAACV,UAAU,GAAGW,SAAS,CAACZ,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAC;;;;;;EAMpE/Y,eAAS,CAAC,MAAM;IACd,IAAI,CAACuZ,SAAS,IAAI,CAACP,UAAU,EAAE;MAC7BE,WAAW,CAACQ,cAAc,CAACX,KAAK,CAAC,CAAC;;GAErC,EAAE,CAAEA,KAAK,EAAE/c,OAAO,CAAE,CAAC;;;EAGtBgE,eAAS,CAAC,MAAM;;IAGdsZ,eAAe,CAAC,KAAK,CAAC;IAEtB,IAAIG,mBAAmB,IAAIF,SAAS,IAAIR,KAAK,CAAC/F,MAAM,GAAGuG,SAAS,CAACvG,MAAM,EAAE;MAEvE,IAAI8F,GAAG,GAAG,EAAE;MAEZC,KAAK,CAACjU,OAAO,CAAC8S,IAAI,IAAI;QACpB,IAAI,CAACqB,QAAQ,CAACW,QAAQ,CAAChC,IAAI,CAAC/Z,EAAE,CAAC,EAAE;UAC/Bib,GAAG,CAACe,IAAI,CAACjC,IAAI,CAAC/Z,EAAE,CAAC;;OAEpB,CAAC;MAEF,IAAIic,WAAW,GAAGb,QAAQ;;;;;;;MAO1B,IAAII,YAAY,IAAI,CAACzT,IAAI,IAAIF,UAAU,EAAE;QACvCI,UAAU,EAAE;;;;MAId,IAAI,CAACF,IAAI,IAAIoT,UAAU,EAAE;QACvBc,WAAW,GAAGJ,cAAc,CAACC,SAAS,CAACZ,KAAK,CAAC,CAAC;;;;MAIhDe,WAAW,GAAGA,WAAW,CAACC,MAAM,CAACnC,IAAI,IAAI,CAACkB,GAAG,CAACc,QAAQ,CAAChC,IAAI,CAAC,CAAC;MAC7D,IAAIoB,UAAU,EAAE;QACdc,WAAW,CAACE,OAAO,CAAC,GAAGlB,GAAG,CAAC;OAC5B,MAAM;QACLgB,WAAW,CAACD,IAAI,CAAC,GAAGf,GAAG,CAAC;;MAG1BI,WAAW,CAACY,WAAW,CAAC;MACxBV,eAAe,CAACC,YAAY,CAAC;KAC9B,MAAM;MACLD,eAAe,CAAC,KAAK,CAAC;;GAEzB,EAAE,CAAEL,KAAK,EAAEnT,IAAI,EAAE6T,mBAAmB,EAAEJ,YAAY,CAAE,CAAC;;;EAGtDrZ,eAAS,CAAC,MAAM;IAEd,IAAIgZ,UAAU,IAAIpT,IAAI,IAAI,CAACuT,YAAY,EAAE;MACvCD,WAAW,CAACQ,cAAc,CAACC,SAAS,CAACZ,KAAK,CAAC,CAAC,CAAC;;GAEhD,EAAE,CAAEnT,IAAI,EAAEoT,UAAU,CAAE,CAAC;;;EAGxBhZ,eAAS,CAAC,MAAM;IACd,IAAIyZ,mBAAmB,IAAIF,SAAS,IAAIR,KAAK,CAAC/F,MAAM,GAAGuG,SAAS,CAACvG,MAAM,EAAE;MACvE,IAAIiH,IAAI,GAAG,EAAE;MAEbhB,QAAQ,CAACnU,OAAO,CAACoV,CAAC,IAAI;QACpB,IAAIC,OAAO,CAACpB,KAAK,EAAEmB,CAAC,CAAC,EAAE;UACrBD,IAAI,CAACJ,IAAI,CAACK,CAAC,CAAC;;OAEf,CAAC;MAEFhB,WAAW,CAACe,IAAI,CAAC;;GAEpB,EAAE,CAAElB,KAAK,EAAEU,mBAAmB,CAAE,CAAC;;;EAGlCxV,6BAA6B,CAAC0B,QAAQ,EAAE,2CAA2C,EAAExB,SAAS,CAAC;EAE/F,MAAM2B,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAI,CAAC;EAEvC,MAAMwU,QAAQ,GAAG,CAAC,CAACrB,KAAK,CAAC/F,MAAM;EAE/B,MAAMtM,sBAAsB,GAAG;IAC7B,GAAG5I,gBAAU,CAAC8F,aAAsB,CAAC;IACrCD;GACD;EAED,MAAM0W,cAAc,GAAG9a,CAAC,IAAI;IAC1B+Z,eAAe,CAAC,IAAI,CAAC;IACrBR,GAAG,CAACvZ,CAAC,CAAC;GACP;EAED,MAAMgH,SAAS,GAAG3E,SAAS,EAAE;EAC7B,MAAM0Y,QAAQ,GAAGvB,KAAK,CAACtS,IAAI,CAACmR,IAAI,IAAI;IAClC,IAAIrR,SAAS,CAACqR,IAAI,CAAC/Z,EAAE,CAAC,EAAE;MACtB,OAAO,IAAI;;IAGb,IAAI,CAAC+Z,IAAI,CAAChT,OAAO,EAAE;MACjB;;;;IAIF,OAAOgT,IAAI,CAAChT,OAAO,CAAC6B,IAAI,CAAC1B,KAAK,IAAIwB,SAAS,CAACxB,KAAK,CAAClH,EAAE,CAAC,CAAC;GACvD,CACA;EAED,OAAOnB;IAAK,KAAK,EAAC,4BAA4B;IAAC,iBAAgB,QAAQ,GAAGmB,EAAI;IAAC,GAAG,EAAG8H,QAAU;IAAA,WAC7FjJ;MACE,KAAK,EAAGiK,8BAAU,CAChB,mCAAmC,EACnCyT,QAAQ,GAAG,EAAE,GAAG,OAAO,EACtBA,QAAQ,IAAIxU,IAAI,GAAI,MAAM,GAAG,EAAE,EAC/BK,MAAM,IAAIL,IAAI,GAAI,QAAQ,GAAG,EAAE,CAC/B;MACH,OAAO,EAAGwU,QAAQ,GAAGtU,UAAU,GAAGuB,MAAM;MAAA,WACxC1K;QACE,KAAK,EAAGZ,KAAK,CAAC2B,OAAO,GAAG,IAAI,GAAGpB,KAAO;QACtC,cAAaA,KAAO;QACpB,KAAK,EAAC,yCAAyC;QAAA,UAE/CK,eAAC0B,cAAO;UAAC,KAAK,EAAGtC,KAAK,CAAC2B,OAAS;UAAC,KAAK,EAAG,QAAQ,GAAGG,EAAI;UAAC,OAAO,EAAG7B,OAAS;UAAC,MAAM,EAAG2J,QAAU;UAAA,UAC5FrJ;;QAEA,EACNI;QAAK,KAAK,EAAC,2CAA2C;QAAA,WAElDoc,GAAG,GAECpc;UACE,KAAK,EAAC,sBAAsB;UAC5B,KAAK,EAAC,yEAAyE;UAC/E,OAAO,EAAG2d,cAAgB;UAAA,WAE1B1d,eAAC,UAAU,KAAG,EAEZ,CAACyd,QAAQ,GACPzd;YAAM,KAAK,EAAC,sCAAsC;YAAA;YAAc,GAE9D,IAAI;UAEH,GAET,IAAI,EAGRyd,QAAQ,GAEJzd;UACE,KAAK,EAAI,iBAAgBoc,KAAK,CAAC/F,MAAO,QAAO+F,KAAK,CAAC/F,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,EAAG,EAAG;UAC7E,KAAK,EACHrM,8BAAU,CACR,iCAAiC,EACjC2T,QAAQ,GAAG,wCAAwC,GAAG,EAAE,CAE3D;UAAA,UAECvB,KAAK,CAAC/F;UACJ,GAEN,IAAI,EAGRoH,QAAQ,GAEJzd;UACE,KAAK,EAAC,gBAAgB;UACtB,KAAK,EAAC,qEAAqE;UAAA,UAE3EA,eAAC,SAAS;YAAC,KAAK,EAAGiJ,IAAI,GAAG,iCAAiC,GAAG;;UACvD,GAET,IAAI;QAEN;MACF,EACNjJ;MAAK,KAAK,EAAGgK,8BAAU,CACrB,2BAA2B,EAC3Bf,IAAI,IAAIwU,QAAQ,GAAG,MAAM,GAAG,EAAE,CAC7B;MAAA,UACDzd,eAACiH,aAAsB,CAAC,QAAQ;QAAC,KAAK,EAAG8C,sBAAwB;QAAA,UAG7DuS,QAAQ,CAAC3W,GAAG,CAAC,CAAC4X,CAAC,EAAErC,KAAK,KAAK;UACzB,MAAMD,IAAI,GAAGuC,OAAO,CAACpB,KAAK,EAAEmB,CAAC,CAAC;UAE9B,IAAI,CAACtC,IAAI,EAAE;YACT;;UAGF,MAAM;YAAE/Z;WAAI,GAAG+Z,IAAI;;;;UAInB,MAAMe,QAAQ,GAAGQ,YAAY;UAE7B,OACErS,qBAAC,QAAQ;YAAA,GACF8Q,IAAI;YACT,QAAQ,EAAGe,QAAU;YACrB,OAAO,EAAG3c,OAAS;YACnB,KAAK,EAAG6b,KAAO;YACf,GAAG,EAAGha;YAAO;SAElB;;MAGD;IACF;AACR;;AAGA;;AAEA;AACA;AACA;AACA,SAAS8b,SAAS,CAACZ,KAAK,EAAE;EACxB,OAAOwB,cAAM,CAACxB,KAAK,EAAEyB,CAAC,IAAIA,CAAC,CAACle,KAAK,CAACme,WAAW,EAAE,CAAC;AAClD;AAEA,SAASN,OAAO,CAACpB,KAAK,EAAElb,EAAE,EAAE;EAC1B,OAAOsI,YAAI,CAAC4S,KAAK,EAAEyB,CAAC,IAAIA,CAAC,CAAC3c,EAAE,KAAKA,EAAE,CAAC;AACtC;AAEA,SAAS6b,cAAc,CAACX,KAAK,EAAE;EAC7B,OAAOA,KAAK,CAACzW,GAAG,CAACkY,CAAC,IAAIA,CAAC,CAAC3c,EAAE,CAAC;AAC7B;;ACzSA,SAAS6c,QAAQ,CAAC3e,KAAK,EAAE;EACvB,MAAM;IACJ8B,EAAE;IACFvB,KAAK;IACL0M,QAAQ;IACRhB,QAAQ;IACR9J,KAAK,GAAG,KAAK;IACbgS,OAAO;IACPC,MAAM;IACNzS;GACD,GAAG3B,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAMyc,oBAAoB,GAAG,CAAC;IAAEtK;GAAQ,KAAK;IAC3CrH,QAAQ,CAACqH,MAAM,CAACG,OAAO,CAAC;GACzB;EAED,MAAM0D,YAAY,GAAG3U,CAAC,IAAI;IACxBob,oBAAoB,CAACpb,CAAC,CAAC;IACvBqJ,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAED8B,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,MAAMuF,GAAG,GAAGC,iBAAiB,CAAC7F,EAAE,CAAC;EAEjC,OACEnB;IAAK,KAAK,EAAC,+BAA+B;IAAA,WACxCC;MACE,GAAG,EAAG8G,GAAK;MACX,EAAE,EAAGrF,UAAQ,CAACP,EAAE,CAAG;MACnB,IAAI,EAAGA,EAAI;MACX,OAAO,EAAGqS,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAC,UAAU;MACf,KAAK,EAAC,4BAA4B;MAClC,QAAQ,EAAG+D,YAAc;MACzB,OAAO,EAAGvL,UAAY;MACtB,QAAQ,EAAGX;MAAa,EAC1BrL;MAAO,GAAG,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC5DlB,eAAC0B,cAAO;QAAC,KAAK,EAAGX,OAAS;QAAC,KAAK,EAAGG,EAAI;QAAC,OAAO,EAAG9B,KAAK,CAACC,OAAS;QAAA,UAC7DM;;MAEE;IACJ;AAEV;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASse,aAAa,CAAC7e,KAAK,EAAE;EAC3C,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACXR,KAAK;IACLiU,QAAQ;IACRrH,QAAQ;IACRlB,QAAQ;IACRkI,OAAO;IACPC,MAAM;IACNzS;GACD,GAAG3B,KAAK;EAET,MAAMmC,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE/B,MAAMwV,KAAK,GAAG7P,QAAQ,CAAC9D,EAAE,CAAC;EAE1B,OACEnB;IAAK,KAAK,EAAC,gEAAgE;IAAC,iBAAgBmB,EAAI;IAAA,WAC9FlB,eAAC,QAAQ;MACP,QAAQ,EAAGqL,QAAU;MACrB,EAAE,EAAGnK,EAAI;MAET,KAAK,EAAGvB,KAAO;MACf,QAAQ,EAAG4M,QAAU;MACrB,OAAO,EAAGgH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGjS,KAAO;MACf,OAAO,EAAGR,OAAS;MACnB,OAAO,EAAG1B;OAPJA,OAAO,CAOS,EACtBwV,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAG6U;MAAa,EAClE7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASsJ,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC4B,OAAO;AAC/B;;AAGA;;AAEA,SAASpS,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;ACxHA,MAAMwJ,IAAI,GAAG,MAAM,EAAG;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASwT,eAAe,CAAC9e,KAAK,EAAE;EAC7C,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACX4T,QAAQ;IACR1I,QAAQ;IACR1L,KAAK;IACLiU,QAAQ;IACRrH,QAAQ;IACRjB,gBAAgB;IAChBkJ,QAAQ;IACRjS,IAAI,GAAGmI;GACR,GAAGtL,KAAK;EAET,MAAM,CAAEsY,eAAe,EAAEC,kBAAkB,CAAE,GAAG7V,cAAQ,CAAC,IAAI,CAAC;EAC9D,MAAM,CAAE4S,UAAU,EAAEC,aAAa,CAAE,GAAG7S,cAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIP,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE7BgE,eAAS,CAAC,MAAM;IACd,IAAI+D,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxB,MAAMI,kBAAkB,GAAGJ,QAAQ,CAACjT,KAAK,CAAC,IAAI,IAAI;MAElDoW,kBAAkB,CAAC/C,kBAAkB,CAAC;;GAEzC,EAAE,CAAErT,KAAK,CAAE,CAAC;EAEb,MAAM6J,OAAO,GAAGzC,iBAAiB,CAAE/B,QAAQ,IAAK;IAC9C,IAAIgO,kBAAkB,GAAG,IAAI;IAE7B,IAAIxN,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxBI,kBAAkB,GAAGJ,QAAQ,CAAC5N,QAAQ,CAAC,IAAI,IAAI;;;;IAIjD,IAAIA,QAAQ,KAAKrF,KAAK,EAAE;MACtBgL,QAAQ,CAAC3F,QAAQ,EAAEgO,kBAAkB,CAAC;;IAGxC+C,kBAAkB,CAAC/C,kBAAkB,CAAC;GACvC,CAAC;EAEF,MAAMG,OAAO,GAAGpO,iBAAW,CAACiR,GAAG,IAAI;IACjCjD,aAAa,CAACiD,GAAG,CAAC;GACnB,EAAE,EAAE,CAAC;EAEN,MAAMC,cAAc,GAAG7S,QAAQ,CAAC9D,EAAE,CAAC;EAEnC,MAAM2T,KAAK,GAAGH,UAAU,IAAImD,cAAc,IAAIH,eAAe;EAE7D,OACE3X;IACE,KAAK,EAAGiK,8BAAU,CAChB,4BAA4B,EAC5B6K,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgB3T,EAAI;IAAA,WACpBlB,eAAC,UAAU;MACT,QAAQ,EAAG+T,QAAU;MACrB,QAAQ,EAAG1I,QAAU;MACrB,EAAE,EAAGnK,EAAI;MAET,KAAK,EAAGvB,KAAO;MACf,OAAO,EAAGyL,OAAS;MACnB,OAAO,EAAG2J,OAAS;MACnB,IAAI,EAAGxS,IAAM;MACb,KAAK,EAAGhB,KAAO;MACf,gBAAgB,EAAG+J;OANbjM,OAAO,CAM2B,EACzCwV,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAE6U;MAAY,EAC/D7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEA,SAASge,UAAU,CAAC/e,KAAK,EAAE;EACzB,MAAM;IACJ2U,QAAQ;IACR7S,EAAE;IACFvB,KAAK;IACLyL,OAAO;IACP2J,OAAO;IACPxT,KAAK,GAAG,EAAE;IACV8J,QAAQ,GAAG,KAAK;IAChBC;GACD,GAAGlM,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAM0R,SAAS,GAAGlM,iBAAiB,CAAC7F,EAAE,CAAC;EACvC,MAAMiU,YAAY,GAAGhT,YAAM,EAAE;EAE7B,MAAM,CAAE+E,KAAK,EAAEuO,SAAS,CAAE,GAAG3T,cAAQ,CAACiJ,SAAS,CAAC;EAEhD,MAAM8K,QAAQ,GAAG,CAAC7K,MAAM,GAAG,CAAC,KAAK;IAC/B,MAAM8K,QAAQ,GAAGX,YAAY,CAAClS,OAAO,CAAC8S,QAAQ,CAACvS,QAAQ,CAACC,aAAa,CAAC;;;IAGtE,MAAMgM,QAAQ,GAAGqG,QAAQ,GAAGtS,QAAQ,CAACC,aAAa,CAACuS,cAAc,GAAG/K,QAAQ;IAE5EwK,SAAS,CAAChG,QAAQ,GAAGzE,MAAM,CAAC;GAC7B;EAED,MAAMyI,mBAAmB,GAAG7N,aAAO,CAAC,MAAM;IACxC,OAAOmO,QAAQ,CAAEnN,QAAQ,IAAKwE,OAAO,CAACxE,QAAQ,CAACyP,MAAM,GAAGzP,QAAQ,GAAGmE,SAAS,CAAC,CAAC;GAC/E,EAAE,CAAEK,OAAO,EAAE2I,QAAQ,CAAE,CAAC;EAEzB,MAAM7H,WAAW,GAAGtF,QAAQ,IAAI;IAC9B6M,mBAAmB,CAAC7M,QAAQ,CAAC;IAC7BqF,aAAa,CAACrF,QAAQ,CAAC;GACxB;EAED,MAAMuP,UAAU,GAAGxN,iBAAiB,CAACyN,IAAI,IAAI;IAE3C,MAAM9V,MAAM,GAAG8V,IAAI,IAAIA,IAAI,CAACC,MAAM,IAAID,IAAI,CAACgH,MAAM,CAACxa,CAAC,IAAIA,CAAC,CAACwb,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE;IAEpF,IAAI,CAAC9d,MAAM,CAAC+V,MAAM,EAAE;MAClBtB,OAAO,CAAChK,SAAS,CAAC;MAClB;;IAGF,MAAM8J,KAAK,GAAGuB,IAAI,CAAC,CAAC,CAAC;IACrB,MAAME,OAAO,GAAI,GAAEzB,KAAK,CAACzG,MAAO,KAAIyG,KAAK,CAACyB,OAAQ,EAAC;IAEnDvB,OAAO,CAACuB,OAAO,CAAC;GACjB,CAAC;EAEFjT,eAAS,CAAC,MAAM;IACd,IAAI,OAAO6D,KAAK,KAAK,WAAW,EAAE;MAChC+L,SAAS,CAAChQ,OAAO,CAACiE,KAAK,CAACA,KAAK,CAAC;MAC9BuO,SAAS,CAAC1K,SAAS,CAAC;;GAEvB,EAAE,CAAE7D,KAAK,CAAE,CAAC;EAEb7D,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAEFC,aAAa,CAAC1K,KAAK,GAAGA,KAAK,GAAG,EAAE,CAAC;GAClC,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACExB;IAAK,KAAK,EAAC,8BAA8B;IAAA,WACvCC;MAAO,EAAE,EAAGqe,aAAa,CAACnd,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAC,OAAO,EAAG,MAAM2U,QAAQ,EAAI;MAAA,UAC5FlW;MACK,EACRK;MAAK,KAAK,EAAC,oCAAoC;MAAC,GAAG,EAAGmV,YAAc;MAAA,UAClEnV,eAACmT,YAAgB;QACf,IAAI,EAAGjS,EAAI;QACX,OAAO,EAAGgL,WAAa;QACvB,iBAAiB,EAAG;UAAE,iBAAiB,EAAEmS,aAAa,CAACnd,EAAE;SAAK;QAC9D,QAAQ,EAAGmK,QAAU;QACrB,MAAM,EAAG8K,UAAY;QACrB,KAAK,EAAGnK,UAAY;QACpB,GAAG,EAAGiH,SAAW;QACjB,gBAAgB,EAAG3H;;MAEjB;IACF;AAEV;AAEO,SAAS7B,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,KAAK,CAAC,CAACA,IAAI,CAAC1Q,KAAK,IAAI0Q,IAAI,CAACmG,SAAS,CAACrC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpE;;AAEA;;AAEA,SAASsI,aAAa,CAACnd,EAAE,EAAE;EACzB,OAAQ,gCAA+BA,EAAG,QAAO;AACnD;;ACxJe,SAASod,IAAI,CAAClf,KAAK,EAAE;EAClC,MAAM;IACJ8B,EAAE;IACF7B,OAAO;IACP+c,KAAK,GAAG,EAAE;IACVnS,SAAS;IACTtK,KAAK,GAAG,SAAS;IACjBsJ,IAAI,EAAEF,UAAU;IAChBwV,KAAK;IACLC,QAAQ;IACRzC,cAAc;IACd0C,SAAS;IACT,GAAGC;GACJ,GAAGtf,KAAK;EAET,MAAM,CAAE6J,IAAI,EAAEC,OAAO,CAAE,GAAGpH,cAAQ,CAAC,CAAC,CAACiH,UAAU,CAAC;EAEhD,MAAM0U,QAAQ,GAAG,CAAC,CAACrB,KAAK,CAAC/F,MAAM;EAC/B,MAAMlN,UAAU,GAAG,MAAMsU,QAAQ,IAAIvU,OAAO,CAAC,CAACD,IAAI,CAAC;EAEnD,MAAM0V,OAAO,GAAG,CAAC9X,WAAW,CAACoC,IAAI,CAAC,IAAIA,IAAI;EAC1C,MAAM4T,cAAc,GAAGhW,WAAW,CAACxH,OAAO,CAAC,KAAKA,OAAO;EACvD,MAAMuf,WAAW,GAAGD,OAAO,IAAI9B,cAAc;EAC7C,MAAMgC,WAAW,GAAGC,cAAc,CAAC1C,KAAK,EAAEqC,SAAS,EAAEG,WAAW,CAAC;EAEjE,MAAMG,QAAQ,GAAGC,WAAW,CAAC5C,KAAK,EAAES,cAAc,CAAC;EAEnDxZ,eAAS,CAAC,MAAM;IACd,IAAI4F,IAAI,IAAI,CAACwU,QAAQ,EAAE;MACrBvU,OAAO,CAAC,KAAK,CAAC;;GAEjB,EAAE,CAAED,IAAI,EAAEwU,QAAQ,CAAE,CAAC;;;AAGxB;AACA;EACE,SAASwB,OAAO,CAAC3c,KAAK,EAAE;IACtBA,KAAK,CAAC8B,eAAe,EAAE;IACvBma,KAAK,EAAE;IAEP,IAAI,CAACtV,IAAI,EAAE;MACTC,OAAO,CAAC,IAAI,CAAC;;;EAIjB,OACEnJ;IACE,iBAAgBmB,EAAI;IACpB,KAAK,EAAG8I,8BAAU,CAChB,4BAA4B,EAC5B,iCAAiC,EACjCyT,QAAQ,GAAG,EAAE,GAAG,OAAO,EACvBxU,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;IAAA,WACHlJ;MAAK,KAAK,EAAC,wCAAwC;MAAC,OAAO,EAAGoJ,UAAY;MAAA,WACxEnJ;QACE,KAAK,EAAGL,KAAO;QACf,KAAK,EAAGqK,8BAAU,CAChB,8CAA8C,EAC9Cf,IAAI,IAAI,MAAM,CACb;QAAA,UACDtJ;QACE,EACNI;QACE,KAAK,EAAC,gDAAgD;QAAA,WAEtDA;UACE,KAAK,EAAC,sBAAsB;UAC5B,OAAO,EAAGkf,OAAS;UACnB,KAAK,EAAC,gCAAgC;UAAA,WAEtCjf,eAAC,UAAU,KAAG,EAEZ,CAACyd,QAAQ,GACPzd;YAAM,KAAK,EAAC,sCAAsC;YAAA;YAAc,GAE9D,IAAI;UAEH,EAEPyd,QAAQ,IACNzd;UACE,KAAK,EAAI,iBAAgBoc,KAAK,CAAC/F,MAAO,QAAO+F,KAAK,CAAC/F,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,EAAG,EAAG;UAC7E,KAAK,EAAC,iCAAiC;UAAA,UAErC+F,KAAK,CAAC/F;UAEX,EAGDoH,QAAQ,IACNzd;UACE,KAAK,EAAC,kBAAkB;UACxB,KAAK,EAAC,4BAA4B;UAAA,UAElCA,eAAC,SAAS;YAAC,KAAK,EAAGiJ,IAAI,GAAG,iCAAiC,GAAG;;UAEjE;QAEC;MACF,EAEJwU,QAAQ,IACNzd,eAAC,SAAS;MAAA,GACH0e,SAAS;MACd,cAAc,EAAG3C,cAAgB;MACjC,SAAS,EAAG9R,SAAW;MACvB,OAAO,EAAG5K,OAAS;MACnB,EAAE,EAAG6B,EAAI;MACT,KAAK,EAAG2d,WAAa;MACrB,QAAQ,EAAGE,QAAU;MACrB,QAAQ,EAAGP,QAAU;MACrB,IAAI,EAAGvV;MAEV;IAEC;AAEV;AAEA,SAASiW,SAAS,CAAC9f,KAAK,EAAE;EACxB,MAAM;IACJ2c,cAAc;IACd9R,SAAS,EAAEC,SAAS;IACpB7K,OAAO;IACP6B,EAAE;IACFkb,KAAK;IACL2C,QAAQ;IACRP,QAAQ;IACRvV,IAAI;IACJ,GAAGyV;GACJ,GAAGtf,KAAK;EAET,MAAM0G,MAAM,GAAGL,aAAa,EAAE;EAE9B,MAAM0Z,OAAO,GAAGJ,QAAQ,CAAC,CAAC,CAAC;EAE3B1b,eAAS,CAAC,MAAM;IACd,IAAI8b,OAAO,IAAIpD,cAAc,EAAE;;MAG7B,MAAM3T,KAAK,GAAGT,YAAQ,CAAE,mBAAkBzG,EAAG,IAAG,CAAC;;;MAGjD,MAAMke,QAAQ,GAAG,OAAOrD,cAAe,KAAK,SAAS,GACnD,6BAA6B,GAC7BA,cAAc;MAChB,MAAME,cAAc,GAAGtU,YAAQ,CAACyX,QAAQ,EAAEhX,KAAK,CAAC;;;MAGhD,IAAI6T,cAAc,EAAE;QAElB,IAAI7U,kBAAU,CAAC6U,cAAc,CAAC5U,MAAM,CAAC,EAAE;UACrC4U,cAAc,CAAC5U,MAAM,EAAE;SACxB,MAAM,IAAID,kBAAU,CAAC6U,cAAc,CAAC/U,KAAK,CAAC,EAAE;UAC3C+U,cAAc,CAAC/U,KAAK,EAAE;;;;GAK7B,EAAE,CAAEiY,OAAO,EAAEpD,cAAc,EAAE7a,EAAE,CAAE,CAAC;EAEnC,OAAOlB;IAAI,KAAK,EAAGgK,8BAAU,CAC3B,uCAAuC,EACvCf,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;IAAA,UAECmT,KAAK,CAACzW,GAAG,CAAC,CAACsV,IAAI,EAAEC,KAAK,KAAK;MACzB,MAAMnV,GAAG,GAAGD,MAAM,CAACmV,IAAI,CAAC;MAExB,OAAQlb;QAAI,KAAK,EAAC,sCAAsC;QAAA,WACtDC,eAAC,SAAS;UAAA,GACH0e,SAAS;UACd,OAAO,EAAGrf,OAAS;UACnB,EAAE,EAAG6B,EAAI;UACT,KAAK,EAAGga,KAAO;UACf,IAAI,EAAGD,IAAM;UACb,IAAI,EAAGA,IAAI,KAAKkE;UAAY,EAE5BX,QAAQ,IACNxe;UACE,IAAI,EAAC,QAAQ;UACb,KAAK,EAAC,aAAa;UACnB,KAAK,EAAC,0EAA0E;UAChF,OAAO,EAAG,MAAMwe,QAAQ,IAAIA,QAAQ,CAACvD,IAAI,CAAG;UAAA,UAC7Cjb,eAAC,UAAU;UACb;SAhB0D+F,GAAG,CAkB7D;KACN;IAEA;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+Y,cAAc,CAACO,YAAY,EAAEZ,SAAS,EAAEG,WAAW,GAAG,KAAK,EAAE;EACpE,MAAMU,QAAQ,GAAGnd,YAAM,CAACkd,YAAY,CAACjZ,KAAK,EAAE,CAAC;;;EAG7C,IAAIwY,WAAW,EAAE;IACfU,QAAQ,CAACrc,OAAO,GAAGoc,YAAY,CAACjZ,KAAK,EAAE;IAEvC,IAAIqY,SAAS,EAAE;MACba,QAAQ,CAACrc,OAAO,CAACsc,IAAI,CAACd,SAAS,CAAC;;GAEnC,MAAM;IACL,MAAMrC,KAAK,GAAGkD,QAAQ,CAACrc,OAAO;;;IAG9B,KAAK,MAAMgY,IAAI,IAAIoE,YAAY,EAAE;MAC/B,IAAI,CAACjD,KAAK,CAACa,QAAQ,CAAChC,IAAI,CAAC,EAAE;;QAGzBwD,SAAS,GAAGrC,KAAK,CAACiB,OAAO,CAACpC,IAAI,CAAC,GAAGmB,KAAK,CAACc,IAAI,CAACjC,IAAI,CAAC;;;;;IAKtDqE,QAAQ,CAACrc,OAAO,GAAGmZ,KAAK,CAACgB,MAAM,CAACnC,IAAI,IAAIoE,YAAY,CAACpC,QAAQ,CAAChC,IAAI,CAAC,CAAC;;EAGtE,OAAOqE,QAAQ,CAACrc,OAAO;AACzB;AAEA,SAAS+b,WAAW,CAAC5C,KAAK,GAAG,EAAE,EAAEwC,WAAW,EAAE;EAC5C,MAAMY,aAAa,GAAG3Y,WAAW,CAACuV,KAAK,CAAChW,KAAK,EAAE,CAAC,IAAI,EAAE;EAEtD,IAAIwY,WAAW,EAAE;IACf,OAAO,EAAE;;EAGX,OAAOY,aAAa,GAAGpD,KAAK,CAACgB,MAAM,CAACnC,IAAI,IAAI,CAACuE,aAAa,CAACvC,QAAQ,CAAChC,IAAI,CAAC,CAAC,GAAG,EAAE;AACjF;;ACvPA,SAASwE,MAAM,CAACrgB,KAAK,EAAE;EACrB,MAAM;IACJ8B,EAAE;IACFvB,KAAK;IACL0M,QAAQ;IACRqT,OAAO,GAAG,EAAE;IACZne,KAAK,GAAG,EAAE;IACV8J,QAAQ;IACRkI,OAAO;IACPC,MAAM;IACNzS;GACD,GAAG3B,KAAK;EAET,MAAM0H,GAAG,GAAGC,iBAAiB,CAAC7F,EAAE,CAAC;EAEjC,MAAM,CAAE8K,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAMyc,oBAAoB,GAAG,CAAC;IAAEtK;GAAQ,KAAK;IAC3CrH,QAAQ,CAACqH,MAAM,CAACnS,KAAK,CAAC;GACvB;EAED,MAAMgW,YAAY,GAAG3U,CAAC,IAAI;IACxBob,oBAAoB,CAACpb,CAAC,CAAC;IACvBqJ,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAED8B,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACExB;IAAK,KAAK,EAAC,6BAA6B;IAAA,WACtCC;MAAO,GAAG,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC5DlB,eAAC0B,cAAO;QAAC,KAAK,EAAGX,OAAS;QAAC,KAAK,EAAGG,EAAI;QAAC,OAAO,EAAG9B,KAAK,CAACC,OAAS;QAAA,UAC9DM;;MAEG,EACRK;MACE,GAAG,EAAG8G,GAAK;MACX,EAAE,EAAGrF,UAAQ,CAACP,EAAE,CAAG;MACnB,IAAI,EAAGA,EAAI;MACX,KAAK,EAAC,4BAA4B;MAClC,OAAO,EAAGqW,YAAc;MACxB,OAAO,EAAGhE,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGxH,UAAY;MACpB,QAAQ,EAAGX,QAAU;MAAA,UAEpBqU,OAAO,CAAC/Z,GAAG,CAAC,CAACga,MAAM,EAAEC,GAAG,KAAK;QAC5B,IAAID,MAAM,CAACne,QAAQ,EAAE;UACnB,OACExB;YAAsB,KAAK,EAAG2f,MAAM,CAAChgB,KAAO;YAAA,UACzCggB,MAAM,CAACne,QAAQ,CAACmE,GAAG,CAAC,CAACka,KAAK,EAAED,GAAG,KAC9B5f;cAEE,KAAK,EAAG6f,KAAK,CAACte,KAAO;cACrB,QAAQ,EAAGse,KAAK,CAACxU,QAAU;cAAA,UAE1BwU,KAAK,CAAClgB;eAJDigB,GAAG,CAMZ;aATaA,GAAG,CAUR;;QAIf,OACE5f;UAAoB,KAAK,EAAG2f,MAAM,CAACpe,KAAO;UAAC,QAAQ,EAAGoe,MAAM,CAACtU,QAAU;UAAA,UACpEsU,MAAM,CAAChgB;WADIigB,GAAG,CAER;OAEZ;MACM;IACL;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASE,WAAW,CAAC1gB,KAAK,EAAE;EACzC,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACXR,KAAK;IACLiU,QAAQ;IACRrH,QAAQ;IACRwT,UAAU;IACV1U,QAAQ;IACRkI,OAAO;IACPC,MAAM;IACNgB,QAAQ;IACRzT;GACD,GAAG3B,KAAK;EAET,MAAMsgB,OAAO,GAAGK,UAAU,CAAC1gB,OAAO,CAAC;EACnC,MAAMoV,WAAW,GAAGzP,QAAQ,CAAC9D,EAAE,CAAC;EAChC,MAAM,CAAEwT,UAAU,EAAEC,aAAa,CAAE,GAAG7S,cAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIP,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE7BgE,eAAS,CAAC,MAAM;IACd,IAAI+D,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxB,MAAMI,kBAAkB,GAAGJ,QAAQ,CAACjT,KAAK,CAAC,IAAI,IAAI;MAElDoT,aAAa,CAACC,kBAAkB,CAAC;;GAEpC,EAAE,CAAErT,KAAK,CAAE,CAAC;EAGb,MAAM8K,QAAQ,GAAIzF,QAAQ,IAAK;IAC7B,IAAIgO,kBAAkB,GAAG,IAAI;IAE7B,IAAIxN,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxBI,kBAAkB,GAAGJ,QAAQ,CAAC5N,QAAQ,CAAC,IAAI,IAAI;;IAGjD2F,QAAQ,CAAC3F,QAAQ,EAAEgO,kBAAkB,CAAC;IACtCD,aAAa,CAACC,kBAAkB,CAAC;GAClC;EAED,MAAMC,KAAK,GAAGJ,WAAW,IAAIC,UAAU;EAEvC,OACE3U;IACE,KAAK,EAAG0M,8BAAU,CAChB,4BAA4B,EAC5BoI,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgB3T,EAAI;IAAA,WACpBlB,eAAC,MAAM;MACL,EAAE,EAAGkB,EAAI;MAET,KAAK,EAAGvB,KAAO;MACf,KAAK,EAAG4B,KAAO;MACf,QAAQ,EAAG8K,QAAU;MACrB,OAAO,EAAGkH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAGkM,OAAS;MACnB,QAAQ,EAAGrU,QAAU;MACrB,OAAO,EAAGtK,OAAS;MACnB,OAAO,EAAG1B;OATJA,OAAO,CASS,EACtBwV,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAG6U;MAAa,EAClE7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASsJ,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC1Q,KAAK;AAC7B;;AAEA;;AAEA,SAASE,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC9Le,SAAS8e,MAAM,CAAC5gB,KAAK,EAAE;EACpC,MAAM;IACJ2U,QAAQ;IACR1I,QAAQ;IACRhM,OAAO;IACPuU,QAAQ;IACR1S,EAAE;IACFsS,MAAM;IACND,OAAO;IACPhH;GACD,GAAGnN,KAAK;EAET,MAAMmC,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE/B,MAAM,CAAE2M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAMkS,mBAAmB,GAAG7N,aAAO,CAAC,MAAM;IACxC,OAAOmO,QAAQ,CAAC,CAAC;MAAEL;KAAQ,KAAKnH,QAAQ,CAACmH,MAAM,CAACnS,KAAK,CAAC8U,MAAM,GAAG3C,MAAM,CAACnS,KAAK,GAAGwJ,SAAS,CAAC,CAAC;GAC1F,EAAE,CAAEwB,QAAQ,EAAEwH,QAAQ,CAAE,CAAC;EAE1B,MAAM7H,WAAW,GAAGtJ,CAAC,IAAI;IACvB6Q,mBAAmB,CAAC7Q,CAAC,CAAC;IACtBqJ,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAED8B,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAGb,OACEvB;IAAK,KAAK,EAAC,6BAA6B;IAAA,UACtCA;MACE,EAAE,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MAEnB,IAAI,EAAC,MAAM;MACX,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,YAAY,EAAC,KAAK;MAClB,QAAQ,EAAGmK,QAAU;MACrB,KAAK,EAAC,4BAA4B;MAClC,OAAO,EAAGa,WAAa;MACvB,cAAaF,UAAU,IAAI,SAAW;MACtC,OAAO,EAAGuH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGxH;OAXF3M,OAAO;IAYX;AAEV;AAEO,SAASoK,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC1Q,KAAK;AAC7B;;AAGA;;AAEA,SAASE,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC7DA,SAAS+e,gBAAgB,CAAC5gB,OAAO,EAAE;EACjCA,OAAO,CAACiR,KAAK,CAACX,MAAM,GAAG,MAAM;;;;EAI7BtQ,OAAO,CAACiR,KAAK,CAACX,MAAM,GAAI,GAAGtQ,OAAO,CAAC6I,YAAY,GAAG,CAAG,IAAG;AAC1D;AAEA,SAASgY,QAAQ,CAAC9gB,KAAK,EAAE;EAEvB,MAAM;IACJ8B,EAAE;IACFvB,KAAK;IACLoU,QAAQ;IACR3I,OAAO;IACP7J,KAAK,GAAG,EAAE;IACV8J,QAAQ;IACR8U,SAAS;IACT5M,OAAO;IACPC,MAAM;IACN4M,UAAU;IACVC,IAAI,GAAGD,UAAU,GAAG,CAAC,GAAG,CAAC;IACzBrf;GACD,GAAG3B,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,CAAC;EAErD,MAAMuF,GAAG,GAAGC,iBAAiB,CAAC7F,EAAE,CAAC;EAEjC,MAAMuS,mBAAmB,GAAG7N,aAAO,CAAC,MAAM;IACxC,OAAOmO,QAAQ,CAAC,CAAC;MAAEL;KAAQ,KAAKtI,OAAO,CAACsI,MAAM,CAACnS,KAAK,CAAC8U,MAAM,GAAG3C,MAAM,CAACnS,KAAK,GAAGwJ,SAAS,CAAC,CAAC;GACzF,EAAE,CAAEK,OAAO,EAAE2I,QAAQ,CAAE,CAAC;EAEzB,MAAM7H,WAAW,GAAGtJ,CAAC,IAAI;IACvB6Q,mBAAmB,CAAC7Q,CAAC,CAAC;IAEtBwd,UAAU,IAAIH,gBAAgB,CAACrd,CAAC,CAAC8Q,MAAM,CAAC;IAExCzH,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAEDiZ,qBAAe,CAAC,MAAM;IACpB4F,UAAU,IAAIH,gBAAgB,CAACnZ,GAAG,CAAC7D,OAAO,CAAC;GAC5C,EAAE,EAAE,CAAC;EAENI,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACExB;IAAK,KAAK,EAAC,+BAA+B;IAAA,WACxCC;MAAO,GAAG,EAAGyB,UAAQ,CAACP,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC5DlB,eAAC0B,cAAO;QAAC,KAAK,EAAGX,OAAS;QAAC,KAAK,EAAGG,EAAI;QAAC,OAAO,EAAG9B,KAAK,CAACC,OAAS;QAAA,UAC7DM;;MAEE,EACRK;MACE,GAAG,EAAG8G,GAAK;MACX,EAAE,EAAGrF,UAAQ,CAACP,EAAE,CAAG;MACnB,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,KAAK,EAAG8I,8BAAU,CAChB,4BAA4B,EAC5BmW,SAAS,GAAG,sCAAsC,GAAG,EAAE,EACvDC,UAAU,GAAG,aAAa,GAAG,EAAE,CAChC;MACD,OAAO,EAAGlU,WAAa;MACvB,OAAO,EAAGqH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAG6M,IAAM;MACb,KAAK,EAAGrU,UAAY;MACpB,QAAQ,EAAGX,QAAU;MACrB,cAAW;MACX;IACE;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASiV,aAAa,CAAClhB,KAAK,EAAE;EAC3C,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACX4T,QAAQ;IACRpU,KAAK;IACLiU,QAAQ;IACRrH,QAAQ;IACR8T,IAAI;IACJF,SAAS;IACT9U,QAAQ;IACRmJ,QAAQ;IACRjB,OAAO;IACPC,MAAM;IACN4M,UAAU;IACVrf;GACD,GAAG3B,KAAK;EAET,MAAMqV,WAAW,GAAGzP,QAAQ,CAAC9D,EAAE,CAAC;EAChC,MAAM,CAAEwT,UAAU,EAAEC,aAAa,CAAE,GAAG7S,cAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIP,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE7BgE,eAAS,CAAC,MAAM;IACd,IAAI+D,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxB,MAAMI,kBAAkB,GAAGJ,QAAQ,CAACjT,KAAK,CAAC,IAAI,IAAI;MAElDoT,aAAa,CAACC,kBAAkB,CAAC;;GAEpC,EAAE,CAAErT,KAAK,CAAE,CAAC;EAEb,MAAM6J,OAAO,GAAIxE,QAAQ,IAAK;IAC5B,IAAIgO,kBAAkB,GAAG,IAAI;IAE7B,IAAIxN,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxBI,kBAAkB,GAAGJ,QAAQ,CAAC5N,QAAQ,CAAC,IAAI,IAAI;;IAGjD2F,QAAQ,CAAC3F,QAAQ,EAAEgO,kBAAkB,CAAC;IAEtCD,aAAa,CAACC,kBAAkB,CAAC;GAClC;EAGD,MAAMC,KAAK,GAAGJ,WAAW,IAAIC,UAAU;EAEvC,OACE3U;IACE,KAAK,EAAGiK,8BAAU,CAChB,4BAA4B,EAC5B6K,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgB3T,EAAI;IAAA,WACpBlB,eAAC,QAAQ;MACP,EAAE,EAAGkB,EAAI;MAET,KAAK,EAAGvB,KAAO;MACf,KAAK,EAAG4B,KAAO;MACf,OAAO,EAAG6J,OAAS;MACnB,OAAO,EAAGmI,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAG6M,IAAM;MACb,QAAQ,EAAGtM,QAAU;MACrB,SAAS,EAAGoM,SAAW;MACvB,QAAQ,EAAG9U,QAAU;MACrB,UAAU,EAAG+U,UAAY;MACzB,OAAO,EAAGrf,OAAS;MACnB,OAAO,EAAG1B;OAZJA,OAAO,CAYS,EACtBwV,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAG6U;MAAa,EAClE7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASsJ,UAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC1Q,KAAK;AAC7B;;AAGA;;AAEA,SAASE,UAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;ACvLA,SAASqf,SAAS,CAACnhB,KAAK,EAAE;EAExB,MAAM;IACJ2U,QAAQ;IACR1I,QAAQ,GAAG,KAAK;IAChBnK,EAAE;IACFvB,KAAK;IACLyL,OAAO;IACPmI,OAAO;IACPC,MAAM;IACNjS,KAAK,GAAG,EAAE;IACVR;GACD,GAAG3B,KAAK;EAET,MAAM,CAAE4M,UAAU,EAAEC,aAAa,CAAE,GAAGnK,cAAQ,CAACP,KAAK,IAAI,EAAE,CAAC;EAE3D,MAAMuF,GAAG,GAAGC,iBAAiB,CAAC7F,EAAE,CAAC;EAEjC,MAAMuS,mBAAmB,GAAG7N,aAAO,CAAC,MAAM;IACxC,OAAOmO,QAAQ,CAAC,CAAC;MAAEL;KAAQ,KAAKtI,OAAO,CAACsI,MAAM,CAACnS,KAAK,CAAC8U,MAAM,GAAG3C,MAAM,CAACnS,KAAK,GAAGwJ,SAAS,CAAC,CAAC;GACzF,EAAE,CAAEK,OAAO,EAAE2I,QAAQ,CAAE,CAAC;EAEzB,MAAM7H,WAAW,GAAGtJ,CAAC,IAAI;IACvB6Q,mBAAmB,CAAC7Q,CAAC,CAAC;IACtBqJ,aAAa,CAACrJ,CAAC,CAAC8Q,MAAM,CAACnS,KAAK,CAAC;GAC9B;EAED8B,eAAS,CAAC,MAAM;IACd,IAAI9B,KAAK,KAAKyK,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAAC1K,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACExB;IAAK,KAAK,EAAC,gCAAgC;IAAA,WACzCC;MAAO,GAAG,EAAGyB,QAAQ,CAACP,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC5DlB,eAAC0B,cAAO;QAAC,KAAK,EAAGX,OAAS;QAAC,KAAK,EAAGG,EAAI;QAAC,OAAO,EAAG9B,KAAK,CAACC,OAAS;QAAA,UAC7DM;;MAEE,EACRK;MACE,GAAG,EAAG8G,GAAK;MACX,EAAE,EAAGrF,QAAQ,CAACP,EAAE,CAAG;MACnB,IAAI,EAAC,MAAM;MACX,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,YAAY,EAAC,KAAK;MAClB,QAAQ,EAAGmK,QAAU;MACrB,KAAK,EAAC,4BAA4B;MAClC,OAAO,EAAGa,WAAa;MACvB,OAAO,EAAGqH,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGxH;MAAe;IACrB;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASwU,cAAc,CAACphB,KAAK,EAAE;EAC5C,MAAM;IACJC,OAAO;IACP6B,EAAE;IACFf,WAAW;IACX4T,QAAQ;IACR1I,QAAQ;IACR1L,KAAK;IACLiU,QAAQ;IACRrH,QAAQ;IACRiI,QAAQ;IACRjB,OAAO;IACPC,MAAM;IACNzS;GACD,GAAG3B,KAAK;EAET,MAAMqV,WAAW,GAAGzP,QAAQ,CAAC9D,EAAE,CAAC;EAChC,MAAM,CAAEwT,UAAU,EAAEC,aAAa,CAAE,GAAG7S,cAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIP,KAAK,GAAGqS,QAAQ,CAACvU,OAAO,CAAC;EAE7BgE,eAAS,CAAC,MAAM;IACd,IAAI+D,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxB,MAAMI,kBAAkB,GAAGJ,QAAQ,CAACjT,KAAK,CAAC,IAAI,IAAI;MAElDoT,aAAa,CAACC,kBAAkB,CAAC;;GAEpC,EAAE,CAAErT,KAAK,CAAE,CAAC;EAEb,MAAM6J,OAAO,GAAIxE,QAAQ,IAAK;IAC5B,IAAIgO,kBAAkB,GAAG,IAAI;IAE7B,IAAIxN,kBAAU,CAACoN,QAAQ,CAAC,EAAE;MACxBI,kBAAkB,GAAGJ,QAAQ,CAAC5N,QAAQ,CAAC,IAAI,IAAI;;IAGjD2F,QAAQ,CAAC3F,QAAQ,EAAEgO,kBAAkB,CAAC;IAEtCD,aAAa,CAACC,kBAAkB,CAAC;GAClC;EAGD,MAAMC,KAAK,GAAGJ,WAAW,IAAIC,UAAU;EAEvC,OACE3U;IACE,KAAK,EAAGiK,8BAAU,CAChB,4BAA4B,EAC5B6K,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgB3T,EAAI;IAAA,WACpBlB,eAAC,SAAS;MACR,QAAQ,EAAG+T,QAAU;MACrB,QAAQ,EAAG1I,QAAU;MACrB,EAAE,EAAGnK,EAAI;MAET,KAAK,EAAGvB,KAAO;MACf,OAAO,EAAGyL,OAAS;MACnB,OAAO,EAAGmI,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGjS,KAAO;MACf,OAAO,EAAGR,OAAS;MACnB,OAAO,EAAG1B;OAPJA,OAAO,CAOS,EACtBwV,KAAK,IAAI7U;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAG6U;MAAa,EAClE7U,eAAC,WAAW;MAAC,KAAK,EAAGkB,EAAI;MAAC,OAAO,EAAG7B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASsJ,QAAQ,CAACwI,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC1Q,KAAK;AAC7B;;AAGA;;AAEA,SAASE,QAAQ,CAACP,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;ACrKA,MAAMuf,qBAAqB,GAAG,GAAG;AAElB,SAASC,aAAa,CAACC,aAAa,EAAE;EACnD,OAAO,SAASC,cAAc,CAACtS,EAAE,EAAE;IACjC,IAAIqS,aAAa,KAAK,KAAK,EAAE;MAE3B,IAAIE,YAAY,GACdC,gBAAQ,CAACH,aAAa,CAAC,GACrBA,aAAa,GACbF,qBAAqB;MAEzB,OAAO1M,gBAAQ,CAACzF,EAAE,EAAEuS,YAAY,CAAC;KAClC,MAAM;MACL,OAAOvS,EAAE;;GAEZ;AACH;AAEAoS,aAAa,CAACK,OAAO,GAAG,CAAE,sBAAsB,CAAE;;ACrBlD,YAAe;EACbL,aAAa,EAAE,CAAE,SAAS,EAAEA,aAAa;AAC3C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}