@bpmn-io/properties-panel 0.15.0 → 0.16.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/hooks/useDescriptionContext.js","../src/hooks/useEvent.js","../src/hooks/useEventBuffer.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useShowErrorEvent.js","../src/hooks/useStickyIntersectionObserver.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/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/FeelIcon.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: 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","/**\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, useEffect } from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\nconst DEFAULT_PRIORITY = 1000;\n\n\n/**\n * Subscribe to an event.\n *\n * @param {string} event\n * @param {Function} callback\n * @param {number} [priority]\n *\n * @returns {import('preact').Ref}\n */\nexport function useEvent(event, callback, priority = DEFAULT_PRIORITY) {\n const { eventBus } = useContext(EventContext);\n\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n eventBus.on(event, priority, callback);\n\n return () => eventBus.off(event, callback);\n }, [ callback, event, eventBus, priority ]);\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\nconst HIGH_PRIORITY = 10000;\n\n\n/**\n * Buffer events and re-fire during passive effect phase.\n *\n * @param {string[]} bufferedEvents\n * @param {Object} [eventBus]\n */\nexport function useEventBuffer(bufferedEvents, eventBus) {\n const buffer = useRef([]),\n buffering = useRef(true);\n\n const createCallback = (event) => (data) => {\n if (buffering.current === true) {\n buffer.current.unshift([ event, data ]);\n }\n };\n\n // (1) buffer events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n const listeners = bufferedEvents.map((event) => {\n return [ event, createCallback(event) ];\n });\n\n listeners.forEach(([ event, callback ]) => {\n eventBus.on(event, HIGH_PRIORITY, callback);\n });\n\n return () => {\n listeners.forEach(([ event, callback ]) => {\n eventBus.off(event, callback);\n });\n };\n }, [ bufferedEvents, eventBus ]);\n\n // (2) re-fire events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n buffering.current = false;\n\n while (buffer.current.length) {\n const [ event, data ] = buffer.current.pop();\n\n eventBus.fire(event, data);\n }\n\n buffering.current = true;\n });\n}","import { useMemo } from 'preact/hooks';\n\nconst KEY_LENGTH = 6;\n\n/**\n * Create a persistent key factory for plain objects without id.\n *\n * @example\n * ```jsx\n * function List({ objects }) {\n * const getKey = useKeyFactory();\n * return (<ol>{\n * objects.map(obj => {\n * const key = getKey(obj);\n * return <li key={key}>obj.name</li>\n * })\n * }</ol>);\n * }\n * ```\n *\n * @param {any[]} dependencies\n * @returns {(element: object) => string}\n */\nexport function useKeyFactory(dependencies = []) {\n const map = useMemo(() => new Map(), dependencies);\n\n const getKey = el => {\n let key = map.get(el);\n\n if (!key) {\n key = Math.random().toString().slice(-KEY_LENGTH);\n map.set(el, key);\n }\n\n return key;\n };\n\n return getKey;\n}\n","import {\n useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport { isFunction } from 'min-dash';\n\nimport { PropertiesPanelContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showEntry`.\n *\n * @param {Function} show\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowEntryEvent(show) {\n const { onShow } = useContext(PropertiesPanelContext);\n\n const ref = useRef();\n\n const [ focus, setFocus ] = useState(false);\n\n const onShowEntry = useCallback((event) => {\n if (show(event)) {\n if (isFunction(onShow)) {\n onShow();\n }\n\n if (event.focus && !focus) {\n setFocus(true);\n }\n }\n }, [ show ]);\n\n useEffect(() => {\n if (focus && ref.current) {\n if (isFunction(ref.current.focus)) {\n ref.current.focus();\n }\n\n if (isFunction(ref.current.select)) {\n ref.current.select();\n }\n\n setFocus(false);\n }\n }, [ focus ]);\n\n useEvent('propertiesPanel.showEntry', onShowEntry);\n\n return ref;\n}","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport { EventContext } from '../context';\n\nimport { useEvent } from './useEvent';\n\n/**\n * Subscribe to `propertiesPanel.showError`. On `propertiesPanel.showError` set\n * temporary error. Fire `propertiesPanel.showEntry` for temporary error to be\n * visible. Unset error on `propertiesPanel.updated`.\n *\n * @param {Function} show\n *\n * @returns {import('preact').Ref}\n */\nexport function useShowErrorEvent(show) {\n const { eventBus } = useContext(EventContext);\n\n const [ temporaryError, setTemporaryError ] = useState(null);\n\n const onPropertiesPanelUpdated = useCallback(() => setTemporaryError(null), []);\n\n useEvent('propertiesPanel.updated', onPropertiesPanelUpdated);\n\n const onShowError = useCallback((event) => {\n setTemporaryError(null);\n\n if (show(event)) {\n if (eventBus) {\n eventBus.fire('propertiesPanel.showEntry', event);\n }\n\n setTemporaryError(event.message);\n }\n }, [ show ]);\n\n useEvent('propertiesPanel.showError', onShowError);\n\n return temporaryError;\n}","import {\n 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 // return early if IntersectionObserver is not available\n if (!IntersectionObserver) {\n return;\n }\n\n let observer;\n\n if (ref.current) {\n const scrollContainer = domQuery(scrollContainerSelector);\n\n observer = new IntersectionObserver((entries) => {\n if (entries[0].intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entries[0].intersectionRatio === 1) {\n setSticky(false);\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 ]);\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 EventContext,\n LayoutContext,\n PropertiesPanelContext\n} from './context';\n\nimport { useEventBuffer } from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\nconst bufferedEvents = [\n 'propertiesPanel.showEntry',\n 'propertiesPanel.showError'\n];\n\n\n/**\n * @typedef { {\n * component: import('preact').Component,\n * id: String,\n * isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n * autoFocusEntry: String,\n * autoOpen?: Boolean,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n * add: (event: MouseEvent) => void,\n * component: import('preact').Component,\n * element: Object,\n * id: String,\n * items: Array<ListItemDefinition>,\n * label: String,\n * shouldSort?: Boolean,\n * shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n * component?: import('preact').Component,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * shouldOpen?: Boolean\n * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {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 useEventBuffer(bufferedEvents, eventBus);\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\n <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\n <EventContext.Provider value={ eventContext }>\n <div\n class={ classnames(\n 'bio-properties-panel',\n layout.open ? 'open' : '')\n }>\n <Header\n element={ element }\n headerProvider={ headerProvider } />\n <div class=\"bio-properties-panel-scroll-container\">\n {\n groups.map(group => {\n const {\n component: Component = Group,\n id\n } = group;\n\n return (\n <Component\n { ...group }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>\n </EventContext.Provider>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>\n </PropertiesPanelContext.Provider>\n );\n}\n\n\n// helpers //////////////////\n\nfunction createLayout(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\n}","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\n/**\n *\n * @param {object} props\n * @param {string} [props.class]\n * @param {import('preact').Component[]} [props.menuItems]\n * @returns\n */\nexport function DropdownButton(props) {\n const {\n class: className,\n children,\n menuItems = []\n } = props;\n\n const dropdownRef = useRef(null);\n const menuRef = useRef(null);\n\n const [ open, setOpen ] = useState(false);\n const close = () => setOpen(false);\n\n function onDropdownToggle(event) {\n if (menuRef.current && menuRef.current.contains(event.target)) {\n return;\n }\n\n event.stopPropagation();\n\n setOpen(open => !open);\n }\n\n function onActionClick(event, action) {\n event.stopPropagation();\n\n close();\n action();\n }\n\n useGlobalClick([ dropdownRef.current ], () => close());\n\n return (\n <div\n class={ classnames('bio-properties-panel-dropdown-button', { open }, className) }\n onClick={ onDropdownToggle }\n ref={ dropdownRef }\n >\n { children }\n <div class=\"bio-properties-panel-dropdown-button__menu\" ref={ menuRef }>\n { menuItems.map((item, index) => (\n <MenuItem onClick={ onActionClick } item={ item } key={ index } />\n )) }\n </div>\n </div>\n );\n}\n\nfunction MenuItem({ item, onClick }) {\n if (item.separator) {\n return <div class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator\" />;\n }\n\n if (item.action) {\n return (<button\n class=\"bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable\"\n onClick={ event => onClick(event, item.action) }\n >\n {item.entry}\n </button>);\n }\n\n return <div\n class=\"bio-properties-panel-dropdown-button__menu-item\"\n >\n {item.entry}\n </div>;\n}\n\n/**\n *\n * @param {Array<null | Element>} ignoredElements\n * @param {Function} callback\n */\nfunction useGlobalClick(ignoredElements, callback) {\n useEffect(() => {\n\n /**\n * @param {MouseEvent} event\n */\n function listener(event) {\n if (ignoredElements.some(element => element && element.contains(event.target))) {\n return;\n }\n\n callback();\n }\n\n document.addEventListener('click', listener, { capture: true });\n\n return () => document.removeEventListener('click', listener, { capture: true });\n }, [ ...ignoredElements, callback ]);\n}\n","import classnames from 'classnames';\n\nexport function HeaderButton(props) {\n const {\n children = null,\n class: classname,\n onClick = () => {},\n ...otherProps\n } = props;\n\n return <button\n { ...otherProps }\n onClick={ onClick }\n class={ classnames('bio-properties-panel-group-header-button', classname) }>\n { children }\n </button>;\n}\n","import {\n useCallback,\n useContext,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\nimport { PropertiesPanelContext } from '../../context';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n element,\n entries = [],\n id,\n label,\n open: shouldOpen,\n remove\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\n\n const { onShow } = useContext(PropertiesPanelContext);\n\n const propertiesPanelContext = {\n ...useContext(PropertiesPanelContext),\n onShow: useCallback(() => {\n setOpen(true);\n\n if (isFunction(onShow)) {\n onShow();\n }\n }, [ onShow, setOpen ])\n };\n\n // todo(pinussilvestrus): translate once we have a translate mechanism for the core\n const placeholderLabel = '<empty>';\n\n return (\n <div\n data-entry-id={ id }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry',\n open ? 'open' : ''\n ) }>\n <div class=\"bio-properties-panel-collapsible-entry-header\" onClick={ toggleOpen }>\n <div\n title={ label || placeholderLabel }\n class={ classnames(\n 'bio-properties-panel-collapsible-entry-header-title',\n !label && 'empty'\n ) }>\n { label || placeholderLabel }\n </div>\n <button\n title=\"Toggle list item\"\n class=\"bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow\"\n >\n <ArrowIcon class={ open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' } />\n </button>\n {\n remove\n ?\n (\n <button title=\"Delete item\" class=\"bio-properties-panel-remove-entry\" onClick={ remove }>\n <DeleteIcon />\n </button>\n )\n : null\n }\n </div>\n <div class={ classnames(\n 'bio-properties-panel-collapsible-entry-entries',\n open ? 'open' : ''\n ) }>\n <PropertiesPanelContext.Provider value={ propertiesPanelContext }>\n {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return <Component\n { ...entry }\n element={ element }\n key={ id } />;\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\n } = props;\n\n // focus specified entry on auto open\n useEffect(() => {\n if (autoOpen && autoFocusEntry) {\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n 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 useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nconst noop = () => {};\n\nfunction Checkbox(props) {\n const {\n id,\n label,\n onChange,\n disabled,\n value = false,\n show = noop\n } = props;\n\n const [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(show);\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n ref={ ref }\n id={ prefixId(id) }\n name={ id }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ 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 show = noop\n } = props;\n\n const value = getValue(element);\n\n const error = useShowErrorEvent(show);\n\n return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\n <Checkbox\n disabled={ disabled }\n id={ id }\n label={ label }\n onChange={ setValue }\n show={ show }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.checked;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n useKeyFactory,\n usePrevious\n} from '../../hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n CreateIcon,\n DeleteIcon\n} from '../icons';\n\n/**\n * Entry for handling lists represented as nested entries.\n *\n * @template Item\n * @param {object} props\n * @param {string} props.id\n * @param {*} props.element\n * @param {Function} props.onAdd\n * @param {import('preact').Component} props.component\n * @param {string} [props.label='<empty>']\n * @param {Function} [props.onRemove]\n * @param {Item[]} [props.items]\n * @param {boolean} [props.open]\n * @param {string|boolean} [props.autoFocusEntry] either a custom selector string or true to focus the first input\n * @param {(a: Item, b: Item) => -1 | 0 | 1} [props.compareFn]\n * @returns\n */\nexport default function List(props) {\n const {\n id,\n element,\n items = [],\n component,\n label = '<empty>',\n open: shouldOpen,\n onAdd,\n onRemove,\n autoFocusEntry,\n compareFn,\n ...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 (\n <ol class={ classnames(\n 'bio-properties-panel-list-entry-items',\n open ? 'open' : ''\n ) }>\n {\n items.map((item, index) => {\n const key = getKey(item);\n\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\n <Component\n { ...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 label={ label }\n onInput={ setValue }\n max={ max }\n min={ min }\n step={ step }\n value={ value } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import classNames from 'classnames';\n\nimport {\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nimport {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport Description from './Description';\n\nconst noop = () => {};\n\n/**\n * @typedef { { value: string, label: string, disabled: boolean } } Option\n */\n\n/**\n * Provides basic select input.\n *\n * @param {object} props\n * @param {string} props.id\n * @param {string[]} props.path\n * @param {string} props.label\n * @param {Function} props.onChange\n * @param {Array<Option>} [props.options]\n * @param {string} props.value\n * @param {boolean} [props.disabled]\n */\nfunction Select(props) {\n const {\n id,\n label,\n onChange,\n options = [],\n value,\n disabled,\n show = noop\n } = props;\n\n const ref = useShowEntryEvent(show);\n\n const [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 show = noop\n } = props;\n\n const value = getValue(element);\n const options = getOptions(element);\n\n const error = useShowErrorEvent(show);\n\n return (\n <div\n class={ classNames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Select\n id={ id }\n label={ label }\n value={ value }\n onChange={ setValue }\n options={ options }\n disabled={ disabled }\n show={ show } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import {\n useMemo,\n 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 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 { FeelOptionalIcon, FeelRequiredIcon } from '../icons';\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n label,\n feel = false,\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a FEEL expression';\n\n return (\n <i\n class=\"bio-properties-panel-feel-icon\"\n title={\n label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </i>\n );\n}","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nfunction TextArea(props) {\n\n const {\n id,\n label,\n rows = 2,\n debounce,\n feel,\n onInput,\n value = '',\n disabled,\n monospace\n } = props;\n\n const [localValue, setLocalValue] = useState(value);\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 {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <textarea\n id={ prefixId(id) }\n name={ id }\n spellCheck=\"false\"\n class={ classnames(\n 'bio-properties-panel-input',\n monospace ? 'bio-properties-panel-input-monospace' : '')\n }\n onInput={ handleInput }\n onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n rows={ rows }\n value={ 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 feel,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled\n } = props;\n\n const value = getValue(element);\n return (\n <div class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <TextArea\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n feel={ feel }\n disabled={ disabled } />\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n usePrevious,\n useShowEntryEvent,\n useShowErrorEvent\n} from '../../hooks';\n\nconst noop = () => {};\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n feel = false,\n value = '',\n show = noop\n } = props;\n\n const [ localValue, setLocalValue ] = useState(value || '');\n\n const ref = useShowEntryEvent(show);\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 {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <input\n ref={ ref }\n id={ prefixId(id) }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n value={ 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 feel,\n label,\n getValue,\n setValue,\n validate,\n show = noop\n } = props;\n\n const [ cachedInvalidValue, setCachedInvalidValue ] = useState(null);\n const [ validationError, setValidationError ] = useState(null);\n\n let value = getValue(element);\n\n const previousValue = usePrevious(value);\n\n useEffect(() => {\n if (isFunction(validate)) {\n const newValidationError = validate(value) || null;\n\n setValidationError(newValidationError);\n }\n }, [ value ]);\n\n const onInput = (newValue) => {\n let newValidationError = null;\n\n if (isFunction(validate)) {\n newValidationError = validate(newValue) || null;\n }\n\n if (newValidationError) {\n setCachedInvalidValue(newValue);\n } else {\n setValue(newValue);\n }\n\n setValidationError(newValidationError);\n };\n\n if (previousValue === value && validationError) {\n value = cachedInvalidValue;\n }\n\n const temporaryError = useShowErrorEvent(show);\n\n const error = temporaryError || validationError;\n\n return (\n <div\n class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n }\n data-entry-id={ id }>\n <Textfield\n debounce={ debounce }\n disabled={ disabled }\n feel={ feel }\n id={ id }\n label={ label }\n onInput={ onInput }\n show={ show }\n value={ value } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}","import Description from './Description';\n\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","EventContext","eventBus","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useDescriptionContext","id","useContext","DEFAULT_PRIORITY","useEvent","event","callback","priority","useEffect","on","off","HIGH_PRIORITY","useEventBuffer","bufferedEvents","buffer","useRef","buffering","createCallback","data","current","unshift","listeners","map","forEach","length","pop","fire","KEY_LENGTH","useKeyFactory","dependencies","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","show","onShow","PropertiesPanelContext","focus","setFocus","onShowEntry","useCallback","isFunction","select","useShowErrorEvent","temporaryError","setTemporaryError","onPropertiesPanelUpdated","onShowError","message","useStickyIntersectionObserver","scrollContainerSelector","setSticky","IntersectionObserver","observer","scrollContainer","domQuery","entries","intersectionRatio","root","rootMargin","threshold","observe","unobserve","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","entry","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","eventContext","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","includes","push","newOrdering","filter","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","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","debounce","max","min","onInput","step","handleInputCallback","validity","valid","parseFloat","undefined","handleInput","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","classNames","Simple","onBlur","onFocus","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","validate","cachedInvalidValue","setCachedInvalidValue","validationError","setValidationError","previousValue","newValidationError","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Header.js","../src/context/DescriptionContext.js","../src/context/ErrorsContext.js","../src/context/EventContext.js","../src/context/LayoutContext.js","../src/hooks/useDescriptionContext.js","../src/hooks/useError.js","../src/hooks/useEvent.js","../src/hooks/useEventBuffer.js","../src/hooks/useKeyFactory.js","../src/hooks/useLayoutState.js","../src/hooks/usePrevious.js","../src/hooks/useShowEntryEvent.js","../src/hooks/useStickyIntersectionObserver.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/List.js","../src/components/entries/NumberField.js","../src/components/entries/Select.js","../src/components/entries/Simple.js","../src/components/entries/FeelIcon.js","../src/components/entries/TextArea.js","../src/components/entries/TextField.js","../src/components/entries/ToggleSwitch.js","../src/features/debounce-input/debounceInput.js","../src/features/debounce-input/index.js"],"sourcesContent":["import { ExternalLinkIcon } from './icons';\n\n/**\n * @typedef { {\n * getElementLabel: (element: 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 {\n useEffect,\n useRef\n} from 'preact/hooks';\n\nconst HIGH_PRIORITY = 10000;\n\n\n/**\n * Buffer events and re-fire during passive effect phase.\n *\n * @param {string[]} bufferedEvents\n * @param {Object} [eventBus]\n */\nexport function useEventBuffer(bufferedEvents, eventBus) {\n const buffer = useRef([]),\n buffering = useRef(true);\n\n const createCallback = (event) => (data) => {\n if (buffering.current === true) {\n buffer.current.unshift([ event, data ]);\n }\n };\n\n // (1) buffer events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n const listeners = bufferedEvents.map((event) => {\n return [ event, createCallback(event) ];\n });\n\n listeners.forEach(([ event, callback ]) => {\n eventBus.on(event, HIGH_PRIORITY, callback);\n });\n\n return () => {\n listeners.forEach(([ event, callback ]) => {\n eventBus.off(event, callback);\n });\n };\n }, [ bufferedEvents, eventBus ]);\n\n // (2) re-fire events\n useEffect(() => {\n if (!eventBus) {\n return;\n }\n\n buffering.current = false;\n\n while (buffer.current.length) {\n const [ event, data ] = buffer.current.pop();\n\n eventBus.fire(event, data);\n }\n\n buffering.current = true;\n });\n}","import { useMemo } from 'preact/hooks';\n\nconst KEY_LENGTH = 6;\n\n/**\n * Create a persistent key factory for plain objects without id.\n *\n * @example\n * ```jsx\n * function List({ objects }) {\n * const getKey = useKeyFactory();\n * return (<ol>{\n * objects.map(obj => {\n * const key = getKey(obj);\n * return <li key={key}>obj.name</li>\n * })\n * }</ol>);\n * }\n * ```\n *\n * @param {any[]} dependencies\n * @returns {(element: object) => string}\n */\nexport function useKeyFactory(dependencies = []) {\n const map = useMemo(() => new Map(), dependencies);\n\n const getKey = el => {\n let key = map.get(el);\n\n if (!key) {\n key = Math.random().toString().slice(-KEY_LENGTH);\n map.set(el, key);\n }\n\n return key;\n };\n\n return getKey;\n}\n","import {\n useContext,\n useState\n} from 'preact/hooks';\n\nimport {\n LayoutContext\n} from '../context';\n\n/**\n * Creates a state that persists in the global LayoutContext.\n *\n * @example\n * ```jsx\n * function Group(props) {\n * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);\n * }\n * ```\n *\n * @param {(string|number)[]} path\n * @param {any} [defaultValue]\n *\n * @returns {[ any, Function ]}\n */\nexport function useLayoutState(path, defaultValue) {\n const {\n getLayoutForKey,\n setLayoutForKey\n } = useContext(LayoutContext);\n\n const layoutForKey = getLayoutForKey(path, defaultValue);\n const [ value, set ] = useState(layoutForKey);\n\n const setState = (newValue) => {\n\n // (1) set component state\n set(newValue);\n\n // (2) set context\n setLayoutForKey(path, newValue);\n };\n\n return [ value, setState ];\n}\n","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n/**\n * @pinussilvestrus: we need to introduce our own hook to persist the previous\n * state on updates.\n *\n * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\n */\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import {\n useCallback,\n useContext,\n useEffect,\n useRef\n} 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 // return early if IntersectionObserver is not available\n if (!IntersectionObserver) {\n return;\n }\n\n let observer;\n\n if (ref.current) {\n const scrollContainer = domQuery(scrollContainerSelector);\n\n observer = new IntersectionObserver((entries) => {\n if (entries[0].intersectionRatio < 1) {\n setSticky(true);\n }\n else if (entries[0].intersectionRatio === 1) {\n setSticky(false);\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 ]);\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 {\n useEvent,\n useEventBuffer\n} from './hooks';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\nconst bufferedEvents = [\n 'propertiesPanel.showEntry',\n 'propertiesPanel.setErrors'\n];\n\n\n/**\n * @typedef { {\n * component: import('preact').Component,\n * id: String,\n * isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n * autoFocusEntry: String,\n * autoOpen?: Boolean,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n * add: (event: MouseEvent) => void,\n * component: import('preact').Component,\n * element: Object,\n * id: String,\n * items: Array<ListItemDefinition>,\n * label: String,\n * shouldSort?: Boolean,\n * shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n * component?: import('preact').Component,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * shouldOpen?: Boolean\n * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {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 useEventBuffer(bufferedEvents, eventBus);\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 <Component\n { ...entry }\n element={ element }\n key={ id } />;\n })\n }\n </PropertiesPanelContext.Provider>\n </div>\n </div>\n );\n}","import {\n useEffect\n} from 'preact/hooks';\n\nimport {\n query as domQuery\n} from 'min-dom';\n\nimport { isFunction } from 'min-dash';\n\nimport CollapsibleEntry from './entries/Collapsible';\n\n/**\n * @param {import('../PropertiesPanel').ListItemDefinition} props\n */\nexport default function ListItem(props) {\n const {\n autoFocusEntry,\n autoOpen\n } = props;\n\n // focus specified entry on auto open\n useEffect(() => {\n if (autoOpen && autoFocusEntry) {\n const entry = domQuery(`[data-entry-id=\"${autoFocusEntry}\"]`);\n\n const focusableInput = domQuery('.bio-properties-panel-input', entry);\n\n if (focusableInput) {\n\n if (isFunction(focusableInput.select)) {\n focusableInput.select();\n } else if (isFunction(focusableInput.focus)) {\n focusableInput.focus();\n }\n\n }\n }\n }, [ autoOpen, autoFocusEntry ]);\n\n\n return (\n <div class=\"bio-properties-panel-list-item\">\n <CollapsibleEntry\n { ...props }\n open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useCallback,\n useContext,\n useEffect,\n 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 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 {\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 (\n <ol class={ classnames(\n 'bio-properties-panel-list-entry-items',\n open ? 'open' : ''\n ) }>\n {\n items.map((item, index) => {\n const key = getKey(item);\n\n return (<li class=\"bio-properties-panel-list-entry-item\" key={ key }>\n <Component\n { ...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 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 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 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 { FeelOptionalIcon, FeelRequiredIcon } from '../icons';\n\n/**\n * @param {Object} props\n * @param {Object} props.label\n * @param {String} props.feel\n */\nexport default function FeelIcon(props) {\n\n const {\n label,\n feel = false,\n } = props;\n\n const feelRequiredLabel = ' must be a FEEL expression';\n const feelOptionalLabel = ' can optionally be a FEEL expression';\n\n return (\n <i\n class=\"bio-properties-panel-feel-icon\"\n title={\n label + (\n feel === 'required' ? feelRequiredLabel : feelOptionalLabel\n )\n }\n >\n {feel === 'required' ? <FeelRequiredIcon /> : <FeelOptionalIcon />}\n </i>\n );\n}","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n 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 feel,\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 {feel && <FeelIcon feel={ feel } label={ 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 feel,\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 class=\"bio-properties-panel-entry\" data-entry-id={ id }>\n <TextArea\n id={ id }\n label={ label }\n value={ value }\n onInput={ setValue }\n rows={ rows }\n debounce={ debounce }\n monospace={ monospace }\n feel={ feel }\n disabled={ disabled } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n <Description forId={ id } element={ element } value={ description } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\nimport FeelIcon from './FeelIcon';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport { isFunction } from 'min-dash';\n\nimport {\n 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 feel = false,\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 {feel && <FeelIcon feel={ feel } label={ label } />}\n </label>\n <input\n ref={ ref }\n id={ prefixId(id) }\n type=\"text\"\n name={ id }\n spellCheck=\"false\"\n autoComplete=\"off\"\n disabled={ disabled }\n class=\"bio-properties-panel-input\"\n onInput={ handleInput }\n onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n value={ 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 feel,\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 feel={ feel }\n id={ id }\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","HIGH_PRIORITY","useEventBuffer","bufferedEvents","buffer","buffering","createCallback","data","unshift","listeners","map","forEach","length","pop","fire","KEY_LENGTH","useKeyFactory","dependencies","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","useLayoutState","path","defaultValue","layoutForKey","value","useState","setState","newValue","usePrevious","ref","useShowEntryEvent","onShow","PropertiesPanelContext","focus","onShowEntry","useCallback","isFunction","select","useStickyIntersectionObserver","scrollContainerSelector","setSticky","IntersectionObserver","observer","scrollContainer","domQuery","entries","intersectionRatio","root","rootMargin","threshold","observe","unobserve","Group","shouldOpen","groupRef","open","setOpen","toggleOpen","edited","setEdited","sticky","hasOneEditedEntry","find","entry","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","includes","push","newOrdering","filter","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","List","onAdd","onRemove","compareFn","restProps","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","debounce","max","min","onInput","step","handleInputCallback","validity","valid","parseFloat","undefined","handleInput","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","classNames","Simple","onBlur","onFocus","FeelIcon","feel","feelRequiredLabel","feelOptionalLabel","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","validate","cachedInvalidValue","setCachedInvalidValue","globalError","localError","setLocalError","previousValue","newValidationError","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}