@bpmn-io/properties-panel 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.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/PropertiesPanel.js","../src/components/DropdownButton.js","../src/components/HeaderButton.js","../src/components/entries/Collapsible.js","../src/components/ListItem.js","../src/components/ListGroup.js","../src/components/entries/Description.js","../src/components/entries/Checkbox.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/FEEL/Feel.js","../src/components/entries/templating/FeelTemplatingEditor.js","../src/components/entries/templating/FeelTemplating.js","../src/components/entries/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\r\n\r\n/**\r\n * @typedef { {\r\n * getElementLabel: (element: object) => string,\r\n * getTypeLabel: (element: object) => string,\r\n * getElementIcon: (element: object) => import('preact').Component,\r\n * getDocumentationRef: (element: object) => string\r\n * } } HeaderProvider\r\n */\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element,\r\n * @param {HeaderProvider} props.headerProvider\r\n */\r\nexport default function Header(props) {\r\n\r\n const {\r\n element,\r\n headerProvider\r\n } = props;\r\n\r\n const {\r\n getElementIcon,\r\n getDocumentationRef,\r\n getElementLabel,\r\n getTypeLabel,\r\n } = headerProvider;\r\n\r\n const label = getElementLabel(element);\r\n const type = getTypeLabel(element);\r\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\r\n\r\n const ElementIcon = getElementIcon(element);\r\n\r\n return (<div class=\"bio-properties-panel-header\">\r\n <div class=\"bio-properties-panel-header-icon\">\r\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\r\n </div>\r\n <div class=\"bio-properties-panel-header-labels\">\r\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\r\n { label ?\r\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\r\n null\r\n }\r\n </div>\r\n <div class=\"bio-properties-panel-header-actions\">\r\n { documentationRef ?\r\n <a\r\n rel=\"noopener\"\r\n class=\"bio-properties-panel-header-link\"\r\n href={ documentationRef }\r\n title=\"Open documentation\"\r\n target=\"_blank\">\r\n <ExternalLinkIcon />\r\n </a> :\r\n null\r\n }\r\n </div>\r\n </div>);\r\n}","import {\r\n createContext\r\n} from 'preact';\r\n\r\nconst DescriptionContext = createContext({\r\n description: {},\r\n getDescriptionForId: () => {}\r\n});\r\n\r\nexport default DescriptionContext;\r\n","import {\r\n createContext\r\n} from 'preact';\r\n\r\nconst ErrorsContext = createContext({\r\n errors: {}\r\n});\r\n\r\nexport default ErrorsContext;","/**\r\n * @typedef {Function} <propertiesPanel.showEntry> callback\r\n *\r\n * @example\r\n *\r\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\r\n * // ...\r\n * });\r\n *\r\n * @param {Object} context\r\n * @param {boolean} [context.focus]\r\n *\r\n * @returns void\r\n */\r\n\r\n/**\r\n * @typedef {Function} <propertiesPanel.showError> callback\r\n *\r\n * @example\r\n *\r\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\r\n * // ...\r\n * });\r\n *\r\n * @param {Object} context\r\n * @param {string} context.message\r\n * @param {boolean} [context.focus]\r\n *\r\n * @returns void\r\n */\r\n\r\nimport { createContext } from 'preact';\r\n\r\nconst EventContext = createContext({ eventBus: null });\r\n\r\nexport default EventContext;\r\n","import {\r\n createContext\r\n} from 'preact';\r\n\r\nconst LayoutContext = createContext({\r\n layout: {},\r\n setLayout: () => {},\r\n getLayoutForKey: () => {},\r\n setLayoutForKey: () => {}\r\n});\r\n\r\nexport default LayoutContext;","import {\r\n useContext\r\n} from 'preact/hooks';\r\n\r\nimport {\r\n DescriptionContext\r\n} from '../context';\r\n\r\n/**\r\n * Accesses the global DescriptionContext and returns a description for a given id and element.\r\n *\r\n * @example\r\n * ```jsx\r\n * function TextField(props) {\r\n * const description = useDescriptionContext('input1', element);\r\n * }\r\n * ```\r\n *\r\n * @param {string} id\r\n * @param {object} element\r\n *\r\n * @returns {string}\r\n */\r\nexport function useDescriptionContext(id, element) {\r\n const {\r\n getDescriptionForId\r\n } = useContext(DescriptionContext);\r\n\r\n return getDescriptionForId(id, element);\r\n}\r\n","import { useContext } from 'preact/hooks';\r\n\r\nimport { ErrorsContext } from '../context';\r\n\r\nexport function useError(id) {\r\n const { errors } = useContext(ErrorsContext);\r\n\r\n return errors[ id ];\r\n}\r\n","import { useContext, useEffect, useRef } from 'preact/hooks';\r\n\r\nimport { EventContext } from '../context';\r\n\r\n\r\n/**\r\n * Subscribe to an event immediately. Update subscription after inputs changed.\r\n *\r\n * @param {string} event\r\n * @param {Function} callback\r\n */\r\nexport function useEvent(event, callback, eventBus) {\r\n const eventContext = useContext(EventContext);\r\n\r\n if (!eventBus) {\r\n ({ eventBus } = eventContext);\r\n }\r\n\r\n const didMount = useRef(false);\r\n\r\n // (1) subscribe immediately\r\n if (eventBus && !didMount.current) {\r\n eventBus.on(event, callback);\r\n }\r\n\r\n // (2) update subscription after inputs changed\r\n useEffect(() => {\r\n if (eventBus && didMount.current) {\r\n eventBus.on(event, callback);\r\n }\r\n\r\n didMount.current = true;\r\n\r\n return () => {\r\n if (eventBus) {\r\n eventBus.off(event, callback);\r\n }\r\n };\r\n }, [ callback, event, eventBus ]);\r\n}\r\n","import { useMemo } from 'preact/hooks';\r\n\r\nconst KEY_LENGTH = 6;\r\n\r\n/**\r\n * Create a persistent key factory for plain objects without id.\r\n *\r\n * @example\r\n * ```jsx\r\n * function List({ objects }) {\r\n * const getKey = useKeyFactory();\r\n * return (<ol>{\r\n * objects.map(obj => {\r\n * const key = getKey(obj);\r\n * return <li key={key}>obj.name</li>\r\n * })\r\n * }</ol>);\r\n * }\r\n * ```\r\n *\r\n * @param {any[]} dependencies\r\n * @returns {(element: object) => string}\r\n */\r\nexport function useKeyFactory(dependencies = []) {\r\n const map = useMemo(() => new Map(), dependencies);\r\n\r\n const getKey = el => {\r\n let key = map.get(el);\r\n\r\n if (!key) {\r\n key = Math.random().toString().slice(-KEY_LENGTH);\r\n map.set(el, key);\r\n }\r\n\r\n return key;\r\n };\r\n\r\n return getKey;\r\n}\r\n","import {\r\n useCallback,\r\n useContext\r\n} from 'preact/hooks';\r\n\r\nimport {\r\n LayoutContext\r\n} from '../context';\r\n\r\n/**\r\n * Creates a state that persists in the global LayoutContext.\r\n *\r\n * @example\r\n * ```jsx\r\n * function Group(props) {\r\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\r\n * }\r\n * ```\r\n *\r\n * @param {(string|number)[]} path\r\n * @param {any} [defaultValue]\r\n *\r\n * @returns {[ any, Function ]}\r\n */\r\nexport function useLayoutState(path, defaultValue) {\r\n const {\r\n getLayoutForKey,\r\n setLayoutForKey\r\n } = useContext(LayoutContext);\r\n\r\n const layoutForKey = getLayoutForKey(path, defaultValue);\r\n\r\n const setState = useCallback ((newValue) => {\r\n setLayoutForKey(path, newValue);\r\n }, [ setLayoutForKey ]);\r\n\r\n\r\n return [ layoutForKey, setState ];\r\n}\r\n","import {\r\n useEffect,\r\n useRef\r\n} from 'preact/hooks';\r\n\r\n/**\r\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\r\n * state on updates.\r\n *\r\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\r\n */\r\n\r\nexport function usePrevious(value) {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n}","import {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useRef\r\n} from 'preact/hooks';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport { PropertiesPanelContext } from '../context';\r\n\r\nimport { useEvent } from './useEvent';\r\n\r\n/**\r\n * Subscribe to `propertiesPanel.showEntry`.\r\n *\r\n * @param {string} id\r\n *\r\n * @returns {import('preact').Ref}\r\n */\r\nexport function useShowEntryEvent(id) {\r\n const { onShow } = useContext(PropertiesPanelContext);\r\n\r\n const ref = useRef();\r\n\r\n const focus = useRef(false);\r\n\r\n const onShowEntry = useCallback((event) => {\r\n if (event.id === id) {\r\n onShow();\r\n\r\n if (!focus.current) {\r\n focus.current = true;\r\n }\r\n }\r\n }, [ id ]);\r\n\r\n useEffect(() => {\r\n if (focus.current && ref.current) {\r\n if (isFunction(ref.current.focus)) {\r\n ref.current.focus();\r\n }\r\n\r\n if (isFunction(ref.current.select)) {\r\n ref.current.select();\r\n }\r\n\r\n focus.current = false;\r\n }\r\n });\r\n\r\n useEvent('propertiesPanel.showEntry', onShowEntry);\r\n\r\n return ref;\r\n}","import {\r\n useEffect\r\n} from 'preact/hooks';\r\n\r\nimport {\r\n query as domQuery\r\n} from 'min-dom';\r\n\r\n\r\n/**\r\n * @callback setSticky\r\n * @param {boolean} value\r\n */\r\n\r\n/**\r\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\r\n * If sticky is observered setSticky(true) will be called.\r\n * If sticky mode is left, setSticky(false) will be called.\r\n *\r\n *\r\n * @param {Object} ref\r\n * @param {string} scrollContainerSelector\r\n * @param {setSticky} setSticky\r\n */\r\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\r\n useEffect(() => {\r\n\r\n const Observer = IntersectionObserver;\r\n\r\n // return early if IntersectionObserver is not available\r\n if (!Observer) {\r\n return;\r\n }\r\n\r\n let observer;\r\n\r\n if (ref.current) {\r\n const scrollContainer = domQuery(scrollContainerSelector);\r\n\r\n observer = new Observer((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.intersectionRatio < 1) {\r\n setSticky(true);\r\n }\r\n else if (entry.intersectionRatio === 1) {\r\n setSticky(false);\r\n }\r\n });\r\n },\r\n {\r\n root: scrollContainer,\r\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\r\n threshold: [ 1 ]\r\n });\r\n observer.observe(ref.current);\r\n }\r\n\r\n // Unobserve if unmounted\r\n return () => {\r\n if (ref.current && observer) {\r\n observer.unobserve(ref.current);\r\n }\r\n };\r\n\r\n }, [ ref, scrollContainerSelector, setSticky ]);\r\n}\r\n","import { useCallback, useRef } from 'preact/hooks';\r\n\r\n/**\r\n * Creates a static function reference with changing body.\r\n * This is necessary when external libraries require a callback function\r\n * that has references to state variables.\r\n *\r\n * Usage:\r\n * const callback = useStaticCallback((val) => {val === currentState});\r\n *\r\n * The `callback` reference is static and can be safely used in external\r\n * libraries or as a prop that does not cause rerendering of children.\r\n *\r\n * @param {Function} callback function with changing reference\r\n * @returns {Function} static function reference\r\n */\r\nexport function useStaticCallback(callback) {\r\n const callbackRef = useRef(callback);\r\n callbackRef.current = callback;\r\n\r\n return useCallback(\r\n (...args) => callbackRef.current(...args),\r\n []\r\n );\r\n}","import {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useRef,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport {\r\n query as domQuery\r\n} from 'min-dom';\r\n\r\nimport {\r\n isFunction\r\n} from 'min-dash';\r\n\r\nimport {\r\n useLayoutState\r\n} from '../hooks';\r\n\r\nimport { PropertiesPanelContext } from '../context';\r\n\r\nimport { useStickyIntersectionObserver } from '../hooks';\r\n\r\nimport { ArrowIcon } from './icons';\r\n\r\n/**\r\n * @param {import('../PropertiesPanel').GroupDefinition} props\r\n */\r\nexport default function Group(props) {\r\n const {\r\n element,\r\n entries = [],\r\n id,\r\n label,\r\n shouldOpen = false,\r\n } = props;\r\n\r\n const groupRef = useRef(null);\r\n\r\n const [ open, setOpen ] = useLayoutState(\r\n [ 'groups', id, 'open' ],\r\n shouldOpen\r\n );\r\n\r\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\r\n\r\n const toggleOpen = () => setOpen(!open);\r\n\r\n const [ edited, setEdited ] = useState(false);\r\n\r\n const [ sticky, setSticky ] = useState(false);\r\n\r\n // set edited state depending on all entries\r\n useEffect(() => {\r\n const hasOneEditedEntry = entries.find(entry => {\r\n const {\r\n id,\r\n isEdited\r\n } = entry;\r\n\r\n const entryNode = domQuery(`[data-entry-id=\"${id}\"]`);\r\n\r\n if (!isFunction(isEdited) || !entryNode) {\r\n return false;\r\n }\r\n\r\n const inputNode = domQuery('.bio-properties-panel-input', entryNode);\r\n\r\n return isEdited(inputNode);\r\n });\r\n\r\n setEdited(hasOneEditedEntry);\r\n }, [ entries ]);\r\n\r\n // set css class when group is sticky to top\r\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\r\n\r\n const propertiesPanelContext = {\r\n ...useContext(PropertiesPanelContext),\r\n onShow\r\n };\r\n\r\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\r\n <div class={ classnames(\r\n 'bio-properties-panel-group-header',\r\n edited ? '' : 'empty',\r\n open ? 'open' : '',\r\n (sticky && open) ? 'sticky' : ''\r\n ) } onClick={ toggleOpen }>\r\n <div title={ label } class=\"bio-properties-panel-group-header-title\">\r\n { label }\r\n </div>\r\n <div class=\"bio-properties-panel-group-header-buttons\">\r\n {\r\n edited && <DataMarker />\r\n }\r\n <button\r\n title=\"Toggle section\"\r\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\r\n >\r\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\r\n </button>\r\n </div>\r\n </div>\r\n <div class={ classnames(\r\n 'bio-properties-panel-group-entries',\r\n open ? 'open' : ''\r\n ) }>\r\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\r\n {\r\n entries.map(entry => {\r\n const {\r\n component: Component,\r\n id\r\n } = entry;\r\n\r\n return (\r\n <Component\r\n { ...entry }\r\n element={ element }\r\n key={ id } />\r\n );\r\n })\r\n }\r\n </PropertiesPanelContext.Provider>\r\n </div>\r\n </div>;\r\n}\r\n\r\nfunction DataMarker() {\r\n return (\r\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\r\n );\r\n}","/**\r\n * @typedef { {\r\n * text: (element: object) => string,\r\n * icon?: (element: Object) => import('preact').Component\r\n * } } PlaceholderDefinition\r\n *\r\n * @param { PlaceholderDefinition } props\r\n */\r\nexport default function Placeholder(props) {\r\n const {\r\n text,\r\n icon: Icon\r\n } = props;\r\n\r\n return (\r\n <div class=\"bio-properties-panel open\">\r\n <section class=\"bio-properties-panel-placeholder\">\r\n { Icon && <Icon class=\"bio-properties-panel-placeholder-icon\" /> }\r\n <p class=\"bio-properties-panel-placeholder-text\">{ text }</p>\r\n </section>\r\n </div>\r\n );\r\n}","import {\r\n useState,\r\n useEffect\r\n} from 'preact/hooks';\r\n\r\nimport {\r\n assign,\r\n get,\r\n isArray,\r\n set\r\n} from 'min-dash';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport Header from './components/Header';\r\n\r\nimport Group from './components/Group';\r\n\r\nimport Placeholder from './components/Placeholder';\r\n\r\nimport {\r\n DescriptionContext,\r\n ErrorsContext,\r\n EventContext,\r\n LayoutContext,\r\n PropertiesPanelContext\r\n} from './context';\r\n\r\nimport { useEvent } from './hooks';\r\n\r\nconst DEFAULT_LAYOUT = {\r\n open: true\r\n};\r\n\r\nconst DEFAULT_DESCRIPTION = {};\r\n\r\n\r\n/**\r\n * @typedef { {\r\n * component: import('preact').Component,\r\n * id: String,\r\n * isEdited?: Function\r\n * } } EntryDefinition\r\n *\r\n * @typedef { {\r\n * autoFocusEntry: String,\r\n * autoOpen?: Boolean,\r\n * entries: Array<EntryDefinition>,\r\n * id: String,\r\n * label: String,\r\n * remove: (event: MouseEvent) => void\r\n * } } ListItemDefinition\r\n *\r\n * @typedef { {\r\n * add: (event: MouseEvent) => void,\r\n * component: import('preact').Component,\r\n * element: Object,\r\n * id: String,\r\n * items: Array<ListItemDefinition>,\r\n * label: String,\r\n * shouldSort?: Boolean,\r\n * shouldOpen?: Boolean\r\n * } } ListGroupDefinition\r\n *\r\n * @typedef { {\r\n * component?: import('preact').Component,\r\n * entries: Array<EntryDefinition>,\r\n * id: String,\r\n * label: String,\r\n * shouldOpen?: Boolean\r\n * } } GroupDefinition\r\n *\r\n * @typedef { {\r\n * [id: String]: GetDescriptionFunction\r\n * } } DescriptionConfig\r\n *\r\n * @callback { {\r\n * @param {string} id\r\n * @param {Object} element\r\n * @returns {string}\r\n * } } GetDescriptionFunction\r\n *\r\n * @typedef { {\r\n * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\r\n * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\r\n * } } PlaceholderProvider\r\n *\r\n */\r\n\r\n\r\n/**\r\n * A basic properties panel component. Describes *how* content will be rendered, accepts\r\n * data from implementor to describe *what* will be rendered.\r\n *\r\n * @param {Object} props\r\n * @param {Object|Array} props.element\r\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\r\n * @param {PlaceholderProvider} [props.placeholderProvider]\r\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\r\n * @param {Object} [props.layoutConfig]\r\n * @param {Function} [props.layoutChanged]\r\n * @param {DescriptionConfig} [props.descriptionConfig]\r\n * @param {Function} [props.descriptionLoaded]\r\n * @param {Object} [props.eventBus]\r\n */\r\nexport default function PropertiesPanel(props) {\r\n const {\r\n element,\r\n headerProvider,\r\n placeholderProvider,\r\n groups,\r\n layoutConfig = {},\r\n layoutChanged,\r\n descriptionConfig = {},\r\n descriptionLoaded,\r\n eventBus\r\n } = props;\r\n\r\n // set-up layout context\r\n const [ layout, setLayout ] = useState(createLayout(layoutConfig));\r\n\r\n // react to external changes in the layout config\r\n useEffect(() => {\r\n const newLayout = createLayout(layoutConfig);\r\n\r\n setLayout(newLayout);\r\n }, [ layoutConfig ]);\r\n\r\n useEffect(() => {\r\n if (typeof layoutChanged === 'function') {\r\n layoutChanged(layout);\r\n }\r\n }, [ layout, layoutChanged ]);\r\n\r\n const getLayoutForKey = (key, defaultValue) => {\r\n return get(layout, key, defaultValue);\r\n };\r\n\r\n const setLayoutForKey = (key, config) => {\r\n const newLayout = assign({}, layout);\r\n set(newLayout, key, config);\r\n setLayout(newLayout);\r\n };\r\n\r\n const layoutContext = {\r\n layout,\r\n setLayout,\r\n getLayoutForKey,\r\n setLayoutForKey\r\n };\r\n\r\n // set-up description context\r\n const description = createDescriptionContext(descriptionConfig);\r\n\r\n if (typeof descriptionLoaded === 'function') {\r\n descriptionLoaded(description);\r\n }\r\n\r\n const getDescriptionForId = (id, element) => {\r\n return description[id] && description[id](element);\r\n };\r\n\r\n const descriptionContext = {\r\n description,\r\n getDescriptionForId\r\n };\r\n\r\n const [ errors, setErrors ] = useState({});\r\n\r\n const onSetErrors = ({ errors }) => setErrors(errors);\r\n\r\n useEvent('propertiesPanel.setErrors', onSetErrors, eventBus);\r\n\r\n const errorsContext = {\r\n errors\r\n };\r\n\r\n const eventContext = {\r\n eventBus\r\n };\r\n\r\n const propertiesPanelContext = {\r\n element\r\n };\r\n\r\n // empty state\r\n if (placeholderProvider && !element) {\r\n return <Placeholder { ...placeholderProvider.getEmpty() } />;\r\n }\r\n\r\n // multiple state\r\n if (placeholderProvider && isArray(element)) {\r\n return <Placeholder { ...placeholderProvider.getMultiple() } />;\r\n }\r\n\r\n return (\r\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\r\n <ErrorsContext.Provider value={ errorsContext }>\r\n <DescriptionContext.Provider value={ descriptionContext }>\r\n <LayoutContext.Provider value={ layoutContext }>\r\n <EventContext.Provider value={ eventContext }>\r\n <div\r\n class={ classnames(\r\n 'bio-properties-panel',\r\n layout.open ? 'open' : '')\r\n }>\r\n <Header\r\n element={ element }\r\n headerProvider={ headerProvider } />\r\n <div class=\"bio-properties-panel-scroll-container\">\r\n {\r\n groups.map(group => {\r\n const {\r\n component: Component = Group,\r\n id\r\n } = group;\r\n\r\n return (\r\n <Component\r\n { ...group }\r\n key={ id }\r\n element={ element } />\r\n );\r\n })\r\n }\r\n </div>\r\n </div>\r\n </EventContext.Provider>\r\n </LayoutContext.Provider>\r\n </DescriptionContext.Provider>\r\n </ErrorsContext.Provider>\r\n </PropertiesPanelContext.Provider>\r\n );\r\n}\r\n\r\n\r\n// helpers //////////////////\r\n\r\nfunction createLayout(overrides, defaults = DEFAULT_LAYOUT) {\r\n return {\r\n ...defaults,\r\n ...overrides\r\n };\r\n}\r\n\r\nfunction createDescriptionContext(overrides) {\r\n return {\r\n ...DEFAULT_DESCRIPTION,\r\n ...overrides\r\n };\r\n}","import {\r\n useEffect,\r\n useRef,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\n/**\r\n *\r\n * @param {object} props\r\n * @param {string} [props.class]\r\n * @param {import('preact').Component[]} [props.menuItems]\r\n * @returns\r\n */\r\nexport function DropdownButton(props) {\r\n const {\r\n class: className,\r\n children,\r\n menuItems = []\r\n } = props;\r\n\r\n const dropdownRef = useRef(null);\r\n const menuRef = useRef(null);\r\n\r\n const [ open, setOpen ] = useState(false);\r\n const close = () => setOpen(false);\r\n\r\n function onDropdownToggle(event) {\r\n if (menuRef.current && menuRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n\r\n setOpen(open => !open);\r\n }\r\n\r\n function onActionClick(event, action) {\r\n event.stopPropagation();\r\n\r\n close();\r\n action();\r\n }\r\n\r\n useGlobalClick([ dropdownRef.current ], () => close());\r\n\r\n return (\r\n <div\r\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\r\n onClick={ onDropdownToggle }\r\n ref={ dropdownRef }\r\n >\r\n { children }\r\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\r\n { menuItems.map((item, index) => (\r\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\r\n )) }\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction MenuItem({ item, onClick }) {\r\n if (item.separator) {\r\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\r\n }\r\n\r\n if (item.action) {\r\n return (<button\r\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\r\n onClick={ event => onClick(event, item.action) }\r\n >\r\n {item.entry}\r\n </button>);\r\n }\r\n\r\n return <div\r\n class=\"bio-properties-panel-dropdown-button__menu-item\"\r\n >\r\n {item.entry}\r\n </div>;\r\n}\r\n\r\n/**\r\n *\r\n * @param {Array<null | Element>} ignoredElements\r\n * @param {Function} callback\r\n */\r\nfunction useGlobalClick(ignoredElements, callback) {\r\n useEffect(() => {\r\n\r\n /**\r\n * @param {MouseEvent} event\r\n */\r\n function listener(event) {\r\n if (ignoredElements.some(element => element && element.contains(event.target))) {\r\n return;\r\n }\r\n\r\n callback();\r\n }\r\n\r\n document.addEventListener('click', listener, { capture: true });\r\n\r\n return () => document.removeEventListener('click', listener, { capture: true });\r\n }, [ ...ignoredElements, callback ]);\r\n}\r\n","import classnames from 'classnames';\r\n\r\nexport function HeaderButton(props) {\r\n const {\r\n children = null,\r\n class: classname,\r\n onClick = () => {},\r\n ...otherProps\r\n } = props;\r\n\r\n return <button\r\n { ...otherProps }\r\n onClick={ onClick }\r\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\r\n { children }\r\n </button>;\r\n}\r\n","import {\r\n useCallback,\r\n useContext,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport {\r\n ArrowIcon,\r\n DeleteIcon,\r\n} from '../icons';\r\n\r\nimport { PropertiesPanelContext } from '../../context';\r\n\r\n\r\nexport default function CollapsibleEntry(props) {\r\n const {\r\n element,\r\n entries = [],\r\n id,\r\n label,\r\n open: shouldOpen,\r\n remove\r\n } = props;\r\n\r\n const [ open, setOpen ] = useState(shouldOpen);\r\n\r\n const toggleOpen = () => setOpen(!open);\r\n\r\n const { onShow } = useContext(PropertiesPanelContext);\r\n\r\n const propertiesPanelContext = {\r\n ...useContext(PropertiesPanelContext),\r\n onShow: useCallback(() => {\r\n setOpen(true);\r\n\r\n if (isFunction(onShow)) {\r\n onShow();\r\n }\r\n }, [ onShow, setOpen ])\r\n };\r\n\r\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\r\n const placeholderLabel = '<empty>';\r\n\r\n return (\r\n <div\r\n data-entry-id={ id }\r\n class={ classnames(\r\n 'bio-properties-panel-collapsible-entry',\r\n open ? 'open' : ''\r\n ) }>\r\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\r\n <div\r\n title={ label || placeholderLabel }\r\n class={ classnames(\r\n 'bio-properties-panel-collapsible-entry-header-title',\r\n !label && 'empty'\r\n ) }>\r\n { label || placeholderLabel }\r\n </div>\r\n <button\r\n title=\"Toggle list item\"\r\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\r\n >\r\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\r\n </button>\r\n {\r\n remove\r\n ?\r\n (\r\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\r\n <DeleteIcon />\r\n </button>\r\n )\r\n : null\r\n }\r\n </div>\r\n <div class={ classnames(\r\n 'bio-properties-panel-collapsible-entry-entries',\r\n open ? 'open' : ''\r\n ) }>\r\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\r\n {\r\n entries.map(entry => {\r\n const {\r\n component: Component,\r\n id\r\n } = entry;\r\n\r\n return (\r\n <Component\r\n { ...entry }\r\n element={ element }\r\n key={ id } />\r\n );\r\n })\r\n }\r\n </PropertiesPanelContext.Provider>\r\n </div>\r\n </div>\r\n );\r\n}","import {\r\n useEffect\r\n} from 'preact/hooks';\r\n\r\nimport {\r\n query as domQuery\r\n} from 'min-dom';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport CollapsibleEntry from './entries/Collapsible';\r\n\r\n/**\r\n * @param {import('../PropertiesPanel').ListItemDefinition} props\r\n */\r\nexport default function ListItem(props) {\r\n const {\r\n autoFocusEntry,\r\n autoOpen\r\n } = props;\r\n\r\n // focus specified entry on auto open\r\n useEffect(() => {\r\n if (autoOpen && autoFocusEntry) {\r\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\r\n\r\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\r\n\r\n if (focusableInput) {\r\n\r\n if (isFunction(focusableInput.select)) {\r\n focusableInput.select();\r\n } else if (isFunction(focusableInput.focus)) {\r\n focusableInput.focus();\r\n }\r\n\r\n }\r\n }\r\n }, [ autoOpen, autoFocusEntry ]);\r\n\r\n\r\n return (\r\n <div class=\"bio-properties-panel-list-item\">\r\n <CollapsibleEntry\r\n { ...props }\r\n open={ autoOpen } />\r\n </div>\r\n );\r\n\r\n}\r\n","import {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useRef,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport {\r\n find,\r\n sortBy\r\n} from 'min-dash';\r\n\r\nimport {\r\n useLayoutState,\r\n usePrevious\r\n} from '../hooks';\r\n\r\nimport ListItem from './ListItem';\r\n\r\nimport {\r\n ArrowIcon,\r\n CreateIcon\r\n} from './icons';\r\n\r\nimport { PropertiesPanelContext } from '../context';\r\n\r\nimport { useStickyIntersectionObserver } from '../hooks';\r\n\r\nconst noop = () => {};\r\n\r\n/**\r\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\r\n */\r\nexport default function ListGroup(props) {\r\n const {\r\n add,\r\n element,\r\n id,\r\n items,\r\n label,\r\n shouldOpen = true,\r\n shouldSort = true\r\n } = props;\r\n\r\n\r\n const groupRef = useRef(null);\r\n\r\n const [ open, setOpen ] = useLayoutState(\r\n [ 'groups', id, 'open' ],\r\n false\r\n );\r\n\r\n const [ sticky, setSticky ] = useState(false);\r\n\r\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\r\n\r\n const [ ordering, setOrdering ] = useState([]);\r\n const [ newItemAdded, setNewItemAdded ] = useState(false);\r\n\r\n const prevItems = usePrevious(items);\r\n const prevElement = usePrevious(element);\r\n\r\n const elementChanged = element !== prevElement;\r\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\r\n\r\n // reset initial ordering when element changes (before first render)\r\n if (elementChanged) {\r\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\r\n }\r\n\r\n // keep ordering in sync to items - and open changes\r\n\r\n // (0) set initial ordering from given items\r\n useEffect(() => {\r\n if (!prevItems || !shouldSort) {\r\n setOrdering(createOrdering(items));\r\n }\r\n }, [ items, element ]);\r\n\r\n // (1) items were added\r\n useEffect(() => {\r\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\r\n\r\n let add = [];\r\n\r\n items.forEach(item => {\r\n if (!ordering.includes(item.id)) {\r\n add.push(item.id);\r\n }\r\n });\r\n\r\n let newOrdering = ordering;\r\n\r\n // open if not open and configured\r\n if (!open && shouldOpen) {\r\n toggleOpen();\r\n\r\n // if I opened and I should sort, then sort items\r\n if (shouldSort) {\r\n newOrdering = createOrdering(sortItems(items));\r\n }\r\n }\r\n\r\n // add new items on top or bottom depending on sorting behavior\r\n newOrdering = newOrdering.filter(item => !add.includes(item));\r\n if (shouldSort) {\r\n newOrdering.unshift(...add);\r\n } else {\r\n newOrdering.push(...add);\r\n }\r\n\r\n setOrdering(newOrdering);\r\n setNewItemAdded(true);\r\n } else {\r\n setNewItemAdded(false);\r\n }\r\n }, [ items, open, shouldHandleEffects ]);\r\n\r\n // (2) sort items on open if shouldSort is set\r\n useEffect(() => {\r\n\r\n if (shouldSort && open && !newItemAdded) {\r\n setOrdering(createOrdering(sortItems(items)));\r\n }\r\n }, [ open, shouldSort ]);\r\n\r\n // (3) items were deleted\r\n useEffect(() => {\r\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\r\n let keep = [];\r\n\r\n ordering.forEach(o => {\r\n if (getItem(items, o)) {\r\n keep.push(o);\r\n }\r\n });\r\n\r\n setOrdering(keep);\r\n }\r\n }, [ items, shouldHandleEffects ]);\r\n\r\n // set css class when group is sticky to top\r\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\r\n\r\n const toggleOpen = () => setOpen(!open);\r\n\r\n const hasItems = !!items.length;\r\n\r\n const propertiesPanelContext = {\r\n ...useContext(PropertiesPanelContext),\r\n onShow\r\n };\r\n\r\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\r\n <div\r\n class={ classnames(\r\n 'bio-properties-panel-group-header',\r\n hasItems ? '' : 'empty',\r\n (hasItems && open) ? 'open' : '',\r\n (sticky && open) ? 'sticky' : ''\r\n ) }\r\n onClick={ hasItems ? toggleOpen : noop }>\r\n <div\r\n title={ label }\r\n class=\"bio-properties-panel-group-header-title\"\r\n >\r\n { label }\r\n </div>\r\n <div class=\"bio-properties-panel-group-header-buttons\">\r\n {\r\n add\r\n ? (\r\n <button\r\n title=\"Create new list item\"\r\n class=\"bio-properties-panel-group-header-button bio-properties-panel-add-entry\"\r\n onClick={ add }\r\n >\r\n <CreateIcon />\r\n {\r\n !hasItems ? (\r\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\r\n )\r\n : null\r\n }\r\n </button>\r\n )\r\n : null\r\n }\r\n {\r\n hasItems\r\n ? (\r\n <div\r\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\r\n class=\"bio-properties-panel-list-badge\"\r\n >\r\n { items.length }\r\n </div>\r\n )\r\n : null\r\n }\r\n {\r\n hasItems\r\n ? (\r\n <button\r\n title=\"Toggle section\"\r\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\r\n >\r\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\r\n </button>\r\n )\r\n : null\r\n }\r\n </div>\r\n </div>\r\n <div class={ classnames(\r\n 'bio-properties-panel-list',\r\n open && hasItems ? 'open' : ''\r\n ) }>\r\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\r\n\r\n {\r\n ordering.map((o, index) => {\r\n const item = getItem(items, o);\r\n\r\n if (!item) {\r\n return;\r\n }\r\n\r\n const { id } = item;\r\n\r\n // if item was added, open first or last item based on ordering\r\n const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1);\r\n\r\n return (\r\n <ListItem\r\n { ...item }\r\n autoOpen={ autoOpen }\r\n element={ element }\r\n index={ index }\r\n key={ id } />\r\n );\r\n })\r\n }\r\n </PropertiesPanelContext.Provider>\r\n </div>\r\n </div>;\r\n}\r\n\r\n\r\n// helpers ////////////////////\r\n\r\n/**\r\n * Sorts given items alphanumeric by label\r\n */\r\nfunction sortItems(items) {\r\n return sortBy(items, i => i.label.toLowerCase());\r\n}\r\n\r\nfunction getItem(items, id) {\r\n return find(items, i => i.id === id);\r\n}\r\n\r\nfunction createOrdering(items) {\r\n return items.map(i => i.id);\r\n}\r\n","import {\r\n useDescriptionContext\r\n} from '../../hooks';\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.forId - id of the entry the description is used for\r\n * @param {String} props.value\r\n */\r\nexport default function Description(props) {\r\n const {\r\n element,\r\n forId,\r\n value\r\n } = props;\r\n\r\n const contextDescription = useDescriptionContext(forId, element);\r\n\r\n const description = value || contextDescription;\r\n\r\n if (description) {\r\n return (\r\n <div class=\"bio-properties-panel-description\">\r\n { description }\r\n </div>\r\n );\r\n }\r\n}\r\n","import {\r\n useError,\r\n useShowEntryEvent\r\n} from '../../hooks';\r\n\r\nimport {\r\n useEffect,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport Description from './Description';\r\n\r\nfunction Checkbox(props) {\r\n const {\r\n id,\r\n label,\r\n onChange,\r\n disabled,\r\n value = false,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const handleChangeCallback = ({ target }) => {\r\n onChange(target.checked);\r\n };\r\n\r\n const handleChange = e => {\r\n handleChangeCallback(e);\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n const ref = useShowEntryEvent(id);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-checkbox\">\r\n <input\r\n ref={ ref }\r\n id={ prefixId(id) }\r\n name={ id }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n type=\"checkbox\"\r\n class=\"bio-properties-panel-input\"\r\n onChange={ handleChange }\r\n checked={ localValue }\r\n disabled={ disabled } />\r\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.id\r\n * @param {String} props.description\r\n * @param {String} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n * @param {boolean} [props.disabled]\r\n */\r\nexport default function CheckboxEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n label,\r\n getValue,\r\n setValue,\r\n disabled,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const value = getValue(element);\r\n\r\n const error = useError(id);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\r\n <Checkbox\r\n disabled={ disabled }\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n onChange={ setValue }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ value } />\r\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.checked;\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}\r\n","import classNames from 'classnames';\r\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\r\nimport { forwardRef } from 'preact/compat';\r\n\r\nimport FeelEditor from '@bpmn-io/feel-editor';\r\nimport { useStaticCallback } from '../../../hooks';\r\n\r\n/**\r\n * Buffer `.focus()` calls while the editor is not initialized.\r\n * Set Focus inside when the editor is ready.\r\n */\r\nconst useBufferedFocus = function(editor, ref) {\r\n\r\n const [ buffer, setBuffer ] = useState(undefined);\r\n\r\n ref.current = useMemo(() => ({\r\n focus: (offset) => {\r\n if (editor) {\r\n editor.focus(offset);\r\n } else {\r\n if (typeof offset === 'undefined') {\r\n offset = Infinity;\r\n }\r\n setBuffer(offset);\r\n }\r\n }\r\n }), [ editor ]);\r\n\r\n useEffect(() => {\r\n if (typeof buffer !== 'undefined' && editor) {\r\n editor.focus(buffer);\r\n setBuffer(false);\r\n }\r\n }, [ editor, buffer ]);\r\n};\r\n\r\nconst CodeEditor = forwardRef((props, ref) => {\r\n\r\n const {\r\n value,\r\n onInput,\r\n onFeelToggle,\r\n onLint = () => {},\r\n disabled,\r\n tooltipContainer,\r\n variables\r\n } = props;\r\n\r\n const inputRef = useRef();\r\n const [ editor, setEditor ] = useState();\r\n const [ localValue, setLocalValue ] = useState(value || '');\r\n\r\n useBufferedFocus(editor, ref);\r\n\r\n const handleInput = useStaticCallback(newValue => {\r\n onInput(newValue);\r\n setLocalValue(newValue);\r\n });\r\n\r\n useEffect(() => {\r\n\r\n let editor;\r\n\r\n /* Trigger FEEL toggle when\r\n *\r\n * - `backspace` is pressed\r\n * - AND the cursor is at the beginning of the input\r\n */\r\n const onKeyDown = e => {\r\n if (e.key !== 'Backspace' || !editor) {\r\n return;\r\n }\r\n\r\n const selection = editor.getSelection();\r\n const range = selection.ranges[selection.mainIndex];\r\n\r\n if (range.from === 0 && range.to === 0) {\r\n onFeelToggle();\r\n }\r\n };\r\n\r\n editor = new FeelEditor({\r\n container: inputRef.current,\r\n onChange: handleInput,\r\n onKeyDown: onKeyDown,\r\n onLint: onLint,\r\n tooltipContainer: tooltipContainer,\r\n value: localValue,\r\n variables: variables\r\n });\r\n\r\n setEditor(\r\n editor\r\n );\r\n\r\n return () => {\r\n onLint([]);\r\n inputRef.current.innerHTML = '';\r\n setEditor(null);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!editor) {\r\n return;\r\n }\r\n\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n editor.setValue(value);\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n useEffect(() => {\r\n if (!editor) {\r\n return;\r\n }\r\n\r\n editor.setVariables(variables);\r\n }, [ variables ]);\r\n\r\n const handleClick = () => {\r\n ref.current.focus();\r\n };\r\n\r\n return <div class={ classNames('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null) }>\r\n <div\r\n name={ props.name }\r\n class={ classNames('bio-properties-panel-input', localValue ? 'edited' : null) }\r\n ref={ inputRef }\r\n onClick={ handleClick }\r\n ></div>\r\n </div>;\r\n});\r\n\r\nexport default CodeEditor;","export function FeelIndicator(props) {\r\n const {\r\n active\r\n } = props;\r\n\r\n if (!active) {\r\n return null;\r\n }\r\n\r\n return <span class=\"bio-properties-panel-feel-indicator\">\r\n =\r\n </span>;\r\n}","import classNames from 'classnames';\r\nimport { FeelOptionalIcon, FeelRequiredIcon } from '../../icons';\r\n\r\nconst noop = () => {};\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.label\r\n * @param {String} props.feel\r\n */\r\nexport default function FeelIcon(props) {\r\n\r\n const {\r\n label,\r\n feel = false,\r\n active,\r\n disabled = false,\r\n onClick = noop\r\n } = props;\r\n\r\n const feelRequiredLabel = ' must be a FEEL expression';\r\n const feelOptionalLabel = ' can optionally be a FEEL expression';\r\n\r\n const handleClick = e => {\r\n onClick(e);\r\n\r\n // when pointer event was created from keyboard, keep focus on button\r\n if (!e.pointerType) {\r\n e.stopPropagation();\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n class={ classNames('bio-properties-panel-feel-icon',\r\n active ? 'active' : null,\r\n feel === 'required' ? 'required' : 'optional') }\r\n onClick={ handleClick }\r\n disabled={ feel === 'required' || disabled }\r\n title={\r\n label + (\r\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\r\n )\r\n }\r\n >\r\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\r\n </button>\r\n );\r\n}","import Description from '../Description';\r\n\r\nimport {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport { forwardRef } from 'preact/compat';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport {\r\n usePrevious,\r\n useShowEntryEvent,\r\n useError,\r\n useStaticCallback\r\n} from '../../../hooks';\r\n\r\nimport CodeEditor from './FeelEditor';\r\nimport { FeelIndicator } from './FeelIndicator';\r\nimport FeelIcon from './FeelIcon';\r\n\r\nconst noop = () => { };\r\n\r\nfunction FeelTextfield(props) {\r\n const {\r\n debounce,\r\n id,\r\n label,\r\n onInput,\r\n onError,\r\n feel,\r\n value = '',\r\n disabled = false,\r\n variables,\r\n tooltipContainer,\r\n OptionalComponent = OptionalFeelInput\r\n } = props;\r\n\r\n const [ localValue, _setLocalValue ] = useState(value);\r\n\r\n const editorRef = useShowEntryEvent(id);\r\n const containerRef = useRef();\r\n\r\n const feelActive = localValue.startsWith('=') || feel === 'required';\r\n const feelOnlyValue = localValue.startsWith('=') ? localValue.substring(1) : localValue;\r\n\r\n const [ focus, _setFocus ] = useState(undefined);\r\n\r\n const setFocus = (offset = 0) => {\r\n const hasFocus = containerRef.current.contains(document.activeElement);\r\n\r\n // Keep caret position if it is already focused, otherwise focus at the end\r\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\r\n\r\n _setFocus(position + offset);\r\n };\r\n\r\n const handleInputCallback = useMemo(() => {\r\n return debounce((newValue) => {\r\n onInput(newValue);\r\n });\r\n }, [ onInput, debounce ]);\r\n\r\n const setLocalValue = newValue => {\r\n _setLocalValue(newValue);\r\n\r\n if (!newValue || newValue === '=') {\r\n handleInputCallback(undefined);\r\n } else {\r\n handleInputCallback(newValue);\r\n }\r\n\r\n };\r\n\r\n const handleFeelToggle = useStaticCallback(() => {\r\n if (feel === 'required') {\r\n return;\r\n }\r\n\r\n if (!feelActive) {\r\n setLocalValue('=' + localValue);\r\n } else {\r\n setLocalValue(feelOnlyValue);\r\n }\r\n });\r\n\r\n const handleLocalInput = (newValue) => {\r\n if (feelActive) {\r\n newValue = '=' + newValue;\r\n }\r\n\r\n if (newValue === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(newValue);\r\n\r\n if (!feelActive && newValue.startsWith('=')) {\r\n\r\n // focus is behind `=` sign that will be removed\r\n setFocus(-1);\r\n }\r\n };\r\n\r\n const handleLint = useStaticCallback(lint => {\r\n\r\n if (!(lint && lint.length)) {\r\n onError(undefined);\r\n return;\r\n }\r\n const error = lint[0];\r\n const message = `${error.source}: ${error.message}`;\r\n\r\n onError(message);\r\n });\r\n\r\n useEffect(() => {\r\n if (typeof focus !== 'undefined') {\r\n editorRef.current.focus(focus);\r\n _setFocus(undefined);\r\n }\r\n }, [ focus ]);\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n // External value change removed content => keep FEEL configuration\r\n if (!value) {\r\n setLocalValue(feelActive ? '=' : '');\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n\r\n // copy-paste integration\r\n useEffect(() => {\r\n const copyHandler = event => {\r\n if (!feelActive) {\r\n return;\r\n }\r\n event.clipboardData.setData('application/FEEL', event.clipboardData.getData('text'));\r\n };\r\n\r\n const pasteHandler = event => {\r\n if (feelActive) {\r\n return;\r\n }\r\n\r\n const data = event.clipboardData.getData('application/FEEL');\r\n\r\n if (data) {\r\n setTimeout(() => {\r\n handleFeelToggle();\r\n setFocus();\r\n });\r\n }\r\n };\r\n containerRef.current.addEventListener('copy', copyHandler);\r\n containerRef.current.addEventListener('cut', copyHandler);\r\n containerRef.current.addEventListener('paste', pasteHandler);\r\n\r\n return () => {\r\n containerRef.current.removeEventListener('copy', copyHandler);\r\n containerRef.current.removeEventListener('cut', copyHandler);\r\n containerRef.current.removeEventListener('paste', pasteHandler);\r\n };\r\n }, [ containerRef, feelActive, handleFeelToggle, setFocus ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-feel-entry\">\r\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\r\n {label}\r\n <FeelIcon\r\n label={ label }\r\n feel={ feel }\r\n onClick={ handleFeelToggle }\r\n active={ feelActive }></FeelIcon>\r\n </label>\r\n\r\n <div class=\"bio-properties-panel-feel-container\" ref={ containerRef }>\r\n <FeelIndicator\r\n active={ feelActive }\r\n disabled={ feel !== 'optional' || disabled }\r\n onClick={ handleFeelToggle }\r\n />\r\n {feelActive ?\r\n <CodeEditor\r\n id={ prefixId(id) }\r\n name={ id }\r\n onInput={ handleLocalInput }\r\n disabled={ disabled }\r\n onFeelToggle={ () => { handleFeelToggle(); setFocus(true); } }\r\n onLint={ handleLint }\r\n value={ feelOnlyValue }\r\n variables={ variables }\r\n ref={ editorRef }\r\n tooltipContainer={ tooltipContainer }\r\n /> :\r\n <OptionalComponent\r\n { ...props }\r\n onInput={ handleLocalInput }\r\n value={ localValue }\r\n ref={ editorRef }\r\n />\r\n }\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst OptionalFeelInput = forwardRef((props, ref) => {\r\n const {\r\n id,\r\n disabled,\r\n onInput,\r\n value,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const inputRef = useRef();\r\n\r\n // To be consistent with the FEEL editor, set focus at start of input\r\n // this ensures clean editing experience when switching with the keyboard\r\n ref.current = {\r\n focus: (position) => {\r\n const input = inputRef.current;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n input.focus();\r\n if (typeof position === 'number') {\r\n if (position > value.length) {\r\n position = value.length;\r\n }\r\n input.setSelectionRange(position, position);\r\n }\r\n\r\n }\r\n };\r\n\r\n return <input\r\n id={ prefixId(id) }\r\n type=\"text\"\r\n ref={ inputRef }\r\n name={ id }\r\n spellCheck=\"false\"\r\n autoComplete=\"off\"\r\n disabled={ disabled }\r\n class=\"bio-properties-panel-input\"\r\n onInput={ e => onInput(e.target.value) }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ value || '' } />;\r\n});\r\n\r\n\r\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\r\n const {\r\n id,\r\n disabled,\r\n onInput,\r\n value,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const inputRef = useRef();\r\n\r\n // To be consistent with the FEEL editor, set focus at start of input\r\n // this ensures clean editing experience when switching with the keyboard\r\n ref.current = {\r\n focus: () => {\r\n const input = inputRef.current;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n input.focus();\r\n input.setSelectionRange(0, 0);\r\n }\r\n };\r\n\r\n return <textarea\r\n id={ prefixId(id) }\r\n type=\"text\"\r\n ref={ inputRef }\r\n name={ id }\r\n spellCheck=\"false\"\r\n autoComplete=\"off\"\r\n disabled={ disabled }\r\n class=\"bio-properties-panel-input\"\r\n onInput={ e => onInput(e.target.value) }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ value || '' }\r\n data-gramm=\"false\"\r\n />;\r\n});\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.id\r\n * @param {String} props.description\r\n * @param {Boolean} props.debounce\r\n * @param {Boolean} props.disabled\r\n * @param {Boolean} props.feel\r\n * @param {String} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.tooltipContainer\r\n * @param {Function} props.validate\r\n * @param {Function} props.show\r\n * @param {Function} props.example\r\n * @param {Function} props.variables\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n */\r\nexport default function FeelEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n debounce,\r\n disabled,\r\n feel,\r\n label,\r\n getValue,\r\n setValue,\r\n tooltipContainer,\r\n validate,\r\n show = noop,\r\n example,\r\n variables,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\r\n const [ validationError, setValidationError ] = useState(null);\r\n const [ localError, setLocalError ] = useState(null);\r\n\r\n let value = getValue(element);\r\n\r\n const previousValue = usePrevious(value);\r\n\r\n useEffect(() => {\r\n if (isFunction(validate)) {\r\n const newValidationError = validate(value) || null;\r\n\r\n setValidationError(newValidationError);\r\n }\r\n }, [ value ]);\r\n\r\n const onInput = useStaticCallback((newValue) => {\r\n let newValidationError = null;\r\n\r\n if (isFunction(validate)) {\r\n newValidationError = validate(newValue) || null;\r\n }\r\n\r\n if (newValidationError) {\r\n setCachedInvalidValue(newValue);\r\n } else {\r\n\r\n // don't create multiple commandStack entries for the same value\r\n if (newValue !== value) {\r\n setValue(newValue);\r\n }\r\n }\r\n\r\n setValidationError(newValidationError);\r\n });\r\n\r\n const onError = useCallback(err => {\r\n setLocalError(err);\r\n }, []);\r\n\r\n if (previousValue === value && validationError) {\r\n value = cachedInvalidValue;\r\n }\r\n\r\n const temporaryError = useError(id);\r\n\r\n const error = localError || temporaryError || validationError;\r\n\r\n return (\r\n <div\r\n class={ classnames(\r\n props.class,\r\n 'bio-properties-panel-entry',\r\n error ? 'has-error' : '')\r\n }\r\n data-entry-id={ id }>\r\n <FeelTextfield\r\n debounce={ debounce }\r\n disabled={ disabled }\r\n feel={ feel }\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n onInput={ onInput }\r\n onError={ onError }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n example={ example }\r\n show={ show }\r\n value={ value }\r\n variables={ variables }\r\n tooltipContainer={ tooltipContainer }\r\n OptionalComponent={ props.OptionalComponent } />\r\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.id\r\n * @param {String} props.description\r\n * @param {Boolean} props.debounce\r\n * @param {Boolean} props.disabled\r\n * @param {Boolean} props.feel\r\n * @param {String} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.tooltipContainer\r\n * @param {Function} props.validate\r\n * @param {Function} props.show\r\n * @param {Function} props.example\r\n * @param {Function} props.variables\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n */\r\nexport function FeelTextArea(props) {\r\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && (!!node.value || node.classList.contains('edited'));\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${id}`;\r\n}\r\n\r\n","import classNames from 'classnames';\r\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\r\nimport { forwardRef } from 'preact/compat';\r\n\r\nimport { FeelersEditor } from 'feelers';\r\nimport { useStaticCallback } from '../../../hooks';\r\n\r\n/**\r\n * Buffer `.focus()` calls while the editor is not initialized.\r\n * Set Focus inside when the editor is ready.\r\n */\r\nconst useBufferedFocus = function(editor, ref) {\r\n\r\n const [ buffer, setBuffer ] = useState(undefined);\r\n\r\n ref.current = useMemo(() => ({\r\n focus: (offset) => {\r\n if (editor) {\r\n editor.focus(offset);\r\n } else {\r\n if (typeof offset === 'undefined') {\r\n offset = Infinity;\r\n }\r\n setBuffer(offset);\r\n }\r\n }\r\n }), [ editor ]);\r\n\r\n useEffect(() => {\r\n if (typeof buffer !== 'undefined' && editor) {\r\n editor.focus(buffer);\r\n setBuffer(false);\r\n }\r\n }, [ editor, buffer ]);\r\n};\r\n\r\nconst CodeEditor = forwardRef((props, ref) => {\r\n\r\n const {\r\n value,\r\n onInput,\r\n onLint = () => {},\r\n contentAttributes = {},\r\n disabled,\r\n tooltipContainer,\r\n useGutters = false,\r\n darkMode = false\r\n } = props;\r\n\r\n const inputRef = useRef();\r\n const [ editor, setEditor ] = useState();\r\n const [ localValue, setLocalValue ] = useState(value || '');\r\n\r\n useBufferedFocus(editor, ref);\r\n\r\n const handleInput = useStaticCallback(newValue => {\r\n onInput(newValue);\r\n setLocalValue(newValue);\r\n });\r\n\r\n useEffect(() => {\r\n\r\n let editor;\r\n\r\n editor = new FeelersEditor({\r\n container: inputRef.current,\r\n onChange: handleInput,\r\n onLint: onLint,\r\n contentAttributes: contentAttributes,\r\n tooltipContainer: tooltipContainer,\r\n value: localValue,\r\n darkMode: darkMode,\r\n enableGutters: useGutters\r\n });\r\n\r\n setEditor(\r\n editor\r\n );\r\n\r\n return () => {\r\n onLint([]);\r\n inputRef.current.innerHTML = '';\r\n setEditor(null);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!editor) {\r\n return;\r\n }\r\n\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n editor.setValue(value);\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n const handleClick = () => {\r\n ref.current.focus();\r\n };\r\n\r\n return <div\r\n name={ props.name }\r\n class={ classNames('bio-properties-panel-feelers-editor bio-properties-panel-input', localValue ? 'edited' : null, disabled ? 'disabled' : null) }\r\n ref={ inputRef }\r\n onClick={ handleClick }\r\n ></div>;\r\n});\r\n\r\nexport default CodeEditor;","import { useCallback, useEffect, useState, useMemo, useRef } from 'preact/hooks';\r\nimport { usePrevious, useStaticCallback, useShowEntryEvent } from '../../../hooks';\r\nimport { isFunction } from 'min-dash';\r\nimport { useError } from '../../../hooks';\r\nimport classnames from 'classnames';\r\nimport Description from '../Description';\r\nimport FeelTemplatingEditor from './FeelTemplatingEditor';\r\n\r\nconst noop = () => { };\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.id\r\n * @param {String} props.description\r\n * @param {Boolean} props.debounce\r\n * @param {Boolean} props.disabled\r\n * @param {String} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.tooltipContainer\r\n * @param {Function} props.validate\r\n * @param {Function} props.show\r\n */\r\nexport default function FeelTemplatingEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n debounce,\r\n disabled,\r\n label,\r\n getValue,\r\n setValue,\r\n tooltipContainer,\r\n validate,\r\n show = noop,\r\n } = props;\r\n\r\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\r\n const [ validationError, setValidationError ] = useState(null);\r\n const [ localError, setLocalError ] = useState(null);\r\n\r\n let value = getValue(element);\r\n\r\n const previousValue = usePrevious(value);\r\n\r\n useEffect(() => {\r\n if (isFunction(validate)) {\r\n const newValidationError = validate(value) || null;\r\n\r\n setValidationError(newValidationError);\r\n }\r\n }, [ value ]);\r\n\r\n const onInput = useStaticCallback((newValue) => {\r\n let newValidationError = null;\r\n\r\n if (isFunction(validate)) {\r\n newValidationError = validate(newValue) || null;\r\n }\r\n\r\n if (newValidationError) {\r\n setCachedInvalidValue(newValue);\r\n } else {\r\n\r\n // don't create multiple commandStack entries for the same value\r\n if (newValue !== value) {\r\n setValue(newValue);\r\n }\r\n }\r\n\r\n setValidationError(newValidationError);\r\n });\r\n\r\n const onError = useCallback(err => {\r\n setLocalError(err);\r\n }, []);\r\n\r\n if (previousValue === value && validationError) {\r\n value = cachedInvalidValue;\r\n }\r\n\r\n const temporaryError = useError(id);\r\n\r\n const error = localError || temporaryError || validationError;\r\n\r\n return (\r\n <div\r\n class={ classnames(\r\n 'bio-properties-panel-entry',\r\n error ? 'has-error' : '')\r\n }\r\n data-entry-id={ id }>\r\n <FeelTemplating\r\n debounce={ debounce }\r\n disabled={ disabled }\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n onInput={ onInput }\r\n onError={ onError }\r\n show={ show }\r\n value={ value }\r\n tooltipContainer={ tooltipContainer } />\r\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nfunction FeelTemplating(props) {\r\n const {\r\n debounce,\r\n id,\r\n label,\r\n onInput,\r\n onError,\r\n value = '',\r\n disabled = false,\r\n tooltipContainer\r\n } = props;\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const editorRef = useShowEntryEvent(id);\r\n const containerRef = useRef();\r\n\r\n const [ focus, _setFocus ] = useState(undefined);\r\n\r\n const setFocus = (offset = 0) => {\r\n const hasFocus = containerRef.current.contains(document.activeElement);\r\n\r\n // Keep caret position if it is already focused, otherwise focus at the end\r\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\r\n\r\n _setFocus(position + offset);\r\n };\r\n\r\n const handleInputCallback = useMemo(() => {\r\n return debounce((newValue) => onInput(newValue.length ? newValue : undefined));\r\n }, [ onInput, debounce ]);\r\n\r\n const handleInput = newValue => {\r\n handleInputCallback(newValue);\r\n setLocalValue(newValue);\r\n };\r\n\r\n const handleLint = useStaticCallback(lint => {\r\n\r\n const errors = lint && lint.length && lint.filter(e => e.severity === 'error') || [];\r\n\r\n if (!errors.length) {\r\n onError(undefined);\r\n return;\r\n }\r\n\r\n const error = lint[0];\r\n const message = `${error.source}: ${error.message}`;\r\n\r\n onError(message);\r\n });\r\n\r\n useEffect(() => {\r\n if (typeof focus !== 'undefined') {\r\n editorRef.current.focus(focus);\r\n _setFocus(undefined);\r\n }\r\n }, [ focus ]);\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n setLocalValue(value ? value : '');\r\n }, [ value ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-feelers\">\r\n <label id={ prefixIdLabel(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\r\n { label }\r\n </label>\r\n <div class=\"bio-properties-panel-feelers-input\" ref={ containerRef }>\r\n <FeelTemplatingEditor\r\n name={ id }\r\n onInput={ handleInput }\r\n contentAttributes={ { 'aria-labelledby' : prefixIdLabel(id) } }\r\n disabled={ disabled }\r\n onLint={ handleLint }\r\n value={ localValue }\r\n useGutters={ false }\r\n ref={ editorRef }\r\n tooltipContainer={ tooltipContainer }\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && (!!node.value || node.classList.contains('edited'));\r\n}\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixIdLabel(id) {\r\n return `bio-properties-panel-feelers-${id}-label`;\r\n}","import {\r\n useEffect,\r\n useRef,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport {\r\n query as domQuery\r\n} from 'min-dom';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport {\r\n useKeyFactory,\r\n usePrevious\r\n} from '../../hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport {\r\n ArrowIcon,\r\n CreateIcon,\r\n DeleteIcon\r\n} from '../icons';\r\n\r\n/**\r\n * Entry for handling lists represented as nested entries.\r\n *\r\n * @template Item\r\n * @param {object} props\r\n * @param {string} props.id\r\n * @param {*} props.element\r\n * @param {Function} props.onAdd\r\n * @param {import('preact').Component} props.component\r\n * @param {string} [props.label='<empty>']\r\n * @param {Function} [props.onRemove]\r\n * @param {Item[]} [props.items]\r\n * @param {boolean} [props.open]\r\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\r\n * @param {(a: Item, b: Item) => -1 | 0 | 1} [props.compareFn]\r\n * @returns\r\n */\r\nexport default function List(props) {\r\n const {\r\n id,\r\n element,\r\n items = [],\r\n component,\r\n label = '<empty>',\r\n open: shouldOpen,\r\n onAdd,\r\n onRemove,\r\n autoFocusEntry,\r\n compareFn,\r\n ...restProps\r\n } = props;\r\n\r\n const [ open, setOpen ] = useState(!!shouldOpen);\r\n\r\n const hasItems = !!items.length;\r\n const toggleOpen = () => hasItems && setOpen(!open);\r\n\r\n const opening = !usePrevious(open) && open;\r\n const elementChanged = usePrevious(element) !== element;\r\n const shouldReset = opening || elementChanged;\r\n const sortedItems = useSortedItems(items, compareFn, shouldReset);\r\n\r\n const newItems = useNewItems(items, elementChanged);\r\n\r\n useEffect(() => {\r\n if (open && !hasItems) {\r\n setOpen(false);\r\n }\r\n }, [ open, hasItems ]);\r\n\r\n /**\r\n * @param {MouseEvent} event\r\n */\r\n function addItem(event) {\r\n event.stopPropagation();\r\n onAdd();\r\n\r\n if (!open) {\r\n setOpen(true);\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n data-entry-id={ id }\r\n class={ classnames(\r\n 'bio-properties-panel-entry',\r\n 'bio-properties-panel-list-entry',\r\n hasItems ? '' : 'empty',\r\n open ? 'open' : ''\r\n ) }>\r\n <div class=\"bio-properties-panel-list-entry-header\" onClick={ toggleOpen }>\r\n <div\r\n title={ label }\r\n class={ classnames(\r\n 'bio-properties-panel-list-entry-header-title',\r\n open && 'open'\r\n ) }>\r\n { label }\r\n </div>\r\n <div\r\n class=\"bio-properties-panel-list-entry-header-buttons\"\r\n >\r\n <button\r\n title=\"Create new list item\"\r\n onClick={ addItem }\r\n class=\"bio-properties-panel-add-entry\"\r\n >\r\n <CreateIcon />\r\n {\r\n !hasItems ? (\r\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\r\n )\r\n : null\r\n }\r\n </button>\r\n {\r\n hasItems && (\r\n <div\r\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\r\n class=\"bio-properties-panel-list-badge\"\r\n >\r\n { items.length }\r\n </div>\r\n )\r\n }\r\n {\r\n hasItems && (\r\n <button\r\n title=\"Toggle list item\"\r\n class=\"bio-properties-panel-arrow\"\r\n >\r\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\r\n </button>\r\n )\r\n }\r\n </div>\r\n </div>\r\n {\r\n hasItems && (\r\n <ItemsList\r\n { ...restProps }\r\n autoFocusEntry={ autoFocusEntry }\r\n component={ component }\r\n element={ element }\r\n id={ id }\r\n items={ sortedItems }\r\n newItems={ newItems }\r\n onRemove={ onRemove }\r\n open={ open }\r\n />\r\n )\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nfunction ItemsList(props) {\r\n const {\r\n autoFocusEntry,\r\n component: Component,\r\n element,\r\n id,\r\n items,\r\n newItems,\r\n onRemove,\r\n open,\r\n ...restProps\r\n } = props;\r\n\r\n const getKey = useKeyFactory();\r\n\r\n const newItem = newItems[0];\r\n\r\n useEffect(() => {\r\n if (newItem && autoFocusEntry) {\r\n\r\n // (0) select the parent entry (containing all list items)\r\n const entry = domQuery(`[data-entry-id=\"${id}\"]`);\r\n\r\n // (1) select the first input or a custom element to be focussed\r\n const selector = typeof(autoFocusEntry) === 'boolean' ?\r\n '.bio-properties-panel-input' :\r\n autoFocusEntry;\r\n const focusableInput = domQuery(selector, entry);\r\n\r\n // (2) set focus\r\n if (focusableInput) {\r\n\r\n if (isFunction(focusableInput.select)) {\r\n focusableInput.select();\r\n } else if (isFunction(focusableInput.focus)) {\r\n focusableInput.focus();\r\n }\r\n\r\n }\r\n }\r\n }, [ newItem, autoFocusEntry, id ]);\r\n\r\n return <ol class={ classnames(\r\n 'bio-properties-panel-list-entry-items',\r\n open ? 'open' : ''\r\n ) }>\r\n {\r\n items.map((item, index) => {\r\n const key = getKey(item);\r\n\r\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\r\n <Component\r\n { ...restProps }\r\n element={ element }\r\n id={ id }\r\n index={ index }\r\n item={ item }\r\n open={ item === newItem } />\r\n {\r\n onRemove && (\r\n <button\r\n type=\"button\"\r\n title=\"Delete item\"\r\n class=\"bio-properties-panel-remove-entry bio-properties-panel-remove-list-entry\"\r\n onClick={ () => onRemove && onRemove(item) }\r\n ><DeleteIcon /></button>\r\n )\r\n }\r\n </li>);\r\n })\r\n }\r\n </ol>;\r\n}\r\n\r\n/**\r\n * Place new items in the beginning of the list and sort the rest with provided function.\r\n *\r\n * @template Item\r\n * @param {Item[]} currentItems\r\n * @param {(a: Item, b: Item) => 0 | 1 | -1} [compareFn] function used to sort items\r\n * @param {boolean} [shouldReset=false] set to `true` to reset state of the hook\r\n * @returns {Item[]}\r\n */\r\nfunction useSortedItems(currentItems, compareFn, shouldReset = false) {\r\n const itemsRef = useRef(currentItems.slice());\r\n\r\n // (1) Reset and optionally sort.\r\n if (shouldReset) {\r\n itemsRef.current = currentItems.slice();\r\n\r\n if (compareFn) {\r\n itemsRef.current.sort(compareFn);\r\n }\r\n } else {\r\n const items = itemsRef.current;\r\n\r\n // (2) Add new item to the list.\r\n for (const item of currentItems) {\r\n if (!items.includes(item)) {\r\n\r\n // Unshift or push depending on whether we have a compareFn\r\n compareFn ? items.unshift(item) : items.push(item);\r\n }\r\n }\r\n\r\n // (3) Filter out removed items.\r\n itemsRef.current = items.filter(item => currentItems.includes(item));\r\n }\r\n\r\n return itemsRef.current;\r\n}\r\n\r\nfunction useNewItems(items = [], shouldReset) {\r\n const previousItems = usePrevious(items.slice()) || [];\r\n\r\n if (shouldReset) {\r\n return [];\r\n }\r\n\r\n return previousItems ? items.filter(item => !previousItems.includes(item)) : [];\r\n}\r\n","import Description from './Description';\r\n\r\nimport {\r\n useEffect,\r\n useMemo,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport {\r\n useError,\r\n usePrevious\r\n} from '../../hooks';\r\n\r\nfunction NumberField(props) {\r\n\r\n const {\r\n debounce,\r\n disabled,\r\n id,\r\n label,\r\n max,\r\n min,\r\n onInput,\r\n step,\r\n value = '',\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const handleInputCallback = useMemo(() => {\r\n return debounce(event => {\r\n\r\n const {\r\n validity,\r\n value\r\n } = event.target;\r\n\r\n if (validity.valid) {\r\n onInput(value ? parseFloat(value) : undefined);\r\n }\r\n });\r\n }, [ onInput, debounce ]);\r\n\r\n const handleInput = e => {\r\n handleInputCallback(e);\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-numberfield\">\r\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\r\n <input\r\n id={ prefixId(id) }\r\n type=\"number\"\r\n name={ id }\r\n spellCheck=\"false\"\r\n autoComplete=\"off\"\r\n disabled={ disabled }\r\n class=\"bio-properties-panel-input\"\r\n max={ max }\r\n min={ min }\r\n onInput={ handleInput }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n step={ step }\r\n value={ localValue } />\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Boolean} props.debounce\r\n * @param {String} props.description\r\n * @param {Boolean} props.disabled\r\n * @param {Object} props.element\r\n * @param {Function} props.getValue\r\n * @param {String} props.id\r\n * @param {String} props.label\r\n * @param {String} props.max\r\n * @param {String} props.min\r\n * @param {Function} props.setValue\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n * @param {String} props.step\r\n * @param {Function} props.validate\r\n */\r\nexport default function NumberFieldEntry(props) {\r\n const {\r\n debounce,\r\n description,\r\n disabled,\r\n element,\r\n getValue,\r\n id,\r\n label,\r\n max,\r\n min,\r\n setValue,\r\n step,\r\n onFocus,\r\n onBlur,\r\n validate\r\n } = props;\r\n\r\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\r\n const globalError = useError(id);\r\n const [ localError, setLocalError ] = useState(null);\r\n\r\n let value = getValue(element);\r\n\r\n const previousValue = usePrevious(value);\r\n\r\n useEffect(() => {\r\n if (isFunction(validate)) {\r\n const newValidationError = validate(value) || null;\r\n\r\n setLocalError(newValidationError);\r\n }\r\n }, [ value ]);\r\n\r\n const onInput = (newValue) => {\r\n let newValidationError = null;\r\n\r\n if (isFunction(validate)) {\r\n newValidationError = validate(newValue) || null;\r\n }\r\n\r\n if (newValidationError) {\r\n setCachedInvalidValue(newValue);\r\n } else {\r\n setValue(newValue);\r\n }\r\n\r\n setLocalError(newValidationError);\r\n };\r\n\r\n if (previousValue === value && localError) {\r\n value = cachedInvalidValue;\r\n }\r\n\r\n const error = globalError || localError;\r\n\r\n return (\r\n <div class={ classnames(\r\n 'bio-properties-panel-entry',\r\n error ? 'has-error' : '') } data-entry-id={ id }>\r\n <NumberField\r\n debounce={ debounce }\r\n disabled={ disabled }\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n onInput={ onInput }\r\n max={ max }\r\n min={ min }\r\n step={ step }\r\n value={ value } />\r\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.value;\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}\r\n","import classNames from 'classnames';\r\n\r\nimport {\r\n useError,\r\n useShowEntryEvent\r\n} from '../../hooks';\r\n\r\nimport {\r\n useEffect,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport Description from './Description';\r\n\r\n/**\r\n * @typedef { { value: string, label: string, disabled: boolean, children: { value: string, label: string, disabled: boolean } } } Option\r\n */\r\n\r\n/**\r\n * Provides basic select input.\r\n *\r\n * @param {object} props\r\n * @param {string} props.id\r\n * @param {string[]} props.path\r\n * @param {string} props.label\r\n * @param {Function} props.onChange\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n * @param {Array<Option>} [props.options]\r\n * @param {string} props.value\r\n * @param {boolean} [props.disabled]\r\n */\r\nfunction Select(props) {\r\n const {\r\n id,\r\n label,\r\n onChange,\r\n options = [],\r\n value = '',\r\n disabled,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const ref = useShowEntryEvent(id);\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const handleChangeCallback = ({ target }) => {\r\n onChange(target.value);\r\n };\r\n\r\n const handleChange = e => {\r\n handleChangeCallback(e);\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-select\">\r\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\r\n {label}\r\n </label>\r\n <select\r\n ref={ ref }\r\n id={ prefixId(id) }\r\n name={ id }\r\n class=\"bio-properties-panel-input\"\r\n onInput={ handleChange }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ localValue }\r\n disabled={ disabled }\r\n >\r\n {options.map((option, idx) => {\r\n if (option.children) {\r\n return (\r\n <optgroup key={ idx } label={ option.label }>\r\n {option.children.map((child, idx) => (\r\n <option\r\n key={ idx }\r\n value={ child.value }\r\n disabled={ child.disabled }\r\n >\r\n {child.label}\r\n </option>\r\n ))}\r\n </optgroup>\r\n );\r\n }\r\n\r\n return (\r\n <option key={ idx } value={ option.value } disabled={ option.disabled }>\r\n {option.label}\r\n </option>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * @param {object} props\r\n * @param {object} props.element\r\n * @param {string} props.id\r\n * @param {string} [props.description]\r\n * @param {string} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n * @param {Function} props.getOptions\r\n * @param {boolean} [props.disabled]\r\n */\r\nexport default function SelectEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n label,\r\n getValue,\r\n setValue,\r\n getOptions,\r\n disabled,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const value = getValue(element);\r\n const options = getOptions(element);\r\n const error = useError(id);\r\n\r\n return (\r\n <div\r\n class={ classNames(\r\n 'bio-properties-panel-entry',\r\n error ? 'has-error' : '')\r\n }\r\n data-entry-id={ id }>\r\n <Select\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n value={ value }\r\n onChange={ setValue }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n options={ options }\r\n disabled={ disabled } />\r\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.value;\r\n}\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}","import {\r\n useMemo,\r\n useEffect,\r\n useState\r\n} from 'preact/hooks';\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Function} props.debounce\r\n * @param {Boolean} [props.disabled]\r\n * @param {Object} props.element\r\n * @param {Function} props.getValue\r\n * @param {String} props.id\r\n * @param {Function} [props.onBlur]\r\n * @param {Function} [props.onFocus]\r\n * @param {Function} props.setValue\r\n */\r\nexport default function Simple(props) {\r\n const {\r\n debounce,\r\n disabled,\r\n element,\r\n getValue,\r\n id,\r\n onBlur,\r\n onFocus,\r\n setValue\r\n } = props;\r\n\r\n const value = getValue(element);\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const handleInputCallback = useMemo(() => {\r\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\r\n }, [ setValue, debounce ]);\r\n\r\n const handleInput = e => {\r\n handleInputCallback(e);\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n\r\n return (\r\n <div class=\"bio-properties-panel-simple\">\r\n <input\r\n id={ prefixId(id) }\r\n key={ element }\r\n type=\"text\"\r\n name={ id }\r\n spellCheck=\"false\"\r\n autoComplete=\"off\"\r\n disabled={ disabled }\r\n class=\"bio-properties-panel-input\"\r\n onInput={ handleInput }\r\n aria-label={ localValue || '<empty>' }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ localValue } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.value;\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}\r\n","import Description from './Description';\r\n\r\nimport {\r\n useEffect,\r\n useLayoutEffect,\r\n useMemo,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport {\r\n useError,\r\n useShowEntryEvent\r\n} from '../../hooks';\r\n\r\nfunction resizeToContents(element) {\r\n element.style.height = 'auto';\r\n\r\n // a 2px pixel offset is required to prevent scrollbar from\r\n // appearing on OS with a full length scroll bar (Windows/Linux)\r\n element.style.height = `${ element.scrollHeight + 2 }px`;\r\n}\r\n\r\nfunction TextArea(props) {\r\n\r\n const {\r\n id,\r\n label,\r\n debounce,\r\n onInput,\r\n value = '',\r\n disabled,\r\n monospace,\r\n onFocus,\r\n onBlur,\r\n autoResize,\r\n rows = autoResize ? 1 : 2\r\n } = props;\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const ref = useShowEntryEvent(id);\r\n\r\n const handleInputCallback = useMemo(() => {\r\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\r\n }, [ onInput, debounce ]);\r\n\r\n const handleInput = e => {\r\n handleInputCallback(e);\r\n\r\n autoResize && resizeToContents(e.target);\r\n\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n autoResize && resizeToContents(ref.current);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-textarea\">\r\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\r\n { label }\r\n </label>\r\n <textarea\r\n ref={ ref }\r\n id={ prefixId(id) }\r\n name={ id }\r\n spellCheck=\"false\"\r\n class={ classnames(\r\n 'bio-properties-panel-input',\r\n monospace ? 'bio-properties-panel-input-monospace' : '',\r\n autoResize ? 'auto-resize' : '')\r\n }\r\n onInput={ handleInput }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n rows={ rows }\r\n value={ localValue }\r\n disabled={ disabled }\r\n data-gramm=\"false\"\r\n />\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * @param {object} props\r\n * @param {object} props.element\r\n * @param {string} props.id\r\n * @param {string} props.description\r\n * @param {boolean} props.debounce\r\n * @param {string} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n * @param {number} props.rows\r\n * @param {boolean} props.monospace\r\n * @param {boolean} [props.disabled]\r\n */\r\nexport default function TextAreaEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n debounce,\r\n label,\r\n getValue,\r\n setValue,\r\n rows,\r\n monospace,\r\n disabled,\r\n onFocus,\r\n onBlur,\r\n autoResize\r\n } = props;\r\n\r\n const value = getValue(element);\r\n\r\n const error = useError(id);\r\n\r\n return (\r\n <div\r\n class={ classnames(\r\n 'bio-properties-panel-entry',\r\n error ? 'has-error' : '')\r\n }\r\n data-entry-id={ id }>\r\n <TextArea\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n value={ value }\r\n onInput={ setValue }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n rows={ rows }\r\n debounce={ debounce }\r\n monospace={ monospace }\r\n disabled={ disabled }\r\n autoResize={ autoResize } />\r\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.value;\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}\r\n","import Description from './Description';\r\n\r\nimport {\r\n useEffect,\r\n useMemo,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { isFunction } from 'min-dash';\r\n\r\nimport {\r\n useError,\r\n usePrevious,\r\n useShowEntryEvent\r\n} from '../../hooks';\r\n\r\nfunction Textfield(props) {\r\n\r\n const {\r\n debounce,\r\n disabled = false,\r\n id,\r\n label,\r\n onInput,\r\n onFocus,\r\n onBlur,\r\n value = ''\r\n } = props;\r\n\r\n const [ localValue, setLocalValue ] = useState(value || '');\r\n\r\n const ref = useShowEntryEvent(id);\r\n\r\n const handleInputCallback = useMemo(() => {\r\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\r\n }, [ onInput, debounce ]);\r\n\r\n const handleInput = e => {\r\n handleInputCallback(e);\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-textfield\">\r\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\r\n { label }\r\n </label>\r\n <input\r\n ref={ ref }\r\n id={ prefixId(id) }\r\n type=\"text\"\r\n name={ id }\r\n spellCheck=\"false\"\r\n autoComplete=\"off\"\r\n disabled={ disabled }\r\n class=\"bio-properties-panel-input\"\r\n onInput={ handleInput }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ localValue } />\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.id\r\n * @param {String} props.description\r\n * @param {Boolean} props.debounce\r\n * @param {Boolean} props.disabled\r\n * @param {String} props.label\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n * @param {Function} props.validate\r\n */\r\nexport default function TextfieldEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n debounce,\r\n disabled,\r\n label,\r\n getValue,\r\n setValue,\r\n validate,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\r\n const globalError = useError(id);\r\n const [ localError, setLocalError ] = useState(null);\r\n\r\n let value = getValue(element);\r\n\r\n const previousValue = usePrevious(value);\r\n\r\n useEffect(() => {\r\n if (isFunction(validate)) {\r\n const newValidationError = validate(value) || null;\r\n\r\n setLocalError(newValidationError);\r\n }\r\n }, [ value ]);\r\n\r\n const onInput = (newValue) => {\r\n let newValidationError = null;\r\n\r\n if (isFunction(validate)) {\r\n newValidationError = validate(newValue) || null;\r\n }\r\n\r\n if (newValidationError) {\r\n setCachedInvalidValue(newValue);\r\n } else {\r\n setValue(newValue);\r\n }\r\n\r\n setLocalError(newValidationError);\r\n };\r\n\r\n if (previousValue === value && localError) {\r\n value = cachedInvalidValue;\r\n }\r\n\r\n const error = globalError || localError;\r\n\r\n return (\r\n <div\r\n class={ classnames(\r\n 'bio-properties-panel-entry',\r\n error ? 'has-error' : '')\r\n }\r\n data-entry-id={ id }>\r\n <Textfield\r\n debounce={ debounce }\r\n disabled={ disabled }\r\n id={ id }\r\n key={ element }\r\n label={ label }\r\n onInput={ onInput }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n value={ value } />\r\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.value;\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}","import Description from './Description';\r\n\r\nimport {\r\n useEffect,\r\n useState\r\n} from 'preact/hooks';\r\n\r\nfunction ToggleSwitch(props) {\r\n const {\r\n id,\r\n label,\r\n onInput,\r\n value,\r\n switcherLabel,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const [ localValue, setLocalValue ] = useState(value);\r\n\r\n const handleInputCallback = async () => {\r\n onInput(!value);\r\n };\r\n\r\n const handleInput = e => {\r\n handleInputCallback(e);\r\n setLocalValue(e.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (value === localValue) {\r\n return;\r\n }\r\n\r\n setLocalValue(value);\r\n }, [ value ]);\r\n\r\n return (\r\n <div class=\"bio-properties-panel-toggle-switch\">\r\n <label class=\"bio-properties-panel-label\"\r\n for={ prefixId(id) }>\r\n { label }\r\n </label>\r\n <div class=\"bio-properties-panel-field-wrapper\">\r\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\r\n <input\r\n id={ prefixId(id) }\r\n class=\"bio-properties-panel-input\"\r\n type=\"checkbox\"\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n name={ id }\r\n onInput={ handleInput }\r\n checked={ !!localValue } />\r\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\r\n </label>\r\n <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * @param {Object} props\r\n * @param {Object} props.element\r\n * @param {String} props.id\r\n * @param {String} props.description\r\n * @param {String} props.label\r\n * @param {String} props.switcherLabel\r\n * @param {Function} props.getValue\r\n * @param {Function} props.setValue\r\n * @param {Function} props.onFocus\r\n * @param {Function} props.onBlur\r\n */\r\nexport default function ToggleSwitchEntry(props) {\r\n const {\r\n element,\r\n id,\r\n description,\r\n label,\r\n switcherLabel,\r\n getValue,\r\n setValue,\r\n onFocus,\r\n onBlur\r\n } = props;\r\n\r\n const value = getValue(element);\r\n return (\r\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\r\n <ToggleSwitch\r\n id={ id }\r\n label={ label }\r\n value={ value }\r\n onInput={ setValue }\r\n onFocus={ onFocus }\r\n onBlur={ onBlur }\r\n switcherLabel={ switcherLabel } />\r\n <Description forId={ id } element={ element } value={ description } />\r\n </div>\r\n );\r\n}\r\n\r\nexport function isEdited(node) {\r\n return node && !!node.checked;\r\n}\r\n\r\n\r\n// helpers /////////////////\r\n\r\nfunction prefixId(id) {\r\n return `bio-properties-panel-${ id }`;\r\n}\r\n","import {\r\n debounce,\r\n isNumber\r\n} from 'min-dash';\r\n\r\nconst DEFAULT_DEBOUNCE_TIME = 300;\r\n\r\nexport default function debounceInput(debounceDelay) {\r\n return function _debounceInput(fn) {\r\n if (debounceDelay !== false) {\r\n\r\n var debounceTime =\r\n isNumber(debounceDelay) ?\r\n debounceDelay :\r\n DEFAULT_DEBOUNCE_TIME;\r\n\r\n return debounce(fn, debounceTime);\r\n } else {\r\n return fn;\r\n }\r\n };\r\n}\r\n\r\ndebounceInput.$inject = [ 'config.debounceInput' ];\r\n","import debounceInput from './debounceInput';\r\n\r\nexport default {\r\n debounceInput: [ 'factory', debounceInput ]\r\n};\r\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","useDescriptionContext","id","useContext","useError","useEvent","event","callback","eventContext","didMount","useRef","current","on","useEffect","off","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","setState","useCallback","newValue","usePrevious","value","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","Observer","IntersectionObserver","observer","scrollContainer","domQuery","entries","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","useState","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","newLayout","config","assign","layoutContext","createDescriptionContext","descriptionContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","group","overrides","defaults","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","onFocus","onBlur","localValue","setLocalValue","handleChangeCallback","checked","handleChange","e","prefixId","CheckboxEntry","getValue","setValue","error","node","useBufferedFocus","editor","buffer","setBuffer","undefined","offset","Infinity","CodeEditor","forwardRef","onInput","onFeelToggle","onLint","tooltipContainer","variables","inputRef","setEditor","handleInput","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","container","innerHTML","setVariables","handleClick","classNames","name","FeelIndicator","active","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","pointerType","FeelTextfield","debounce","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","editorRef","containerRef","feelActive","startsWith","feelOnlyValue","substring","_setFocus","setFocus","hasFocus","activeElement","position","selectionStart","handleInputCallback","handleFeelToggle","handleLocalInput","handleLint","lint","message","source","copyHandler","clipboardData","setData","getData","pasteHandler","data","setTimeout","input","setSelectionRange","OptionalFeelTextArea","FeelEntry","validate","show","example","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","localError","setLocalError","previousValue","newValidationError","err","temporaryError","FeelTextArea","classList","contentAttributes","useGutters","darkMode","FeelersEditor","enableGutters","FeelTemplatingEntry","FeelTemplating","severity","prefixIdLabel","FeelTemplatingEditor","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","max","min","step","validity","valid","parseFloat","NumberFieldEntry","globalError","Select","options","option","idx","child","SelectEntry","getOptions","Simple","resizeToContents","style","height","scrollHeight","TextArea","monospace","autoResize","rows","useLayoutEffect","TextAreaEntry","Textfield","TextfieldEntry","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","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,IAAC,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,IAAC,gBAAgB;QACf,GACJ;MAEE;IACF;AACR;;MCzDMC,kBAAkB,GAAGC,aAAa,CAAC;EACvCC,WAAW,EAAE,EAAE;EACfC,mBAAmB,EAAE,MAAM;AAC7B,CAAC;;MCHKC,aAAa,GAAGH,aAAa,CAAC;EAClCI,MAAM,EAAE;AACV,CAAC;;ACND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAoBMC,YAAY,GAAGL,aAAa,CAAC;EAAEM,QAAQ,EAAE;AAAK,CAAC;;MC7B/CC,aAAa,GAAGP,aAAa,CAAC;EAClCQ,MAAM,EAAE,EAAE;EACVC,SAAS,EAAE,MAAM,EAAE;EACnBC,eAAe,EAAE,MAAM,EAAE;EACzBC,eAAe,EAAE,MAAM;AACzB,CAAC;;ACDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqB,CAACC,EAAE,EAAE1B,OAAO,EAAE;EACjD,MAAM;IACJe;GACD,GAAGY,UAAU,CAACf,kBAAkB,CAAC;EAElC,OAAOG,mBAAmB,CAACW,EAAE,EAAE1B,OAAO,CAAC;AACzC;;ACzBO,SAAS4B,QAAQ,CAACF,EAAE,EAAE;EAC3B,MAAM;IAAET;GAAQ,GAAGU,UAAU,CAACX,aAAa,CAAC;EAE5C,OAAOC,MAAM,CAAES,EAAE,CAAE;AACrB;;ACHA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,QAAQ,CAACC,KAAK,EAAEC,QAAQ,EAAEZ,QAAQ,EAAE;EAClD,MAAMa,YAAY,GAAGL,UAAU,CAACT,YAAY,CAAC;EAE7C,IAAI,CAACC,QAAQ,EAAE;IACb,CAAC;MAAEA;KAAU,GAAGa,YAAY;;EAG9B,MAAMC,QAAQ,GAAGC,MAAM,CAAC,KAAK,CAAC;;;EAG9B,IAAIf,QAAQ,IAAI,CAACc,QAAQ,CAACE,OAAO,EAAE;IACjChB,QAAQ,CAACiB,EAAE,CAACN,KAAK,EAAEC,QAAQ,CAAC;;;;EAI9BM,SAAS,CAAC,MAAM;IACd,IAAIlB,QAAQ,IAAIc,QAAQ,CAACE,OAAO,EAAE;MAChChB,QAAQ,CAACiB,EAAE,CAACN,KAAK,EAAEC,QAAQ,CAAC;;IAG9BE,QAAQ,CAACE,OAAO,GAAG,IAAI;IAEvB,OAAO,MAAM;MACX,IAAIhB,QAAQ,EAAE;QACZA,QAAQ,CAACmB,GAAG,CAACR,KAAK,EAAEC,QAAQ,CAAC;;KAEhC;GACF,EAAE,CAAEA,QAAQ,EAAED,KAAK,EAAEX,QAAQ,CAAE,CAAC;AACnC;;ACrCA,MAAMoB,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,OAAO,CAAC,MAAM,IAAIC,GAAG,EAAE,EAAEH,YAAY,CAAC;EAElD,MAAMI,MAAM,GAAGC,EAAE,IAAI;IACnB,IAAIC,GAAG,GAAGL,GAAG,CAACM,GAAG,CAACF,EAAE,CAAC;IAErB,IAAI,CAACC,GAAG,EAAE;MACRA,GAAG,GAAGE,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,EAAE,CAACC,KAAK,CAAC,CAACb,UAAU,CAAC;MACjDG,GAAG,CAACW,GAAG,CAACP,EAAE,EAAEC,GAAG,CAAC;;IAGlB,OAAOA,GAAG;GACX;EAED,OAAOF,MAAM;AACf;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,cAAc,CAACC,IAAI,EAAEC,YAAY,EAAE;EACjD,MAAM;IACJjC,eAAe;IACfC;GACD,GAAGG,UAAU,CAACP,aAAa,CAAC;EAE7B,MAAMqC,YAAY,GAAGlC,eAAe,CAACgC,IAAI,EAAEC,YAAY,CAAC;EAExD,MAAME,QAAQ,GAAGC,WAAW,CAAGC,QAAQ,IAAK;IAC1CpC,eAAe,CAAC+B,IAAI,EAAEK,QAAQ,CAAC;GAChC,EAAE,CAAEpC,eAAe,CAAE,CAAC;EAGvB,OAAO,CAAEiC,YAAY,EAAEC,QAAQ,CAAE;AACnC;;ACjCA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASG,WAAW,CAACC,KAAK,EAAE;EACjC,MAAMC,GAAG,GAAG7B,MAAM,EAAE;EACpBG,SAAS,CAAC,MAAM;IACd0B,GAAG,CAAC5B,OAAO,GAAG2B,KAAK;GACpB,CAAC;EACF,OAAOC,GAAG,CAAC5B,OAAO;AACpB;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS6B,iBAAiB,CAACtC,EAAE,EAAE;EACpC,MAAM;IAAEuC;GAAQ,GAAGtC,UAAU,CAACuC,aAAsB,CAAC;EAErD,MAAMH,GAAG,GAAG7B,MAAM,EAAE;EAEpB,MAAMiC,KAAK,GAAGjC,MAAM,CAAC,KAAK,CAAC;EAE3B,MAAMkC,WAAW,GAAGT,WAAW,CAAE7B,KAAK,IAAK;IACzC,IAAIA,KAAK,CAACJ,EAAE,KAAKA,EAAE,EAAE;MACnBuC,MAAM,EAAE;MAER,IAAI,CAACE,KAAK,CAAChC,OAAO,EAAE;QAClBgC,KAAK,CAAChC,OAAO,GAAG,IAAI;;;GAGzB,EAAE,CAAET,EAAE,CAAE,CAAC;EAEVW,SAAS,CAAC,MAAM;IACd,IAAI8B,KAAK,CAAChC,OAAO,IAAI4B,GAAG,CAAC5B,OAAO,EAAE;MAChC,IAAIkC,UAAU,CAACN,GAAG,CAAC5B,OAAO,CAACgC,KAAK,CAAC,EAAE;QACjCJ,GAAG,CAAC5B,OAAO,CAACgC,KAAK,EAAE;;MAGrB,IAAIE,UAAU,CAACN,GAAG,CAAC5B,OAAO,CAACmC,MAAM,CAAC,EAAE;QAClCP,GAAG,CAAC5B,OAAO,CAACmC,MAAM,EAAE;;MAGtBH,KAAK,CAAChC,OAAO,GAAG,KAAK;;GAExB,CAAC;EAEFN,QAAQ,CAAC,2BAA2B,EAAEuC,WAAW,CAAC;EAElD,OAAOL,GAAG;AACZ;;AC7CA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,6BAA6B,CAACR,GAAG,EAAES,uBAAuB,EAAEC,SAAS,EAAE;EACrFpC,SAAS,CAAC,MAAM;IAEd,MAAMqC,QAAQ,GAAGC,oBAAoB;;;IAGrC,IAAI,CAACD,QAAQ,EAAE;MACb;;IAGF,IAAIE,QAAQ;IAEZ,IAAIb,GAAG,CAAC5B,OAAO,EAAE;MACf,MAAM0C,eAAe,GAAGC,KAAQ,CAACN,uBAAuB,CAAC;MAEzDI,QAAQ,GAAG,IAAIF,QAAQ,CAAEK,OAAO,IAAK;QACnCA,OAAO,CAACC,OAAO,CAACC,KAAK,IAAI;UACvB,IAAIA,KAAK,CAACC,iBAAiB,GAAG,CAAC,EAAE;YAC/BT,SAAS,CAAC,IAAI,CAAC;WAChB,MACI,IAAIQ,KAAK,CAACC,iBAAiB,KAAK,CAAC,EAAE;YACtCT,SAAS,CAAC,KAAK,CAAC;;SAEnB,CAAC;OACH,EACD;QACEU,IAAI,EAAEN,eAAe;QACrBO,UAAU,EAAE,qBAAqB;;QACjCC,SAAS,EAAE,CAAE,CAAC;OACf,CAAC;MACFT,QAAQ,CAACU,OAAO,CAACvB,GAAG,CAAC5B,OAAO,CAAC;;;;IAI/B,OAAO,MAAM;MACX,IAAI4B,GAAG,CAAC5B,OAAO,IAAIyC,QAAQ,EAAE;QAC3BA,QAAQ,CAACW,SAAS,CAACxB,GAAG,CAAC5B,OAAO,CAAC;;KAElC;GAEF,EAAE,CAAE4B,GAAG,EAAES,uBAAuB,EAAEC,SAAS,CAAE,CAAC;AACjD;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASe,iBAAiB,CAACzD,QAAQ,EAAE;EAC1C,MAAM0D,WAAW,GAAGvD,MAAM,CAACH,QAAQ,CAAC;EACpC0D,WAAW,CAACtD,OAAO,GAAGJ,QAAQ;EAE9B,OAAO4B,WAAW,CAChB,CAAC,GAAG+B,IAAI,KAAKD,WAAW,CAACtD,OAAO,CAAC,GAAGuD,IAAI,CAAC,EACzC,EAAE,CACH;AACH;;ACOe,SAASC,KAAK,CAAC5F,KAAK,EAAE;EACnC,MAAM;IACJC,OAAO;IACP+E,OAAO,GAAG,EAAE;IACZrD,EAAE;IACFpB,KAAK;IACLsF,UAAU,GAAG;GACd,GAAG7F,KAAK;EAET,MAAM8F,QAAQ,GAAG3D,MAAM,CAAC,IAAI,CAAC;EAE7B,MAAM,CAAE4D,IAAI,EAAEC,OAAO,CAAE,GAAGzC,cAAc,CACtC,CAAE,QAAQ,EAAE5B,EAAE,EAAE,MAAM,CAAE,EACxBkE,UAAU,CACX;EAED,MAAM3B,MAAM,GAAGN,WAAW,CAAC,MAAMoC,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,GAAGC,QAAQ,CAAC,KAAK,CAAC;EAE7C,MAAM,CAAEC,MAAM,EAAE3B,SAAS,CAAE,GAAG0B,QAAQ,CAAC,KAAK,CAAC;;;EAG7C9D,SAAS,CAAC,MAAM;IACd,MAAMgE,iBAAiB,GAAGtB,OAAO,CAACuB,IAAI,CAACrB,KAAK,IAAI;MAC9C,MAAM;QACJvD,EAAE;QACF6E;OACD,GAAGtB,KAAK;MAET,MAAMuB,SAAS,GAAG1B,KAAQ,CAAE,mBAAkBpD,EAAG,IAAG,CAAC;MAErD,IAAI,CAAC2C,UAAU,CAACkC,QAAQ,CAAC,IAAI,CAACC,SAAS,EAAE;QACvC,OAAO,KAAK;;MAGd,MAAMC,SAAS,GAAG3B,KAAQ,CAAC,6BAA6B,EAAE0B,SAAS,CAAC;MAEpE,OAAOD,QAAQ,CAACE,SAAS,CAAC;KAC3B,CAAC;IAEFP,SAAS,CAACG,iBAAiB,CAAC;GAC7B,EAAE,CAAEtB,OAAO,CAAE,CAAC;;;EAGfR,6BAA6B,CAACsB,QAAQ,EAAE,2CAA2C,EAAEpB,SAAS,CAAC;EAE/F,MAAMiC,sBAAsB,GAAG;IAC7B,GAAG/E,UAAU,CAACuC,aAAsB,CAAC;IACrCD;GACD;EAED,OAAOvD;IAAK,KAAK,EAAC,4BAA4B;IAAC,iBAAgB,QAAQ,GAAGgB,EAAI;IAAC,GAAG,EAAGmE,QAAU;IAAA,WAC7FnF;MAAK,KAAK,EAAGiG,UAAU,CACrB,mCAAmC,EACnCV,MAAM,GAAG,EAAE,GAAG,OAAO,EACrBH,IAAI,GAAG,MAAM,GAAG,EAAE,EACjBM,MAAM,IAAIN,IAAI,GAAI,QAAQ,GAAG,EAAE,CAC/B;MAAC,OAAO,EAAGE,UAAY;MAAA,WACxBrF;QAAK,KAAK,EAAGL,KAAO;QAAC,KAAK,EAAC,yCAAyC;QAAA,UAChEA;QACE,EACNI;QAAK,KAAK,EAAC,2CAA2C;QAAA,WAElDuF,MAAM,IAAItF,IAAC,UAAU,KAAG,EAE1BA;UACE,KAAK,EAAC,gBAAgB;UACtB,KAAK,EAAC,qEAAqE;UAAA,UAE3EA,IAAC,SAAS;YAAC,KAAK,EAAGmF,IAAI,GAAG,iCAAiC,GAAG;;UACvD;QACL;MACF,EACNnF;MAAK,KAAK,EAAGgG,UAAU,CACrB,oCAAoC,EACpCb,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;MAAA,UACDnF,IAACuD,aAAsB,CAAC,QAAQ;QAAC,KAAK,EAAGwC,sBAAwB;QAAA,UAE7D3B,OAAO,CAACrC,GAAG,CAACuC,KAAK,IAAI;UACnB,MAAM;YACJ2B,SAAS,EAAEC,SAAS;YACpBnF;WACD,GAAGuD,KAAK;UAET,OACE6B,cAAC,SAAS;YAAA,GACH7B,KAAK;YACV,OAAO,EAAGjF,OAAS;YACnB,GAAG,EAAG0B;YAAO;SAElB;;MAGD;IACF;AACR;AAEA,SAASqF,UAAU,GAAG;EACpB,OACEpG;IAAK,KAAK,EAAC,uBAAuB;IAAC,KAAK,EAAC;IAAiC;AAE9E;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASqG,WAAW,CAACjH,KAAK,EAAE;EACzC,MAAM;IACJkH,IAAI;IACJC,IAAI,EAAEC;GACP,GAAGpH,KAAK;EAET,OACEY;IAAK,KAAK,EAAC,2BAA2B;IAAA,UACpCD;MAAS,KAAK,EAAC,kCAAkC;MAAA,WAC7CyG,IAAI,IAAIxG,IAAC,IAAI;QAAC,KAAK,EAAC;QAA0C,EAChEA;QAAG,KAAK,EAAC,uCAAuC;QAAA,UAAGsG;QAAU;;IAE3D;AAEV;;ACQA,MAAMG,cAAc,GAAG;EACrBtB,IAAI,EAAE;AACR,CAAC;AAED,MAAMuB,mBAAmB,GAAG,EAAE;;AAG9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACe,SAASC,eAAe,CAACvH,KAAK,EAAE;EAC7C,MAAM;IACJC,OAAO;IACPC,cAAc;IACdsH,mBAAmB;IACnBC,MAAM;IACNC,YAAY,GAAG,EAAE;IACjBC,aAAa;IACbC,iBAAiB,GAAG,EAAE;IACtBC,iBAAiB;IACjBzG;GACD,GAAGpB,KAAK;;;EAGT,MAAM,CAAEsB,MAAM,EAAEC,SAAS,CAAE,GAAG6E,QAAQ,CAAC0B,YAAY,CAACJ,YAAY,CAAC,CAAC;;;EAGlEpF,SAAS,CAAC,MAAM;IACd,MAAMyF,SAAS,GAAGD,YAAY,CAACJ,YAAY,CAAC;IAE5CnG,SAAS,CAACwG,SAAS,CAAC;GACrB,EAAE,CAAEL,YAAY,CAAE,CAAC;EAEpBpF,SAAS,CAAC,MAAM;IACd,IAAI,OAAOqF,aAAa,KAAK,UAAU,EAAE;MACvCA,aAAa,CAACrG,MAAM,CAAC;;GAExB,EAAE,CAAEA,MAAM,EAAEqG,aAAa,CAAE,CAAC;EAE7B,MAAMnG,eAAe,GAAG,CAACwB,GAAG,EAAES,YAAY,KAAK;IAC7C,OAAOR,GAAG,CAAC3B,MAAM,EAAE0B,GAAG,EAAES,YAAY,CAAC;GACtC;EAED,MAAMhC,eAAe,GAAG,CAACuB,GAAG,EAAEgF,MAAM,KAAK;IACvC,MAAMD,SAAS,GAAGE,MAAM,CAAC,EAAE,EAAE3G,MAAM,CAAC;IACpCgC,GAAG,CAACyE,SAAS,EAAE/E,GAAG,EAAEgF,MAAM,CAAC;IAC3BzG,SAAS,CAACwG,SAAS,CAAC;GACrB;EAED,MAAMG,aAAa,GAAG;IACpB5G,MAAM;IACNC,SAAS;IACTC,eAAe;IACfC;GACD;;;EAGD,MAAMV,WAAW,GAAGoH,wBAAwB,CAACP,iBAAiB,CAAC;EAE/D,IAAI,OAAOC,iBAAiB,KAAK,UAAU,EAAE;IAC3CA,iBAAiB,CAAC9G,WAAW,CAAC;;EAGhC,MAAMC,mBAAmB,GAAG,CAACW,EAAE,EAAE1B,OAAO,KAAK;IAC3C,OAAOc,WAAW,CAACY,EAAE,CAAC,IAAIZ,WAAW,CAACY,EAAE,CAAC,CAAC1B,OAAO,CAAC;GACnD;EAED,MAAMmI,kBAAkB,GAAG;IACzBrH,WAAW;IACXC;GACD;EAED,MAAM,CAAEE,MAAM,EAAEmH,SAAS,CAAE,GAAGjC,QAAQ,CAAC,EAAE,CAAC;EAE1C,MAAMkC,WAAW,GAAG,CAAC;IAAEpH;GAAQ,KAAKmH,SAAS,CAACnH,MAAM,CAAC;EAErDY,QAAQ,CAAC,2BAA2B,EAAEwG,WAAW,EAAElH,QAAQ,CAAC;EAE5D,MAAMmH,aAAa,GAAG;IACpBrH;GACD;EAED,MAAMe,YAAY,GAAG;IACnBb;GACD;EAED,MAAMuF,sBAAsB,GAAG;IAC7B1G;GACD;;;EAGD,IAAIuH,mBAAmB,IAAI,CAACvH,OAAO,EAAE;IACnC,OAAOW,IAAC,WAAW;MAAA,GAAM4G,mBAAmB,CAACgB,QAAQ;MAAO;;;;EAI9D,IAAIhB,mBAAmB,IAAIiB,OAAO,CAACxI,OAAO,CAAC,EAAE;IAC3C,OAAOW,IAAC,WAAW;MAAA,GAAM4G,mBAAmB,CAACkB,WAAW;MAAO;;EAGjE,OACE9H,IAACuD,aAAsB,CAAC,QAAQ;IAAC,KAAK,EAAGwC,sBAAwB;IAAA,UAC/D/F,IAAC,aAAa,CAAC,QAAQ;MAAC,KAAK,EAAG2H,aAAe;MAAA,UAC7C3H,IAAC,kBAAkB,CAAC,QAAQ;QAAC,KAAK,EAAGwH,kBAAoB;QAAA,UACvDxH,IAAC,aAAa,CAAC,QAAQ;UAAC,KAAK,EAAGsH,aAAe;UAAA,UAC7CtH,IAAC,YAAY,CAAC,QAAQ;YAAC,KAAK,EAAGqB,YAAc;YAAA,UAC3CtB;cACE,KAAK,EAAGiG,UAAU,CAChB,sBAAsB,EACtBtF,MAAM,CAACyE,IAAI,GAAG,MAAM,GAAG,EAAE,CAC1B;cAAA,WACDnF,IAAC,MAAM;gBACL,OAAO,EAAGX,OAAS;gBACnB,cAAc,EAAGC;gBAAmB,EACtCU;gBAAK,KAAK,EAAC,uCAAuC;gBAAA,UAE9C6G,MAAM,CAAC9E,GAAG,CAACgG,KAAK,IAAI;kBAClB,MAAM;oBACJ9B,SAAS,EAAEC,SAAS,GAAGlB,KAAK;oBAC5BjE;mBACD,GAAGgH,KAAK;kBAET,OACE5B,cAAC,SAAS;oBAAA,GACH4B,KAAK;oBACV,GAAG,EAAGhH,EAAI;oBACV,OAAO,EAAG1B;oBAAY;iBAE3B;gBAEC;;;;;;IAMgB;AAEtC;;AAGA;;AAEA,SAAS6H,YAAY,CAACc,SAAS,EAAEC,QAAQ,GAAGxB,cAAc,EAAE;EAC1D,OAAO;IACL,GAAGwB,QAAQ;IACX,GAAGD;GACJ;AACH;AAEA,SAAST,wBAAwB,CAACS,SAAS,EAAE;EAC3C,OAAO;IACL,GAAGtB,mBAAmB;IACtB,GAAGsB;GACJ;AACH;;AC3OO,SAASE,cAAc,CAAC9I,KAAK,EAAE;EACpC,MAAM;IACJ+I,KAAK,EAAEC,SAAS;IAChBC,QAAQ;IACRC,SAAS,GAAG;GACb,GAAGlJ,KAAK;EAET,MAAMmJ,WAAW,GAAGhH,MAAM,CAAC,IAAI,CAAC;EAChC,MAAMiH,OAAO,GAAGjH,MAAM,CAAC,IAAI,CAAC;EAE5B,MAAM,CAAE4D,IAAI,EAAEC,OAAO,CAAE,GAAGI,QAAQ,CAAC,KAAK,CAAC;EACzC,MAAMiD,KAAK,GAAG,MAAMrD,OAAO,CAAC,KAAK,CAAC;EAElC,SAASsD,gBAAgB,CAACvH,KAAK,EAAE;IAC/B,IAAIqH,OAAO,CAAChH,OAAO,IAAIgH,OAAO,CAAChH,OAAO,CAACmH,QAAQ,CAACxH,KAAK,CAACyH,MAAM,CAAC,EAAE;MAC7D;;IAGFzH,KAAK,CAAC0H,eAAe,EAAE;IAEvBzD,OAAO,CAACD,IAAI,IAAI,CAACA,IAAI,CAAC;;EAGxB,SAAS2D,aAAa,CAAC3H,KAAK,EAAE4H,MAAM,EAAE;IACpC5H,KAAK,CAAC0H,eAAe,EAAE;IAEvBJ,KAAK,EAAE;IACPM,MAAM,EAAE;;EAGVC,cAAc,CAAC,CAAET,WAAW,CAAC/G,OAAO,CAAE,EAAE,MAAMiH,KAAK,EAAE,CAAC;EAEtD,OACE1I;IACE,KAAK,EAAGiG,UAAU,CAAC,sCAAsC,EAAE;MAAEb;KAAM,EAAEiD,SAAS,CAAG;IACjF,OAAO,EAAGM,gBAAkB;IAC5B,GAAG,EAAGH,WAAa;IAAA,WAEjBF,QAAQ,EACVrI;MAAK,KAAK,EAAC,4CAA4C;MAAC,GAAG,EAAGwI,OAAS;MAAA,UACnEF,SAAS,CAACvG,GAAG,CAAC,CAACkH,IAAI,EAAEC,KAAK,KAC1BlJ,IAAC,QAAQ;QAAC,OAAO,EAAG8I,aAAe;QAAC,IAAI,EAAGG;SAAaC,KAAK,CAC9D;MACG;IACF;AAEV;AAEA,SAASC,QAAQ,CAAC;EAAEF,IAAI;EAAEG;AAAQ,CAAC,EAAE;EACnC,IAAIH,IAAI,CAACI,SAAS,EAAE;IAClB,OAAOrJ;MAAK,KAAK,EAAC;MAA+G;;EAGnI,IAAIiJ,IAAI,CAACF,MAAM,EAAE;IACf,OAAQ/I;MACN,KAAK,EAAC,6GAA6G;MACnH,OAAO,EAAGmB,KAAK,IAAIiI,OAAO,CAACjI,KAAK,EAAE8H,IAAI,CAACF,MAAM,CAAG;MAAA,UAE/CE,IAAI,CAAC3E;MACC;;EAGX,OAAOtE;IACL,KAAK,EAAC,iDAAiD;IAAA,UAEtDiJ,IAAI,CAAC3E;IACF;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS0E,cAAc,CAACM,eAAe,EAAElI,QAAQ,EAAE;EACjDM,SAAS,CAAC,MAAM;;AAGlB;AACA;IACI,SAAS6H,QAAQ,CAACpI,KAAK,EAAE;MACvB,IAAImI,eAAe,CAACE,IAAI,CAACnK,OAAO,IAAIA,OAAO,IAAIA,OAAO,CAACsJ,QAAQ,CAACxH,KAAK,CAACyH,MAAM,CAAC,CAAC,EAAE;QAC9E;;MAGFxH,QAAQ,EAAE;;IAGZqI,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAEH,QAAQ,EAAE;MAAEI,OAAO,EAAE;KAAM,CAAC;IAE/D,OAAO,MAAMF,QAAQ,CAACG,mBAAmB,CAAC,OAAO,EAAEL,QAAQ,EAAE;MAAEI,OAAO,EAAE;KAAM,CAAC;GAChF,EAAE,CAAE,GAAGL,eAAe,EAAElI,QAAQ,CAAE,CAAC;AACtC;;ACzGO,SAASyI,YAAY,CAACzK,KAAK,EAAE;EAClC,MAAM;IACJiJ,QAAQ,GAAG,IAAI;IACfF,KAAK,EAAE2B,SAAS;IAChBV,OAAO,GAAG,MAAM,EAAE;IAClB,GAAGW;GACJ,GAAG3K,KAAK;EAET,OAAOY;IAAA,GACA+J,UAAU;IACf,OAAO,EAAGX,OAAS;IACnB,KAAK,EAAGpD,UAAU,CAAC,0CAA0C,EAAE8D,SAAS,CAAG;IAAA,UACzEzB;IACK;AACX;;ACEe,SAAS2B,gBAAgB,CAAC5K,KAAK,EAAE;EAC9C,MAAM;IACJC,OAAO;IACP+E,OAAO,GAAG,EAAE;IACZrD,EAAE;IACFpB,KAAK;IACLwF,IAAI,EAAEF,UAAU;IAChBgF;GACD,GAAG7K,KAAK;EAET,MAAM,CAAE+F,IAAI,EAAEC,OAAO,CAAE,GAAGI,QAAQ,CAACP,UAAU,CAAC;EAE9C,MAAMI,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAI,CAAC;EAEvC,MAAM;IAAE7B;GAAQ,GAAGtC,UAAU,CAACuC,aAAsB,CAAC;EAErD,MAAMwC,sBAAsB,GAAG;IAC7B,GAAG/E,UAAU,CAACuC,aAAsB,CAAC;IACrCD,MAAM,EAAEN,WAAW,CAAC,MAAM;MACxBoC,OAAO,CAAC,IAAI,CAAC;MAEb,IAAI1B,UAAU,CAACJ,MAAM,CAAC,EAAE;QACtBA,MAAM,EAAE;;KAEX,EAAE,CAAEA,MAAM,EAAE8B,OAAO,CAAE;GACvB;;;EAGD,MAAM8E,gBAAgB,GAAG,SAAS;EAElC,OACEnK;IACE,iBAAgBgB,EAAI;IACpB,KAAK,EAAGiF,UAAU,CAChB,wCAAwC,EACxCb,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;IAAA,WACHpF;MAAK,KAAK,EAAC,+CAA+C;MAAC,OAAO,EAAGsF,UAAY;MAAA,WAC/ErF;QACE,KAAK,EAAGL,KAAK,IAAIuK,gBAAkB;QACnC,KAAK,EAAGlE,UAAU,CAChB,qDAAqD,EACrD,CAACrG,KAAK,IAAI,OAAO,CAChB;QAAA,UACDA,KAAK,IAAIuK;QACP,EACNlK;QACE,KAAK,EAAC,kBAAkB;QACxB,KAAK,EAAC,0EAA0E;QAAA,UAEhFA,IAAC,SAAS;UAAC,KAAK,EAAGmF,IAAI,GAAG,iCAAiC,GAAG;;QACvD,EAEP8E,MAAM,GAGFjK;QAAQ,KAAK,EAAC,aAAa;QAAC,KAAK,EAAC,mCAAmC;QAAC,OAAO,EAAGiK,MAAQ;QAAA,UACtFjK,IAAC,UAAU;QACJ,GAET,IAAI;MAEN,EACNA;MAAK,KAAK,EAAGgG,UAAU,CACrB,gDAAgD,EAChDb,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;MAAA,UACDnF,IAACuD,aAAsB,CAAC,QAAQ;QAAC,KAAK,EAAGwC,sBAAwB;QAAA,UAE7D3B,OAAO,CAACrC,GAAG,CAACuC,KAAK,IAAI;UACnB,MAAM;YACJ2B,SAAS,EAAEC,SAAS;YACpBnF;WACD,GAAGuD,KAAK;UAET,OACE6B,cAAC,SAAS;YAAA,GACH7B,KAAK;YACV,OAAO,EAAGjF,OAAS;YACnB,GAAG,EAAG0B;YAAO;SAElB;;MAGD;IACF;AAEV;;AC1Fe,SAASoJ,QAAQ,CAAC/K,KAAK,EAAE;EACtC,MAAM;IACJgL,cAAc;IACdC;GACD,GAAGjL,KAAK;;;EAGTsC,SAAS,CAAC,MAAM;IACd,IAAI2I,QAAQ,IAAID,cAAc,EAAE;MAC9B,MAAM9F,KAAK,GAAGH,KAAQ,CAAE,mBAAkBiG,cAAe,IAAG,CAAC;MAE7D,MAAME,cAAc,GAAGnG,KAAQ,CAAC,6BAA6B,EAAEG,KAAK,CAAC;MAErE,IAAIgG,cAAc,EAAE;QAElB,IAAI5G,UAAU,CAAC4G,cAAc,CAAC3G,MAAM,CAAC,EAAE;UACrC2G,cAAc,CAAC3G,MAAM,EAAE;SACxB,MAAM,IAAID,UAAU,CAAC4G,cAAc,CAAC9G,KAAK,CAAC,EAAE;UAC3C8G,cAAc,CAAC9G,KAAK,EAAE;;;;GAK7B,EAAE,CAAE6G,QAAQ,EAAED,cAAc,CAAE,CAAC;EAGhC,OACEpK;IAAK,KAAK,EAAC,gCAAgC;IAAA,UACzCA,IAAC,gBAAgB;MAAA,GACVZ,KAAK;MACV,IAAI,EAAGiL;;IACL;AAGV;;AClBA,MAAME,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACe,SAASC,SAAS,CAACpL,KAAK,EAAE;EACvC,MAAM;IACJqL,GAAG;IACHpL,OAAO;IACP0B,EAAE;IACF2J,KAAK;IACL/K,KAAK;IACLsF,UAAU,GAAG,IAAI;IACjB0F,UAAU,GAAG;GACd,GAAGvL,KAAK;EAGT,MAAM8F,QAAQ,GAAG3D,MAAM,CAAC,IAAI,CAAC;EAE7B,MAAM,CAAE4D,IAAI,EAAEC,OAAO,CAAE,GAAGzC,cAAc,CACtC,CAAE,QAAQ,EAAE5B,EAAE,EAAE,MAAM,CAAE,EACxB,KAAK,CACN;EAED,MAAM,CAAE0E,MAAM,EAAE3B,SAAS,CAAE,GAAG0B,QAAQ,CAAC,KAAK,CAAC;EAE7C,MAAMlC,MAAM,GAAGN,WAAW,CAAC,MAAMoC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAEA,OAAO,CAAE,CAAC;EAE5D,MAAM,CAAEwF,QAAQ,EAAEC,WAAW,CAAE,GAAGrF,QAAQ,CAAC,EAAE,CAAC;EAC9C,MAAM,CAAEsF,YAAY,EAAEC,eAAe,CAAE,GAAGvF,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMwF,SAAS,GAAG9H,WAAW,CAACwH,KAAK,CAAC;EACpC,MAAMO,WAAW,GAAG/H,WAAW,CAAC7D,OAAO,CAAC;EAExC,MAAM6L,cAAc,GAAG7L,OAAO,KAAK4L,WAAW;EAC9C,MAAME,mBAAmB,GAAG,CAACD,cAAc,KAAKP,UAAU,IAAI1F,UAAU,CAAC;;;EAGzE,IAAIiG,cAAc,EAAE;IAClBL,WAAW,CAACO,cAAc,CAACT,UAAU,GAAGU,SAAS,CAACX,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAC;;;;;;EAMpEhJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACsJ,SAAS,IAAI,CAACL,UAAU,EAAE;MAC7BE,WAAW,CAACO,cAAc,CAACV,KAAK,CAAC,CAAC;;GAErC,EAAE,CAAEA,KAAK,EAAErL,OAAO,CAAE,CAAC;;;EAGtBqC,SAAS,CAAC,MAAM;IACd,IAAIyJ,mBAAmB,IAAIH,SAAS,IAAIN,KAAK,CAACY,MAAM,GAAGN,SAAS,CAACM,MAAM,EAAE;MAEvE,IAAIb,GAAG,GAAG,EAAE;MAEZC,KAAK,CAACrG,OAAO,CAAC4E,IAAI,IAAI;QACpB,IAAI,CAAC2B,QAAQ,CAACW,QAAQ,CAACtC,IAAI,CAAClI,EAAE,CAAC,EAAE;UAC/B0J,GAAG,CAACe,IAAI,CAACvC,IAAI,CAAClI,EAAE,CAAC;;OAEpB,CAAC;MAEF,IAAI0K,WAAW,GAAGb,QAAQ;;;MAG1B,IAAI,CAACzF,IAAI,IAAIF,UAAU,EAAE;QACvBI,UAAU,EAAE;;;QAGZ,IAAIsF,UAAU,EAAE;UACdc,WAAW,GAAGL,cAAc,CAACC,SAAS,CAACX,KAAK,CAAC,CAAC;;;;;MAKlDe,WAAW,GAAGA,WAAW,CAACC,MAAM,CAACzC,IAAI,IAAI,CAACwB,GAAG,CAACc,QAAQ,CAACtC,IAAI,CAAC,CAAC;MAC7D,IAAI0B,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,CAAC,IAAI,CAAC;KACtB,MAAM;MACLA,eAAe,CAAC,KAAK,CAAC;;GAEzB,EAAE,CAAEL,KAAK,EAAEvF,IAAI,EAAEgG,mBAAmB,CAAE,CAAC;;;EAGxCzJ,SAAS,CAAC,MAAM;IAEd,IAAIiJ,UAAU,IAAIxF,IAAI,IAAI,CAAC2F,YAAY,EAAE;MACvCD,WAAW,CAACO,cAAc,CAACC,SAAS,CAACX,KAAK,CAAC,CAAC,CAAC;;GAEhD,EAAE,CAAEvF,IAAI,EAAEwF,UAAU,CAAE,CAAC;;;EAGxBjJ,SAAS,CAAC,MAAM;IACd,IAAIyJ,mBAAmB,IAAIH,SAAS,IAAIN,KAAK,CAACY,MAAM,GAAGN,SAAS,CAACM,MAAM,EAAE;MACvE,IAAIM,IAAI,GAAG,EAAE;MAEbhB,QAAQ,CAACvG,OAAO,CAACwH,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,EAAES,mBAAmB,CAAE,CAAC;;;EAGlCvH,6BAA6B,CAACsB,QAAQ,EAAE,2CAA2C,EAAEpB,SAAS,CAAC;EAE/F,MAAMuB,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAI,CAAC;EAEvC,MAAM4G,QAAQ,GAAG,CAAC,CAACrB,KAAK,CAACY,MAAM;EAE/B,MAAMvF,sBAAsB,GAAG;IAC7B,GAAG/E,UAAU,CAACuC,aAAsB,CAAC;IACrCD;GACD;EAED,OAAOvD;IAAK,KAAK,EAAC,4BAA4B;IAAC,iBAAgB,QAAQ,GAAGgB,EAAI;IAAC,GAAG,EAAGmE,QAAU;IAAA,WAC7FnF;MACE,KAAK,EAAGiG,UAAU,CAChB,mCAAmC,EACnC+F,QAAQ,GAAG,EAAE,GAAG,OAAO,EACtBA,QAAQ,IAAI5G,IAAI,GAAI,MAAM,GAAG,EAAE,EAC/BM,MAAM,IAAIN,IAAI,GAAI,QAAQ,GAAG,EAAE,CAC/B;MACH,OAAO,EAAG4G,QAAQ,GAAG1G,UAAU,GAAGkF,MAAM;MAAA,WACxCvK;QACE,KAAK,EAAGL,KAAO;QACf,KAAK,EAAC,yCAAyC;QAAA,UAE7CA;QACE,EACNI;QAAK,KAAK,EAAC,2CAA2C;QAAA,WAElD0K,GAAG,GAEC1K;UACE,KAAK,EAAC,sBAAsB;UAC5B,KAAK,EAAC,yEAAyE;UAC/E,OAAO,EAAG0K,GAAK;UAAA,WAEfzK,IAAC,UAAU,KAAG,EAEZ,CAAC+L,QAAQ,GACP/L;YAAM,KAAK,EAAC,sCAAsC;YAAA;YAAc,GAE9D,IAAI;UAEH,GAET,IAAI,EAGR+L,QAAQ,GAEJ/L;UACE,KAAK,EAAI,iBAAgB0K,KAAK,CAACY,MAAO,QAAOZ,KAAK,CAACY,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,EAAG,EAAG;UAC7E,KAAK,EAAC,iCAAiC;UAAA,UAErCZ,KAAK,CAACY;UACJ,GAEN,IAAI,EAGRS,QAAQ,GAEJ/L;UACE,KAAK,EAAC,gBAAgB;UACtB,KAAK,EAAC,qEAAqE;UAAA,UAE3EA,IAAC,SAAS;YAAC,KAAK,EAAGmF,IAAI,GAAG,iCAAiC,GAAG;;UACvD,GAET,IAAI;QAEN;MACF,EACNnF;MAAK,KAAK,EAAGgG,UAAU,CACrB,2BAA2B,EAC3Bb,IAAI,IAAI4G,QAAQ,GAAG,MAAM,GAAG,EAAE,CAC7B;MAAA,UACD/L,IAACuD,aAAsB,CAAC,QAAQ;QAAC,KAAK,EAAGwC,sBAAwB;QAAA,UAG7D6E,QAAQ,CAAC7I,GAAG,CAAC,CAAC8J,CAAC,EAAE3C,KAAK,KAAK;UACzB,MAAMD,IAAI,GAAG6C,OAAO,CAACpB,KAAK,EAAEmB,CAAC,CAAC;UAE9B,IAAI,CAAC5C,IAAI,EAAE;YACT;;UAGF,MAAM;YAAElI;WAAI,GAAGkI,IAAI;;;UAGnB,MAAMoB,QAAQ,GAAGS,YAAY,KAAKH,UAAU,GAAGzB,KAAK,KAAK,CAAC,GAAGA,KAAK,KAAK0B,QAAQ,CAACU,MAAM,GAAG,CAAC,CAAC;UAE3F,OACEnF,cAAC,QAAQ;YAAA,GACF8C,IAAI;YACT,QAAQ,EAAGoB,QAAU;YACrB,OAAO,EAAGhL,OAAS;YACnB,KAAK,EAAG6J,KAAO;YACf,GAAG,EAAGnI;YAAO;SAElB;;MAGD;IACF;AACR;;AAGA;;AAEA;AACA;AACA;AACA,SAASsK,SAAS,CAACX,KAAK,EAAE;EACxB,OAAOsB,MAAM,CAACtB,KAAK,EAAEuB,CAAC,IAAIA,CAAC,CAACtM,KAAK,CAACuM,WAAW,EAAE,CAAC;AAClD;AAEA,SAASJ,OAAO,CAACpB,KAAK,EAAE3J,EAAE,EAAE;EAC1B,OAAO4E,IAAI,CAAC+E,KAAK,EAAEuB,CAAC,IAAIA,CAAC,CAAClL,EAAE,KAAKA,EAAE,CAAC;AACtC;AAEA,SAASqK,cAAc,CAACV,KAAK,EAAE;EAC7B,OAAOA,KAAK,CAAC3I,GAAG,CAACkK,CAAC,IAAIA,CAAC,CAAClL,EAAE,CAAC;AAC7B;;ACjQe,SAASoL,WAAW,CAAC/M,KAAK,EAAE;EACzC,MAAM;IACJC,OAAO;IACP+M,KAAK;IACLjJ;GACD,GAAG/D,KAAK;EAET,MAAMiN,kBAAkB,GAAGvL,qBAAqB,CAACsL,KAAK,EAAE/M,OAAO,CAAC;EAEhE,MAAMc,WAAW,GAAGgD,KAAK,IAAIkJ,kBAAkB;EAE/C,IAAIlM,WAAW,EAAE;IACf,OACEH;MAAK,KAAK,EAAC,kCAAkC;MAAA,UACzCG;MACE;;AAGZ;;AChBA,SAASmM,QAAQ,CAAClN,KAAK,EAAE;EACvB,MAAM;IACJ2B,EAAE;IACFpB,KAAK;IACL4M,QAAQ;IACRC,QAAQ;IACRrJ,KAAK,GAAG,KAAK;IACbsJ,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAM0J,oBAAoB,GAAG,CAAC;IAAEjE;GAAQ,KAAK;IAC3C2D,QAAQ,CAAC3D,MAAM,CAACkE,OAAO,CAAC;GACzB;EAED,MAAMC,YAAY,GAAGC,CAAC,IAAI;IACxBH,oBAAoB,CAACG,CAAC,CAAC;IACvBJ,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDzB,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,MAAMC,GAAG,GAAGC,iBAAiB,CAACtC,EAAE,CAAC;EAEjC,OACEhB;IAAK,KAAK,EAAC,+BAA+B;IAAA,WACxCC;MACE,GAAG,EAAGoD,GAAK;MACX,EAAE,EAAG6J,UAAQ,CAAClM,EAAE,CAAG;MACnB,IAAI,EAAGA,EAAI;MACX,OAAO,EAAG0L,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAC,UAAU;MACf,KAAK,EAAC,4BAA4B;MAClC,QAAQ,EAAGK,YAAc;MACzB,OAAO,EAAGJ,UAAY;MACtB,QAAQ,EAAGH;MAAa,EAC1BxM;MAAO,GAAG,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAAGpB;MAAe;IAC5E;AAEV;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASuN,aAAa,CAAC9N,KAAK,EAAE;EAC3C,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACXR,KAAK;IACLwN,QAAQ;IACRC,QAAQ;IACRZ,QAAQ;IACRC,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM+D,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE/B,MAAMgO,KAAK,GAAGpM,QAAQ,CAACF,EAAE,CAAC;EAE1B,OACEhB;IAAK,KAAK,EAAC,gEAAgE;IAAC,iBAAgBgB,EAAI;IAAA,WAC9Ff,IAAC,QAAQ;MACP,QAAQ,EAAGwM,QAAU;MACrB,EAAE,EAAGzL,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,QAAQ,EAAGyN,QAAU;MACrB,OAAO,EAAGX,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGvJ;OALF9D,OAAO,CAKK,EAClBgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAGqN;MAAa,EAClErN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASyF,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACR,OAAO;AAC/B;;AAGA;;AAEA,SAASG,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC3GA,MAAMwM,kBAAgB,GAAG,UAASC,MAAM,EAAEpK,GAAG,EAAE;EAE7C,MAAM,CAAEqK,MAAM,EAAEC,SAAS,CAAE,GAAGlI,QAAQ,CAACmI,SAAS,CAAC;EAEjDvK,GAAG,CAAC5B,OAAO,GAAGQ,OAAO,CAAC,OAAO;IAC3BwB,KAAK,EAAGoK,MAAM,IAAK;MACjB,IAAIJ,MAAM,EAAE;QACVA,MAAM,CAAChK,KAAK,CAACoK,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;EAEf9L,SAAS,CAAC,MAAM;IACd,IAAI,OAAO+L,MAAM,KAAK,WAAW,IAAID,MAAM,EAAE;MAC3CA,MAAM,CAAChK,KAAK,CAACiK,MAAM,CAAC;MACpBC,SAAS,CAAC,KAAK,CAAC;;GAEnB,EAAE,CAAEF,MAAM,EAAEC,MAAM,CAAE,CAAC;AACxB,CAAC;AAED,MAAMK,YAAU,GAAGC,UAAU,CAAC,CAAC3O,KAAK,EAAEgE,GAAG,KAAK;EAE5C,MAAM;IACJD,KAAK;IACL6K,OAAO;IACPC,YAAY;IACZC,MAAM,GAAG,MAAM,EAAE;IACjB1B,QAAQ;IACR2B,gBAAgB;IAChBC;GACD,GAAGhP,KAAK;EAET,MAAMiP,QAAQ,GAAG9M,MAAM,EAAE;EACzB,MAAM,CAAEiM,MAAM,EAAEc,SAAS,CAAE,GAAG9I,QAAQ,EAAE;EACxC,MAAM,CAAEmH,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,IAAI,EAAE,CAAC;EAE3DoK,kBAAgB,CAACC,MAAM,EAAEpK,GAAG,CAAC;EAE7B,MAAMmL,WAAW,GAAG1J,iBAAiB,CAAC5B,QAAQ,IAAI;IAChD+K,OAAO,CAAC/K,QAAQ,CAAC;IACjB2J,aAAa,CAAC3J,QAAQ,CAAC;GACxB,CAAC;EAEFvB,SAAS,CAAC,MAAM;IAEd,IAAI8L,MAAM;;;AAGd;AACA;AACA;AACA;IACI,MAAMgB,SAAS,GAAGxB,CAAC,IAAI;MACrB,IAAIA,CAAC,CAAC5K,GAAG,KAAK,WAAW,IAAI,CAACoL,MAAM,EAAE;QACpC;;MAGF,MAAMiB,SAAS,GAAGjB,MAAM,CAACkB,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;QACtCd,YAAY,EAAE;;KAEjB;IAEDT,MAAM,GAAG,IAAIwB,UAAU,CAAC;MACtBC,SAAS,EAAEZ,QAAQ,CAAC7M,OAAO;MAC3B+K,QAAQ,EAAEgC,WAAW;MACrBC,SAAS,EAAEA,SAAS;MACpBN,MAAM,EAAEA,MAAM;MACdC,gBAAgB,EAAEA,gBAAgB;MAClChL,KAAK,EAAEwJ,UAAU;MACjByB,SAAS,EAAEA;KACZ,CAAC;IAEFE,SAAS,CACPd,MAAM,CACP;IAED,OAAO,MAAM;MACXU,MAAM,CAAC,EAAE,CAAC;MACVG,QAAQ,CAAC7M,OAAO,CAAC0N,SAAS,GAAG,EAAE;MAC/BZ,SAAS,CAAC,IAAI,CAAC;KAChB;GACF,EAAE,EAAE,CAAC;EAEN5M,SAAS,CAAC,MAAM;IACd,IAAI,CAAC8L,MAAM,EAAE;MACX;;IAGF,IAAIrK,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFa,MAAM,CAACJ,QAAQ,CAACjK,KAAK,CAAC;IACtByJ,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEbzB,SAAS,CAAC,MAAM;IACd,IAAI,CAAC8L,MAAM,EAAE;MACX;;IAGFA,MAAM,CAAC2B,YAAY,CAACf,SAAS,CAAC;GAC/B,EAAE,CAAEA,SAAS,CAAE,CAAC;EAEjB,MAAMgB,WAAW,GAAG,MAAM;IACxBhM,GAAG,CAAC5B,OAAO,CAACgC,KAAK,EAAE;GACpB;EAED,OAAOxD;IAAK,KAAK,EAAGqP,UAAU,CAAC,4CAA4C,EAAE7C,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAG;IAAA,UAC1GxM;MACE,IAAI,EAAGZ,KAAK,CAACkQ,IAAM;MACnB,KAAK,EAAGD,UAAU,CAAC,4BAA4B,EAAE1C,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAG;MAChF,GAAG,EAAG0B,QAAU;MAChB,OAAO,EAAGe;;IAER;AACR,CAAC,CAAC;;ACvIK,SAASG,aAAa,CAACnQ,KAAK,EAAE;EACnC,MAAM;IACJoQ;GACD,GAAGpQ,KAAK;EAET,IAAI,CAACoQ,MAAM,EAAE;IACX,OAAO,IAAI;;EAGb,OAAOxP;IAAM,KAAK,EAAC,qCAAqC;IAAA;IAEjD;AACT;;ACTA,MAAMuK,MAAI,GAAG,MAAM,EAAE;;AAErB;AACA;AACA;AACA;AACA;AACe,SAASkF,QAAQ,CAACrQ,KAAK,EAAE;EAEtC,MAAM;IACJO,KAAK;IACL+P,IAAI,GAAG,KAAK;IACZF,MAAM;IACNhD,QAAQ,GAAG,KAAK;IAChBpD,OAAO,GAAGmB;GACX,GAAGnL,KAAK;EAET,MAAMuQ,iBAAiB,GAAG,4BAA4B;EACtD,MAAMC,iBAAiB,GAAG,sCAAsC;EAEhE,MAAMR,WAAW,GAAGpC,CAAC,IAAI;IACvB5D,OAAO,CAAC4D,CAAC,CAAC;;;IAGV,IAAI,CAACA,CAAC,CAAC6C,WAAW,EAAE;MAClB7C,CAAC,CAACnE,eAAe,EAAE;;GAEtB;EAED,OACE7I;IACE,KAAK,EAAGqP,UAAU,CAAC,gCAAgC,EACjDG,MAAM,GAAG,QAAQ,GAAG,IAAI,EACxBE,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,CAAG;IAClD,OAAO,EAAGN,WAAa;IACvB,QAAQ,EAAGM,IAAI,KAAK,UAAU,IAAIlD,QAAU;IAC5C,KAAK,EACH7M,KAAK,IACH+P,IAAI,KAAK,UAAU,GAAGC,iBAAiB,GAAGC,iBAAiB,CAE9D;IAAA,UAEAF,IAAI,KAAK,UAAU,GAAG1P,IAAC,gBAAgB,KAAG,GAAGA,IAAC,gBAAgB;IACxD;AAEb;;ACrBA,MAAMuK,MAAI,GAAG,MAAM,EAAG;AAEtB,SAASuF,aAAa,CAAC1Q,KAAK,EAAE;EAC5B,MAAM;IACJ2Q,QAAQ;IACRhP,EAAE;IACFpB,KAAK;IACLqO,OAAO;IACPgC,OAAO;IACPN,IAAI;IACJvM,KAAK,GAAG,EAAE;IACVqJ,QAAQ,GAAG,KAAK;IAChB4B,SAAS;IACTD,gBAAgB;IAChB8B,iBAAiB,GAAGC;GACrB,GAAG9Q,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEwD,cAAc,CAAE,GAAG3K,QAAQ,CAACrC,KAAK,CAAC;EAEtD,MAAMiN,SAAS,GAAG/M,iBAAiB,CAACtC,EAAE,CAAC;EACvC,MAAMsP,YAAY,GAAG9O,MAAM,EAAE;EAE7B,MAAM+O,UAAU,GAAG3D,UAAU,CAAC4D,UAAU,CAAC,GAAG,CAAC,IAAIb,IAAI,KAAK,UAAU;EACpE,MAAMc,aAAa,GAAG7D,UAAU,CAAC4D,UAAU,CAAC,GAAG,CAAC,GAAG5D,UAAU,CAAC8D,SAAS,CAAC,CAAC,CAAC,GAAG9D,UAAU;EAEvF,MAAM,CAAEnJ,KAAK,EAAEkN,SAAS,CAAE,GAAGlL,QAAQ,CAACmI,SAAS,CAAC;EAEhD,MAAMgD,QAAQ,GAAG,CAAC/C,MAAM,GAAG,CAAC,KAAK;IAC/B,MAAMgD,QAAQ,GAAGP,YAAY,CAAC7O,OAAO,CAACmH,QAAQ,CAACc,QAAQ,CAACoH,aAAa,CAAC;;;IAGtE,MAAMC,QAAQ,GAAGF,QAAQ,GAAGnH,QAAQ,CAACoH,aAAa,CAACE,cAAc,GAAGlD,QAAQ;IAE5E6C,SAAS,CAACI,QAAQ,GAAGlD,MAAM,CAAC;GAC7B;EAED,MAAMoD,mBAAmB,GAAGhP,OAAO,CAAC,MAAM;IACxC,OAAO+N,QAAQ,CAAE9M,QAAQ,IAAK;MAC5B+K,OAAO,CAAC/K,QAAQ,CAAC;KAClB,CAAC;GACH,EAAE,CAAE+K,OAAO,EAAE+B,QAAQ,CAAE,CAAC;EAEzB,MAAMnD,aAAa,GAAG3J,QAAQ,IAAI;IAChCkN,cAAc,CAAClN,QAAQ,CAAC;IAExB,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;MACjC+N,mBAAmB,CAACrD,SAAS,CAAC;KAC/B,MAAM;MACLqD,mBAAmB,CAAC/N,QAAQ,CAAC;;GAGhC;EAED,MAAMgO,gBAAgB,GAAGpM,iBAAiB,CAAC,MAAM;IAC/C,IAAI6K,IAAI,KAAK,UAAU,EAAE;MACvB;;IAGF,IAAI,CAACY,UAAU,EAAE;MACf1D,aAAa,CAAC,GAAG,GAAGD,UAAU,CAAC;KAChC,MAAM;MACLC,aAAa,CAAC4D,aAAa,CAAC;;GAE/B,CAAC;EAEF,MAAMU,gBAAgB,GAAIjO,QAAQ,IAAK;IACrC,IAAIqN,UAAU,EAAE;MACdrN,QAAQ,GAAG,GAAG,GAAGA,QAAQ;;IAG3B,IAAIA,QAAQ,KAAK0J,UAAU,EAAE;MAC3B;;IAGFC,aAAa,CAAC3J,QAAQ,CAAC;IAEvB,IAAI,CAACqN,UAAU,IAAIrN,QAAQ,CAACsN,UAAU,CAAC,GAAG,CAAC,EAAE;;MAG3CI,QAAQ,CAAC,CAAC,CAAC,CAAC;;GAEf;EAED,MAAMQ,UAAU,GAAGtM,iBAAiB,CAACuM,IAAI,IAAI;IAE3C,IAAI,EAAEA,IAAI,IAAIA,IAAI,CAAC9F,MAAM,CAAC,EAAE;MAC1B0E,OAAO,CAACrC,SAAS,CAAC;MAClB;;IAEF,MAAMN,KAAK,GAAG+D,IAAI,CAAC,CAAC,CAAC;IACrB,MAAMC,OAAO,GAAI,GAAEhE,KAAK,CAACiE,MAAO,KAAIjE,KAAK,CAACgE,OAAQ,EAAC;IAEnDrB,OAAO,CAACqB,OAAO,CAAC;GACjB,CAAC;EAEF3P,SAAS,CAAC,MAAM;IACd,IAAI,OAAO8B,KAAK,KAAK,WAAW,EAAE;MAChC4M,SAAS,CAAC5O,OAAO,CAACgC,KAAK,CAACA,KAAK,CAAC;MAC9BkN,SAAS,CAAC/C,SAAS,CAAC;;GAEvB,EAAE,CAAEnK,KAAK,CAAE,CAAC;EAEb9B,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;;;IAIF,IAAI,CAACxJ,KAAK,EAAE;MACVyJ,aAAa,CAAC0D,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC;MACpC;;IAGF1D,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;;;EAIbzB,SAAS,CAAC,MAAM;IACd,MAAM6P,WAAW,GAAGpQ,KAAK,IAAI;MAC3B,IAAI,CAACmP,UAAU,EAAE;QACf;;MAEFnP,KAAK,CAACqQ,aAAa,CAACC,OAAO,CAAC,kBAAkB,EAAEtQ,KAAK,CAACqQ,aAAa,CAACE,OAAO,CAAC,MAAM,CAAC,CAAC;KACrF;IAED,MAAMC,YAAY,GAAGxQ,KAAK,IAAI;MAC5B,IAAImP,UAAU,EAAE;QACd;;MAGF,MAAMsB,IAAI,GAAGzQ,KAAK,CAACqQ,aAAa,CAACE,OAAO,CAAC,kBAAkB,CAAC;MAE5D,IAAIE,IAAI,EAAE;QACRC,UAAU,CAAC,MAAM;UACfZ,gBAAgB,EAAE;UAClBN,QAAQ,EAAE;SACX,CAAC;;KAEL;IACDN,YAAY,CAAC7O,OAAO,CAACkI,gBAAgB,CAAC,MAAM,EAAE6H,WAAW,CAAC;IAC1DlB,YAAY,CAAC7O,OAAO,CAACkI,gBAAgB,CAAC,KAAK,EAAE6H,WAAW,CAAC;IACzDlB,YAAY,CAAC7O,OAAO,CAACkI,gBAAgB,CAAC,OAAO,EAAEiI,YAAY,CAAC;IAE5D,OAAO,MAAM;MACXtB,YAAY,CAAC7O,OAAO,CAACoI,mBAAmB,CAAC,MAAM,EAAE2H,WAAW,CAAC;MAC7DlB,YAAY,CAAC7O,OAAO,CAACoI,mBAAmB,CAAC,KAAK,EAAE2H,WAAW,CAAC;MAC5DlB,YAAY,CAAC7O,OAAO,CAACoI,mBAAmB,CAAC,OAAO,EAAE+H,YAAY,CAAC;KAChE;GACF,EAAE,CAAEtB,YAAY,EAAEC,UAAU,EAAEW,gBAAgB,EAAEN,QAAQ,CAAE,CAAC;EAE5D,OACE5Q;IAAK,KAAK,EAAC,iCAAiC;IAAA,WAC1CA;MAAO,GAAG,EAAGkN,UAAQ,CAAClM,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAC,OAAO,EAAG,MAAM4P,QAAQ,EAAI;MAAA,WACxFhR,KAAK,EACNK,IAAC,QAAQ;QACP,KAAK,EAAGL,KAAO;QACf,IAAI,EAAG+P,IAAM;QACb,OAAO,EAAGuB,gBAAkB;QAC5B,MAAM,EAAGX;QAAwB;MAC7B,EAERvQ;MAAK,KAAK,EAAC,qCAAqC;MAAC,GAAG,EAAGsQ,YAAc;MAAA,WACnErQ,IAAC,aAAa;QACZ,MAAM,EAAGsQ,UAAY;QACrB,QAAQ,EAAGZ,IAAI,KAAK,UAAU,IAAIlD,QAAU;QAC5C,OAAO,EAAGyE;QACV,EACDX,UAAU,GACTtQ,IAAC8N,YAAU;QACT,EAAE,EAAGb,UAAQ,CAAClM,EAAE,CAAG;QACnB,IAAI,EAAGA,EAAI;QACX,OAAO,EAAGmQ,gBAAkB;QAC5B,QAAQ,EAAG1E,QAAU;QACrB,YAAY,EAAG,MAAM;UAAEyE,gBAAgB,EAAE;UAAEN,QAAQ,CAAC,IAAI,CAAC;SAAK;QAC9D,MAAM,EAAGQ,UAAY;QACrB,KAAK,EAAGX,aAAe;QACvB,SAAS,EAAGpC,SAAW;QACvB,GAAG,EAAGgC,SAAW;QACjB,gBAAgB,EAAGjC;QACnB,GACFnO,IAAC,iBAAiB;QAAA,GACXZ,KAAK;QACV,OAAO,EAAG8R,gBAAkB;QAC5B,KAAK,EAAGvE,UAAY;QACpB,GAAG,EAAGyD;QACN;MAEA;IACF;AAEV;AAEA,MAAMF,iBAAiB,GAAGnC,UAAU,CAAC,CAAC3O,KAAK,EAAEgE,GAAG,KAAK;EACnD,MAAM;IACJrC,EAAE;IACFyL,QAAQ;IACRwB,OAAO;IACP7K,KAAK;IACLsJ,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAMiP,QAAQ,GAAG9M,MAAM,EAAE;;;;EAIzB6B,GAAG,CAAC5B,OAAO,GAAG;IACZgC,KAAK,EAAGsN,QAAQ,IAAK;MACnB,MAAMgB,KAAK,GAAGzD,QAAQ,CAAC7M,OAAO;MAC9B,IAAI,CAACsQ,KAAK,EAAE;QACV;;MAGFA,KAAK,CAACtO,KAAK,EAAE;MACb,IAAI,OAAOsN,QAAQ,KAAK,QAAQ,EAAE;QAChC,IAAIA,QAAQ,GAAG3N,KAAK,CAACmI,MAAM,EAAE;UAC3BwF,QAAQ,GAAG3N,KAAK,CAACmI,MAAM;;QAEzBwG,KAAK,CAACC,iBAAiB,CAACjB,QAAQ,EAAEA,QAAQ,CAAC;;;GAIhD;EAED,OAAO9Q;IACL,EAAE,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;IACnB,IAAI,EAAC,MAAM;IACX,GAAG,EAAGsN,QAAU;IAChB,IAAI,EAAGtN,EAAI;IACX,UAAU,EAAC,OAAO;IAClB,YAAY,EAAC,KAAK;IAClB,QAAQ,EAAGyL,QAAU;IACrB,KAAK,EAAC,4BAA4B;IAClC,OAAO,EAAGQ,CAAC,IAAIgB,OAAO,CAAChB,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAG;IACxC,OAAO,EAAGsJ,OAAS;IACnB,MAAM,EAAGC,MAAQ;IACjB,KAAK,EAAGvJ,KAAK,IAAI;IAAO;AAC5B,CAAC,CAAC;AAGF,MAAM6O,oBAAoB,GAAGjE,UAAU,CAAC,CAAC3O,KAAK,EAAEgE,GAAG,KAAK;EACtD,MAAM;IACJrC,EAAE;IACFyL,QAAQ;IACRwB,OAAO;IACP7K,KAAK;IACLsJ,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAMiP,QAAQ,GAAG9M,MAAM,EAAE;;;;EAIzB6B,GAAG,CAAC5B,OAAO,GAAG;IACZgC,KAAK,EAAE,MAAM;MACX,MAAMsO,KAAK,GAAGzD,QAAQ,CAAC7M,OAAO;MAC9B,IAAI,CAACsQ,KAAK,EAAE;QACV;;MAGFA,KAAK,CAACtO,KAAK,EAAE;MACbsO,KAAK,CAACC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;;GAEhC;EAED,OAAO/R;IACL,EAAE,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;IACnB,IAAI,EAAC,MAAM;IACX,GAAG,EAAGsN,QAAU;IAChB,IAAI,EAAGtN,EAAI;IACX,UAAU,EAAC,OAAO;IAClB,YAAY,EAAC,KAAK;IAClB,QAAQ,EAAGyL,QAAU;IACrB,KAAK,EAAC,4BAA4B;IAClC,OAAO,EAAGQ,CAAC,IAAIgB,OAAO,CAAChB,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAG;IACxC,OAAO,EAAGsJ,OAAS;IACnB,MAAM,EAAGC,MAAQ;IACjB,KAAK,EAAGvJ,KAAK,IAAI,EAAI;IACrB,cAAW;IACX;AACJ,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS8O,SAAS,CAAC7S,KAAK,EAAE;EACvC,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACX4P,QAAQ;IACRvD,QAAQ;IACRkD,IAAI;IACJ/P,KAAK;IACLwN,QAAQ;IACRC,QAAQ;IACRe,gBAAgB;IAChB+D,QAAQ;IACRC,IAAI,GAAG5H,MAAI;IACX6H,OAAO;IACPhE,SAAS;IACT3B,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM,CAAEiT,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG9M,QAAQ,CAAC,IAAI,CAAC;EACpE,MAAM,CAAE+M,eAAe,EAAEC,kBAAkB,CAAE,GAAGhN,QAAQ,CAAC,IAAI,CAAC;EAC9D,MAAM,CAAEiN,UAAU,EAAEC,aAAa,CAAE,GAAGlN,QAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIrC,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE7B,MAAMsT,aAAa,GAAGzP,WAAW,CAACC,KAAK,CAAC;EAExCzB,SAAS,CAAC,MAAM;IACd,IAAIgC,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxB,MAAMU,kBAAkB,GAAGV,QAAQ,CAAC/O,KAAK,CAAC,IAAI,IAAI;MAElDqP,kBAAkB,CAACI,kBAAkB,CAAC;;GAEzC,EAAE,CAAEzP,KAAK,CAAE,CAAC;EAEb,MAAM6K,OAAO,GAAGnJ,iBAAiB,CAAE5B,QAAQ,IAAK;IAC9C,IAAI2P,kBAAkB,GAAG,IAAI;IAE7B,IAAIlP,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxBU,kBAAkB,GAAGV,QAAQ,CAACjP,QAAQ,CAAC,IAAI,IAAI;;IAGjD,IAAI2P,kBAAkB,EAAE;MACtBN,qBAAqB,CAACrP,QAAQ,CAAC;KAChC,MAAM;;MAGL,IAAIA,QAAQ,KAAKE,KAAK,EAAE;QACtBiK,QAAQ,CAACnK,QAAQ,CAAC;;;IAItBuP,kBAAkB,CAACI,kBAAkB,CAAC;GACvC,CAAC;EAEF,MAAM5C,OAAO,GAAGhN,WAAW,CAAC6P,GAAG,IAAI;IACjCH,aAAa,CAACG,GAAG,CAAC;GACnB,EAAE,EAAE,CAAC;EAEN,IAAIF,aAAa,KAAKxP,KAAK,IAAIoP,eAAe,EAAE;IAC9CpP,KAAK,GAAGkP,kBAAkB;;EAG5B,MAAMS,cAAc,GAAG7R,QAAQ,CAACF,EAAE,CAAC;EAEnC,MAAMsM,KAAK,GAAGoF,UAAU,IAAIK,cAAc,IAAIP,eAAe;EAE7D,OACExS;IACE,KAAK,EAAGiG,UAAU,CAChB5G,KAAK,CAAC+I,KAAK,EACX,4BAA4B,EAC5BkF,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgBtM,EAAI;IAAA,WACpBf,IAAC,aAAa;MACZ,QAAQ,EAAG+P,QAAU;MACrB,QAAQ,EAAGvD,QAAU;MACrB,IAAI,EAAGkD,IAAM;MACb,EAAE,EAAG3O,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,OAAO,EAAGqO,OAAS;MACnB,OAAO,EAAGgC,OAAS;MACnB,OAAO,EAAGvD,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAG0F,OAAS;MACnB,IAAI,EAAGD,IAAM;MACb,KAAK,EAAGhP,KAAO;MACf,SAAS,EAAGiL,SAAW;MACvB,gBAAgB,EAAGD,gBAAkB;MACrC,iBAAiB,EAAG/O,KAAK,CAAC6Q;OAXpB5Q,OAAO,CAWmC,EACjDgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAEqN;MAAY,EAC/DrN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4S,YAAY,CAAC3T,KAAK,EAAE;EAClC,OAAOY,IAAC,SAAS;IAAC,KAAK,EAAC,oCAAoC;IAAC,iBAAiB,EAAGgS,oBAAsB;IAAA,GAAM5S;IAAU;AACzH;AAEO,SAASwG,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,KAAK,CAAC,CAACA,IAAI,CAACnK,KAAK,IAAImK,IAAI,CAAC0F,SAAS,CAACrK,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpE;;AAGA;;AAEA,SAASsE,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAuBA,EAAG,EAAC;AACrC;;ACncA,MAAMwM,gBAAgB,GAAG,UAASC,MAAM,EAAEpK,GAAG,EAAE;EAE7C,MAAM,CAAEqK,MAAM,EAAEC,SAAS,CAAE,GAAGlI,QAAQ,CAACmI,SAAS,CAAC;EAEjDvK,GAAG,CAAC5B,OAAO,GAAGQ,OAAO,CAAC,OAAO;IAC3BwB,KAAK,EAAGoK,MAAM,IAAK;MACjB,IAAIJ,MAAM,EAAE;QACVA,MAAM,CAAChK,KAAK,CAACoK,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;EAEf9L,SAAS,CAAC,MAAM;IACd,IAAI,OAAO+L,MAAM,KAAK,WAAW,IAAID,MAAM,EAAE;MAC3CA,MAAM,CAAChK,KAAK,CAACiK,MAAM,CAAC;MACpBC,SAAS,CAAC,KAAK,CAAC;;GAEnB,EAAE,CAAEF,MAAM,EAAEC,MAAM,CAAE,CAAC;AACxB,CAAC;AAED,MAAMK,UAAU,GAAGC,UAAU,CAAC,CAAC3O,KAAK,EAAEgE,GAAG,KAAK;EAE5C,MAAM;IACJD,KAAK;IACL6K,OAAO;IACPE,MAAM,GAAG,MAAM,EAAE;IACjB+E,iBAAiB,GAAG,EAAE;IACtBzG,QAAQ;IACR2B,gBAAgB;IAChB+E,UAAU,GAAG,KAAK;IAClBC,QAAQ,GAAG;GACZ,GAAG/T,KAAK;EAET,MAAMiP,QAAQ,GAAG9M,MAAM,EAAE;EACzB,MAAM,CAAEiM,MAAM,EAAEc,SAAS,CAAE,GAAG9I,QAAQ,EAAE;EACxC,MAAM,CAAEmH,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,IAAI,EAAE,CAAC;EAE3DoK,gBAAgB,CAACC,MAAM,EAAEpK,GAAG,CAAC;EAE7B,MAAMmL,WAAW,GAAG1J,iBAAiB,CAAC5B,QAAQ,IAAI;IAChD+K,OAAO,CAAC/K,QAAQ,CAAC;IACjB2J,aAAa,CAAC3J,QAAQ,CAAC;GACxB,CAAC;EAEFvB,SAAS,CAAC,MAAM;IAEd,IAAI8L,MAAM;IAEVA,MAAM,GAAG,IAAI4F,aAAa,CAAC;MACzBnE,SAAS,EAAEZ,QAAQ,CAAC7M,OAAO;MAC3B+K,QAAQ,EAAEgC,WAAW;MACrBL,MAAM,EAAEA,MAAM;MACd+E,iBAAiB,EAAEA,iBAAiB;MACpC9E,gBAAgB,EAAEA,gBAAgB;MAClChL,KAAK,EAAEwJ,UAAU;MACjBwG,QAAQ,EAAEA,QAAQ;MAClBE,aAAa,EAAEH;KAChB,CAAC;IAEF5E,SAAS,CACPd,MAAM,CACP;IAED,OAAO,MAAM;MACXU,MAAM,CAAC,EAAE,CAAC;MACVG,QAAQ,CAAC7M,OAAO,CAAC0N,SAAS,GAAG,EAAE;MAC/BZ,SAAS,CAAC,IAAI,CAAC;KAChB;GACF,EAAE,EAAE,CAAC;EAEN5M,SAAS,CAAC,MAAM;IACd,IAAI,CAAC8L,MAAM,EAAE;MACX;;IAGF,IAAIrK,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFa,MAAM,CAACJ,QAAQ,CAACjK,KAAK,CAAC;IACtByJ,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,MAAMiM,WAAW,GAAG,MAAM;IACxBhM,GAAG,CAAC5B,OAAO,CAACgC,KAAK,EAAE;GACpB;EAED,OAAOxD;IACL,IAAI,EAAGZ,KAAK,CAACkQ,IAAM;IACnB,KAAK,EAAGD,UAAU,CAAC,gEAAgE,EAAE1C,UAAU,GAAG,QAAQ,GAAG,IAAI,EAAEH,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAG;IAClJ,GAAG,EAAG6B,QAAU;IAChB,OAAO,EAAGe;IACL;AACT,CAAC,CAAC;;ACrGF,MAAM7E,IAAI,GAAG,MAAM,EAAG;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS+I,mBAAmB,CAAClU,KAAK,EAAE;EACjD,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACX4P,QAAQ;IACRvD,QAAQ;IACR7M,KAAK;IACLwN,QAAQ;IACRC,QAAQ;IACRe,gBAAgB;IAChB+D,QAAQ;IACRC,IAAI,GAAG5H;GACR,GAAGnL,KAAK;EAET,MAAM,CAAEiT,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG9M,QAAQ,CAAC,IAAI,CAAC;EACpE,MAAM,CAAE+M,eAAe,EAAEC,kBAAkB,CAAE,GAAGhN,QAAQ,CAAC,IAAI,CAAC;EAC9D,MAAM,CAAEiN,UAAU,EAAEC,aAAa,CAAE,GAAGlN,QAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIrC,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE7B,MAAMsT,aAAa,GAAGzP,WAAW,CAACC,KAAK,CAAC;EAExCzB,SAAS,CAAC,MAAM;IACd,IAAIgC,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxB,MAAMU,kBAAkB,GAAGV,QAAQ,CAAC/O,KAAK,CAAC,IAAI,IAAI;MAElDqP,kBAAkB,CAACI,kBAAkB,CAAC;;GAEzC,EAAE,CAAEzP,KAAK,CAAE,CAAC;EAEb,MAAM6K,OAAO,GAAGnJ,iBAAiB,CAAE5B,QAAQ,IAAK;IAC9C,IAAI2P,kBAAkB,GAAG,IAAI;IAE7B,IAAIlP,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxBU,kBAAkB,GAAGV,QAAQ,CAACjP,QAAQ,CAAC,IAAI,IAAI;;IAGjD,IAAI2P,kBAAkB,EAAE;MACtBN,qBAAqB,CAACrP,QAAQ,CAAC;KAChC,MAAM;;MAGL,IAAIA,QAAQ,KAAKE,KAAK,EAAE;QACtBiK,QAAQ,CAACnK,QAAQ,CAAC;;;IAItBuP,kBAAkB,CAACI,kBAAkB,CAAC;GACvC,CAAC;EAEF,MAAM5C,OAAO,GAAGhN,WAAW,CAAC6P,GAAG,IAAI;IACjCH,aAAa,CAACG,GAAG,CAAC;GACnB,EAAE,EAAE,CAAC;EAEN,IAAIF,aAAa,KAAKxP,KAAK,IAAIoP,eAAe,EAAE;IAC9CpP,KAAK,GAAGkP,kBAAkB;;EAG5B,MAAMS,cAAc,GAAG7R,QAAQ,CAACF,EAAE,CAAC;EAEnC,MAAMsM,KAAK,GAAGoF,UAAU,IAAIK,cAAc,IAAIP,eAAe;EAE7D,OACExS;IACE,KAAK,EAAGiG,UAAU,CAChB,4BAA4B,EAC5BqH,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgBtM,EAAI;IAAA,WACpBf,IAAC,cAAc;MACb,QAAQ,EAAG+P,QAAU;MACrB,QAAQ,EAAGvD,QAAU;MACrB,EAAE,EAAGzL,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,OAAO,EAAGqO,OAAS;MACnB,OAAO,EAAGgC,OAAS;MACnB,IAAI,EAAGmC,IAAM;MACb,KAAK,EAAGhP,KAAO;MACf,gBAAgB,EAAGgL;OANb9O,OAAO,CAM2B,EACzCgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAEqN;MAAY,EAC/DrN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEA,SAASoT,cAAc,CAACnU,KAAK,EAAE;EAC7B,MAAM;IACJ2Q,QAAQ;IACRhP,EAAE;IACFpB,KAAK;IACLqO,OAAO;IACPgC,OAAO;IACP7M,KAAK,GAAG,EAAE;IACVqJ,QAAQ,GAAG,KAAK;IAChB2B;GACD,GAAG/O,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAMiN,SAAS,GAAG/M,iBAAiB,CAACtC,EAAE,CAAC;EACvC,MAAMsP,YAAY,GAAG9O,MAAM,EAAE;EAE7B,MAAM,CAAEiC,KAAK,EAAEkN,SAAS,CAAE,GAAGlL,QAAQ,CAACmI,SAAS,CAAC;EAEhD,MAAMgD,QAAQ,GAAG,CAAC/C,MAAM,GAAG,CAAC,KAAK;IAC/B,MAAMgD,QAAQ,GAAGP,YAAY,CAAC7O,OAAO,CAACmH,QAAQ,CAACc,QAAQ,CAACoH,aAAa,CAAC;;;IAGtE,MAAMC,QAAQ,GAAGF,QAAQ,GAAGnH,QAAQ,CAACoH,aAAa,CAACE,cAAc,GAAGlD,QAAQ;IAE5E6C,SAAS,CAACI,QAAQ,GAAGlD,MAAM,CAAC;GAC7B;EAED,MAAMoD,mBAAmB,GAAGhP,OAAO,CAAC,MAAM;IACxC,OAAO+N,QAAQ,CAAE9M,QAAQ,IAAK+K,OAAO,CAAC/K,QAAQ,CAACqI,MAAM,GAAGrI,QAAQ,GAAG0K,SAAS,CAAC,CAAC;GAC/E,EAAE,CAAEK,OAAO,EAAE+B,QAAQ,CAAE,CAAC;EAEzB,MAAMxB,WAAW,GAAGtL,QAAQ,IAAI;IAC9B+N,mBAAmB,CAAC/N,QAAQ,CAAC;IAC7B2J,aAAa,CAAC3J,QAAQ,CAAC;GACxB;EAED,MAAMkO,UAAU,GAAGtM,iBAAiB,CAACuM,IAAI,IAAI;IAE3C,MAAM9Q,MAAM,GAAG8Q,IAAI,IAAIA,IAAI,CAAC9F,MAAM,IAAI8F,IAAI,CAAC1F,MAAM,CAACsB,CAAC,IAAIA,CAAC,CAACwG,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE;IAEpF,IAAI,CAAClT,MAAM,CAACgL,MAAM,EAAE;MAClB0E,OAAO,CAACrC,SAAS,CAAC;MAClB;;IAGF,MAAMN,KAAK,GAAG+D,IAAI,CAAC,CAAC,CAAC;IACrB,MAAMC,OAAO,GAAI,GAAEhE,KAAK,CAACiE,MAAO,KAAIjE,KAAK,CAACgE,OAAQ,EAAC;IAEnDrB,OAAO,CAACqB,OAAO,CAAC;GACjB,CAAC;EAEF3P,SAAS,CAAC,MAAM;IACd,IAAI,OAAO8B,KAAK,KAAK,WAAW,EAAE;MAChC4M,SAAS,CAAC5O,OAAO,CAACgC,KAAK,CAACA,KAAK,CAAC;MAC9BkN,SAAS,CAAC/C,SAAS,CAAC;;GAEvB,EAAE,CAAEnK,KAAK,CAAE,CAAC;EAEb9B,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAEFC,aAAa,CAACzJ,KAAK,GAAGA,KAAK,GAAG,EAAE,CAAC;GAClC,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACEpD;IAAK,KAAK,EAAC,8BAA8B;IAAA,WACvCC;MAAO,EAAE,EAAGyT,aAAa,CAAC1S,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAC,OAAO,EAAG,MAAM4P,QAAQ,EAAI;MAAA,UAC3FhR;MACI,EACRK;MAAK,KAAK,EAAC,oCAAoC;MAAC,GAAG,EAAGqQ,YAAc;MAAA,UAClErQ,IAAC0T,UAAoB;QACnB,IAAI,EAAG3S,EAAI;QACX,OAAO,EAAGwN,WAAa;QACvB,iBAAiB,EAAG;UAAE,iBAAiB,EAAGkF,aAAa,CAAC1S,EAAE;SAAK;QAC/D,QAAQ,EAAGyL,QAAU;QACrB,MAAM,EAAG2E,UAAY;QACrB,KAAK,EAAGxE,UAAY;QACpB,UAAU,EAAG,KAAO;QACpB,GAAG,EAAGyD,SAAW;QACjB,gBAAgB,EAAGjC;;MAEjB;IACF;AAEV;AAEO,SAASvI,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,KAAK,CAAC,CAACA,IAAI,CAACnK,KAAK,IAAImK,IAAI,CAAC0F,SAAS,CAACrK,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpE;;AAEA;;AAEA,SAAS8K,aAAa,CAAC1S,EAAE,EAAE;EACzB,OAAQ,gCAA+BA,EAAG,QAAO;AACnD;;ACrKe,SAAS4S,IAAI,CAACvU,KAAK,EAAE;EAClC,MAAM;IACJ2B,EAAE;IACF1B,OAAO;IACPqL,KAAK,GAAG,EAAE;IACVzE,SAAS;IACTtG,KAAK,GAAG,SAAS;IACjBwF,IAAI,EAAEF,UAAU;IAChB2O,KAAK;IACLC,QAAQ;IACRzJ,cAAc;IACd0J,SAAS;IACT,GAAGC;GACJ,GAAG3U,KAAK;EAET,MAAM,CAAE+F,IAAI,EAAEC,OAAO,CAAE,GAAGI,QAAQ,CAAC,CAAC,CAACP,UAAU,CAAC;EAEhD,MAAM8G,QAAQ,GAAG,CAAC,CAACrB,KAAK,CAACY,MAAM;EAC/B,MAAMjG,UAAU,GAAG,MAAM0G,QAAQ,IAAI3G,OAAO,CAAC,CAACD,IAAI,CAAC;EAEnD,MAAM6O,OAAO,GAAG,CAAC9Q,WAAW,CAACiC,IAAI,CAAC,IAAIA,IAAI;EAC1C,MAAM+F,cAAc,GAAGhI,WAAW,CAAC7D,OAAO,CAAC,KAAKA,OAAO;EACvD,MAAM4U,WAAW,GAAGD,OAAO,IAAI9I,cAAc;EAC7C,MAAMgJ,WAAW,GAAGC,cAAc,CAACzJ,KAAK,EAAEoJ,SAAS,EAAEG,WAAW,CAAC;EAEjE,MAAMG,QAAQ,GAAGC,WAAW,CAAC3J,KAAK,EAAEQ,cAAc,CAAC;EAEnDxJ,SAAS,CAAC,MAAM;IACd,IAAIyD,IAAI,IAAI,CAAC4G,QAAQ,EAAE;MACrB3G,OAAO,CAAC,KAAK,CAAC;;GAEjB,EAAE,CAAED,IAAI,EAAE4G,QAAQ,CAAE,CAAC;;;AAGxB;AACA;EACE,SAASuI,OAAO,CAACnT,KAAK,EAAE;IACtBA,KAAK,CAAC0H,eAAe,EAAE;IACvB+K,KAAK,EAAE;IAEP,IAAI,CAACzO,IAAI,EAAE;MACTC,OAAO,CAAC,IAAI,CAAC;;;EAIjB,OACErF;IACE,iBAAgBgB,EAAI;IACpB,KAAK,EAAGiF,UAAU,CAChB,4BAA4B,EAC5B,iCAAiC,EACjC+F,QAAQ,GAAG,EAAE,GAAG,OAAO,EACvB5G,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;IAAA,WACHpF;MAAK,KAAK,EAAC,wCAAwC;MAAC,OAAO,EAAGsF,UAAY;MAAA,WACxErF;QACE,KAAK,EAAGL,KAAO;QACf,KAAK,EAAGqG,UAAU,CAChB,8CAA8C,EAC9Cb,IAAI,IAAI,MAAM,CACb;QAAA,UACDxF;QACE,EACNI;QACE,KAAK,EAAC,gDAAgD;QAAA,WAEtDA;UACE,KAAK,EAAC,sBAAsB;UAC5B,OAAO,EAAGuU,OAAS;UACnB,KAAK,EAAC,gCAAgC;UAAA,WAEtCtU,IAAC,UAAU,KAAG,EAEZ,CAAC+L,QAAQ,GACP/L;YAAM,KAAK,EAAC,sCAAsC;YAAA;YAAc,GAE9D,IAAI;UAEH,EAEP+L,QAAQ,IACN/L;UACE,KAAK,EAAI,iBAAgB0K,KAAK,CAACY,MAAO,QAAOZ,KAAK,CAACY,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,EAAG,EAAG;UAC7E,KAAK,EAAC,iCAAiC;UAAA,UAErCZ,KAAK,CAACY;UAEX,EAGDS,QAAQ,IACN/L;UACE,KAAK,EAAC,kBAAkB;UACxB,KAAK,EAAC,4BAA4B;UAAA,UAElCA,IAAC,SAAS;YAAC,KAAK,EAAGmF,IAAI,GAAG,iCAAiC,GAAG;;UAEjE;QAEC;MACF,EAEJ4G,QAAQ,IACN/L,IAAC,SAAS;MAAA,GACH+T,SAAS;MACd,cAAc,EAAG3J,cAAgB;MACjC,SAAS,EAAGnE,SAAW;MACvB,OAAO,EAAG5G,OAAS;MACnB,EAAE,EAAG0B,EAAI;MACT,KAAK,EAAGmT,WAAa;MACrB,QAAQ,EAAGE,QAAU;MACrB,QAAQ,EAAGP,QAAU;MACrB,IAAI,EAAG1O;MAEV;IAEC;AAEV;AAEA,SAASoP,SAAS,CAACnV,KAAK,EAAE;EACxB,MAAM;IACJgL,cAAc;IACdnE,SAAS,EAAEC,SAAS;IACpB7G,OAAO;IACP0B,EAAE;IACF2J,KAAK;IACL0J,QAAQ;IACRP,QAAQ;IACR1O,IAAI;IACJ,GAAG4O;GACJ,GAAG3U,KAAK;EAET,MAAM8C,MAAM,GAAGL,aAAa,EAAE;EAE9B,MAAM2S,OAAO,GAAGJ,QAAQ,CAAC,CAAC,CAAC;EAE3B1S,SAAS,CAAC,MAAM;IACd,IAAI8S,OAAO,IAAIpK,cAAc,EAAE;;MAG7B,MAAM9F,KAAK,GAAGH,KAAQ,CAAE,mBAAkBpD,EAAG,IAAG,CAAC;;;MAGjD,MAAM0T,QAAQ,GAAG,OAAOrK,cAAe,KAAK,SAAS,GACnD,6BAA6B,GAC7BA,cAAc;MAChB,MAAME,cAAc,GAAGnG,KAAQ,CAACsQ,QAAQ,EAAEnQ,KAAK,CAAC;;;MAGhD,IAAIgG,cAAc,EAAE;QAElB,IAAI5G,UAAU,CAAC4G,cAAc,CAAC3G,MAAM,CAAC,EAAE;UACrC2G,cAAc,CAAC3G,MAAM,EAAE;SACxB,MAAM,IAAID,UAAU,CAAC4G,cAAc,CAAC9G,KAAK,CAAC,EAAE;UAC3C8G,cAAc,CAAC9G,KAAK,EAAE;;;;GAK7B,EAAE,CAAEgR,OAAO,EAAEpK,cAAc,EAAErJ,EAAE,CAAE,CAAC;EAEnC,OAAOf;IAAI,KAAK,EAAGgG,UAAU,CAC3B,uCAAuC,EACvCb,IAAI,GAAG,MAAM,GAAG,EAAE,CACjB;IAAA,UAECuF,KAAK,CAAC3I,GAAG,CAAC,CAACkH,IAAI,EAAEC,KAAK,KAAK;MACzB,MAAM9G,GAAG,GAAGF,MAAM,CAAC+G,IAAI,CAAC;MAExB,OAAQlJ;QAAI,KAAK,EAAC,sCAAsC;QAAA,WACtDC,IAAC,SAAS;UAAA,GACH+T,SAAS;UACd,OAAO,EAAG1U,OAAS;UACnB,EAAE,EAAG0B,EAAI;UACT,KAAK,EAAGmI,KAAO;UACf,IAAI,EAAGD,IAAM;UACb,IAAI,EAAGA,IAAI,KAAKuL;UAAY,EAE5BX,QAAQ,IACN7T;UACE,IAAI,EAAC,QAAQ;UACb,KAAK,EAAC,aAAa;UACnB,KAAK,EAAC,0EAA0E;UAChF,OAAO,EAAG,MAAM6T,QAAQ,IAAIA,QAAQ,CAAC5K,IAAI,CAAG;UAAA,UAC7CjJ,IAAC,UAAU;UACb;SAhB0DoC,GAAG,CAkB7D;KACN;IAEA;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+R,cAAc,CAACO,YAAY,EAAEZ,SAAS,EAAEG,WAAW,GAAG,KAAK,EAAE;EACpE,MAAMU,QAAQ,GAAGpT,MAAM,CAACmT,YAAY,CAACjS,KAAK,EAAE,CAAC;;;EAG7C,IAAIwR,WAAW,EAAE;IACfU,QAAQ,CAACnT,OAAO,GAAGkT,YAAY,CAACjS,KAAK,EAAE;IAEvC,IAAIqR,SAAS,EAAE;MACba,QAAQ,CAACnT,OAAO,CAACoT,IAAI,CAACd,SAAS,CAAC;;GAEnC,MAAM;IACL,MAAMpJ,KAAK,GAAGiK,QAAQ,CAACnT,OAAO;;;IAG9B,KAAK,MAAMyH,IAAI,IAAIyL,YAAY,EAAE;MAC/B,IAAI,CAAChK,KAAK,CAACa,QAAQ,CAACtC,IAAI,CAAC,EAAE;;QAGzB6K,SAAS,GAAGpJ,KAAK,CAACiB,OAAO,CAAC1C,IAAI,CAAC,GAAGyB,KAAK,CAACc,IAAI,CAACvC,IAAI,CAAC;;;;;IAKtD0L,QAAQ,CAACnT,OAAO,GAAGkJ,KAAK,CAACgB,MAAM,CAACzC,IAAI,IAAIyL,YAAY,CAACnJ,QAAQ,CAACtC,IAAI,CAAC,CAAC;;EAGtE,OAAO0L,QAAQ,CAACnT,OAAO;AACzB;AAEA,SAAS6S,WAAW,CAAC3J,KAAK,GAAG,EAAE,EAAEuJ,WAAW,EAAE;EAC5C,MAAMY,aAAa,GAAG3R,WAAW,CAACwH,KAAK,CAACjI,KAAK,EAAE,CAAC,IAAI,EAAE;EAEtD,IAAIwR,WAAW,EAAE;IACf,OAAO,EAAE;;EAGX,OAAOY,aAAa,GAAGnK,KAAK,CAACgB,MAAM,CAACzC,IAAI,IAAI,CAAC4L,aAAa,CAACtJ,QAAQ,CAACtC,IAAI,CAAC,CAAC,GAAG,EAAE;AACjF;;ACzQA,SAAS6L,WAAW,CAAC1V,KAAK,EAAE;EAE1B,MAAM;IACJ2Q,QAAQ;IACRvD,QAAQ;IACRzL,EAAE;IACFpB,KAAK;IACLoV,GAAG;IACHC,GAAG;IACHhH,OAAO;IACPiH,IAAI;IACJ9R,KAAK,GAAG,EAAE;IACVsJ,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAM6N,mBAAmB,GAAGhP,OAAO,CAAC,MAAM;IACxC,OAAO+N,QAAQ,CAAC5O,KAAK,IAAI;MAEvB,MAAM;QACJ+T,QAAQ;QACR/R;OACD,GAAGhC,KAAK,CAACyH,MAAM;MAEhB,IAAIsM,QAAQ,CAACC,KAAK,EAAE;QAClBnH,OAAO,CAAC7K,KAAK,GAAGiS,UAAU,CAACjS,KAAK,CAAC,GAAGwK,SAAS,CAAC;;KAEjD,CAAC;GACH,EAAE,CAAEK,OAAO,EAAE+B,QAAQ,CAAE,CAAC;EAEzB,MAAMxB,WAAW,GAAGvB,CAAC,IAAI;IACvBgE,mBAAmB,CAAChE,CAAC,CAAC;IACtBJ,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDzB,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACEpD;IAAK,KAAK,EAAC,kCAAkC;IAAA,WAC3CC;MAAO,GAAG,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAAGpB;MAAe,EAChFK;MACE,EAAE,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MACnB,IAAI,EAAC,QAAQ;MACb,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,YAAY,EAAC,KAAK;MAClB,QAAQ,EAAGyL,QAAU;MACrB,KAAK,EAAC,4BAA4B;MAClC,GAAG,EAAGuI,GAAK;MACX,GAAG,EAAGC,GAAK;MACX,OAAO,EAAGzG,WAAa;MACvB,OAAO,EAAG9B,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAGuI,IAAM;MACb,KAAK,EAAGtI;MAAe;IACrB;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS0I,gBAAgB,CAACjW,KAAK,EAAE;EAC9C,MAAM;IACJ2Q,QAAQ;IACR5P,WAAW;IACXqM,QAAQ;IACRnN,OAAO;IACP8N,QAAQ;IACRpM,EAAE;IACFpB,KAAK;IACLoV,GAAG;IACHC,GAAG;IACH5H,QAAQ;IACR6H,IAAI;IACJxI,OAAO;IACPC,MAAM;IACNwF;GACD,GAAG9S,KAAK;EAET,MAAM,CAAEiT,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG9M,QAAQ,CAAC,IAAI,CAAC;EACpE,MAAM8P,WAAW,GAAGrU,QAAQ,CAACF,EAAE,CAAC;EAChC,MAAM,CAAE0R,UAAU,EAAEC,aAAa,CAAE,GAAGlN,QAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIrC,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE7B,MAAMsT,aAAa,GAAGzP,WAAW,CAACC,KAAK,CAAC;EAExCzB,SAAS,CAAC,MAAM;IACd,IAAIgC,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxB,MAAMU,kBAAkB,GAAGV,QAAQ,CAAC/O,KAAK,CAAC,IAAI,IAAI;MAElDuP,aAAa,CAACE,kBAAkB,CAAC;;GAEpC,EAAE,CAAEzP,KAAK,CAAE,CAAC;EAEb,MAAM6K,OAAO,GAAI/K,QAAQ,IAAK;IAC5B,IAAI2P,kBAAkB,GAAG,IAAI;IAE7B,IAAIlP,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxBU,kBAAkB,GAAGV,QAAQ,CAACjP,QAAQ,CAAC,IAAI,IAAI;;IAGjD,IAAI2P,kBAAkB,EAAE;MACtBN,qBAAqB,CAACrP,QAAQ,CAAC;KAChC,MAAM;MACLmK,QAAQ,CAACnK,QAAQ,CAAC;;IAGpByP,aAAa,CAACE,kBAAkB,CAAC;GAClC;EAED,IAAID,aAAa,KAAKxP,KAAK,IAAIsP,UAAU,EAAE;IACzCtP,KAAK,GAAGkP,kBAAkB;;EAG5B,MAAMhF,KAAK,GAAGiI,WAAW,IAAI7C,UAAU;EAEvC,OACE1S;IAAK,KAAK,EAAGiG,UAAU,CACrB,4BAA4B,EAC5BqH,KAAK,GAAG,WAAW,GAAG,EAAE,CAAG;IAAC,iBAAgBtM,EAAI;IAAA,WAChDf,IAAC,WAAW;MACV,QAAQ,EAAG+P,QAAU;MACrB,QAAQ,EAAGvD,QAAU;MACrB,EAAE,EAAGzL,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,OAAO,EAAG8M,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAGsB,OAAS;MACnB,GAAG,EAAG+G,GAAK;MACX,GAAG,EAAGC,GAAK;MACX,IAAI,EAAGC,IAAM;MACb,KAAK,EAAG9R;OARF9D,OAAO,CAQK,EAClBgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAGqN;MAAa,EAClErN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASyF,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACnK,KAAK;AAC7B;;AAGA;;AAEA,SAAS8J,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC7JA,SAASwU,MAAM,CAACnW,KAAK,EAAE;EACrB,MAAM;IACJ2B,EAAE;IACFpB,KAAK;IACL4M,QAAQ;IACRiJ,OAAO,GAAG,EAAE;IACZrS,KAAK,GAAG,EAAE;IACVqJ,QAAQ;IACRC,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAMgE,GAAG,GAAGC,iBAAiB,CAACtC,EAAE,CAAC;EAEjC,MAAM,CAAE4L,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAM0J,oBAAoB,GAAG,CAAC;IAAEjE;GAAQ,KAAK;IAC3C2D,QAAQ,CAAC3D,MAAM,CAACzF,KAAK,CAAC;GACvB;EAED,MAAM4J,YAAY,GAAGC,CAAC,IAAI;IACxBH,oBAAoB,CAACG,CAAC,CAAC;IACvBJ,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDzB,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACEpD;IAAK,KAAK,EAAC,6BAA6B;IAAA,WACtCC;MAAO,GAAG,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC3DpB;MACK,EACRK;MACE,GAAG,EAAGoD,GAAK;MACX,EAAE,EAAG6J,UAAQ,CAAClM,EAAE,CAAG;MACnB,IAAI,EAAGA,EAAI;MACX,KAAK,EAAC,4BAA4B;MAClC,OAAO,EAAGgM,YAAc;MACxB,OAAO,EAAGN,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGC,UAAY;MACpB,QAAQ,EAAGH,QAAU;MAAA,UAEpBgJ,OAAO,CAACzT,GAAG,CAAC,CAAC0T,MAAM,EAAEC,GAAG,KAAK;QAC5B,IAAID,MAAM,CAACpN,QAAQ,EAAE;UACnB,OACErI;YAAsB,KAAK,EAAGyV,MAAM,CAAC9V,KAAO;YAAA,UACzC8V,MAAM,CAACpN,QAAQ,CAACtG,GAAG,CAAC,CAAC4T,KAAK,EAAED,GAAG,KAC9B1V;cAEE,KAAK,EAAG2V,KAAK,CAACxS,KAAO;cACrB,QAAQ,EAAGwS,KAAK,CAACnJ,QAAU;cAAA,UAE1BmJ,KAAK,CAAChW;eAJD+V,GAAG,CAMZ;aATaA,GAAG,CAUR;;QAIf,OACE1V;UAAoB,KAAK,EAAGyV,MAAM,CAACtS,KAAO;UAAC,QAAQ,EAAGsS,MAAM,CAACjJ,QAAU;UAAA,UACpEiJ,MAAM,CAAC9V;WADI+V,GAAG,CAER;OAEZ;MACM;IACL;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASE,WAAW,CAACxW,KAAK,EAAE;EACzC,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACXR,KAAK;IACLwN,QAAQ;IACRC,QAAQ;IACRyI,UAAU;IACVrJ,QAAQ;IACRC,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM+D,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAC/B,MAAMmW,OAAO,GAAGK,UAAU,CAACxW,OAAO,CAAC;EACnC,MAAMgO,KAAK,GAAGpM,QAAQ,CAACF,EAAE,CAAC;EAE1B,OACEhB;IACE,KAAK,EAAGsP,UAAU,CAChB,4BAA4B,EAC5BhC,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgBtM,EAAI;IAAA,WACpBf,IAAC,MAAM;MACL,EAAE,EAAGe,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,KAAK,EAAGwD,KAAO;MACf,QAAQ,EAAGiK,QAAU;MACrB,OAAO,EAAGX,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,OAAO,EAAG8I,OAAS;MACnB,QAAQ,EAAGhJ;OAPLnN,OAAO,CAOW,EACxBgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAGqN;MAAa,EAClErN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASyF,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACnK,KAAK;AAC7B;;AAEA;;AAEA,SAAS8J,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC1Je,SAAS+U,MAAM,CAAC1W,KAAK,EAAE;EACpC,MAAM;IACJ2Q,QAAQ;IACRvD,QAAQ;IACRnN,OAAO;IACP8N,QAAQ;IACRpM,EAAE;IACF2L,MAAM;IACND,OAAO;IACPW;GACD,GAAGhO,KAAK;EAET,MAAM+D,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE/B,MAAM,CAAEsN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAM6N,mBAAmB,GAAGhP,OAAO,CAAC,MAAM;IACxC,OAAO+N,QAAQ,CAAC,CAAC;MAAEnH;KAAQ,KAAKwE,QAAQ,CAACxE,MAAM,CAACzF,KAAK,CAACmI,MAAM,GAAG1C,MAAM,CAACzF,KAAK,GAAGwK,SAAS,CAAC,CAAC;GAC1F,EAAE,CAAEP,QAAQ,EAAE2C,QAAQ,CAAE,CAAC;EAE1B,MAAMxB,WAAW,GAAGvB,CAAC,IAAI;IACvBgE,mBAAmB,CAAChE,CAAC,CAAC;IACtBJ,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDzB,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAGb,OACEnD;IAAK,KAAK,EAAC,6BAA6B;IAAA,UACtCA;MACE,EAAE,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MAEnB,IAAI,EAAC,MAAM;MACX,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,YAAY,EAAC,KAAK;MAClB,QAAQ,EAAGyL,QAAU;MACrB,KAAK,EAAC,4BAA4B;MAClC,OAAO,EAAG+B,WAAa;MACvB,cAAa5B,UAAU,IAAI,SAAW;MACtC,OAAO,EAAGF,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGC;OAXFtN,OAAO;IAYX;AAEV;AAEO,SAASuG,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACnK,KAAK;AAC7B;;AAGA;;AAEA,SAAS8J,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AChEA,SAASgV,gBAAgB,CAAC1W,OAAO,EAAE;EACjCA,OAAO,CAAC2W,KAAK,CAACC,MAAM,GAAG,MAAM;;;;EAI7B5W,OAAO,CAAC2W,KAAK,CAACC,MAAM,GAAI,GAAG5W,OAAO,CAAC6W,YAAY,GAAG,CAAG,IAAG;AAC1D;AAEA,SAASC,QAAQ,CAAC/W,KAAK,EAAE;EAEvB,MAAM;IACJ2B,EAAE;IACFpB,KAAK;IACLoQ,QAAQ;IACR/B,OAAO;IACP7K,KAAK,GAAG,EAAE;IACVqJ,QAAQ;IACR4J,SAAS;IACT3J,OAAO;IACPC,MAAM;IACN2J,UAAU;IACVC,IAAI,GAAGD,UAAU,GAAG,CAAC,GAAG;GACzB,GAAGjX,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAMC,GAAG,GAAGC,iBAAiB,CAACtC,EAAE,CAAC;EAEjC,MAAMiQ,mBAAmB,GAAGhP,OAAO,CAAC,MAAM;IACxC,OAAO+N,QAAQ,CAAC,CAAC;MAAEnH;KAAQ,KAAKoF,OAAO,CAACpF,MAAM,CAACzF,KAAK,CAACmI,MAAM,GAAG1C,MAAM,CAACzF,KAAK,GAAGwK,SAAS,CAAC,CAAC;GACzF,EAAE,CAAEK,OAAO,EAAE+B,QAAQ,CAAE,CAAC;EAEzB,MAAMxB,WAAW,GAAGvB,CAAC,IAAI;IACvBgE,mBAAmB,CAAChE,CAAC,CAAC;IAEtBqJ,UAAU,IAAIN,gBAAgB,CAAC/I,CAAC,CAACpE,MAAM,CAAC;IAExCgE,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDoT,eAAe,CAAC,MAAM;IACpBF,UAAU,IAAIN,gBAAgB,CAAC3S,GAAG,CAAC5B,OAAO,CAAC;GAC5C,EAAE,EAAE,CAAC;EAENE,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACEpD;IAAK,KAAK,EAAC,+BAA+B;IAAA,WACxCC;MAAO,GAAG,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC1DpB;MACI,EACRK;MACE,GAAG,EAAGoD,GAAK;MACX,EAAE,EAAG6J,UAAQ,CAAClM,EAAE,CAAG;MACnB,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,KAAK,EAAGiF,UAAU,CAChB,4BAA4B,EAC5BoQ,SAAS,GAAG,sCAAsC,GAAG,EAAE,EACvDC,UAAU,GAAG,aAAa,GAAG,EAAE,CAChC;MACD,OAAO,EAAG9H,WAAa;MACvB,OAAO,EAAG9B,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAG4J,IAAM;MACb,KAAK,EAAG3J,UAAY;MACpB,QAAQ,EAAGH,QAAU;MACrB,cAAW;MACX;IACE;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASgK,aAAa,CAACpX,KAAK,EAAE;EAC3C,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACX4P,QAAQ;IACRpQ,KAAK;IACLwN,QAAQ;IACRC,QAAQ;IACRkJ,IAAI;IACJF,SAAS;IACT5J,QAAQ;IACRC,OAAO;IACPC,MAAM;IACN2J;GACD,GAAGjX,KAAK;EAET,MAAM+D,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE/B,MAAMgO,KAAK,GAAGpM,QAAQ,CAACF,EAAE,CAAC;EAE1B,OACEhB;IACE,KAAK,EAAGiG,UAAU,CAChB,4BAA4B,EAC5BqH,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgBtM,EAAI;IAAA,WACpBf,IAAC,QAAQ;MACP,EAAE,EAAGe,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,KAAK,EAAGwD,KAAO;MACf,OAAO,EAAGiK,QAAU;MACpB,OAAO,EAAGX,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,IAAI,EAAG4J,IAAM;MACb,QAAQ,EAAGvG,QAAU;MACrB,SAAS,EAAGqG,SAAW;MACvB,QAAQ,EAAG5J,QAAU;MACrB,UAAU,EAAG6J;OAVPhX,OAAO,CAUe,EAC5BgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAGqN;MAAa,EAClErN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASyF,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACnK,KAAK;AAC7B;;AAGA;;AAEA,SAAS8J,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;ACpJA,SAAS0V,SAAS,CAACrX,KAAK,EAAE;EAExB,MAAM;IACJ2Q,QAAQ;IACRvD,QAAQ,GAAG,KAAK;IAChBzL,EAAE;IACFpB,KAAK;IACLqO,OAAO;IACPvB,OAAO;IACPC,MAAM;IACNvJ,KAAK,GAAG;GACT,GAAG/D,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,IAAI,EAAE,CAAC;EAE3D,MAAMC,GAAG,GAAGC,iBAAiB,CAACtC,EAAE,CAAC;EAEjC,MAAMiQ,mBAAmB,GAAGhP,OAAO,CAAC,MAAM;IACxC,OAAO+N,QAAQ,CAAC,CAAC;MAAEnH;KAAQ,KAAKoF,OAAO,CAACpF,MAAM,CAACzF,KAAK,CAACmI,MAAM,GAAG1C,MAAM,CAACzF,KAAK,GAAGwK,SAAS,CAAC,CAAC;GACzF,EAAE,CAAEK,OAAO,EAAE+B,QAAQ,CAAE,CAAC;EAEzB,MAAMxB,WAAW,GAAGvB,CAAC,IAAI;IACvBgE,mBAAmB,CAAChE,CAAC,CAAC;IACtBJ,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDzB,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACEpD;IAAK,KAAK,EAAC,gCAAgC;IAAA,WACzCC;MAAO,GAAG,EAAGiN,UAAQ,CAAClM,EAAE,CAAG;MAAC,KAAK,EAAC,4BAA4B;MAAA,UAC1DpB;MACI,EACRK;MACE,GAAG,EAAGoD,GAAK;MACX,EAAE,EAAG6J,UAAQ,CAAClM,EAAE,CAAG;MACnB,IAAI,EAAC,MAAM;MACX,IAAI,EAAGA,EAAI;MACX,UAAU,EAAC,OAAO;MAClB,YAAY,EAAC,KAAK;MAClB,QAAQ,EAAGyL,QAAU;MACrB,KAAK,EAAC,4BAA4B;MAClC,OAAO,EAAG+B,WAAa;MACvB,OAAO,EAAG9B,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGC;MAAe;IACrB;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS+J,cAAc,CAACtX,KAAK,EAAE;EAC5C,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACX4P,QAAQ;IACRvD,QAAQ;IACR7M,KAAK;IACLwN,QAAQ;IACRC,QAAQ;IACR8E,QAAQ;IACRzF,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM,CAAEiT,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG9M,QAAQ,CAAC,IAAI,CAAC;EACpE,MAAM8P,WAAW,GAAGrU,QAAQ,CAACF,EAAE,CAAC;EAChC,MAAM,CAAE0R,UAAU,EAAEC,aAAa,CAAE,GAAGlN,QAAQ,CAAC,IAAI,CAAC;EAEpD,IAAIrC,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAE7B,MAAMsT,aAAa,GAAGzP,WAAW,CAACC,KAAK,CAAC;EAExCzB,SAAS,CAAC,MAAM;IACd,IAAIgC,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxB,MAAMU,kBAAkB,GAAGV,QAAQ,CAAC/O,KAAK,CAAC,IAAI,IAAI;MAElDuP,aAAa,CAACE,kBAAkB,CAAC;;GAEpC,EAAE,CAAEzP,KAAK,CAAE,CAAC;EAEb,MAAM6K,OAAO,GAAI/K,QAAQ,IAAK;IAC5B,IAAI2P,kBAAkB,GAAG,IAAI;IAE7B,IAAIlP,UAAU,CAACwO,QAAQ,CAAC,EAAE;MACxBU,kBAAkB,GAAGV,QAAQ,CAACjP,QAAQ,CAAC,IAAI,IAAI;;IAGjD,IAAI2P,kBAAkB,EAAE;MACtBN,qBAAqB,CAACrP,QAAQ,CAAC;KAChC,MAAM;MACLmK,QAAQ,CAACnK,QAAQ,CAAC;;IAGpByP,aAAa,CAACE,kBAAkB,CAAC;GAClC;EAED,IAAID,aAAa,KAAKxP,KAAK,IAAIsP,UAAU,EAAE;IACzCtP,KAAK,GAAGkP,kBAAkB;;EAG5B,MAAMhF,KAAK,GAAGiI,WAAW,IAAI7C,UAAU;EAEvC,OACE1S;IACE,KAAK,EAAGiG,UAAU,CAChB,4BAA4B,EAC5BqH,KAAK,GAAG,WAAW,GAAG,EAAE,CACzB;IACD,iBAAgBtM,EAAI;IAAA,WACpBf,IAAC,SAAS;MACR,QAAQ,EAAG+P,QAAU;MACrB,QAAQ,EAAGvD,QAAU;MACrB,EAAE,EAAGzL,EAAI;MAET,KAAK,EAAGpB,KAAO;MACf,OAAO,EAAGqO,OAAS;MACnB,OAAO,EAAGvB,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,KAAK,EAAGvJ;OALF9D,OAAO,CAKK,EAClBgO,KAAK,IAAIrN;MAAK,KAAK,EAAC,4BAA4B;MAAA,UAAGqN;MAAa,EAClErN,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASyF,UAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACnK,KAAK;AAC7B;;AAGA;;AAEA,SAAS8J,UAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;ACtKA,SAAS4V,YAAY,CAACvX,KAAK,EAAE;EAC3B,MAAM;IACJ2B,EAAE;IACFpB,KAAK;IACLqO,OAAO;IACP7K,KAAK;IACLyT,aAAa;IACbnK,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM,CAAEuN,UAAU,EAAEC,aAAa,CAAE,GAAGpH,QAAQ,CAACrC,KAAK,CAAC;EAErD,MAAM6N,mBAAmB,GAAG,YAAY;IACtChD,OAAO,CAAC,CAAC7K,KAAK,CAAC;GAChB;EAED,MAAMoL,WAAW,GAAGvB,CAAC,IAAI;IACvBgE,mBAAmB,CAAE,CAAC;IACtBpE,aAAa,CAACI,CAAC,CAACpE,MAAM,CAACzF,KAAK,CAAC;GAC9B;EAEDzB,SAAS,CAAC,MAAM;IACd,IAAIyB,KAAK,KAAKwJ,UAAU,EAAE;MACxB;;IAGFC,aAAa,CAACzJ,KAAK,CAAC;GACrB,EAAE,CAAEA,KAAK,CAAE,CAAC;EAEb,OACEpD;IAAK,KAAK,EAAC,oCAAoC;IAAA,WAC7CC;MAAO,KAAK,EAAC,4BAA4B;MACvC,GAAG,EAAGiN,QAAQ,CAAClM,EAAE,CAAG;MAAA,UAClBpB;MACI,EACRI;MAAK,KAAK,EAAC,oCAAoC;MAAA,WAC7CA;QAAO,KAAK,EAAC,8CAA8C;QAAA,WACzDC;UACE,EAAE,EAAGiN,QAAQ,CAAClM,EAAE,CAAG;UACnB,KAAK,EAAC,4BAA4B;UAClC,IAAI,EAAC,UAAU;UACf,OAAO,EAAG0L,OAAS;UACnB,MAAM,EAAGC,MAAQ;UACjB,IAAI,EAAG3L,EAAI;UACX,OAAO,EAAGwN,WAAa;UACvB,OAAO,EAAG,CAAC,CAAC5B;UAAe,EAC7B3M;UAAM,KAAK,EAAC;UAA+C;QACrD,EACRA;QAAG,KAAK,EAAC,2CAA2C;QAAA,UAAG4W;QAAmB;MACtE;IACF;AAEV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,iBAAiB,CAACzX,KAAK,EAAE;EAC/C,MAAM;IACJC,OAAO;IACP0B,EAAE;IACFZ,WAAW;IACXR,KAAK;IACLiX,aAAa;IACbzJ,QAAQ;IACRC,QAAQ;IACRX,OAAO;IACPC;GACD,GAAGtN,KAAK;EAET,MAAM+D,KAAK,GAAGgK,QAAQ,CAAC9N,OAAO,CAAC;EAC/B,OACEU;IAAK,KAAK,EAAC,qEAAqE;IAAC,iBAAgBgB,EAAI;IAAA,WACnGf,IAAC,YAAY;MACX,EAAE,EAAGe,EAAI;MACT,KAAK,EAAGpB,KAAO;MACf,KAAK,EAAGwD,KAAO;MACf,OAAO,EAAGiK,QAAU;MACpB,OAAO,EAAGX,OAAS;MACnB,MAAM,EAAGC,MAAQ;MACjB,aAAa,EAAGkK;MAAkB,EACpC5W,IAAC,WAAW;MAAC,KAAK,EAAGe,EAAI;MAAC,OAAO,EAAG1B,OAAS;MAAC,KAAK,EAAGc;MAAgB;IAClE;AAEV;AAEO,SAASyF,QAAQ,CAAC0H,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,CAAC,CAACA,IAAI,CAACR,OAAO;AAC/B;;AAGA;;AAEA,SAASG,QAAQ,CAAClM,EAAE,EAAE;EACpB,OAAQ,wBAAwBA,EAAI,EAAC;AACvC;;AC3GA,MAAM+V,qBAAqB,GAAG,GAAG;AAElB,SAASC,aAAa,CAACC,aAAa,EAAE;EACnD,OAAO,SAASC,cAAc,CAACC,EAAE,EAAE;IACjC,IAAIF,aAAa,KAAK,KAAK,EAAE;MAE3B,IAAIG,YAAY,GACdC,QAAQ,CAACJ,aAAa,CAAC,GACrBA,aAAa,GACbF,qBAAqB;MAEzB,OAAO/G,QAAQ,CAACmH,EAAE,EAAEC,YAAY,CAAC;KAClC,MAAM;MACL,OAAOD,EAAE;;GAEZ;AACH;AAEAH,aAAa,CAACM,OAAO,GAAG,CAAE,sBAAsB,CAAE;;ACrBlD,YAAe;EACbN,aAAa,EAAE,CAAE,SAAS,EAAEA,aAAa;AAC3C,CAAC;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.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/PropertiesPanel.js","../src/components/DropdownButton.js","../src/components/HeaderButton.js","../src/components/entries/Collapsible.js","../src/components/ListItem.js","../src/components/ListGroup.js","../src/components/entries/Description.js","../src/components/entries/Checkbox.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/FEEL/Feel.js","../src/components/entries/templating/FeelTemplatingEditor.js","../src/components/entries/templating/FeelTemplating.js","../src/components/entries/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: 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 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","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 useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef\n} 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 useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\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 useEffect(() => {\n\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n let observer;\n\n if (ref.current) {\n const scrollContainer = domQuery(scrollContainerSelector);\n\n observer = new Observer((entries) => {\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\n // Unobserve if unmounted\n return () => {\n if (ref.current && observer) {\n observer.unobserve(ref.current);\n }\n };\n\n }, [ ref, scrollContainerSelector, 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 classnames from 'classnames';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n isFunction\n} from 'min-dash';\n\nimport {\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { 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 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 { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n edited && <DataMarker />\n }\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-group-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","/**\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 useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport classnames from 'classnames';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\n\n/**\n * @typedef { {\n * component: import('preact').Component,\n * id: String,\n * isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n * autoFocusEntry: String,\n * autoOpen?: Boolean,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n * add: (event: MouseEvent) => void,\n * component: import('preact').Component,\n * element: Object,\n * id: String,\n * items: Array<ListItemDefinition>,\n * label: String,\n * shouldSort?: Boolean,\n * shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n * component?: import('preact').Component,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * shouldOpen?: Boolean\n * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\n * @typedef { {\n * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\n * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\n * } } PlaceholderProvider\n *\n */\n\n\n/**\n * A basic properties panel component. Describes *how* content will be rendered, accepts\n * data from implementor to describe *what* will be rendered.\n *\n * @param {Object} props\n * @param {Object|Array} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\n * @param {PlaceholderProvider} [props.placeholderProvider]\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\n * @param {Object} [props.layoutConfig]\n * @param {Function} [props.layoutChanged]\n * @param {DescriptionConfig} [props.descriptionConfig]\n * @param {Function} [props.descriptionLoaded]\n * @param {Object} [props.eventBus]\n */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n placeholderProvider,\n groups,\n layoutConfig = {},\n layoutChanged,\n descriptionConfig = {},\n descriptionLoaded,\n eventBus\n } = props;\n\n // set-up layout context\n const [ layout, setLayout ] = useState(createLayout(layoutConfig));\n\n useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = createDescriptionContext(descriptionConfig);\n\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n 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 <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <div\n class={ classnames(\n 'bio-properties-panel',\n layout.open ? 'open' : '')\n }>\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<button\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\n onClick={ event => onClick(event, item.action) }\n >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\n if (isFunction(onShow)) {\n onShow();\n }\n }, [ onShow, setOpen ])\n };\n\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<empty>';\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\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 classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useLayoutState,\n usePrevious\n} from '../hooks';\n\nimport ListItem from './ListItem';\n\nimport {\n ArrowIcon,\n CreateIcon\n} from './icons';\n\nimport { PropertiesPanelContext } from '../context';\n\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 const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [ items, element ]);\n\n // (1) items were added\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open and configured\n if (!open && shouldOpen) {\n toggleOpen();\n\n // if I opened and I should sort, then sort items\n if (shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(true);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [ open, shouldSort ]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n // 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 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 { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n add\n ? (\n <button\n title=\"Create new list item\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-add-entry\"\n onClick={ add }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n : null\n }\n {\n hasItems\n ? (\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n : null\n }\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-list',\n open && hasItems ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n {\n ordering.map((o, index) => {\n const item = getItem(items, o);\n\n if (!item) {\n return;\n }\n\n const { id } = item;\n\n // if item was added, open first or last item based on ordering\n const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1);\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n useDescriptionContext\n} from '../../hooks';\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.forId - id of the entry the description is used for\n * @param {String} props.value\n */\nexport default function Description(props) {\n const {\n element,\n forId,\n value\n } = props;\n\n const contextDescription = useDescriptionContext(forId, element);\n\n const description = value || contextDescription;\n\n if (description) {\n return (\n <div class=\"bio-properties-panel-description\">\n { description }\n </div>\n );\n }\n}\n","import {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n onFocus,\n onBlur\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\">{ label }</label>\n </div>\n );\n}\n\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\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 } = 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 { 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 classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport FeelEditor from '@bpmn-io/feel-editor';\nimport { useStaticCallback } from '../../../hooks';\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 value,\n onInput,\n onFeelToggle,\n onLint = () => {},\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 });\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('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null) }>\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 </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 { FeelOptionalIcon, FeelRequiredIcon } 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 label,\n feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a 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 label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </button>\n );\n}","import Description from '../Description';\n\nimport {\n useCallback,\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 } from 'min-dash';\n\nimport {\n usePrevious,\n useShowEntryEvent,\n useError,\n useStaticCallback\n} from '../../../hooks';\n\nimport CodeEditor from './FeelEditor';\nimport { FeelIndicator } from './FeelIndicator';\nimport FeelIcon from './FeelIcon';\n\nconst noop = () => { };\n\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n variables,\n tooltipContainer,\n OptionalComponent = OptionalFeelInput\n } = props;\n\n const [ localValue, _setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const feelActive = localValue.startsWith('=') || feel === 'required';\n const feelOnlyValue = localValue.startsWith('=') ? localValue.substring(1) : localValue;\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) => {\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 && 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 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) {\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=\"bio-properties-panel-feel-entry\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\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 onFeelToggle={ () => { handleFeelToggle(); setFocus(true); } }\n onLint={ handleLint }\n value={ feelOnlyValue }\n variables={ variables }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n /> :\n <OptionalComponent\n { ...props }\n onInput={ handleLocalInput }\n value={ localValue }\n ref={ editorRef }\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 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\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 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 validate,\n show = noop,\n example,\n variables,\n onFocus,\n onBlur\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\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 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 show={ show }\n value={ value }\n variables={ variables }\n tooltipContainer={ tooltipContainer }\n OptionalComponent={ props.OptionalComponent } />\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/**\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 FeelTextArea(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\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\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 value,\n onInput,\n onLint = () => {},\n contentAttributes = {},\n disabled,\n tooltipContainer,\n useGutters = false,\n darkMode = 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 onLint: onLint,\n contentAttributes: contentAttributes,\n tooltipContainer: tooltipContainer,\n value: localValue,\n darkMode: darkMode,\n enableGutters: useGutters\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\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\nexport default CodeEditor;","import { useCallback, useEffect, useState, useMemo, useRef } from 'preact/hooks';\nimport { usePrevious, useStaticCallback, useShowEntryEvent } from '../../../hooks';\nimport { isFunction } from 'min-dash';\nimport { useError } from '../../../hooks';\nimport classnames from 'classnames';\nimport Description from '../Description';\nimport FeelTemplatingEditor from './FeelTemplatingEditor';\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 FeelTemplatingEntry(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 [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\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 <FeelTemplating\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 FeelTemplating(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 <FeelTemplatingEditor\n name={ id }\n onInput={ handleInput }\n contentAttributes={ { 'aria-labelledby' : prefixIdLabel(id) } }\n disabled={ disabled }\n onLint={ handleLint }\n value={ localValue }\n useGutters={ false }\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 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 usePrevious\n} from '../../hooks';\n\nfunction NumberField(props) {\n\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n 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 <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n 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 [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n 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 if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n\n setLocalError(newValidationError);\n };\n\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 classNames from 'classnames';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\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 } = 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 {label}\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 */\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 } = props;\n\n const value = getValue(element);\n const options = getOptions(element);\n const error = useError(id);\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={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n options={ options }\n disabled={ disabled } />\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\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 } = 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 { label }\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 {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 onFocus,\n onBlur,\n autoResize\n } = props;\n\n const value = getValue(element);\n\n const error = useError(id);\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={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n disabled={ disabled }\n autoResize={ autoResize } />\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';\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 usePrevious,\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 } = 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 { label }\n </label>\n <input\n ref={ ref }\n id={ prefixId(id) }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n onFocus={ 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 {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 } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n 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 if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n\n setLocalError(newValidationError);\n };\n\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\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 { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n onFocus,\n onBlur\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=\"bio-properties-panel-toggle-switch\">\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n 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 <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p>\n </div>\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {String} props.switcherLabel\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n getValue,\n setValue,\n onFocus,\n onBlur\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 <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n debounce,\n isNumber\n} from 'min-dash';\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nexport default function debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n\n var debounceTime =\n isNumber(debounceDelay) ?\n debounceDelay :\n DEFAULT_DEBOUNCE_TIME;\n\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\n\ndebounceInput.$inject = [ 'config.debounceInput' ];\n","import debounceInput from './debounceInput';\n\nexport default {\n debounceInput: [ 'factory', debounceInput ]\n};\n"],"names":["Header","props","element","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","label","type","documentationRef","ElementIcon","_jsxs","_jsx","DescriptionContext","createContext","description","getDescriptionForId","ErrorsContext","errors","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useDescriptionContext","id","useContext","useError","useEvent","event","callback","eventContext","didMount","useRef","current","on","useEffect","off","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","useCallback","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","Observer","IntersectionObserver","observer","scrollContainer","domQuery","entries","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","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","group","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","onFocus","onBlur","localValue","setLocalValue","handleChangeCallback","checked","handleChange","e","prefixId","CheckboxEntry","getValue","setValue","error","node","useBufferedFocus","editor","buffer","setBuffer","undefined","offset","Infinity","CodeEditor","forwardRef","onInput","onFeelToggle","onLint","tooltipContainer","variables","inputRef","setEditor","handleInput","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","container","innerHTML","setVariables","handleClick","classNames","name","FeelIndicator","active","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","pointerType","FeelTextfield","debounce","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","editorRef","containerRef","feelActive","startsWith","feelOnlyValue","substring","_setFocus","setFocus","hasFocus","activeElement","position","selectionStart","handleInputCallback","handleFeelToggle","handleLocalInput","handleLint","lint","message","source","copyHandler","clipboardData","setData","getData","pasteHandler","data","setTimeout","input","setSelectionRange","OptionalFeelTextArea","FeelEntry","validate","show","example","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","localError","setLocalError","previousValue","newValidationError","err","temporaryError","FeelTextArea","classList","contentAttributes","useGutters","darkMode","FeelersEditor","enableGutters","FeelTemplatingEntry","FeelTemplating","severity","prefixIdLabel","FeelTemplatingEditor","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","max","min","step","validity","valid","parseFloat","NumberFieldEntry","globalError","Select","options","option","idx","child","SelectEntry","getOptions","Simple","resizeToContents","style","height","scrollHeight","TextArea","monospace","autoResize","rows","useLayoutEffect","TextAreaEntry","Textfield","TextfieldEntry","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}