@bpmn-io/properties-panel 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/assets/properties-panel.css +5 -17
- package/dist/index.esm.js +69 -33
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +67 -31
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/hooks/usePrevious.js","../src/hooks/useKeyFactory.js","../src/context/DescriptionContext.js","../src/context/LayoutContext.js","../src/hooks/useLayoutState.js","../src/hooks/useDescriptionContext.js","../src/components/Group.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/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":["/**\n * @typedef { { getElementLabel: Function, getTypeLabel: Function, getElementIcon: Function } } 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 getElementLabel,\n getTypeLabel,\n getElementIcon\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\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 { getElementLabel(element) ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n </div>);\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 default function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\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 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 LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","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 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 {djs.model.Base} 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 {\n useEffect,\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 { ArrowIcon } from './icons';\n\n/**\n * @param {import('../PropertiesPanel').GroupDefinition} props\n */\nexport default function Group(props) {\n const {\n id,\n entries = [],\n label\n } = props;\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n const toggleOpen = () => setOpen(!open);\n\n const [ edited, setEdited ] = 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 return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open? 'open' : ''\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 {\n entries.map(e => e.component)\n }\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","import {\n useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n get,\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 {\n LayoutContext,\n DescriptionContext\n} from './context';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\n\n/**\n * @typedef { {\n * component: import('preact').ComponentChild,\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 * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {djs.model.base} element\n * @returns {string}\n * } } GetDescriptionFunction\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} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\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 */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n groups,\n layoutConfig = {},\n layoutChanged,\n descriptionConfig = {},\n descriptionLoaded\n } = props;\n\n // set-up layout context\n const [ layout, setLayout ] = useState(createLayoutContext(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 setLayout(set(layout, key, config));\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 if (!element) {\n return <div class=\"bio-properties-panel-placeholder\">Select an element to edit its properties.</div>;\n }\n\n return <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\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\n const {\n component: GroupComponent = Group,\n id\n } = group;\n\n return <GroupComponent\n key={ id }\n element={ element }\n { ...group } />;\n })\n }\n </div>\n </div>\n </LayoutContext.Provider>\n </DescriptionContext.Provider>;\n}\n\n\n// helpers //////////////////\n\nfunction createLayoutContext(overrides) {\n return {\n ...DEFAULT_LAYOUT,\n ...overrides\n };\n}\n\nfunction createDescriptionContext(overrides) {\n return {\n ...DEFAULT_DESCRIPTION,\n ...overrides\n };\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 useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\n\n\nexport default function CollapsibleEntry(props) {\n const {\n id,\n entries = [],\n label,\n remove,\n open: shouldOpen\n } = props;\n\n const [ open, setOpen ] = useState(shouldOpen);\n\n const toggleOpen = () => setOpen(!open);\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 {\n entries.map(e => e.component)\n }\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 autoOpen,\n autoFocusEntry\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 { ...props } open={ autoOpen } />\n </div>\n );\n\n}\n","import {\n useEffect,\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\nconst noop = () => {};\n\n/**\n * @param {import('../PropertiesPanel').ListGroupDefinition} props\n */\nexport default function ListGroup(props) {\n const {\n element,\n id,\n items,\n label,\n add,\n shouldSort = true,\n shouldOpen = true\n } = props;\n\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\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 const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : ''\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 {\n ordering.map((o, index) => {\n const item = getItem(items, o);\n\n if (!item) {\n return;\n }\n\n return (\n <ListItem\n key={ item.id }\n\n // if item was added, open first or last item based on ordering\n autoOpen={ newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1) }\n { ...item } />\n );\n })\n }\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 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 handleChange = ({ target }) => {\n onChange(target.checked);\n };\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n id={ prefixId(id) }\n name={ id }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\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 return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\n <Checkbox id={ id } label={ label } onChange={ setValue } value={ value } disabled={ disabled } />\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 {(item: Item, index: number, isNew: boolean) => JSX.Element} props.renderItem\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 renderItem,\n label = '<empty>',\n open: shouldOpen,\n onAdd,\n onRemove,\n autoFocusEntry,\n compareFn\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 autoFocusEntry={ autoFocusEntry }\n id={ id }\n open={ open }\n items={ sortedItems }\n newItems={ newItems }\n onRemove={ onRemove }\n renderItem={ renderItem }\n />\n )\n }\n </div>\n );\n}\n\nfunction ItemsList(props) {\n const {\n autoFocusEntry,\n id,\n items,\n newItems,\n open,\n onRemove,\n renderItem\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 { renderItem(item, index, 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 useMemo\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 handleInput = 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 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={ value } />\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 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.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 handleChange = ({ target }) => {\n onChange(target.value);\n };\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 id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n value={ value }\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 return (\n <div class=\"bio-properties-panel-entry\" 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 <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} 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 handleInput = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const value = getValue(element);\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 onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nimport {\n useMemo\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 onInput,\n value = '',\n disabled,\n monospace\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</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={ value }\n disabled={ disabled } />\n </div>\n );\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} props.description\n * @param {boolean} props.debounce\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled\n } = props;\n\n const value = getValue(element);\n 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 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';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n usePrevious\n} from '../../hooks';\n\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n value = ''\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\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 onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n value={ value || '' } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n validate\n } = props;\n\n const [ error, setError ] = useState(null);\n const [ invalidValueCache, setInvalidValueCache ] = useState(null);\n\n let value = getValue(element);\n const prevValue = usePrevious(value);\n\n // validate again when value prop changed\n useEffect(() => {\n const err = validate ? validate(value) : null;\n setError(err);\n }, [ value ]);\n\n // validate on change\n const handleChange = (newValue) => {\n const err = validate ? validate(newValue) : null;\n\n if (err) {\n setInvalidValueCache(newValue);\n } else {\n setValue(newValue);\n }\n\n setError(err);\n };\n\n // keep showing invalid value on errors, although it was not set\n if (prevValue === value && error) {\n value = invalidValueCache;\n }\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n } data-entry-id={ id }>\n <Textfield id={ id } label={ label } value={ value } onInput={ handleChange } debounce={ debounce } disabled={ disabled } />\n <Description forId={ id } element={ element } value={ description } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel\n } = props;\n\n const handleInput = async () => {\n onInput(!value);\n };\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={ value } />\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","getElementLabel","getTypeLabel","getElementIcon","label","type","ElementIcon","_jsxs","_jsx","usePrevious","value","ref","useRef","useEffect","current","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","DescriptionContext","createContext","description","getDescriptionForId","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useLayoutState","path","defaultValue","useContext","layoutForKey","useState","setState","newValue","useDescriptionContext","id","Group","entries","open","setOpen","toggleOpen","edited","setEdited","hasOneEditedEntry","find","entry","isEdited","entryNode","domQuery","isFunction","inputNode","classnames","e","component","DataMarker","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayoutContext","config","layoutContext","createDescriptionContext","descriptionContext","group","GroupComponent","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","event","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","callback","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","remove","shouldOpen","placeholderLabel","ListItem","autoOpen","autoFocusEntry","focusableInput","select","focus","noop","ListGroup","items","add","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","forEach","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","handleChange","checked","prefixId","CheckboxEntry","getValue","setValue","node","List","renderItem","onAdd","onRemove","compareFn","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","debounce","max","min","onInput","step","handleInput","validity","valid","parseFloat","undefined","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","Simple","onBlur","onFocus","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","validate","error","setError","invalidValueCache","setInvalidValueCache","prevValue","err","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Header.js","../src/hooks/usePrevious.js","../src/hooks/useKeyFactory.js","../src/context/DescriptionContext.js","../src/context/LayoutContext.js","../src/hooks/useLayoutState.js","../src/hooks/useDescriptionContext.js","../src/components/Group.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/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":["/**\n * @typedef { { getElementLabel: Function, getTypeLabel: Function, getElementIcon: Function } } 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 getElementLabel,\n getTypeLabel,\n getElementIcon\n } = headerProvider;\n\n const label = getElementLabel(element);\n const type = getTypeLabel(element);\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 { getElementLabel(element) ?\n <div title={ label } class=\"bio-properties-panel-header-label\">{ label }</div> :\n null\n }\n </div>\n </div>);\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 default function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\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 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 LayoutContext = createContext({\n layout: {},\n setLayout: () => {},\n getLayoutForKey: () => {},\n setLayoutForKey: () => {}\n});\n\nexport default LayoutContext;","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 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 {djs.model.Base} 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 {\n useEffect,\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 { 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 } = props;\n\n const [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\n const toggleOpen = () => setOpen(!open);\n\n const [ edited, setEdited ] = 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 return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div class={ classnames(\n 'bio-properties-panel-group-header',\n edited ? '' : 'empty',\n open? 'open' : ''\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 {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return (\n <Component\n { ...entry }\n key={ id }\n element={ element } />\n );\n })\n }\n </div>\n </div>;\n}\n\nfunction DataMarker() {\n return (\n <div title=\"Section contains data\" class=\"bio-properties-panel-dot\"></div>\n );\n}","import {\n useState,\n useEffect\n} from 'preact/hooks';\n\nimport {\n assign,\n get,\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 {\n LayoutContext,\n DescriptionContext\n} from './context';\n\nconst DEFAULT_LAYOUT = {\n open: true\n};\n\nconst DEFAULT_DESCRIPTION = {};\n\n\n/**\n * @typedef { {\n * component: import('preact').Component,\n * id: String,\n * isEdited?: Function\n * } } EntryDefinition\n *\n * @typedef { {\n * autoFocusEntry: String,\n * autoOpen?: Boolean,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String,\n * remove: (event: MouseEvent) => void\n * } } ListItemDefinition\n *\n * @typedef { {\n * add: (event: MouseEvent) => void,\n * component: import('preact').Component,\n * element: Object,\n * id: String,\n * items: Array<ListItemDefinition>,\n * label: String,\n * shouldSort?: Boolean,\n * shouldOpen?: Boolean\n * } } ListGroupDefinition\n *\n * @typedef { {\n * component?: import('preact').Component,\n * entries: Array<EntryDefinition>,\n * id: String,\n * label: String\n * } } GroupDefinition\n *\n * @typedef { {\n * [id: String]: GetDescriptionFunction\n * } } DescriptionConfig\n *\n * @callback { {\n * @param {string} id\n * @param {djs.model.base} element\n * @returns {string}\n * } } GetDescriptionFunction\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} props.element\n * @param {import('./components/Header').HeaderProvider} props.headerProvider\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 */\nexport default function PropertiesPanel(props) {\n const {\n element,\n headerProvider,\n groups,\n layoutConfig = {},\n layoutChanged,\n descriptionConfig = {},\n descriptionLoaded\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 if (!element) {\n return <div class=\"bio-properties-panel-placeholder\">Select an element to edit its properties.</div>;\n }\n\n return <DescriptionContext.Provider value={ descriptionContext }>\n <LayoutContext.Provider value={ layoutContext }>\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 </LayoutContext.Provider>\n </DescriptionContext.Provider>;\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}\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 useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n ArrowIcon,\n DeleteIcon,\n} from '../icons';\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 // 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 {\n entries.map(entry => {\n const {\n component: Component,\n id\n } = entry;\n\n return <Component\n { ...entry }\n key={ id }\n element={ element } />;\n })\n }\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 useEffect,\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\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 [ open, setOpen ] = useLayoutState(\n [ 'groups', id, 'open' ],\n false\n );\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 const toggleOpen = () => setOpen(!open);\n\n const hasItems = !!items.length;\n\n return <div class=\"bio-properties-panel-group\" data-group-id={ 'group-' + id }>\n <div\n class={ classnames(\n 'bio-properties-panel-group-header',\n hasItems ? '' : 'empty',\n (hasItems && open) ? 'open' : ''\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 {\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 return (\n <ListItem\n { ...item }\n element={ element }\n index={ index }\n key={ id }\n\n // if item was added, open first or last item based on ordering\n autoOpen={ newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1) } />\n );\n })\n }\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 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 handleChange = ({ target }) => {\n onChange(target.checked);\n };\n\n return (\n <div class=\"bio-properties-panel-checkbox\">\n <input\n id={ prefixId(id) }\n name={ id }\n type=\"checkbox\"\n class=\"bio-properties-panel-input\"\n onChange={ handleChange }\n checked={ value }\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 return (\n <div class=\"bio-properties-panel-entry bio-properties-panel-checkbox-entry\" data-entry-id={ id }>\n <Checkbox id={ id } label={ label } onChange={ setValue } value={ value } disabled={ disabled } />\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 } = 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 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 } = 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 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 useMemo\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 handleInput = 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 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={ value } />\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 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.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 handleChange = ({ target }) => {\n onChange(target.value);\n };\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 id={ prefixId(id) }\n name={ id }\n class=\"bio-properties-panel-input\"\n onInput={ handleChange }\n value={ value }\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 return (\n <div class=\"bio-properties-panel-entry\" 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 <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} 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 handleInput = useMemo(() => {\n return debounce(({ target }) => setValue(target.value.length ? target.value : undefined));\n }, [ setValue, debounce ]);\n\n const value = getValue(element);\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={ value || '<empty>' }\n onFocus={ onFocus }\n onBlur={ onBlur }\n value={ value || '' } />\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nimport {\n useMemo\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 onInput,\n value = '',\n disabled,\n monospace\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</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={ value }\n disabled={ disabled } />\n </div>\n );\n}\n\n/**\n * @param {object} props\n * @param {object} props.element\n * @param {string} props.id\n * @param {string} props.description\n * @param {boolean} props.debounce\n * @param {string} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {number} props.rows\n * @param {boolean} props.monospace\n * @param {boolean} [props.disabled]\n */\nexport default function TextAreaEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n label,\n getValue,\n setValue,\n rows,\n monospace,\n disabled\n } = props;\n\n const value = getValue(element);\n 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 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';\n\nimport {\n useEffect,\n useMemo,\n useState\n} from 'preact/hooks';\n\nimport classnames from 'classnames';\n\nimport {\n usePrevious\n} from '../../hooks';\n\n\nfunction Textfield(props) {\n\n const {\n debounce,\n disabled = false,\n id,\n label,\n onInput,\n value = ''\n } = props;\n\n const handleInput = useMemo(() => {\n return debounce(({ target }) => onInput(target.value.length ? target.value : undefined));\n }, [ onInput, debounce ]);\n\n return (\n <div class=\"bio-properties-panel-textfield\">\n <label for={ prefixId(id) } class=\"bio-properties-panel-label\">{ label }</label>\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 onFocus={ props.onFocus }\n onBlur={ props.onBlur }\n value={ value || '' } />\n </div>\n );\n}\n\n/**\n * @param {Object} props\n * @param {Object} props.element\n * @param {String} props.id\n * @param {String} props.description\n * @param {Boolean} props.debounce\n * @param {Boolean} props.disabled\n * @param {String} props.label\n * @param {Function} props.getValue\n * @param {Function} props.setValue\n * @param {Function} props.validate\n */\nexport default function TextfieldEntry(props) {\n const {\n element,\n id,\n description,\n debounce,\n disabled,\n label,\n getValue,\n setValue,\n validate\n } = props;\n\n const [ error, setError ] = useState(null);\n const [ invalidValueCache, setInvalidValueCache ] = useState(null);\n\n let value = getValue(element);\n const prevValue = usePrevious(value);\n\n // validate again when value prop changed\n useEffect(() => {\n const err = validate ? validate(value) : null;\n setError(err);\n }, [ value ]);\n\n // validate on change\n const handleChange = (newValue) => {\n const err = validate ? validate(newValue) : null;\n\n if (err) {\n setInvalidValueCache(newValue);\n } else {\n setValue(newValue);\n }\n\n setError(err);\n };\n\n // keep showing invalid value on errors, although it was not set\n if (prevValue === value && error) {\n value = invalidValueCache;\n }\n\n return (\n <div class={ classnames(\n 'bio-properties-panel-entry',\n error ? 'has-error' : '')\n } data-entry-id={ id }>\n <Textfield id={ id } label={ label } value={ value } onInput={ handleChange } debounce={ debounce } disabled={ disabled } />\n <Description forId={ id } element={ element } value={ description } />\n { error && <div class=\"bio-properties-panel-error\">{ error }</div> }\n </div>\n );\n}\n\nexport function isEdited(node) {\n return node && !!node.value;\n}\n\n\n// helpers /////////////////\n\nfunction prefixId(id) {\n return `bio-properties-panel-${ id }`;\n}\n","import Description from './Description';\n\nfunction ToggleSwitch(props) {\n const {\n id,\n label,\n onInput,\n value,\n switcherLabel\n } = props;\n\n const handleInput = async () => {\n onInput(!value);\n };\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={ value } />\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","getElementLabel","getTypeLabel","getElementIcon","label","type","ElementIcon","_jsxs","_jsx","usePrevious","value","ref","useRef","useEffect","current","KEY_LENGTH","useKeyFactory","dependencies","map","useMemo","Map","getKey","el","key","get","Math","random","toString","slice","set","DescriptionContext","createContext","description","getDescriptionForId","LayoutContext","layout","setLayout","getLayoutForKey","setLayoutForKey","useLayoutState","path","defaultValue","useContext","layoutForKey","useState","setState","newValue","useDescriptionContext","id","Group","entries","open","setOpen","toggleOpen","edited","setEdited","hasOneEditedEntry","find","entry","isEdited","entryNode","domQuery","isFunction","inputNode","classnames","component","Component","_createElement","DataMarker","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","assign","layoutContext","createDescriptionContext","descriptionContext","group","overrides","DropdownButton","class","className","children","menuItems","dropdownRef","menuRef","close","onDropdownToggle","event","contains","target","stopPropagation","onActionClick","action","useGlobalClick","item","index","MenuItem","onClick","separator","ignoredElements","callback","listener","some","document","addEventListener","capture","removeEventListener","HeaderButton","classname","otherProps","CollapsibleEntry","shouldOpen","remove","placeholderLabel","ListItem","autoFocusEntry","autoOpen","focusableInput","select","focus","noop","ListGroup","add","items","shouldSort","ordering","setOrdering","newItemAdded","setNewItemAdded","prevItems","prevElement","elementChanged","shouldHandleEffects","createOrdering","sortItems","length","forEach","includes","push","newOrdering","filter","unshift","keep","o","getItem","hasItems","sortBy","i","toLowerCase","Description","forId","contextDescription","Checkbox","onChange","disabled","handleChange","checked","prefixId","CheckboxEntry","getValue","setValue","node","List","onAdd","onRemove","compareFn","opening","shouldReset","sortedItems","useSortedItems","newItems","useNewItems","addItem","ItemsList","newItem","selector","currentItems","itemsRef","sort","previousItems","NumberField","debounce","max","min","onInput","step","handleInput","validity","valid","parseFloat","undefined","NumberFieldEntry","Select","options","option","idx","SelectEntry","getOptions","Simple","onBlur","onFocus","TextArea","rows","monospace","TextAreaEntry","Textfield","TextfieldEntry","validate","error","setError","invalidValueCache","setInvalidValueCache","prevValue","err","ToggleSwitch","switcherLabel","ToggleSwitchEntry","DEFAULT_DEBOUNCE_TIME","debounceInput","debounceDelay","_debounceInput","fn","debounceTime","isNumber","$inject"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bpmn-io/properties-panel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Library for creating bpmn-io properties panels.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
49
49
|
"@testing-library/preact": "^2.0.1",
|
|
50
50
|
"@testing-library/preact-hooks": "^1.1.0",
|
|
51
|
+
"axe-core": "^4.3.5",
|
|
51
52
|
"babel-loader": "^8.2.2",
|
|
52
53
|
"babel-plugin-inline-react-svg": "^2.0.1",
|
|
53
54
|
"babel-plugin-module-resolver": "^4.1.0",
|