@bpmn-io/properties-panel 0.22.0 → 0.24.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/dist/index.esm.js +97 -28
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +97 -28
- package/dist/index.js.map +1 -1
- package/package.json +14 -14
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/hooks/useDescriptionContext.js","../src/hooks/useError.js","../src/hooks/useEvent.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useStickyIntersectionObserver.js","../src/hooks/useStaticCallback.js","../src/components/Group.js","../src/components/Placeholder.js","../src/PropertiesPanel.js","../src/components/DropdownButton.js","../src/components/HeaderButton.js","../src/components/entries/Collapsible.js","../src/components/ListItem.js","../src/components/ListGroup.js","../src/components/entries/Description.js","../src/components/entries/Checkbox.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/FEEL/Feel.js","../src/components/entries/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: object) => string,\n * getTypeLabel: (element: object) => string,\n * getElementIcon: (element: object) => import('preact').Component,\n * getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nexport default function Header(props) {\n\n const {\n element,\n headerProvider\n } = props;\n\n const {\n getElementIcon,\n getDocumentationRef,\n getElementLabel,\n getTypeLabel,\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\n\n const ElementIcon = getElementIcon(element);\n\n return (<div class=\"bio-properties-panel-header\">\n <div class=\"bio-properties-panel-header-icon\">\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\n </div>\n <div class=\"bio-properties-panel-header-labels\">\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\n { label ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n <div class=\"bio-properties-panel-header-actions\">\n { documentationRef ?\n <a\n rel=\"noopener\"\n class=\"bio-properties-panel-header-link\"\n href={ documentationRef }\n title=\"Open documentation\"\n target=\"_blank\">\n <ExternalLinkIcon />\n </a> :\n null\n }\n </div>\n </div>);\n}","import {\n createContext\n} from 'preact';\n\nconst DescriptionContext = createContext({\n description: {},\n getDescriptionForId: () => {}\n});\n\nexport default DescriptionContext;\n","import {\n createContext\n} from 'preact';\n\nconst ErrorsContext = createContext({\n errors: {}\n});\n\nexport default ErrorsContext;","/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\n/**\n * @typedef {Function} <propertiesPanel.showError> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {string} context.message\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nimport { createContext } from 'preact';\n\nconst EventContext = createContext({ eventBus: null });\n\nexport default EventContext;\n","import {\n createContext\n} from 'preact';\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport {\n DescriptionContext\n} from '../context';\n\n/**\n * Accesses the global DescriptionContext and returns a description for a given id and element.\n *\n * @example\n * ```jsx\n * function TextField(props) {\n * const description = useDescriptionContext('input1', element);\n * }\n * ```\n *\n * @param {string} id\n * @param {object} element\n *\n * @returns {string}\n */\nexport function useDescriptionContext(id, element) {\n const {\n getDescriptionForId\n } = useContext(DescriptionContext);\n\n return getDescriptionForId(id, element);\n}\n","import { useContext } from 'preact/hooks';\n\nimport { ErrorsContext } from '../context';\n\nexport function useError(id) {\n const { errors } = useContext(ErrorsContext);\n\n return errors[ id ];\n}\n","import { useContext, useEffect, useRef } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\n\n/**\n * Subscribe to an event immediately. Update subscription after inputs changed.\n *\n * @param {string} event\n * @param {Function} callback\n */\nexport function useEvent(event, callback, eventBus) {\n const eventContext = useContext(EventContext);\n\n if (!eventBus) {\n ({ eventBus } = eventContext);\n }\n\n const didMount = useRef(false);\n\n // (1) subscribe immediately\n if (eventBus && !didMount.current) {\n eventBus.on(event, callback);\n }\n\n // (2) update subscription after inputs changed\n useEffect(() => {\n if (eventBus && didMount.current) {\n eventBus.on(event, callback);\n }\n\n didMount.current = true;\n\n return () => {\n if (eventBus) {\n eventBus.off(event, callback);\n }\n };\n }, [ callback, event, eventBus ]);\n}\n","import { useMemo } from 'preact/hooks';\n\nconst KEY_LENGTH = 6;\n\n/**\n * Create a persistent key factory for plain objects without id.\n *\n * @example\n * ```jsx\n * function List({ objects }) {\n * const getKey = useKeyFactory();\n * return (<ol>{\n * objects.map(obj => {\n * const key = getKey(obj);\n * return <li key={key}>obj.name</li>\n * })\n * }</ol>);\n * }\n * ```\n *\n * @param {any[]} dependencies\n * @returns {(element: object) => string}\n */\nexport function useKeyFactory(dependencies = []) {\n const map = useMemo(() => new Map(), dependencies);\n\n const getKey = el => {\n let key = map.get(el);\n\n if (!key) {\n key = Math.random().toString().slice(-KEY_LENGTH);\n map.set(el, key);\n }\n\n return key;\n };\n\n return getKey;\n}\n","import {\n useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {string} id\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(id) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const focus = useRef(false);\n\n const onShowEntry = useCallback((event) => {\n if (event.id === id) {\n onShow();\n\n if (!focus.current) {\n focus.current = true;\n }\n }\n }, [ id ]);\n\n useEffect(() => {\n if (focus.current && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n focus.current = false;\n }\n });\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n useEffect(() => {\n\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n let observer;\n\n if (ref.current) {\n const scrollContainer = domQuery(scrollContainerSelector);\n\n observer = new Observer((entries) => {\n entries.forEach(entry => {\n if (entry.intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entry.intersectionRatio === 1) {\n setSticky(false);\n }\n });\n },\n {\n root: scrollContainer,\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\n threshold: [ 1 ]\n });\n observer.observe(ref.current);\n }\n\n // Unobserve if unmounted\n return () => {\n if (ref.current && observer) {\n observer.unobserve(ref.current);\n }\n };\n\n }, [ ref, scrollContainerSelector, setSticky ]);\n}\n","import { useCallback, useRef } from 'preact/hooks';\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nexport function useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n return useCallback(\n (...args) => callbackRef.current(...args),\n []\n );\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n isFunction\n} from 'min-dash';\n\nimport {\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useStickyIntersectionObserver } from '../hooks';\n\nimport { ArrowIcon } from './icons';\n\n/**\n * @param {import('../PropertiesPanel').GroupDefinition} props\n */\nexport default function Group(props) {\n const {\n element,\n entries = [],\n id,\n label,\n shouldOpen = false,\n } = props;\n\n const groupRef = useRef(null);\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n shouldOpen\n );\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const toggleOpen = () => setOpen(!open);\n\n const [ edited, setEdited ] = useState(false);\n\n const [ sticky, setSticky ] = useState(false);\n\n // set edited state depending on all entries\n useEffect(() => {\n const hasOneEditedEntry = entries.find(entry => {\n const {\n id,\n isEdited\n } = entry;\n\n const entryNode = domQuery(`[data-entry-id=\"${id}\"]`);\n\n if (!isFunction(isEdited) || !entryNode) {\n return false;\n }\n\n const inputNode = domQuery('.bio-properties-panel-input', entryNode);\n\n return isEdited(inputNode);\n });\n\n setEdited(hasOneEditedEntry);\n }, [ entries ]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) } onClick={ toggleOpen }>\n <div title={ label } class=\"bio-properties-panel-group-header-title\">\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n edited && <DataMarker />\n }\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-group-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","/**\n * @typedef { {\n * text: (element: object) => string,\n * icon?: (element: Object) => import('preact').Component\n * } } PlaceholderDefinition\n *\n * @param { PlaceholderDefinition } props\n */\nexport default function Placeholder(props) {\n const {\n text,\n icon: Icon\n } = props;\n\n return (\n <div class=\"bio-properties-panel open\">\n <section class=\"bio-properties-panel-placeholder\">\n { Icon && <Icon class=\"bio-properties-panel-placeholder-icon\" /> }\n <p class=\"bio-properties-panel-placeholder-text\">{ text }</p>\n </section>\n </div>\n );\n}","import {\n useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport classnames from 'classnames';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\n\n/**\n * @typedef { {\n * component: import('preact').Component,\n * id: String,\n * isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n * autoFocusEntry: String,\n * autoOpen?: Boolean,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n * add: (event: MouseEvent) => void,\n * component: import('preact').Component,\n * element: Object,\n * id: String,\n * items: Array<ListItemDefinition>,\n * label: String,\n * shouldSort?: Boolean,\n * shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n * component?: import('preact').Component,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * shouldOpen?: Boolean\n * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\n * @typedef { {\n * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\n * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\n * } } PlaceholderProvider\n *\n */\n\n\n/**\n * A basic properties panel component. Describes *how* content will be rendered, accepts\n * data from implementor to describe *what* will be rendered.\n *\n * @param {Object} props\n * @param {Object|Array} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\n * @param {PlaceholderProvider} [props.placeholderProvider]\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\n * @param {Object} [props.layoutConfig]\n * @param {Function} [props.layoutChanged]\n * @param {DescriptionConfig} [props.descriptionConfig]\n * @param {Function} [props.descriptionLoaded]\n * @param {Object} [props.eventBus]\n */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n placeholderProvider,\n groups,\n layoutConfig = {},\n layoutChanged,\n descriptionConfig = {},\n descriptionLoaded,\n eventBus\n } = props;\n\n // set-up layout context\n const [ layout, setLayout ] = useState(createLayout(layoutConfig));\n\n useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = createDescriptionContext(descriptionConfig);\n\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n const [ errors, setErrors ] = useState({});\n\n const onSetErrors = ({ errors }) => setErrors(errors);\n\n useEvent('propertiesPanel.setErrors', onSetErrors, eventBus);\n\n const errorsContext = {\n errors\n };\n\n const eventContext = {\n eventBus\n };\n\n const propertiesPanelContext = {\n element\n };\n\n // empty state\n if (placeholderProvider && !element) {\n return <Placeholder { ...placeholderProvider.getEmpty() } />;\n }\n\n // multiple state\n if (placeholderProvider && isArray(element)) {\n return <Placeholder { ...placeholderProvider.getMultiple() } />;\n }\n\n return (\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n <ErrorsContext.Provider value={ errorsContext }>\n <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <div\n class={ classnames(\n 'bio-properties-panel',\n layout.open ? 'open' : '')\n }>\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<button\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\n onClick={ event => onClick(event, item.action) }\n >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\n if (isFunction(onShow)) {\n onShow();\n }\n }, [ onShow, setOpen ])\n };\n\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<empty>';\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\n } = props;\n\n // focus specified entry on auto open\n useEffect(() => {\n if (autoOpen && autoFocusEntry) {\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useLayoutState,\n usePrevious\n} from '../hooks';\n\nimport ListItem from './ListItem';\n\nimport {\n ArrowIcon,\n CreateIcon\n} from './icons';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useStickyIntersectionObserver } from '../hooks';\n\nconst noop = () => {};\n\n/**\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\n */\nexport default function ListGroup(props) {\n const {\n add,\n element,\n id,\n items,\n label,\n shouldOpen = true,\n shouldSort = true\n } = props;\n\n\n const groupRef = useRef(null);\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n\n const [ sticky, setSticky ] = useState(false);\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const [ ordering, setOrdering ] = useState([]);\n const [ newItemAdded, setNewItemAdded ] = useState(false);\n\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [ items, element ]);\n\n // (1) items were added\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open and configured\n if (!open && shouldOpen) {\n toggleOpen();\n\n // if I opened and I should sort, then sort items\n if (shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(true);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [ open, shouldSort ]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) }\n onClick={ hasItems ? toggleOpen : noop }>\n <div\n title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n add\n ? (\n <button\n title=\"Create new list item\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-add-entry\"\n onClick={ add }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n : null\n }\n {\n hasItems\n ? (\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n : null\n }\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-list',\n open && hasItems ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n {\n ordering.map((o, index) => {\n const item = getItem(items, o);\n\n if (!item) {\n return;\n }\n\n const { id } = item;\n\n // if item was added, open first or last item based on ordering\n const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1);\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n useDescriptionContext\n} from '../../hooks';\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.forId - id of the entry the description is used for\n * @param {String} props.value\n */\nexport default function Description(props) {\n const {\n element,\n forId,\n value\n } = props;\n\n const contextDescription = useDescriptionContext(forId, element);\n\n const description = value || contextDescription;\n\n if (description) {\n return (\n <div class=\"bio-properties-panel-description\">\n { description }\n </div>\n );\n }\n}\n","import {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false\n } = 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 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 {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 } = 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 value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport FeelEditor from '@bpmn-io/feel-editor';\nimport { useStaticCallback } from '../../../hooks';\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function(editor, ref) {\n\n const [ buffer, setBuffer ] = useState(undefined);\n\n ref.current = useMemo(() => ({\n focus: (argument) => {\n if (editor) {\n editor.focus(argument);\n } else {\n setBuffer(argument);\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 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 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 }, [ variables ]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div class={ classNames('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null) }>\n <div\n name={ props.name }\n class={ classNames('bio-properties-panel-input', localValue ? 'edited' : null) }\n ref={ inputRef }\n onClick={ handleClick }\n ></div>\n </div>;\n});\n\nexport default CodeEditor;","export function FeelIndicator(props) {\n const {\n active\n } = props;\n\n if (!active) {\n return null;\n }\n\n return <span class=\"bio-properties-panel-feel-indicator\">\n =\n </span>;\n}","import classNames from 'classnames';\nimport { FeelOptionalIcon, FeelRequiredIcon } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n label,\n feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a FEEL expression';\n\n const handleClick = e => {\n onClick(e);\n\n // when pointer event was created from keyboard, keep focus on button\n if (!e.pointerType) {\n e.stopPropagation();\n }\n };\n\n return (\n <button\n class={ classNames('bio-properties-panel-feel-icon',\n active ? 'active' : null,\n feel === 'required' ? 'required' : 'optional') }\n onClick={ handleClick }\n disabled={ feel === 'required' || disabled }\n title={\n label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </button>\n );\n}","import Description from '../Description';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { forwardRef } from 'preact/compat';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n usePrevious,\n useShowEntryEvent,\n useError,\n useStaticCallback\n} from '../../../hooks';\n\nimport CodeEditor from './FeelEditor';\nimport { FeelIndicator } from './FeelIndicator';\nimport FeelIcon from './FeelIcon';\n\nconst noop = () => { };\n\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n OptionalComponent = OptionalFeelInput\n } = props;\n\n const [ localValue, _setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const feelActive = localValue.startsWith('=') || feel === 'required';\n const feelOnlyValue = localValue.startsWith('=') ? localValue.substring(1) : localValue;\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep carret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => {\n onInput(newValue);\n });\n }, [ onInput, debounce ]);\n\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n\n };\n\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n\n const handleLocalInput = (newValue) => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n\n if (newValue === localValue) {\n return;\n }\n\n setLocalValue(newValue);\n\n if (!feelActive && newValue.startsWith('=')) {\n\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n\n const handleLint = useStaticCallback(lint => {\n\n if (!(lint && lint.length)) {\n onError(undefined);\n return;\n }\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n // External value change removed content => keep FEEL configuration\n if (!value) {\n setLocalValue(feelActive ? '=' : '');\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n // copy-paste integration\n useEffect(() => {\n const copyHandler = event => {\n if (!feelActive) {\n return;\n }\n event.clipboardData.setData('application/FEEL', event.clipboardData.getData('text'));\n };\n\n const pasteHandler = event => {\n if (feelActive) {\n return;\n }\n\n const data = event.clipboardData.getData('application/FEEL');\n\n if (data) {\n setTimeout(() => {\n handleFeelToggle();\n setFocus();\n });\n }\n };\n containerRef.current.addEventListener('copy', copyHandler);\n containerRef.current.addEventListener('cut', copyHandler);\n containerRef.current.addEventListener('paste', pasteHandler);\n\n return () => {\n containerRef.current.removeEventListener('copy', copyHandler);\n containerRef.current.removeEventListener('cut', copyHandler);\n containerRef.current.removeEventListener('paste', pasteHandler);\n };\n }, [ containerRef, feelActive, handleFeelToggle, setFocus ]);\n\n return (\n <div class=\"bio-properties-panel-feel-entry\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\n <FeelIcon\n label={ label }\n feel={ feel }\n onClick={ handleFeelToggle }\n active={ feelActive }></FeelIcon>\n </label>\n\n <div class=\"bio-properties-panel-feel-container\" ref={ containerRef }>\n <FeelIndicator\n active={ feelActive }\n disabled={ feel !== 'optional' || disabled }\n onClick={ handleFeelToggle }\n />\n {feelActive ?\n <CodeEditor\n id={ prefixId(id) }\n name={ id }\n onInput={ handleLocalInput }\n disabled={ disabled }\n onFeelToggle={ () => { handleFeelToggle(); setFocus(true); } }\n onLint={ handleLint }\n value={ feelOnlyValue }\n variables={ props.variables }\n ref={ editorRef }\n /> :\n <OptionalComponent\n { ...props }\n onInput={ handleLocalInput }\n value={ localValue }\n ref={ editorRef }\n />\n }\n </div>\n </div>\n );\n}\n\nconst OptionalFeelInput = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value\n } = 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={ props.onFocus }\n onBlur={ props.onBlur }\n value={ value || '' } />;\n});\n\n\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value\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={ props.onFocus }\n onBlur={ props.onBlur }\n value={ value || '' } />;\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.validate\n */\nexport default function FeelEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n validate,\n show = noop\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n 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 = temporaryError || validationError || localError;\n\n return (\n <div\n class={ classnames(\n props.class,\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <FeelTextfield\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n example={ props.example }\n show={ show }\n value={ value }\n variables={ props.variables }\n OptionalComponent={ props.OptionalComponent } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.validate\n */\nexport function FeelTextArea(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}\n\n","import {\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 {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction NumberField(props) {\n\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = ''\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n 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 {String} props.step\n */\nexport default function NumberFieldEntry(props) {\n const {\n debounce,\n description,\n disabled,\n element,\n getValue,\n id,\n label,\n max,\n min,\n setValue,\n step\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ setValue }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\n\nimport {\n 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 } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value,\n disabled\n } = 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\">{ label }</label>\n <select\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n value={ localValue }\n disabled={ disabled }\n >\n {\n options.map((option, idx) => {\n return (\n <option\n key={ idx }\n value={ option.value }\n disabled={ option.disabled }>\n { option.label }\n </option>\n );\n })\n }\n </select>\n </div>\n );\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} [props.description]\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.getOptions\n * @param {boolean} [props.disabled]\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled\n } = props;\n\n const value = getValue(element);\n const options = getOptions(element);\n\n const error = useError(id);\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Select\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onChange={ setValue }\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}\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 useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n rows = 2,\n debounce,\n onInput,\n value = '',\n disabled,\n monospace\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-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 }\n onInput={ handleInput }\n onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n rows={ rows }\n value={ localValue }\n disabled={ disabled } />\n </div>\n );\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} props.description\n * @param {boolean} props.debounce\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled\n } = props;\n\n const value = getValue(element);\n\n const error = useError(id);\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <TextArea\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onInput={ setValue }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\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\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 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={ props.onFocus }\n onBlur={ props.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.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 } = 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 value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = async () => {\n onInput(!value);\n };\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-toggle-switch\">\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n name={ id }\n onInput={ handleInput }\n checked={ localValue } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p>\n </div>\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {String} props.switcherLabel\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n getValue,\n setValue\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\n <ToggleSwitch id={ id } label={ label } value={ value } onInput={ setValue } switcherLabel={ switcherLabel } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n debounce,\n isNumber\n} from 'min-dash';\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nexport default function debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n\n var debounceTime =\n isNumber(debounceDelay) ?\n debounceDelay :\n DEFAULT_DEBOUNCE_TIME;\n\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\n\ndebounceInput.$inject = [ 'config.debounceInput' ];\n","import debounceInput from './debounceInput';\n\nexport default {\n debounceInput: [ 'factory', debounceInput ]\n};\n"],"names":["Header","props","element","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","label","type","documentationRef","ElementIcon","_jsxs","_jsx","DescriptionContext","createContext","description","getDescriptionForId","ErrorsContext","errors","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useDescriptionContext","id","useContext","useError","useEvent","event","callback","eventContext","didMount","useRef","current","on","useEffect","off","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","useCallback","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","Observer","IntersectionObserver","observer","scrollContainer","domQuery","entries","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","group","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","localValue","setLocalValue","handleChangeCallback","checked","handleChange","e","prefixId","CheckboxEntry","getValue","setValue","error","node","useBufferedFocus","editor","buffer","setBuffer","undefined","argument","CodeEditor","forwardRef","onInput","onFeelToggle","onLint","variables","inputRef","setEditor","handleInput","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","container","innerHTML","handleClick","classNames","name","FeelIndicator","active","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","pointerType","FeelTextfield","debounce","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","editorRef","containerRef","feelActive","startsWith","feelOnlyValue","substring","_setFocus","setFocus","offset","hasFocus","activeElement","position","selectionStart","Infinity","handleInputCallback","handleFeelToggle","handleLocalInput","handleLint","lint","message","source","copyHandler","clipboardData","setData","getData","pasteHandler","data","setTimeout","input","setSelectionRange","onFocus","onBlur","OptionalFeelTextArea","FeelEntry","validate","show","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","localError","setLocalError","previousValue","newValidationError","err","temporaryError","example","FeelTextArea","classList","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","max","min","step","validity","valid","parseFloat","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","Simple","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","globalError","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/hooks/useDescriptionContext.js","../src/hooks/useError.js","../src/hooks/useEvent.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useStickyIntersectionObserver.js","../src/hooks/useStaticCallback.js","../src/components/Group.js","../src/components/Placeholder.js","../src/PropertiesPanel.js","../src/components/DropdownButton.js","../src/components/HeaderButton.js","../src/components/entries/Collapsible.js","../src/components/ListItem.js","../src/components/ListGroup.js","../src/components/entries/Description.js","../src/components/entries/Checkbox.js","../src/components/entries/FEEL/FeelEditor.js","../src/components/entries/FEEL/FeelIndicator.js","../src/components/entries/FEEL/FeelIcon.js","../src/components/entries/FEEL/Feel.js","../src/components/entries/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: object) => string,\n * getTypeLabel: (element: object) => string,\n * getElementIcon: (element: object) => import('preact').Component,\n * getDocumentationRef: (element: object) => string\n * } } HeaderProvider\n */\n\n/**\n * @param {Object} props\n * @param {Object} props.element,\n * @param {HeaderProvider} props.headerProvider\n */\nexport default function Header(props) {\n\n const {\n element,\n headerProvider\n } = props;\n\n const {\n getElementIcon,\n getDocumentationRef,\n getElementLabel,\n getTypeLabel,\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\n const documentationRef = getDocumentationRef && getDocumentationRef(element);\n\n const ElementIcon = getElementIcon(element);\n\n return (<div class=\"bio-properties-panel-header\">\n <div class=\"bio-properties-panel-header-icon\">\n { ElementIcon && <ElementIcon width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" /> }\n </div>\n <div class=\"bio-properties-panel-header-labels\">\n <div title={ type } class=\"bio-properties-panel-header-type\">{ type }</div>\n { label ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n <div class=\"bio-properties-panel-header-actions\">\n { documentationRef ?\n <a\n rel=\"noopener\"\n class=\"bio-properties-panel-header-link\"\n href={ documentationRef }\n title=\"Open documentation\"\n target=\"_blank\">\n <ExternalLinkIcon />\n </a> :\n null\n }\n </div>\n </div>);\n}","import {\n createContext\n} from 'preact';\n\nconst DescriptionContext = createContext({\n description: {},\n getDescriptionForId: () => {}\n});\n\nexport default DescriptionContext;\n","import {\n createContext\n} from 'preact';\n\nconst ErrorsContext = createContext({\n errors: {}\n});\n\nexport default ErrorsContext;","/**\n * @typedef {Function} <propertiesPanel.showEntry> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\n/**\n * @typedef {Function} <propertiesPanel.showError> callback\n *\n * @example\n *\n * useEvent('propertiesPanel.showError', ({ focus = false, message, ...rest }) => {\n * // ...\n * });\n *\n * @param {Object} context\n * @param {string} context.message\n * @param {boolean} [context.focus]\n *\n * @returns void\n */\n\nimport { createContext } from 'preact';\n\nconst EventContext = createContext({ eventBus: null });\n\nexport default EventContext;\n","import {\n createContext\n} from 'preact';\n\nconst LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport {\n DescriptionContext\n} from '../context';\n\n/**\n * Accesses the global DescriptionContext and returns a description for a given id and element.\n *\n * @example\n * ```jsx\n * function TextField(props) {\n * const description = useDescriptionContext('input1', element);\n * }\n * ```\n *\n * @param {string} id\n * @param {object} element\n *\n * @returns {string}\n */\nexport function useDescriptionContext(id, element) {\n const {\n getDescriptionForId\n } = useContext(DescriptionContext);\n\n return getDescriptionForId(id, element);\n}\n","import { useContext } from 'preact/hooks';\n\nimport { ErrorsContext } from '../context';\n\nexport function useError(id) {\n const { errors } = useContext(ErrorsContext);\n\n return errors[ id ];\n}\n","import { useContext, useEffect, useRef } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\n\n/**\n * Subscribe to an event immediately. Update subscription after inputs changed.\n *\n * @param {string} event\n * @param {Function} callback\n */\nexport function useEvent(event, callback, eventBus) {\n const eventContext = useContext(EventContext);\n\n if (!eventBus) {\n ({ eventBus } = eventContext);\n }\n\n const didMount = useRef(false);\n\n // (1) subscribe immediately\n if (eventBus && !didMount.current) {\n eventBus.on(event, callback);\n }\n\n // (2) update subscription after inputs changed\n useEffect(() => {\n if (eventBus && didMount.current) {\n eventBus.on(event, callback);\n }\n\n didMount.current = true;\n\n return () => {\n if (eventBus) {\n eventBus.off(event, callback);\n }\n };\n }, [ callback, event, eventBus ]);\n}\n","import { useMemo } from 'preact/hooks';\n\nconst KEY_LENGTH = 6;\n\n/**\n * Create a persistent key factory for plain objects without id.\n *\n * @example\n * ```jsx\n * function List({ objects }) {\n * const getKey = useKeyFactory();\n * return (<ol>{\n * objects.map(obj => {\n * const key = getKey(obj);\n * return <li key={key}>obj.name</li>\n * })\n * }</ol>);\n * }\n * ```\n *\n * @param {any[]} dependencies\n * @returns {(element: object) => string}\n */\nexport function useKeyFactory(dependencies = []) {\n const map = useMemo(() => new Map(), dependencies);\n\n const getKey = el => {\n let key = map.get(el);\n\n if (!key) {\n key = Math.random().toString().slice(-KEY_LENGTH);\n map.set(el, key);\n }\n\n return key;\n };\n\n return getKey;\n}\n","import {\n useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {string} id\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(id) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const focus = useRef(false);\n\n const onShowEntry = useCallback((event) => {\n if (event.id === id) {\n onShow();\n\n if (!focus.current) {\n focus.current = true;\n }\n }\n }, [ id ]);\n\n useEffect(() => {\n if (focus.current && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n focus.current = false;\n }\n });\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\n\n/**\n * @callback setSticky\n * @param {boolean} value\n */\n\n/**\n * Use IntersectionObserver to identify when DOM element is in sticky mode.\n * If sticky is observered setSticky(true) will be called.\n * If sticky mode is left, setSticky(false) will be called.\n *\n *\n * @param {Object} ref\n * @param {string} scrollContainerSelector\n * @param {setSticky} setSticky\n */\nexport function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {\n useEffect(() => {\n\n const Observer = IntersectionObserver;\n\n // return early if IntersectionObserver is not available\n if (!Observer) {\n return;\n }\n\n let observer;\n\n if (ref.current) {\n const scrollContainer = domQuery(scrollContainerSelector);\n\n observer = new Observer((entries) => {\n entries.forEach(entry => {\n if (entry.intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entry.intersectionRatio === 1) {\n setSticky(false);\n }\n });\n },\n {\n root: scrollContainer,\n rootMargin: '0px 0px 999999% 0px', // Use bottom margin to avoid stickyness when scrolling out to bottom\n threshold: [ 1 ]\n });\n observer.observe(ref.current);\n }\n\n // Unobserve if unmounted\n return () => {\n if (ref.current && observer) {\n observer.unobserve(ref.current);\n }\n };\n\n }, [ ref, scrollContainerSelector, setSticky ]);\n}\n","import { useCallback, useRef } from 'preact/hooks';\n\n/**\n * Creates a static function reference with changing body.\n * This is necessary when external libraries require a callback function\n * that has references to state variables.\n *\n * Usage:\n * const callback = useStaticCallback((val) => {val === currentState});\n *\n * The `callback` reference is static and can be safely used in external\n * libraries or as a prop that does not cause rerendering of children.\n *\n * @param {Function} callback function with changing reference\n * @returns {Function} static function reference\n */\nexport function useStaticCallback(callback) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n return useCallback(\n (...args) => callbackRef.current(...args),\n []\n );\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport {\n isFunction\n} from 'min-dash';\n\nimport {\n useLayoutState\n} from '../hooks';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useStickyIntersectionObserver } from '../hooks';\n\nimport { ArrowIcon } from './icons';\n\n/**\n * @param {import('../PropertiesPanel').GroupDefinition} props\n */\nexport default function Group(props) {\n const {\n element,\n entries = [],\n id,\n label,\n shouldOpen = false,\n } = props;\n\n const groupRef = useRef(null);\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n shouldOpen\n );\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const toggleOpen = () => setOpen(!open);\n\n const [ edited, setEdited ] = useState(false);\n\n const [ sticky, setSticky ] = useState(false);\n\n // set edited state depending on all entries\n useEffect(() => {\n const hasOneEditedEntry = entries.find(entry => {\n const {\n id,\n isEdited\n } = entry;\n\n const entryNode = domQuery(`[data-entry-id=\"${id}\"]`);\n\n if (!isFunction(isEdited) || !entryNode) {\n return false;\n }\n\n const inputNode = domQuery('.bio-properties-panel-input', entryNode);\n\n return isEdited(inputNode);\n });\n\n setEdited(hasOneEditedEntry);\n }, [ entries ]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) } onClick={ toggleOpen }>\n <div title={ label } class=\"bio-properties-panel-group-header-title\">\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n edited && <DataMarker />\n }\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-group-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","/**\n * @typedef { {\n * text: (element: object) => string,\n * icon?: (element: Object) => import('preact').Component\n * } } PlaceholderDefinition\n *\n * @param { PlaceholderDefinition } props\n */\nexport default function Placeholder(props) {\n const {\n text,\n icon: Icon\n } = props;\n\n return (\n <div class=\"bio-properties-panel open\">\n <section class=\"bio-properties-panel-placeholder\">\n { Icon && <Icon class=\"bio-properties-panel-placeholder-icon\" /> }\n <p class=\"bio-properties-panel-placeholder-text\">{ text }</p>\n </section>\n </div>\n );\n}","import {\n useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\n isArray,\n set\n} from 'min-dash';\n\nimport classnames from 'classnames';\n\nimport Header from './components/Header';\n\nimport Group from './components/Group';\n\nimport Placeholder from './components/Placeholder';\n\nimport {\n DescriptionContext,\n ErrorsContext,\n EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEvent } from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\n\n/**\n * @typedef { {\n * component: import('preact').Component,\n * id: String,\n * isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n * autoFocusEntry: String,\n * autoOpen?: Boolean,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n * add: (event: MouseEvent) => void,\n * component: import('preact').Component,\n * element: Object,\n * id: String,\n * items: Array<ListItemDefinition>,\n * label: String,\n * shouldSort?: Boolean,\n * shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n * component?: import('preact').Component,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * shouldOpen?: Boolean\n * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {Object} element\n * @returns {string}\n * } } GetDescriptionFunction\n *\n * @typedef { {\n * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,\n * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition\n * } } PlaceholderProvider\n *\n */\n\n\n/**\n * A basic properties panel component. Describes *how* content will be rendered, accepts\n * data from implementor to describe *what* will be rendered.\n *\n * @param {Object} props\n * @param {Object|Array} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\n * @param {PlaceholderProvider} [props.placeholderProvider]\n * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups\n * @param {Object} [props.layoutConfig]\n * @param {Function} [props.layoutChanged]\n * @param {DescriptionConfig} [props.descriptionConfig]\n * @param {Function} [props.descriptionLoaded]\n * @param {Object} [props.eventBus]\n */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n placeholderProvider,\n groups,\n layoutConfig = {},\n layoutChanged,\n descriptionConfig = {},\n descriptionLoaded,\n eventBus\n } = props;\n\n // set-up layout context\n const [ layout, setLayout ] = useState(createLayout(layoutConfig));\n\n useEffect(() => {\n if (typeof layoutChanged === 'function') {\n layoutChanged(layout);\n }\n }, [ layout, layoutChanged ]);\n\n const getLayoutForKey = (key, defaultValue) => {\n return get(layout, key, defaultValue);\n };\n\n const setLayoutForKey = (key, config) => {\n const newLayout = assign({}, layout);\n set(newLayout, key, config);\n setLayout(newLayout);\n };\n\n const layoutContext = {\n layout,\n setLayout,\n getLayoutForKey,\n setLayoutForKey\n };\n\n // set-up description context\n const description = createDescriptionContext(descriptionConfig);\n\n if (typeof descriptionLoaded === 'function') {\n descriptionLoaded(description);\n }\n\n const getDescriptionForId = (id, element) => {\n return description[id] && description[id](element);\n };\n\n const descriptionContext = {\n description,\n getDescriptionForId\n };\n\n const [ errors, setErrors ] = useState({});\n\n const onSetErrors = ({ errors }) => setErrors(errors);\n\n useEvent('propertiesPanel.setErrors', onSetErrors, eventBus);\n\n const errorsContext = {\n errors\n };\n\n const eventContext = {\n eventBus\n };\n\n const propertiesPanelContext = {\n element\n };\n\n // empty state\n if (placeholderProvider && !element) {\n return <Placeholder { ...placeholderProvider.getEmpty() } />;\n }\n\n // multiple state\n if (placeholderProvider && isArray(element)) {\n return <Placeholder { ...placeholderProvider.getMultiple() } />;\n }\n\n return (\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n <ErrorsContext.Provider value={ errorsContext }>\n <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <div\n class={ classnames(\n 'bio-properties-panel',\n layout.open ? 'open' : '')\n }>\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </ErrorsContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<button\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\n onClick={ event => onClick(event, item.action) }\n >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\n if (isFunction(onShow)) {\n onShow();\n }\n }, [ onShow, setOpen ])\n };\n\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<empty>';\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n element={ element }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\n } = props;\n\n // focus specified entry on auto open\n useEffect(() => {\n if (autoOpen && autoFocusEntry) {\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n find,\n sortBy\n} from 'min-dash';\n\nimport {\n useLayoutState,\n usePrevious\n} from '../hooks';\n\nimport ListItem from './ListItem';\n\nimport {\n ArrowIcon,\n CreateIcon\n} from './icons';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useStickyIntersectionObserver } from '../hooks';\n\nconst noop = () => {};\n\n/**\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\n */\nexport default function ListGroup(props) {\n const {\n add,\n element,\n id,\n items,\n label,\n shouldOpen = true,\n shouldSort = true\n } = props;\n\n\n const groupRef = useRef(null);\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n\n const [ sticky, setSticky ] = useState(false);\n\n const onShow = useCallback(() => setOpen(true), [ setOpen ]);\n\n const [ ordering, setOrdering ] = useState([]);\n const [ newItemAdded, setNewItemAdded ] = useState(false);\n\n const prevItems = usePrevious(items);\n const prevElement = usePrevious(element);\n\n const elementChanged = element !== prevElement;\n const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen);\n\n // reset initial ordering when element changes (before first render)\n if (elementChanged) {\n setOrdering(createOrdering(shouldSort ? sortItems(items) : items));\n }\n\n // keep ordering in sync to items - and open changes\n\n // (0) set initial ordering from given items\n useEffect(() => {\n if (!prevItems || !shouldSort) {\n setOrdering(createOrdering(items));\n }\n }, [ items, element ]);\n\n // (1) items were added\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length > prevItems.length) {\n\n let add = [];\n\n items.forEach(item => {\n if (!ordering.includes(item.id)) {\n add.push(item.id);\n }\n });\n\n let newOrdering = ordering;\n\n // open if not open and configured\n if (!open && shouldOpen) {\n toggleOpen();\n\n // if I opened and I should sort, then sort items\n if (shouldSort) {\n newOrdering = createOrdering(sortItems(items));\n }\n }\n\n // add new items on top or bottom depending on sorting behavior\n newOrdering = newOrdering.filter(item => !add.includes(item));\n if (shouldSort) {\n newOrdering.unshift(...add);\n } else {\n newOrdering.push(...add);\n }\n\n setOrdering(newOrdering);\n setNewItemAdded(true);\n } else {\n setNewItemAdded(false);\n }\n }, [ items, open, shouldHandleEffects ]);\n\n // (2) sort items on open if shouldSort is set\n useEffect(() => {\n\n if (shouldSort && open && !newItemAdded) {\n setOrdering(createOrdering(sortItems(items)));\n }\n }, [ open, shouldSort ]);\n\n // (3) items were deleted\n useEffect(() => {\n if (shouldHandleEffects && prevItems && items.length < prevItems.length) {\n let keep = [];\n\n ordering.forEach(o => {\n if (getItem(items, o)) {\n keep.push(o);\n }\n });\n\n setOrdering(keep);\n }\n }, [ items, shouldHandleEffects ]);\n\n // set css class when group is sticky to top\n useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky);\n\n const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow\n };\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id } ref={ groupRef }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : '',\n (sticky && open) ? 'sticky' : ''\n ) }\n onClick={ hasItems ? toggleOpen : noop }>\n <div\n title={ label }\n class=\"bio-properties-panel-group-header-title\"\n >\n { label }\n </div>\n <div class=\"bio-properties-panel-group-header-buttons\">\n {\n add\n ? (\n <button\n title=\"Create new list item\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-add-entry\"\n onClick={ add }\n >\n <CreateIcon />\n {\n !hasItems ? (\n <span class=\"bio-properties-panel-add-entry-label\">Create</span>\n )\n : null\n }\n </button>\n )\n : null\n }\n {\n hasItems\n ? (\n <div\n title={ `List contains ${items.length} item${items.length != 1 ? 's' : ''}` }\n class=\"bio-properties-panel-list-badge\"\n >\n { items.length }\n </div>\n )\n : null\n }\n {\n hasItems\n ? (\n <button\n title=\"Toggle section\"\n class=\"bio-properties-panel-group-header-button bio-properties-panel-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n )\n : null\n }\n </div>\n </div>\n <div class={ classnames(\n 'bio-properties-panel-list',\n open && hasItems ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n\n {\n ordering.map((o, index) => {\n const item = getItem(items, o);\n\n if (!item) {\n return;\n }\n\n const { id } = item;\n\n // if item was added, open first or last item based on ordering\n const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1);\n\n return (\n <ListItem\n { ...item }\n autoOpen={ autoOpen }\n element={ element }\n index={ index }\n key={ id } />\n );\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>;\n}\n\n\n// helpers ////////////////////\n\n/**\n * Sorts given items alphanumeric by label\n */\nfunction sortItems(items) {\n return sortBy(items, i => i.label.toLowerCase());\n}\n\nfunction getItem(items, id) {\n return find(items, i => i.id === id);\n}\n\nfunction createOrdering(items) {\n return items.map(i => i.id);\n}\n","import {\n useDescriptionContext\n} from '../../hooks';\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.forId - id of the entry the description is used for\n * @param {String} props.value\n */\nexport default function Description(props) {\n const {\n element,\n forId,\n value\n } = props;\n\n const contextDescription = useDescriptionContext(forId, element);\n\n const description = value || contextDescription;\n\n if (description) {\n return (\n <div class=\"bio-properties-panel-description\">\n { description }\n </div>\n );\n }\n}\n","import {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleChangeCallback = ({ target }) => {\n onChange(target.checked);\n };\n\n const handleChange = e => {\n handleChangeCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n const ref = useShowEntryEvent(id);\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n onFocus={ onFocus }\n onBlur={ onBlur }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ localValue }\n disabled={ disabled } />\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n </div>\n );\n}\n\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {boolean} [props.disabled]\n */\nexport default function CheckboxEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n disabled,\n onFocus,\n onBlur\n } = props;\n\n const value = getValue(element);\n\n const error = useError(id);\n\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\n <Checkbox\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onChange={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\nimport { useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { forwardRef } from 'preact/compat';\n\nimport FeelEditor from '@bpmn-io/feel-editor';\nimport { useStaticCallback } from '../../../hooks';\n\n/**\n * Buffer `.focus()` calls while the editor is not initialized.\n * Set Focus inside when the editor is ready.\n */\nconst useBufferedFocus = function(editor, ref) {\n\n const [ buffer, setBuffer ] = useState(undefined);\n\n ref.current = useMemo(() => ({\n focus: (argument) => {\n if (editor) {\n editor.focus(argument);\n } else {\n setBuffer(argument);\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 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 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 }, [ variables ]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n\n if (value === localValue) {\n return;\n }\n\n editor.setValue(value);\n setLocalValue(value);\n }, [ value ]);\n\n const handleClick = () => {\n ref.current.focus();\n };\n\n return <div class={ classNames('bio-properties-panel-feel-editor-container', disabled ? 'disabled' : null) }>\n <div\n name={ props.name }\n class={ classNames('bio-properties-panel-input', localValue ? 'edited' : null) }\n ref={ inputRef }\n onClick={ handleClick }\n ></div>\n </div>;\n});\n\nexport default CodeEditor;","export function FeelIndicator(props) {\n const {\n active\n } = props;\n\n if (!active) {\n return null;\n }\n\n return <span class=\"bio-properties-panel-feel-indicator\">\n =\n </span>;\n}","import classNames from 'classnames';\nimport { FeelOptionalIcon, FeelRequiredIcon } from '../../icons';\n\nconst noop = () => {};\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n label,\n feel = false,\n active,\n disabled = false,\n onClick = noop\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a FEEL expression';\n\n const handleClick = e => {\n onClick(e);\n\n // when pointer event was created from keyboard, keep focus on button\n if (!e.pointerType) {\n e.stopPropagation();\n }\n };\n\n return (\n <button\n class={ classNames('bio-properties-panel-feel-icon',\n active ? 'active' : null,\n feel === 'required' ? 'required' : 'optional') }\n onClick={ handleClick }\n disabled={ feel === 'required' || disabled }\n title={\n label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </button>\n );\n}","import Description from '../Description';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { forwardRef } from 'preact/compat';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n usePrevious,\n useShowEntryEvent,\n useError,\n useStaticCallback\n} from '../../../hooks';\n\nimport CodeEditor from './FeelEditor';\nimport { FeelIndicator } from './FeelIndicator';\nimport FeelIcon from './FeelIcon';\n\nconst noop = () => { };\n\nfunction FeelTextfield(props) {\n const {\n debounce,\n id,\n label,\n onInput,\n onError,\n feel,\n value = '',\n disabled = false,\n variables,\n OptionalComponent = OptionalFeelInput\n } = props;\n\n const [ localValue, _setLocalValue ] = useState(value);\n\n const editorRef = useShowEntryEvent(id);\n const containerRef = useRef();\n\n const feelActive = localValue.startsWith('=') || feel === 'required';\n const feelOnlyValue = localValue.startsWith('=') ? localValue.substring(1) : localValue;\n\n const [ focus, _setFocus ] = useState(undefined);\n\n const setFocus = (offset = 0) => {\n const hasFocus = containerRef.current.contains(document.activeElement);\n\n // Keep caret position if it is already focused, otherwise focus at the end\n const position = hasFocus ? document.activeElement.selectionStart : Infinity;\n\n _setFocus(position + offset);\n };\n\n const handleInputCallback = useMemo(() => {\n return debounce((newValue) => {\n onInput(newValue);\n });\n }, [ onInput, debounce ]);\n\n const setLocalValue = newValue => {\n _setLocalValue(newValue);\n\n if (!newValue || newValue === '=') {\n handleInputCallback(undefined);\n } else {\n handleInputCallback(newValue);\n }\n\n };\n\n const handleFeelToggle = useStaticCallback(() => {\n if (feel === 'required') {\n return;\n }\n\n if (!feelActive) {\n setLocalValue('=' + localValue);\n } else {\n setLocalValue(feelOnlyValue);\n }\n });\n\n const handleLocalInput = (newValue) => {\n if (feelActive) {\n newValue = '=' + newValue;\n }\n\n if (newValue === localValue) {\n return;\n }\n\n setLocalValue(newValue);\n\n if (!feelActive && newValue.startsWith('=')) {\n\n // focus is behind `=` sign that will be removed\n setFocus(-1);\n }\n };\n\n const handleLint = useStaticCallback(lint => {\n\n if (!(lint && lint.length)) {\n onError(undefined);\n return;\n }\n const error = lint[0];\n const message = `${error.source}: ${error.message}`;\n\n onError(message);\n });\n\n useEffect(() => {\n if (typeof focus !== 'undefined') {\n editorRef.current.focus(focus);\n _setFocus(undefined);\n }\n }, [ focus ]);\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n // External value change removed content => keep FEEL configuration\n if (!value) {\n setLocalValue(feelActive ? '=' : '');\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n\n // copy-paste integration\n useEffect(() => {\n const copyHandler = event => {\n if (!feelActive) {\n return;\n }\n event.clipboardData.setData('application/FEEL', event.clipboardData.getData('text'));\n };\n\n const pasteHandler = event => {\n if (feelActive) {\n return;\n }\n\n const data = event.clipboardData.getData('application/FEEL');\n\n if (data) {\n setTimeout(() => {\n handleFeelToggle();\n setFocus();\n });\n }\n };\n containerRef.current.addEventListener('copy', copyHandler);\n containerRef.current.addEventListener('cut', copyHandler);\n containerRef.current.addEventListener('paste', pasteHandler);\n\n return () => {\n containerRef.current.removeEventListener('copy', copyHandler);\n containerRef.current.removeEventListener('cut', copyHandler);\n containerRef.current.removeEventListener('paste', pasteHandler);\n };\n }, [ containerRef, feelActive, handleFeelToggle, setFocus ]);\n\n return (\n <div class=\"bio-properties-panel-feel-entry\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\" onClick={ () => setFocus() }>\n {label}\n <FeelIcon\n label={ label }\n feel={ feel }\n onClick={ handleFeelToggle }\n active={ feelActive }></FeelIcon>\n </label>\n\n <div class=\"bio-properties-panel-feel-container\" ref={ containerRef }>\n <FeelIndicator\n active={ feelActive }\n disabled={ feel !== 'optional' || disabled }\n onClick={ handleFeelToggle }\n />\n {feelActive ?\n <CodeEditor\n id={ prefixId(id) }\n name={ id }\n onInput={ handleLocalInput }\n disabled={ disabled }\n onFeelToggle={ () => { handleFeelToggle(); setFocus(true); } }\n onLint={ handleLint }\n value={ feelOnlyValue }\n variables={ variables }\n ref={ editorRef }\n /> :\n <OptionalComponent\n { ...props }\n onInput={ handleLocalInput }\n value={ localValue }\n ref={ editorRef }\n />\n }\n </div>\n </div>\n );\n}\n\nconst OptionalFeelInput = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: (position) => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n if (typeof position === 'number') {\n if (position > value.length) {\n position = value.length;\n }\n input.setSelectionRange(position, position);\n }\n\n }\n };\n\n return <input\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />;\n});\n\n\nconst OptionalFeelTextArea = forwardRef((props, ref) => {\n const {\n id,\n disabled,\n onInput,\n value,\n onFocus,\n onBlur\n } = props;\n\n const inputRef = useRef();\n\n // To be consistent with the FEEL editor, set focus at start of input\n // this ensures clean editing experience when switching with the keyboard\n ref.current = {\n focus: () => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n\n input.focus();\n input.setSelectionRange(0, 0);\n }\n };\n\n return <textarea\n id={ prefixId(id) }\n type=\"text\"\n ref={ inputRef }\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ e => onInput(e.target.value) }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />;\n});\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.validate\n */\nexport default function FeelEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n feel,\n label,\n getValue,\n setValue,\n validate,\n show = noop,\n example,\n variables,\n onFocus,\n onBlur\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = useStaticCallback((newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n\n // don't create multiple commandStack entries for the same value\n if (newValue !== value) {\n setValue(newValue);\n }\n }\n\n setValidationError(newValidationError);\n });\n\n const onError = useCallback(err => {\n setLocalError(err);\n }, []);\n\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\n }\n\n const temporaryError = useError(id);\n\n const error = localError || temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n props.class,\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <FeelTextfield\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onError={ onError }\n onFocus={ onFocus }\n onBlur={ onBlur }\n example={ example }\n show={ show }\n value={ value }\n variables={ variables }\n OptionalComponent={ props.OptionalComponent } />\n {error && <div class=\"bio-properties-panel-error\">{error}</div>}\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {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 function FeelTextArea(props) {\n return <FeelEntry class=\"bio-properties-panel-feel-textarea\" OptionalComponent={ OptionalFeelTextArea } { ...props } />;\n}\n\nexport function isEdited(node) {\n return node && (!!node.value || node.classList.contains('edited'));\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${id}`;\n}\n\n","import {\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 {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nfunction NumberField(props) {\n\n const {\n debounce,\n disabled,\n id,\n label,\n max,\n min,\n onInput,\n step,\n value = '',\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = useMemo(() => {\n return debounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n onInput(value ? parseFloat(value) : undefined);\n }\n });\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-numberfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"number\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n step={ step }\n value={ localValue } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Boolean} props.debounce\n * @param {String} props.description\n * @param {Boolean} props.disabled\n * @param {Object} props.element\n * @param {Function} props.getValue\n * @param {String} props.id\n * @param {String} props.label\n * @param {String} props.max\n * @param {String} props.min\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {String} props.step\n */\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 } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <NumberField\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\n\nimport {\n 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 } } 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\">{ label }</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 {\n options.map((option, idx) => {\n return (\n <option\n key={ idx }\n value={ option.value }\n disabled={ option.disabled }>\n { option.label }\n </option>\n );\n })\n }\n </select>\n </div>\n );\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} [props.description]\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Function} props.getOptions\n * @param {boolean} [props.disabled]\n */\nexport default function SelectEntry(props) {\n const {\n element,\n id,\n description,\n label,\n getValue,\n setValue,\n getOptions,\n disabled,\n onFocus,\n onBlur\n } = props;\n\n const value = getValue(element);\n const options = getOptions(element);\n\n const error = useError(id);\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Select\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onChange={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n options={ options }\n disabled={ disabled } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\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 useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n useError,\n useShowEntryEvent\n} from '../../hooks';\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n rows = 2,\n debounce,\n onInput,\n value = '',\n disabled,\n monospace,\n onFocus,\n onBlur\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-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 }\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n value={ localValue }\n disabled={ disabled } />\n </div>\n );\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} props.description\n * @param {boolean} props.debounce\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled,\n onFocus,\n onBlur\n } = props;\n\n const value = getValue(element);\n\n const error = useError(id);\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <TextArea\n id={ id }\n key={ element }\n label={ label }\n value={ value }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n disabled={ disabled } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useError,\n usePrevious,\n useShowEntryEvent\n} from '../../hooks';\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n onFocus,\n onBlur,\n value = ''\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value || '');\n\n const ref = useShowEntryEvent(id);\n\n const handleInputCallback = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">\n { label }\n </label>\n <input\n ref={ ref }\n id={ prefixId(id) }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ localValue } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n * @param {Function} props.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n validate,\n onFocus,\n onBlur\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const globalError = useError(id);\n const [ localError, setLocalError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setLocalError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n\n setLocalError(newValidationError);\n };\n\n if (previousValue === value && localError) {\n value = cachedInvalidValue;\n }\n\n const error = globalError || localError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Textfield\n debounce={ debounce }\n disabled={ disabled }\n id={ id }\n key={ element }\n label={ label }\n onInput={ onInput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import Description from './Description';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel,\n onFocus,\n onBlur\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value);\n\n const handleInputCallback = async () => {\n onInput(!value);\n };\n\n const handleInput = e => {\n handleInputCallback(e);\n setLocalValue(e.target.value);\n };\n\n useEffect(() => {\n if (value === localValue) {\n return;\n }\n\n setLocalValue(value);\n }, [ value ]);\n\n return (\n <div class=\"bio-properties-panel-toggle-switch\">\n <label class=\"bio-properties-panel-label\"\n for={ prefixId(id) }>\n { label }\n </label>\n <div class=\"bio-properties-panel-field-wrapper\">\n <label class=\"bio-properties-panel-toggle-switch__switcher\">\n <input\n id={ prefixId(id) }\n class=\"bio-properties-panel-input\"\n type=\"checkbox\"\n onFocus={ onFocus }\n onBlur={ onBlur }\n name={ id }\n onInput={ handleInput }\n checked={ !!localValue } />\n <span class=\"bio-properties-panel-toggle-switch__slider\" />\n </label>\n <p class=\"bio-properties-panel-toggle-switch__label\">{ switcherLabel }</p>\n </div>\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {String} props.label\n * @param {String} props.switcherLabel\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.onFocus\n * @param {Function} props.onBlur\n */\nexport default function ToggleSwitchEntry(props) {\n const {\n element,\n id,\n description,\n label,\n switcherLabel,\n getValue,\n setValue,\n onFocus,\n onBlur\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-toggle-switch-entry\" data-entry-id={ id }>\n <ToggleSwitch\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n onFocus={ onFocus }\n onBlur={ onBlur }\n switcherLabel={ switcherLabel } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n debounce,\n isNumber\n} from 'min-dash';\n\nconst DEFAULT_DEBOUNCE_TIME = 300;\n\nexport default function debounceInput(debounceDelay) {\n return function _debounceInput(fn) {\n if (debounceDelay !== false) {\n\n var debounceTime =\n isNumber(debounceDelay) ?\n debounceDelay :\n DEFAULT_DEBOUNCE_TIME;\n\n return debounce(fn, debounceTime);\n } else {\n return fn;\n }\n };\n}\n\ndebounceInput.$inject = [ 'config.debounceInput' ];\n","import debounceInput from './debounceInput';\n\nexport default {\n debounceInput: [ 'factory', debounceInput ]\n};\n"],"names":["Header","props","element","headerProvider","getElementIcon","getDocumentationRef","getElementLabel","getTypeLabel","label","type","documentationRef","ElementIcon","_jsxs","_jsx","DescriptionContext","createContext","description","getDescriptionForId","ErrorsContext","errors","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useDescriptionContext","id","useContext","useError","useEvent","event","callback","eventContext","didMount","useRef","current","on","useEffect","off","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","useCallback","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","Observer","IntersectionObserver","observer","scrollContainer","domQuery","entries","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","unobserve","useStaticCallback","callbackRef","args","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","isEdited","entryNode","inputNode","propertiesPanelContext","classnames","component","Component","_createElement","DataMarker","Placeholder","text","icon","Icon","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","placeholderProvider","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","setErrors","onSetErrors","errorsContext","getEmpty","isArray","getMultiple","group","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","onFocus","onBlur","localValue","setLocalValue","handleChangeCallback","checked","handleChange","e","prefixId","CheckboxEntry","getValue","setValue","error","node","useBufferedFocus","editor","buffer","setBuffer","undefined","argument","CodeEditor","forwardRef","onInput","onFeelToggle","onLint","variables","inputRef","setEditor","handleInput","onKeyDown","selection","getSelection","range","ranges","mainIndex","from","to","FeelEditor","container","innerHTML","handleClick","classNames","name","FeelIndicator","active","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","pointerType","FeelTextfield","debounce","onError","OptionalComponent","OptionalFeelInput","_setLocalValue","editorRef","containerRef","feelActive","startsWith","feelOnlyValue","substring","_setFocus","setFocus","offset","hasFocus","activeElement","position","selectionStart","Infinity","handleInputCallback","handleFeelToggle","handleLocalInput","handleLint","lint","message","source","copyHandler","clipboardData","setData","getData","pasteHandler","data","setTimeout","input","setSelectionRange","OptionalFeelTextArea","FeelEntry","validate","show","example","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","localError","setLocalError","previousValue","newValidationError","err","temporaryError","FeelTextArea","classList","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","max","min","step","validity","valid","parseFloat","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","Simple","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","globalError","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
|