@bpmn-io/properties-panel 2.2.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/properties-panel.css +11 -6
- package/dist/index.esm.js +12 -64
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +12 -64
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/preact/README.md +56 -51
- package/preact/compat/client.js +19 -0
- package/preact/compat/client.mjs +22 -0
- package/preact/compat/dist/compat.js +1 -1
- package/preact/compat/dist/compat.js.map +1 -1
- package/preact/compat/dist/compat.mjs +1 -1
- package/preact/compat/dist/compat.module.js +1 -1
- package/preact/compat/dist/compat.module.js.map +1 -1
- package/preact/compat/dist/compat.umd.js +1 -1
- package/preact/compat/dist/compat.umd.js.map +1 -1
- package/preact/compat/jsx-dev-runtime.js +2 -0
- package/preact/compat/jsx-dev-runtime.mjs +2 -0
- package/preact/compat/jsx-runtime.js +2 -0
- package/preact/compat/jsx-runtime.mjs +2 -0
- package/preact/compat/package.json +31 -0
- package/preact/compat/scheduler.js +15 -0
- package/preact/compat/{src/scheduler.js → scheduler.mjs} +8 -9
- package/preact/compat/server.browser.js +4 -0
- package/preact/compat/src/PureComponent.js +1 -1
- package/preact/compat/src/forwardRef.js +2 -9
- package/preact/compat/src/index.d.ts +58 -4
- package/preact/compat/src/index.js +73 -2
- package/preact/compat/src/portals.js +4 -2
- package/preact/compat/src/render.js +133 -76
- package/preact/compat/src/suspense-list.d.ts +2 -2
- package/preact/compat/src/suspense-list.js +14 -13
- package/preact/compat/src/suspense.d.ts +4 -4
- package/preact/compat/src/suspense.js +6 -6
- package/preact/compat/src/util.js +10 -0
- package/preact/debug/dist/debug.js +1 -1
- package/preact/debug/dist/debug.js.map +1 -1
- package/preact/debug/dist/debug.mjs +1 -1
- package/preact/debug/dist/debug.module.js +1 -1
- package/preact/debug/dist/debug.module.js.map +1 -1
- package/preact/debug/dist/debug.umd.js +1 -1
- package/preact/debug/dist/debug.umd.js.map +1 -1
- package/preact/debug/package.json +9 -0
- package/preact/debug/src/check-props.js +3 -3
- package/preact/debug/src/debug.js +38 -17
- package/preact/debug/src/index.d.ts +4 -0
- package/preact/debug/src/util.js +4 -0
- package/preact/devtools/dist/devtools.js +1 -1
- package/preact/devtools/dist/devtools.js.map +1 -1
- package/preact/devtools/dist/devtools.mjs +1 -1
- package/preact/devtools/dist/devtools.module.js +1 -1
- package/preact/devtools/dist/devtools.module.js.map +1 -1
- package/preact/devtools/dist/devtools.umd.js +1 -1
- package/preact/devtools/dist/devtools.umd.js.map +1 -1
- package/preact/devtools/package.json +23 -14
- package/preact/devtools/src/devtools.js +1 -1
- package/preact/dist/preact.js +1 -1
- package/preact/dist/preact.js.map +1 -1
- package/preact/dist/preact.min.js +1 -1
- package/preact/dist/preact.min.js.map +1 -1
- package/preact/dist/preact.min.module.js +2 -0
- package/preact/dist/preact.min.module.js.map +1 -0
- package/preact/dist/preact.min.umd.js +2 -0
- package/preact/dist/preact.min.umd.js.map +1 -0
- package/preact/dist/preact.mjs +1 -1
- package/preact/dist/preact.module.js +1 -1
- package/preact/dist/preact.module.js.map +1 -1
- package/preact/dist/preact.umd.js +1 -1
- package/preact/dist/preact.umd.js.map +1 -1
- package/preact/hooks/dist/hooks.js +1 -1
- package/preact/hooks/dist/hooks.js.map +1 -1
- package/preact/hooks/dist/hooks.mjs +1 -1
- package/preact/hooks/dist/hooks.module.js +1 -1
- package/preact/hooks/dist/hooks.module.js.map +1 -1
- package/preact/hooks/dist/hooks.umd.js +1 -1
- package/preact/hooks/dist/hooks.umd.js.map +1 -1
- package/preact/hooks/package.json +9 -0
- package/preact/hooks/src/index.d.ts +26 -14
- package/preact/hooks/src/index.js +169 -44
- package/preact/hooks/src/internal.d.ts +12 -2
- package/preact/jsx-runtime/dist/jsxRuntime.js +1 -1
- package/preact/jsx-runtime/dist/jsxRuntime.js.map +1 -1
- package/preact/jsx-runtime/dist/jsxRuntime.mjs +1 -1
- package/preact/jsx-runtime/dist/jsxRuntime.module.js +1 -1
- package/preact/jsx-runtime/dist/jsxRuntime.module.js.map +1 -1
- package/preact/jsx-runtime/dist/jsxRuntime.umd.js +1 -1
- package/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +1 -1
- package/preact/jsx-runtime/package.json +26 -17
- package/preact/jsx-runtime/src/index.js +19 -13
- package/preact/package.json +315 -262
- package/preact/src/clone-element.js +16 -10
- package/preact/src/component.js +33 -23
- package/preact/src/constants.js +2 -1
- package/preact/src/create-context.js +8 -3
- package/preact/src/create-element.js +9 -11
- package/preact/src/diff/catch-error.js +4 -2
- package/preact/src/diff/children.js +41 -32
- package/preact/src/diff/index.js +81 -34
- package/preact/src/diff/props.js +15 -14
- package/preact/src/index.d.ts +369 -301
- package/preact/src/internal.d.ts +11 -2
- package/preact/src/jsx.d.ts +1862 -626
- package/preact/src/options.js +1 -2
- package/preact/src/render.js +5 -6
- package/preact/src/util.js +6 -0
- package/preact/test-utils/dist/testUtils.js +1 -1
- package/preact/test-utils/dist/testUtils.js.map +1 -1
- package/preact/test-utils/dist/testUtils.mjs +1 -1
- package/preact/test-utils/dist/testUtils.module.js +1 -1
- package/preact/test-utils/dist/testUtils.module.js.map +1 -1
- package/preact/test-utils/dist/testUtils.umd.js +1 -1
- package/preact/test-utils/dist/testUtils.umd.js.map +1 -1
- package/preact/test-utils/package.json +9 -0
- package/preact/test-utils/src/index.js +2 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -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/templating/TemplatingEditor.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/ToggleSwitch.js","../src/components/entries/NumberField.js","../src/components/entries/FEEL/Feel.js","../src/components/entries/templating/Templating.js","../src/components/entries/List.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: object) => string,\n * getTypeLabel: (element: object) => string,\n * getElementIcon: (element: object) => import('preact').Component,\n * getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nexport default function Header(props) {\n\n const {\n element,\n headerProvider\n } = props;\n\n const {\n getElementIcon,\n getDocumentationRef,\n getElementLabel,\n getTypeLabel,\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\n\n const ElementIcon = getElementIcon(element);\n\n return (<div class=\"bio-properties-panel-header\">\n <div class=\"bio-properties-panel-header-icon\">\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\n </div>\n <div class=\"bio-properties-panel-header-labels\">\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\n { label ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n <div class=\"bio-properties-panel-header-actions\">\n { documentationRef ?\n <a\n rel=\"noopener\"\n class=\"bio-properties-panel-header-link\"\n href={ documentationRef }\n title=\"Open documentation\"\n target=\"_blank\">\n <ExternalLinkIcon />\n </a> :\n null\n }\n </div>\n </div>);\n}","import {\n createContext\n} from 'preact';\n\nconst DescriptionContext = createContext({\n description: {},\n getDescriptionForId: () => {}\n});\n\nexport default DescriptionContext;\n","import {\n createContext\n} from 'preact';\n\nconst ErrorsContext = createContext({\n errors: {}\n});\n\nexport default ErrorsContext;","/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\n/**\n * @typedef {Function} <propertiesPanel.showError> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {string} context.message\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nimport { createContext } from 'preact';\n\nconst EventContext = createContext({ eventBus: null });\n\nexport default EventContext;\n","import {\n createContext\n} from 'preact';\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","import {\n 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 useCallback,\n useContext\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n\n const setState = useCallback ((newValue) => {\n setLayoutForKey(path, newValue);\n }, [ setLayoutForKey ]);\n\n\n return [ layoutForKey, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {string} id\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(id) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const focus = useRef(false);\n\n const onShowEntry = useCallback((event) => {\n if (event.id === id) {\n onShow();\n\n if (!focus.current) {\n focus.current = true;\n }\n }\n }, [ id ]);\n\n useEffect(() => {\n if (focus.current && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n focus.current = false;\n }\n });\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { useEvent } from './useEvent';\n\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n\n const [ scrollContainer, setScrollContainer ] = useState(domQuery(scrollContainerSelector));\n\n const updateScrollContainer = useCallback(() => {\n const newScrollContainer = domQuery(scrollContainerSelector);\n\n if (newScrollContainer !== scrollContainer) {\n setScrollContainer(newScrollContainer);\n }\n }, [ scrollContainerSelector, scrollContainer ]);\n\n useEffect(() => {\n updateScrollContainer();\n }, [ updateScrollContainer ]);\n\n useEvent('propertiesPanel.attach', updateScrollContainer);\n useEvent('propertiesPanel.detach', updateScrollContainer);\n\n useEffect(() => {\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n // TODO(@barmac): test this\n if (!ref.current || !scrollContainer) {\n return;\n }\n\n const observer = new Observer((entries) => {\n\n // scroll container is unmounted, do not update sticky state\n if (scrollContainer.scrollHeight === 0) {\n return;\n }\n\n entries.forEach(entry => {\n if (entry.intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entry.intersectionRatio === 1) {\n setSticky(false);\n }\n });\n },\n {\n root: scrollContainer,\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\n threshold: [ 1 ]\n });\n observer.observe(ref.current);\n\n // Unobserve if unmounted\n return () => {\n observer.unobserve(ref.current);\n };\n\n }, [ ref.current, scrollContainer, setSticky ]);\n}\n","import { useCallback, useRef } from 'preact/hooks';\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nexport function useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n return useCallback(\n (...args) => callbackRef.current(...args),\n []\n );\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport 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 useMemo,\n useRef,\n useLayoutEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {};\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 // react to external changes in the layout config\n useUpdateLayoutEffect(() => {\n const newLayout = createLayout(layoutConfig);\n\n setLayout(newLayout);\n }, [ layoutConfig ]);\n\n useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = useMemo(() => createDescriptionContext(descriptionConfig), [ descriptionConfig ]);\n\n useEffect(() => {\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n }, [ description, descriptionLoaded ]);\n\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n 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 class=\"bio-properties-panel\">\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides = {}, defaults = DEFAULT_LAYOUT) {\n return {\n ...defaults,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides = {}) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}\n\n// hooks //////////////////\n\n/**\n * This hook behaves like useLayoutEffect, but does not trigger on the first render.\n *\n * @param {Function} effect\n * @param {Array} deps\n */\nfunction useUpdateLayoutEffect(effect, deps) {\n const isMounted = useRef(false);\n\n useLayoutEffect(() => {\n if (isMounted.current) {\n return effect();\n } else {\n isMounted.current = true;\n }\n }, deps);\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<button\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\n onClick={ event => onClick(event, item.action) }\n >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\n if (isFunction(onShow)) {\n onShow();\n }\n }, [ onShow, setOpen ])\n };\n\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<empty>';\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\n } = props;\n\n // focus specified entry on auto open\n useEffect(() => {\n if (autoOpen && autoFocusEntry) {\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport 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 // Flag to mark that add button was clicked in the last render cycle\n const [ addTriggered, setAddTriggered ] = useState(false);\n\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [ items, element ]);\n\n // (1) items were added\n useEffect(() => {\n\n // reset addTriggered flag\n setAddTriggered(false);\n\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open, configured and triggered by add button\n //\n // TODO(marstamm): remove once we refactor layout handling for listGroups.\n // Ideally, opening should be handled as part of the `add` callback and\n // not be a concern for the ListGroup component.\n if (addTriggered && !open && shouldOpen) {\n toggleOpen();\n }\n\n // filter when not open and configured\n if (!open && shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(addTriggered);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects, addTriggered ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [ open, shouldSort ]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n const handleAddClick = e => {\n setAddTriggered(true);\n add(e);\n };\n\n 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={ handleAddClick }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"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 it\n // Existing items will not be affected as autoOpen is only applied on first render\n const autoOpen = newItemAdded;\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n 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 { 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 onInput,\n disabled,\n tooltipContainer,\n enableGutters,\n value,\n onLint = () => {},\n contentAttributes = {},\n hostLanguage = null,\n singleLine = false\n } = props;\n\n const inputRef = useRef();\n const [ editor, setEditor ] = useState();\n const [ localValue, setLocalValue ] = useState(value || '');\n\n useBufferedFocus(editor, ref);\n\n const handleInput = useStaticCallback(newValue => {\n onInput(newValue);\n setLocalValue(newValue);\n });\n\n useEffect(() => {\n\n let editor;\n\n editor = new FeelersEditor({\n container: inputRef.current,\n onChange: handleInput,\n value: localValue,\n onLint,\n contentAttributes,\n tooltipContainer,\n enableGutters,\n hostLanguage,\n singleLine\n });\n\n setEditor(\n editor\n );\n\n return () => {\n onLint([]);\n inputRef.current.innerHTML = '';\n setEditor(null);\n };\n }, []);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div\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 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 { FeelIcon as FeelIconSvg } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = 'FEEL expression is mandatory';\n const feelOptionalLabel = `Click to ${active ? 'remove' : 'set a'} dynamic value with FEEL expression`;\n\n const handleClick = e => {\n onClick(e);\n\n // when pointer event was created from keyboard, keep focus on button\n if (!e.pointerType) {\n e.stopPropagation();\n }\n };\n\n return (\n <button\n class={ classNames('bio-properties-panel-feel-icon',\n active ? 'active' : null,\n feel === 'required' ? 'required' : 'optional') }\n onClick={ handleClick }\n disabled={ feel === 'required' || disabled }\n title={\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n }\n >\n <FeelIconSvg />\n </button>\n );\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classNames from 'classnames';\n\nexport function ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n inline,\n onFocus,\n onBlur,\n inputRef\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = async () => {\n onInput(!value);\n };\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class={ classNames(\n 'bio-properties-panel-toggle-switch',\n { inline }\n ) }>\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n ref={ inputRef }\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n onFocus={ onFocus }\n onBlur={ onBlur }\n name={ id }\n onInput={ handleInput }\n checked={ !!localValue } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n { switcherLabel && <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p> }\n </div>\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {String} props.switcherLabel\n * @param {Boolean} props.inline\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n inline,\n getValue,\n setValue,\n onFocus,\n onBlur\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\n <ToggleSwitch\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel }\n inline={ inline } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError,\n usePrevious\n} from '../../hooks';\n\nexport function NumberField(props) {\n\n const {\n debounce,\n disabled,\n displayLabel = true,\n id,\n inputRef,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n {displayLabel && <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label> }\n <input\n id={ prefixId(id) }\n ref={ inputRef }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n step={ step }\n value={ localValue } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Boolean} props.debounce\n * @param {String} props.description\n * @param {Boolean} props.disabled\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {String} props.label\n * @param {String} props.max\n * @param {String} props.min\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {String} props.step\n * @param {Function} props.validate\n */\nexport default function NumberFieldEntry(props) {\n const {\n debounce,\n description,\n disabled,\n element,\n getValue,\n id,\n label,\n max,\n min,\n setValue,\n step,\n onFocus,\n onBlur,\n validate\n } = props;\n\n const [ 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 Description from '../Description';\nimport TemplatingEditor from '../templating/TemplatingEditor';\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, isString } 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\nimport { ToggleSwitch } from '../ToggleSwitch';\n\nimport { NumberField } from '../NumberField';\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 = (isString(localValue) && localValue.startsWith('=')) || feel === 'required';\n const feelOnlyValue = (isString(localValue) && localValue.startsWith('=')) ? localValue.substring(1) : localValue;\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => {\n onInput(newValue);\n });\n }, [ onInput, debounce ]);\n\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n\n };\n\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n\n const handleLocalInput = (newValue) => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n\n if (newValue === localValue) {\n return;\n }\n\n setLocalValue(newValue);\n\n if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n\n const handleLint = useStaticCallback(lint => {\n\n if (!(lint && lint.length)) {\n onError(undefined);\n return;\n }\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n 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={ classnames(\n 'bio-properties-panel-feel-entry',\n { 'feel-active': feelActive }\n ) }>\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {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 contentAttributes={ { 'id': prefixId(id), 'aria-label': label } }\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 OptionalFeelNumberField = forwardRef((props, ref) => {\n const {\n id,\n debounce,\n disabled,\n onInput,\n value,\n min,\n max,\n step,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number' && position !== Infinity) {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <NumberField\n id={ id }\n debounce={ debounce }\n disabled={ disabled }\n displayLabel={ false }\n inputRef={ inputRef }\n max={ max }\n min={ min }\n onInput={ onInput }\n step={ step }\n value={ value }\n onFocus={ onFocus }\n onBlur={ onBlur }\n />;\n});\n\n\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n input.setSelectionRange(0, 0);\n }\n };\n\n return <textarea\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' }\n data-gramm=\"false\"\n />;\n});\n\nconst OptionalFeelToggleSwitch = forwardRef((props, ref) => {\n const {\n id,\n onInput,\n value,\n onFocus,\n onBlur,\n switcherLabel\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <ToggleSwitch\n id={ id }\n value={ value }\n inputRef={ inputRef }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel } />;\n});\n\n\nconst OptionalFeelCheckbox = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n const handleChange = ({ target }) => {\n onInput(target.checked);\n };\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <input\n ref={ inputRef }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\n disabled={ disabled } />;\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport default function FeelEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n tooltipContainer,\n hostLanguage,\n singleLine,\n validate,\n show = noop,\n example,\n variables,\n onFocus,\n onBlur\n } = 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 { ...props }\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n onFocus={ onFocus }\n onBlur={ onBlur }\n example={ example }\n hostLanguage={ hostLanguage }\n singleLine={ singleLine }\n show={ show }\n value={ value }\n variables={ variables }\n tooltipContainer={ tooltipContainer }\n OptionalComponent={ props.OptionalComponent } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.max\n * @param {String} props.min\n * @param {String} props.step\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelNumberEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-number\" OptionalComponent={ OptionalFeelNumberField } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTextAreaEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelToggleSwitchEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-toggle-switch\" OptionalComponent={ OptionalFeelToggleSwitch } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelCheckboxEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-checkbox\" OptionalComponent={ OptionalFeelCheckbox } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.hostLanguage\n * @param {Boolean} props.singleLine\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTemplatingEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-templating\" OptionalComponent={ TemplatingEditor } { ...props } />;\n}\n\nexport function isEdited(node) {\n if (!node) {\n return false;\n }\n\n if (node.type === 'checkbox') {\n return !!node.checked || node.classList.contains('edited');\n }\n\n return !!node.value || node.classList.contains('edited');\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}\n","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 TemplatingEditor from './TemplatingEditor';\n\nconst noop = () => { };\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n */\nexport default function TemplatingEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n tooltipContainer,\n validate,\n show = noop,\n } = props;\n\n const [ 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 <Templating\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n show={ show }\n value={ value }\n tooltipContainer={ tooltipContainer } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nfunction Templating(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n value = '',\n disabled = false,\n tooltipContainer\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => onInput(newValue.length ? newValue : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = newValue => {\n handleInputCallback(newValue);\n setLocalValue(newValue);\n };\n\n const handleLint = useStaticCallback(lint => {\n\n const errors = lint && lint.length && lint.filter(e => e.severity === 'error') || [];\n\n if (!errors.length) {\n onError(undefined);\n return;\n }\n\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n setLocalValue(value ? value : '');\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-feelers\">\n <label id={ prefixIdLabel(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\n </label>\n <div class=\"bio-properties-panel-feelers-input\" ref={ containerRef }>\n <TemplatingEditor\n name={ id }\n onInput={ handleInput }\n contentAttributes={ { 'aria-labelledby': prefixIdLabel(id) } }\n disabled={ disabled }\n onLint={ handleLint }\n value={ localValue }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n />\n </div>\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n// helpers /////////////////\n\nfunction prefixIdLabel(id) {\n return `bio-properties-panel-feelers-${id}-label`;\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useKeyFactory,\n usePrevious\n} from '../../hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n CreateIcon,\n DeleteIcon\n} from '../icons';\n\n/**\n * Entry for handling lists represented as nested entries.\n *\n * @template Item\n * @param {object} props\n * @param {string} props.id\n * @param {*} props.element\n * @param {Function} props.onAdd\n * @param {import('preact').Component} props.component\n * @param {string} [props.label='<empty>']\n * @param {Function} [props.onRemove]\n * @param {Item[]} [props.items]\n * @param {boolean} [props.open]\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\n * @param {(a: Item, b: Item) => -1 | 0 | 1} [props.compareFn]\n * @returns\n */\nexport default function List(props) {\n const {\n id,\n element,\n items = [],\n component,\n label = '<empty>',\n open: shouldOpen,\n onAdd,\n onRemove,\n autoFocusEntry,\n compareFn,\n ...restProps\n } = props;\n\n const [ open, setOpen ] = useState(!!shouldOpen);\n\n const hasItems = !!items.length;\n const toggleOpen = () => hasItems && setOpen(!open);\n\n const opening = !usePrevious(open) && open;\n const elementChanged = usePrevious(element) !== element;\n const shouldReset = opening || elementChanged;\n const sortedItems = useSortedItems(items, compareFn, shouldReset);\n\n const newItems = useNewItems(items, elementChanged);\n\n useEffect(() => {\n if (open && !hasItems) {\n setOpen(false);\n }\n }, [ open, hasItems ]);\n\n /**\n * @param {MouseEvent} event\n */\n function addItem(event) {\n event.stopPropagation();\n onAdd();\n\n if (!open) {\n setOpen(true);\n }\n }\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-entry',\n 'bio-properties-panel-list-entry',\n hasItems ? '' : 'empty',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-list-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label }\n class={ classnames(\n 'bio-properties-panel-list-entry-header-title',\n open && 'open'\n ) }>\n { label }\n </div>\n <div\n class=\"bio-properties-panel-list-entry-header-buttons\"\n >\n <button\n title=\"Create new list item\"\n onClick={ addItem }\n class=\"bio-properties-panel-add-entry\"\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n {\n hasItems && (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n }\n {\n hasItems && (\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n }\n </div>\n </div>\n {\n hasItems && (\n <ItemsList\n { ...restProps }\n autoFocusEntry={ autoFocusEntry }\n component={ component }\n element={ element }\n id={ id }\n items={ sortedItems }\n newItems={ newItems }\n onRemove={ onRemove }\n open={ open }\n />\n )\n }\n </div>\n );\n}\n\nfunction ItemsList(props) {\n const {\n autoFocusEntry,\n component: Component,\n element,\n id,\n items,\n newItems,\n onRemove,\n open,\n ...restProps\n } = props;\n\n const getKey = useKeyFactory();\n\n const newItem = newItems[0];\n\n useEffect(() => {\n if (newItem && autoFocusEntry) {\n\n // (0) select the parent entry (containing all list items)\n const entry = domQuery(`[data-entry-id=\"${id}\"]`);\n\n // (1) select the first input or a custom element to be focussed\n const selector = typeof(autoFocusEntry) === 'boolean' ?\n '.bio-properties-panel-input' :\n autoFocusEntry;\n const focusableInput = domQuery(selector, entry);\n\n // (2) set focus\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ newItem, autoFocusEntry, id ]);\n\n return <ol class={ classnames(\n 'bio-properties-panel-list-entry-items',\n open ? 'open' : ''\n ) }>\n {\n items.map((item, index) => {\n const key = getKey(item);\n\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\n <Component\n { ...restProps }\n element={ element }\n id={ id }\n index={ index }\n item={ item }\n open={ item === newItem } />\n {\n onRemove && (\n <button\n type=\"button\"\n title=\"Delete item\"\n class=\"bio-properties-panel-remove-entry bio-properties-panel-remove-list-entry\"\n onClick={ () => onRemove && onRemove(item) }\n ><DeleteIcon /></button>\n )\n }\n </li>);\n })\n }\n </ol>;\n}\n\n/**\n * Place new items in the beginning of the list and sort the rest with provided function.\n *\n * @template Item\n * @param {Item[]} currentItems\n * @param {(a: Item, b: Item) => 0 | 1 | -1} [compareFn] function used to sort items\n * @param {boolean} [shouldReset=false] set to `true` to reset state of the hook\n * @returns {Item[]}\n */\nfunction useSortedItems(currentItems, compareFn, shouldReset = false) {\n const itemsRef = useRef(currentItems.slice());\n\n // (1) Reset and optionally sort.\n if (shouldReset) {\n itemsRef.current = currentItems.slice();\n\n if (compareFn) {\n itemsRef.current.sort(compareFn);\n }\n } else {\n const items = itemsRef.current;\n\n // (2) Add new item to the list.\n for (const item of currentItems) {\n if (!items.includes(item)) {\n\n // Unshift or push depending on whether we have a compareFn\n compareFn ? items.unshift(item) : items.push(item);\n }\n }\n\n // (3) Filter out removed items.\n itemsRef.current = items.filter(item => currentItems.includes(item));\n }\n\n return itemsRef.current;\n}\n\nfunction useNewItems(items = [], shouldReset) {\n const previousItems = usePrevious(items.slice()) || [];\n\n if (shouldReset) {\n return [];\n }\n\n return previousItems ? items.filter(item => !previousItems.includes(item)) : [];\n}\n","import classNames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError,\n usePrevious,\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 * @param {Function} [props.validate]\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n onFocus,\n onBlur,\n validate\n } = props;\n\n const options = getOptions(element);\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\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n\n const onChange = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n 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 <Select\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onChange={ onChange }\n onFocus={ onFocus }\n onBlur={ onBlur }\n options={ options }\n disabled={ disabled } />\n { 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 usePrevious,\n useShowEntryEvent\n} from '../../hooks';\n\nimport { isFunction } from 'min-dash';\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 {Function} [props.validate]\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled,\n validate,\n onFocus,\n onBlur,\n autoResize\n } = 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 <TextArea\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n disabled={ disabled }\n autoResize={ autoResize } />\n { 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 {\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","setState","useCallback","newValue","usePrevious","value","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","scrollContainer","setScrollContainer","useState","domQuery","updateScrollContainer","newScrollContainer","Observer","IntersectionObserver","observer","entries","scrollHeight","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","useUpdateLayoutEffect","newLayout","config","assign","layoutContext","createDescriptionContext","descriptionContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","group","overrides","defaults","effect","deps","isMounted","useLayoutEffect","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","addTriggered","setAddTriggered","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","handleAddClick","e","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","onFocus","onBlur","localValue","setLocalValue","handleChangeCallback","checked","handleChange","prefixId","CheckboxEntry","getValue","setValue","error","node","useBufferedFocus","editor","buffer","setBuffer","undefined","offset","Infinity","CodeEditor","forwardRef","onInput","tooltipContainer","enableGutters","onLint","contentAttributes","hostLanguage","singleLine","inputRef","setEditor","handleInput","FeelersEditor","container","innerHTML","handleClick","name","classNames","onFeelToggle","variables","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","setVariables","FeelIndicator","active","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","pointerType","FeelIconSvg","ToggleSwitch","switcherLabel","inline","handleInputCallback","ToggleSwitchEntry","NumberField","debounce","displayLabel","max","min","step","validity","valid","parseFloat","NumberFieldEntry","validate","cachedInvalidValue","setCachedInvalidValue","globalError","localError","setLocalError","previousValue","newValidationError","FeelTextfield","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","editorRef","containerRef","feelActive","isString","startsWith","feelOnlyValue","substring","_setFocus","setFocus","hasFocus","activeElement","position","selectionStart","handleFeelToggle","handleLocalInput","handleLint","lint","message","source","copyHandler","clipboardData","setData","getData","pasteHandler","data","setTimeout","input","setSelectionRange","OptionalFeelNumberField","OptionalFeelTextArea","OptionalFeelToggleSwitch","OptionalFeelCheckbox","FeelEntry","show","example","validationError","setValidationError","err","temporaryError","FeelNumberEntry","FeelTextAreaEntry","FeelToggleSwitchEntry","FeelCheckboxEntry","FeelTemplatingEntry","TemplatingEditor","classList","TemplatingEntry","Templating","severity","prefixIdLabel","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","Select","options","option","idx","child","SelectEntry","getOptions","Simple","resizeToContents","style","height","TextArea","monospace","autoResize","rows","TextAreaEntry","Textfield","TextfieldEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
|
|
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/templating/TemplatingEditor.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/ToggleSwitch.js","../src/components/entries/NumberField.js","../src/components/entries/FEEL/Feel.js","../src/components/entries/templating/Templating.js","../src/components/entries/List.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: object) => string,\n * getTypeLabel: (element: object) => string,\n * getElementIcon: (element: object) => import('preact').Component,\n * getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nexport default function Header(props) {\n\n const {\n element,\n headerProvider\n } = props;\n\n const {\n getElementIcon,\n getDocumentationRef,\n getElementLabel,\n getTypeLabel,\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\n\n const ElementIcon = getElementIcon(element);\n\n return (<div class=\"bio-properties-panel-header\">\n <div class=\"bio-properties-panel-header-icon\">\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\n </div>\n <div class=\"bio-properties-panel-header-labels\">\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\n { label ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n <div class=\"bio-properties-panel-header-actions\">\n { documentationRef ?\n <a\n rel=\"noopener\"\n class=\"bio-properties-panel-header-link\"\n href={ documentationRef }\n title=\"Open documentation\"\n target=\"_blank\">\n <ExternalLinkIcon />\n </a> :\n null\n }\n </div>\n </div>);\n}","import {\n createContext\n} from 'preact';\n\nconst DescriptionContext = createContext({\n description: {},\n getDescriptionForId: () => {}\n});\n\nexport default DescriptionContext;\n","import {\n createContext\n} from 'preact';\n\nconst ErrorsContext = createContext({\n errors: {}\n});\n\nexport default ErrorsContext;","/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\n/**\n * @typedef {Function} <propertiesPanel.showError> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {string} context.message\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nimport { createContext } from 'preact';\n\nconst EventContext = createContext({ eventBus: null });\n\nexport default EventContext;\n","import {\n createContext\n} from 'preact';\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","import {\n 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 useCallback,\n useContext\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n\n const setState = useCallback ((newValue) => {\n setLayoutForKey(path, newValue);\n }, [ setLayoutForKey ]);\n\n\n return [ layoutForKey, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {string} id\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(id) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const focus = useRef(false);\n\n const onShowEntry = useCallback((event) => {\n if (event.id === id) {\n onShow();\n\n if (!focus.current) {\n focus.current = true;\n }\n }\n }, [ id ]);\n\n useEffect(() => {\n if (focus.current && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n focus.current = false;\n }\n });\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { useEvent } from './useEvent';\n\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n\n const [ scrollContainer, setScrollContainer ] = useState(domQuery(scrollContainerSelector));\n\n const updateScrollContainer = useCallback(() => {\n const newScrollContainer = domQuery(scrollContainerSelector);\n\n if (newScrollContainer !== scrollContainer) {\n setScrollContainer(newScrollContainer);\n }\n }, [ scrollContainerSelector, scrollContainer ]);\n\n useEffect(() => {\n updateScrollContainer();\n }, [ updateScrollContainer ]);\n\n useEvent('propertiesPanel.attach', updateScrollContainer);\n useEvent('propertiesPanel.detach', updateScrollContainer);\n\n useEffect(() => {\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n // TODO(@barmac): test this\n if (!ref.current || !scrollContainer) {\n return;\n }\n\n const observer = new Observer((entries) => {\n\n // scroll container is unmounted, do not update sticky state\n if (scrollContainer.scrollHeight === 0) {\n return;\n }\n\n entries.forEach(entry => {\n if (entry.intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entry.intersectionRatio === 1) {\n setSticky(false);\n }\n });\n },\n {\n root: scrollContainer,\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\n threshold: [ 1 ]\n });\n observer.observe(ref.current);\n\n // Unobserve if unmounted\n return () => {\n observer.unobserve(ref.current);\n };\n\n }, [ ref.current, scrollContainer, setSticky ]);\n}\n","import { useCallback, useRef } from 'preact/hooks';\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nexport function useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n return useCallback(\n (...args) => callbackRef.current(...args),\n []\n );\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport 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 useMemo,\n useRef,\n useLayoutEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {};\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 // react to external changes in the layout config\n useUpdateLayoutEffect(() => {\n const newLayout = createLayout(layoutConfig);\n\n setLayout(newLayout);\n }, [ layoutConfig ]);\n\n useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = useMemo(() => createDescriptionContext(descriptionConfig), [ descriptionConfig ]);\n\n useEffect(() => {\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n }, [ description, descriptionLoaded ]);\n\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n 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 class=\"bio-properties-panel\">\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides = {}, defaults = DEFAULT_LAYOUT) {\n return {\n ...defaults,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides = {}) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}\n\n// hooks //////////////////\n\n/**\n * This hook behaves like useLayoutEffect, but does not trigger on the first render.\n *\n * @param {Function} effect\n * @param {Array} deps\n */\nfunction useUpdateLayoutEffect(effect, deps) {\n const isMounted = useRef(false);\n\n useLayoutEffect(() => {\n if (isMounted.current) {\n return effect();\n } else {\n isMounted.current = true;\n }\n }, deps);\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<button\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\n onClick={ event => onClick(event, item.action) }\n >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\n if (isFunction(onShow)) {\n onShow();\n }\n }, [ onShow, setOpen ])\n };\n\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<empty>';\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\n } = props;\n\n // focus specified entry on auto open\n useEffect(() => {\n if (autoOpen && autoFocusEntry) {\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport 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 // Flag to mark that add button was clicked in the last render cycle\n const [ addTriggered, setAddTriggered ] = useState(false);\n\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [ items, element ]);\n\n // (1) items were added\n useEffect(() => {\n\n // reset addTriggered flag\n setAddTriggered(false);\n\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open, configured and triggered by add button\n //\n // TODO(marstamm): remove once we refactor layout handling for listGroups.\n // Ideally, opening should be handled as part of the `add` callback and\n // not be a concern for the ListGroup component.\n if (addTriggered && !open && shouldOpen) {\n toggleOpen();\n }\n\n // filter when not open and configured\n if (!open && shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(addTriggered);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects, addTriggered ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [ open, shouldSort ]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n const handleAddClick = e => {\n setAddTriggered(true);\n add(e);\n };\n\n 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={ handleAddClick }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"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 it\n // Existing items will not be affected as autoOpen is only applied on first render\n const autoOpen = newItemAdded;\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n 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 { 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 onInput,\n disabled,\n tooltipContainer,\n enableGutters,\n value,\n onLint = () => {},\n contentAttributes = {},\n hostLanguage = null,\n singleLine = false\n } = props;\n\n const inputRef = useRef();\n const [ editor, setEditor ] = useState();\n const [ localValue, setLocalValue ] = useState(value || '');\n\n useBufferedFocus(editor, ref);\n\n const handleInput = useStaticCallback(newValue => {\n onInput(newValue);\n setLocalValue(newValue);\n });\n\n useEffect(() => {\n\n let editor;\n\n editor = new FeelersEditor({\n container: inputRef.current,\n onChange: handleInput,\n value: localValue,\n onLint,\n contentAttributes,\n tooltipContainer,\n enableGutters,\n hostLanguage,\n singleLine\n });\n\n setEditor(\n editor\n );\n\n return () => {\n onLint([]);\n inputRef.current.innerHTML = '';\n setEditor(null);\n };\n }, []);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div\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 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 { FeelIcon as FeelIconSvg } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = 'FEEL expression is mandatory';\n const feelOptionalLabel = `Click to ${active ? 'remove' : 'set a'} dynamic value with FEEL expression`;\n\n const handleClick = e => {\n onClick(e);\n\n // when pointer event was created from keyboard, keep focus on button\n if (!e.pointerType) {\n e.stopPropagation();\n }\n };\n\n return (\n <button\n class={ classNames('bio-properties-panel-feel-icon',\n active ? 'active' : null,\n feel === 'required' ? 'required' : 'optional') }\n onClick={ handleClick }\n disabled={ feel === 'required' || disabled }\n title={\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n }\n >\n <FeelIconSvg />\n </button>\n );\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport classNames from 'classnames';\n\nexport function ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n inline,\n onFocus,\n onBlur,\n inputRef\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = async () => {\n onInput(!value);\n };\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class={ classNames(\n 'bio-properties-panel-toggle-switch',\n { inline }\n ) }>\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n ref={ inputRef }\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n onFocus={ onFocus }\n onBlur={ onBlur }\n name={ id }\n onInput={ handleInput }\n checked={ !!localValue } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n { switcherLabel && <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p> }\n </div>\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {String} props.switcherLabel\n * @param {Boolean} props.inline\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n inline,\n getValue,\n setValue,\n onFocus,\n onBlur\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\n <ToggleSwitch\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel }\n inline={ inline } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError\n} from '../../hooks';\n\nexport function NumberField(props) {\n\n const {\n debounce,\n disabled,\n displayLabel = true,\n id,\n inputRef,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n {displayLabel && <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label> }\n <input\n id={ prefixId(id) }\n ref={ inputRef }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n step={ step }\n value={ localValue } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Boolean} props.debounce\n * @param {String} props.description\n * @param {Boolean} props.disabled\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {String} props.label\n * @param {String} props.max\n * @param {String} props.min\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {String} props.step\n * @param {Function} props.validate\n */\nexport default function NumberFieldEntry(props) {\n const {\n debounce,\n description,\n disabled,\n element,\n getValue,\n id,\n label,\n max,\n min,\n setValue,\n step,\n onFocus,\n onBlur,\n validate\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n setValue(newValue, newValidationError);\n setLocalError(newValidationError);\n };\n\n const error = globalError || localError;\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '') } data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onInput={ onInput }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from '../Description';\nimport TemplatingEditor from '../templating/TemplatingEditor';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { forwardRef } from 'preact/compat';\n\nimport classnames from 'classnames';\n\nimport { isFunction, isString } from 'min-dash';\n\nimport {\n useShowEntryEvent,\n useError,\n useStaticCallback\n} from '../../../hooks';\n\nimport CodeEditor from './FeelEditor';\nimport { FeelIndicator } from './FeelIndicator';\nimport FeelIcon from './FeelIcon';\n\nimport { ToggleSwitch } from '../ToggleSwitch';\n\nimport { NumberField } from '../NumberField';\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 = (isString(localValue) && localValue.startsWith('=')) || feel === 'required';\n const feelOnlyValue = (isString(localValue) && localValue.startsWith('=')) ? localValue.substring(1) : localValue;\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => {\n onInput(newValue);\n });\n }, [ onInput, debounce ]);\n\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n\n };\n\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n\n const handleLocalInput = (newValue) => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n\n if (newValue === localValue) {\n return;\n }\n\n setLocalValue(newValue);\n\n if (!feelActive && isString(newValue) && newValue.startsWith('=')) {\n\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n\n const handleLint = useStaticCallback(lint => {\n\n if (!(lint && lint.length)) {\n onError(undefined);\n return;\n }\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n 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={ classnames(\n 'bio-properties-panel-feel-entry',\n { 'feel-active': feelActive }\n ) }>\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {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 contentAttributes={ { 'id': prefixId(id), 'aria-label': label } }\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 OptionalFeelNumberField = forwardRef((props, ref) => {\n const {\n id,\n debounce,\n disabled,\n onInput,\n value,\n min,\n max,\n step,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number' && position !== Infinity) {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <NumberField\n id={ id }\n debounce={ debounce }\n disabled={ disabled }\n displayLabel={ false }\n inputRef={ inputRef }\n max={ max }\n min={ min }\n onInput={ onInput }\n step={ step }\n value={ value }\n onFocus={ onFocus }\n onBlur={ onBlur }\n />;\n});\n\n\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n input.setSelectionRange(0, 0);\n }\n };\n\n return <textarea\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' }\n data-gramm=\"false\"\n />;\n});\n\nconst OptionalFeelToggleSwitch = forwardRef((props, ref) => {\n const {\n id,\n onInput,\n value,\n onFocus,\n onBlur,\n switcherLabel\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <ToggleSwitch\n id={ id }\n value={ value }\n inputRef={ inputRef }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel } />;\n});\n\n\nconst OptionalFeelCheckbox = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n const handleChange = ({ target }) => {\n onInput(target.checked);\n };\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n }\n };\n\n return <input\n ref={ inputRef }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\n disabled={ disabled } />;\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport default function FeelEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n tooltipContainer,\n hostLanguage,\n singleLine,\n validate,\n show = noop,\n example,\n variables,\n onFocus,\n onBlur\n } = props;\n\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue, newValidationError);\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n const temporaryError = useError(id);\n\n const error = localError || temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n props.class,\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <FeelTextfield\n { ...props }\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n onFocus={ onFocus }\n onBlur={ onBlur }\n example={ example }\n hostLanguage={ hostLanguage }\n singleLine={ singleLine }\n show={ show }\n value={ value }\n variables={ variables }\n tooltipContainer={ tooltipContainer }\n OptionalComponent={ props.OptionalComponent } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.max\n * @param {String} props.min\n * @param {String} props.step\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelNumberEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-number\" OptionalComponent={ OptionalFeelNumberField } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTextAreaEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelToggleSwitchEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-toggle-switch\" OptionalComponent={ OptionalFeelToggleSwitch } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelCheckboxEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-checkbox\" OptionalComponent={ OptionalFeelCheckbox } { ...props } />;\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.hostLanguage\n * @param {Boolean} props.singleLine\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {Boolean} props.feel\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n * @param {Function} props.example\n * @param {Function} props.variables\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport function FeelTemplatingEntry(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-templating\" OptionalComponent={ TemplatingEditor } { ...props } />;\n}\n\nexport function isEdited(node) {\n if (!node) {\n return false;\n }\n\n if (node.type === 'checkbox') {\n return !!node.checked || node.classList.contains('edited');\n }\n\n return !!node.value || node.classList.contains('edited');\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}\n","import { useCallback, useEffect, useState, useMemo, useRef } from 'preact/hooks';\nimport { useStaticCallback, useShowEntryEvent } from '../../../hooks';\nimport { isFunction } from 'min-dash';\nimport { useError } from '../../../hooks';\nimport classnames from 'classnames';\nimport Description from '../Description';\nimport TemplatingEditor from './TemplatingEditor';\n\nconst noop = () => { };\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.tooltipContainer\n * @param {Function} props.validate\n * @param {Function} props.show\n */\nexport default function TemplatingEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n tooltipContainer,\n validate,\n show = noop,\n } = props;\n\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue, newValidationError);\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n const temporaryError = useError(id);\n\n const error = localError || temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Templating\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n show={ show }\n value={ value }\n tooltipContainer={ tooltipContainer } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nfunction Templating(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n value = '',\n disabled = false,\n tooltipContainer\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => onInput(newValue.length ? newValue : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = newValue => {\n handleInputCallback(newValue);\n setLocalValue(newValue);\n };\n\n const handleLint = useStaticCallback(lint => {\n\n const errors = lint && lint.length && lint.filter(e => e.severity === 'error') || [];\n\n if (!errors.length) {\n onError(undefined);\n return;\n }\n\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n setLocalValue(value ? value : '');\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-feelers\">\n <label id={ prefixIdLabel(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\n </label>\n <div class=\"bio-properties-panel-feelers-input\" ref={ containerRef }>\n <TemplatingEditor\n name={ id }\n onInput={ handleInput }\n contentAttributes={ { 'aria-labelledby': prefixIdLabel(id) } }\n disabled={ disabled }\n onLint={ handleLint }\n value={ localValue }\n ref={ editorRef }\n tooltipContainer={ tooltipContainer }\n />\n </div>\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n// helpers /////////////////\n\nfunction prefixIdLabel(id) {\n return `bio-properties-panel-feelers-${id}-label`;\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useKeyFactory,\n usePrevious\n} from '../../hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n CreateIcon,\n DeleteIcon\n} from '../icons';\n\n/**\n * Entry for handling lists represented as nested entries.\n *\n * @template Item\n * @param {object} props\n * @param {string} props.id\n * @param {*} props.element\n * @param {Function} props.onAdd\n * @param {import('preact').Component} props.component\n * @param {string} [props.label='<empty>']\n * @param {Function} [props.onRemove]\n * @param {Item[]} [props.items]\n * @param {boolean} [props.open]\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\n * @param {(a: Item, b: Item) => -1 | 0 | 1} [props.compareFn]\n * @returns\n */\nexport default function List(props) {\n const {\n id,\n element,\n items = [],\n component,\n label = '<empty>',\n open: shouldOpen,\n onAdd,\n onRemove,\n autoFocusEntry,\n compareFn,\n ...restProps\n } = props;\n\n const [ open, setOpen ] = useState(!!shouldOpen);\n\n const hasItems = !!items.length;\n const toggleOpen = () => hasItems && setOpen(!open);\n\n const opening = !usePrevious(open) && open;\n const elementChanged = usePrevious(element) !== element;\n const shouldReset = opening || elementChanged;\n const sortedItems = useSortedItems(items, compareFn, shouldReset);\n\n const newItems = useNewItems(items, elementChanged);\n\n useEffect(() => {\n if (open && !hasItems) {\n setOpen(false);\n }\n }, [ open, hasItems ]);\n\n /**\n * @param {MouseEvent} event\n */\n function addItem(event) {\n event.stopPropagation();\n onAdd();\n\n if (!open) {\n setOpen(true);\n }\n }\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-entry',\n 'bio-properties-panel-list-entry',\n hasItems ? '' : 'empty',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-list-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label }\n class={ classnames(\n 'bio-properties-panel-list-entry-header-title',\n open && 'open'\n ) }>\n { label }\n </div>\n <div\n class=\"bio-properties-panel-list-entry-header-buttons\"\n >\n <button\n title=\"Create new list item\"\n onClick={ addItem }\n class=\"bio-properties-panel-add-entry\"\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n {\n hasItems && (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n }\n {\n hasItems && (\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n }\n </div>\n </div>\n {\n hasItems && (\n <ItemsList\n { ...restProps }\n autoFocusEntry={ autoFocusEntry }\n component={ component }\n element={ element }\n id={ id }\n items={ sortedItems }\n newItems={ newItems }\n onRemove={ onRemove }\n open={ open }\n />\n )\n }\n </div>\n );\n}\n\nfunction ItemsList(props) {\n const {\n autoFocusEntry,\n component: Component,\n element,\n id,\n items,\n newItems,\n onRemove,\n open,\n ...restProps\n } = props;\n\n const getKey = useKeyFactory();\n\n const newItem = newItems[0];\n\n useEffect(() => {\n if (newItem && autoFocusEntry) {\n\n // (0) select the parent entry (containing all list items)\n const entry = domQuery(`[data-entry-id=\"${id}\"]`);\n\n // (1) select the first input or a custom element to be focussed\n const selector = typeof(autoFocusEntry) === 'boolean' ?\n '.bio-properties-panel-input' :\n autoFocusEntry;\n const focusableInput = domQuery(selector, entry);\n\n // (2) set focus\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ newItem, autoFocusEntry, id ]);\n\n return <ol class={ classnames(\n 'bio-properties-panel-list-entry-items',\n open ? 'open' : ''\n ) }>\n {\n items.map((item, index) => {\n const key = getKey(item);\n\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\n <Component\n { ...restProps }\n element={ element }\n id={ id }\n index={ index }\n item={ item }\n open={ item === newItem } />\n {\n onRemove && (\n <button\n type=\"button\"\n title=\"Delete item\"\n class=\"bio-properties-panel-remove-entry bio-properties-panel-remove-list-entry\"\n onClick={ () => onRemove && onRemove(item) }\n ><DeleteIcon /></button>\n )\n }\n </li>);\n })\n }\n </ol>;\n}\n\n/**\n * Place new items in the beginning of the list and sort the rest with provided function.\n *\n * @template Item\n * @param {Item[]} currentItems\n * @param {(a: Item, b: Item) => 0 | 1 | -1} [compareFn] function used to sort items\n * @param {boolean} [shouldReset=false] set to `true` to reset state of the hook\n * @returns {Item[]}\n */\nfunction useSortedItems(currentItems, compareFn, shouldReset = false) {\n const itemsRef = useRef(currentItems.slice());\n\n // (1) Reset and optionally sort.\n if (shouldReset) {\n itemsRef.current = currentItems.slice();\n\n if (compareFn) {\n itemsRef.current.sort(compareFn);\n }\n } else {\n const items = itemsRef.current;\n\n // (2) Add new item to the list.\n for (const item of currentItems) {\n if (!items.includes(item)) {\n\n // Unshift or push depending on whether we have a compareFn\n compareFn ? items.unshift(item) : items.push(item);\n }\n }\n\n // (3) Filter out removed items.\n itemsRef.current = items.filter(item => currentItems.includes(item));\n }\n\n return itemsRef.current;\n}\n\nfunction useNewItems(items = [], shouldReset) {\n const previousItems = usePrevious(items.slice()) || [];\n\n if (shouldReset) {\n return [];\n }\n\n return previousItems ? items.filter(item => !previousItems.includes(item)) : [];\n}\n","import classNames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\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 * @param {Function} [props.validate]\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n onFocus,\n onBlur,\n validate\n } = props;\n\n const options = getOptions(element);\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n\n const onChange = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n setValue(newValue, newValidationError);\n setLocalError(newValidationError);\n };\n\n const error = globalError || localError;\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Select\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onChange={ onChange }\n onFocus={ onFocus }\n onBlur={ onBlur }\n options={ options }\n disabled={ disabled } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import {\n useMemo,\n useEffect,\n useState\n} from 'preact/hooks';\n\n/**\n * @param {Object} props\n * @param {Function} props.debounce\n * @param {Boolean} [props.disabled]\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {Function} [props.onBlur]\n * @param {Function} [props.onFocus]\n * @param {Function} props.setValue\n */\nexport default function Simple(props) {\n const {\n debounce,\n disabled,\n element,\n getValue,\n id,\n onBlur,\n onFocus,\n setValue\n } = props;\n\n const value = getValue(element);\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n return (\n <div class=\"bio-properties-panel-simple\">\n <input\n id={ prefixId(id) }\n key={ element }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n aria-label={ localValue || '<empty>' }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ localValue } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nimport {\n useEffect,\n useLayoutEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport { isFunction } from 'min-dash';\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 {Function} [props.validate]\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled,\n validate,\n onFocus,\n onBlur,\n autoResize\n } = props;\n\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n setValue(newValue, newValidationError);\n\n setLocalError(newValidationError);\n };\n\n\n const error = globalError || localError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <TextArea\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n disabled={ disabled }\n autoResize={ autoResize } />\n { 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 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 globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n setValue(newValue, newValidationError);\n\n setLocalError(newValidationError);\n };\n\n\n const error = globalError || localError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Textfield\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import {\n debounce,\n isNumber\n} from 'min-dash';\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nexport default function debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n\n var debounceTime =\n isNumber(debounceDelay) ?\n debounceDelay :\n DEFAULT_DEBOUNCE_TIME;\n\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\n\ndebounceInput.$inject = [ 'config.debounceInput' ];\n","import debounceInput from './debounceInput';\n\nexport default {\n debounceInput: [ 'factory', debounceInput ]\n};\n"],"names":["Header","props","element","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","label","type","documentationRef","ElementIcon","_jsxs","_jsx","DescriptionContext","createContext","description","getDescriptionForId","ErrorsContext","errors","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","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","scrollContainer","setScrollContainer","useState","domQuery","updateScrollContainer","newScrollContainer","Observer","IntersectionObserver","observer","entries","scrollHeight","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","useUpdateLayoutEffect","newLayout","config","assign","layoutContext","createDescriptionContext","descriptionContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","group","overrides","defaults","effect","deps","isMounted","useLayoutEffect","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","addTriggered","setAddTriggered","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","handleAddClick","e","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","onFocus","onBlur","localValue","setLocalValue","handleChangeCallback","checked","handleChange","prefixId","CheckboxEntry","getValue","setValue","error","node","useBufferedFocus","editor","buffer","setBuffer","undefined","offset","Infinity","CodeEditor","forwardRef","onInput","tooltipContainer","enableGutters","onLint","contentAttributes","hostLanguage","singleLine","inputRef","setEditor","handleInput","FeelersEditor","container","innerHTML","handleClick","name","classNames","onFeelToggle","variables","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","setVariables","FeelIndicator","active","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","pointerType","FeelIconSvg","ToggleSwitch","switcherLabel","inline","handleInputCallback","ToggleSwitchEntry","NumberField","debounce","displayLabel","max","min","step","validity","valid","parseFloat","NumberFieldEntry","validate","globalError","localError","setLocalError","newValidationError","FeelTextfield","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","editorRef","containerRef","feelActive","isString","startsWith","feelOnlyValue","substring","_setFocus","setFocus","hasFocus","activeElement","position","selectionStart","handleFeelToggle","handleLocalInput","handleLint","lint","message","source","copyHandler","clipboardData","setData","getData","pasteHandler","data","setTimeout","input","setSelectionRange","OptionalFeelNumberField","OptionalFeelTextArea","OptionalFeelToggleSwitch","OptionalFeelCheckbox","FeelEntry","show","example","validationError","setValidationError","err","temporaryError","FeelNumberEntry","FeelTextAreaEntry","FeelToggleSwitchEntry","FeelCheckboxEntry","FeelTemplatingEntry","TemplatingEditor","classList","TemplatingEntry","Templating","severity","prefixIdLabel","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","Select","options","option","idx","child","SelectEntry","getOptions","Simple","resizeToContents","style","height","TextArea","monospace","autoResize","rows","TextAreaEntry","Textfield","TextfieldEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
|