@bpmn-io/properties-panel 0.8.1 → 0.10.2
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 +28 -0
- package/assets/properties-panel.css +5 -17
- package/dist/index.esm.js +1610 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +1651 -0
- package/dist/index.js.map +1 -0
- package/package.json +17 -7
- package/preact/LICENSE +21 -0
- package/preact/README.md +185 -0
- package/preact/compat/dist/compat.js +2 -0
- package/preact/compat/dist/compat.js.map +1 -0
- package/preact/compat/dist/compat.mjs +2 -0
- package/preact/compat/dist/compat.module.js +2 -0
- package/preact/compat/dist/compat.module.js.map +1 -0
- package/preact/compat/dist/compat.umd.js +2 -0
- package/preact/compat/dist/compat.umd.js.map +1 -0
- package/preact/compat/jsx-dev-runtime.js +1 -0
- package/preact/compat/jsx-dev-runtime.mjs +1 -0
- package/preact/compat/jsx-runtime.js +1 -0
- package/preact/compat/jsx-runtime.mjs +1 -0
- package/preact/compat/package.json +19 -0
- package/preact/compat/server.js +15 -0
- package/preact/compat/server.mjs +4 -0
- package/preact/compat/src/Children.js +21 -0
- package/preact/compat/src/PureComponent.js +15 -0
- package/preact/compat/src/forwardRef.js +51 -0
- package/preact/compat/src/index.d.ts +140 -0
- package/preact/compat/src/index.js +175 -0
- package/preact/compat/src/internal.d.ts +47 -0
- package/preact/compat/src/memo.js +34 -0
- package/preact/compat/src/portals.js +80 -0
- package/preact/compat/src/render.js +219 -0
- package/preact/compat/src/scheduler.js +24 -0
- package/preact/compat/src/suspense-list.d.ts +14 -0
- package/preact/compat/src/suspense-list.js +126 -0
- package/preact/compat/src/suspense.d.ts +15 -0
- package/preact/compat/src/suspense.js +270 -0
- package/preact/compat/src/util.js +28 -0
- package/preact/compat/test-utils.js +1 -0
- package/preact/debug/dist/debug.js +2 -0
- package/preact/debug/dist/debug.js.map +1 -0
- package/preact/debug/dist/debug.mjs +2 -0
- package/preact/debug/dist/debug.module.js +2 -0
- package/preact/debug/dist/debug.module.js.map +1 -0
- package/preact/debug/dist/debug.umd.js +2 -0
- package/preact/debug/dist/debug.umd.js.map +1 -0
- package/preact/debug/package.json +18 -0
- package/preact/debug/src/check-props.js +54 -0
- package/preact/debug/src/component-stack.js +146 -0
- package/preact/debug/src/constants.js +3 -0
- package/preact/debug/src/debug.js +442 -0
- package/preact/debug/src/index.js +6 -0
- package/preact/debug/src/internal.d.ts +82 -0
- package/preact/debug/src/util.js +11 -0
- package/preact/devtools/dist/devtools.js +2 -0
- package/preact/devtools/dist/devtools.js.map +1 -0
- package/preact/devtools/dist/devtools.mjs +2 -0
- package/preact/devtools/dist/devtools.module.js +2 -0
- package/preact/devtools/dist/devtools.module.js.map +1 -0
- package/preact/devtools/dist/devtools.umd.js +2 -0
- package/preact/devtools/dist/devtools.umd.js.map +1 -0
- package/preact/devtools/package.json +16 -0
- package/preact/devtools/src/devtools.js +10 -0
- package/preact/devtools/src/index.d.ts +8 -0
- package/preact/devtools/src/index.js +15 -0
- package/preact/dist/preact.js +2 -0
- package/preact/dist/preact.js.map +1 -0
- package/preact/dist/preact.min.js +2 -0
- package/preact/dist/preact.min.js.map +1 -0
- package/preact/dist/preact.mjs +2 -0
- package/preact/dist/preact.module.js +2 -0
- package/preact/dist/preact.module.js.map +1 -0
- package/preact/dist/preact.umd.js +2 -0
- package/preact/dist/preact.umd.js.map +1 -0
- package/preact/hooks/dist/hooks.js +2 -0
- package/preact/hooks/dist/hooks.js.map +1 -0
- package/preact/hooks/dist/hooks.mjs +2 -0
- package/preact/hooks/dist/hooks.module.js +2 -0
- package/preact/hooks/dist/hooks.module.js.map +1 -0
- package/preact/hooks/dist/hooks.umd.js +2 -0
- package/preact/hooks/dist/hooks.umd.js.map +1 -0
- package/preact/hooks/package.json +26 -0
- package/preact/hooks/src/index.d.ts +130 -0
- package/preact/hooks/src/index.js +386 -0
- package/preact/hooks/src/internal.d.ts +75 -0
- package/preact/jsx-runtime/dist/jsxRuntime.js +2 -0
- package/preact/jsx-runtime/dist/jsxRuntime.js.map +1 -0
- package/preact/jsx-runtime/dist/jsxRuntime.mjs +2 -0
- package/preact/jsx-runtime/dist/jsxRuntime.module.js +2 -0
- package/preact/jsx-runtime/dist/jsxRuntime.module.js.map +1 -0
- package/preact/jsx-runtime/dist/jsxRuntime.umd.js +2 -0
- package/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +1 -0
- package/preact/jsx-runtime/package.json +19 -0
- package/preact/jsx-runtime/src/index.d.ts +50 -0
- package/preact/jsx-runtime/src/index.js +72 -0
- package/preact/package.json +268 -0
- package/preact/src/cjs.js +3 -0
- package/preact/src/clone-element.js +39 -0
- package/preact/src/component.js +225 -0
- package/preact/src/constants.js +3 -0
- package/preact/src/create-context.js +68 -0
- package/preact/src/create-element.js +100 -0
- package/preact/src/diff/catch-error.js +38 -0
- package/preact/src/diff/children.js +347 -0
- package/preact/src/diff/index.js +516 -0
- package/preact/src/diff/props.js +158 -0
- package/preact/src/index.d.ts +310 -0
- package/preact/src/index.js +13 -0
- package/preact/src/internal.d.ts +147 -0
- package/preact/src/jsx.d.ts +955 -0
- package/preact/src/options.js +17 -0
- package/preact/src/render.js +74 -0
- package/preact/src/util.js +23 -0
- package/preact/test-utils/dist/testUtils.js +2 -0
- package/preact/test-utils/dist/testUtils.js.map +1 -0
- package/preact/test-utils/dist/testUtils.mjs +2 -0
- package/preact/test-utils/dist/testUtils.module.js +2 -0
- package/preact/test-utils/dist/testUtils.module.js.map +1 -0
- package/preact/test-utils/dist/testUtils.umd.js +2 -0
- package/preact/test-utils/dist/testUtils.umd.js.map +1 -0
- package/preact/test-utils/package.json +19 -0
- package/preact/test-utils/src/index.d.ts +3 -0
- package/preact/test-utils/src/index.js +117 -0
- package/lib/PropertiesPanel.js +0 -126
- package/lib/PropertiesPanel.js.map +0 -1
- package/lib/components/DropdownButton.js +0 -109
- package/lib/components/DropdownButton.js.map +0 -1
- package/lib/components/Group.js +0 -75
- package/lib/components/Group.js.map +0 -1
- package/lib/components/Header.js +0 -49
- package/lib/components/Header.js.map +0 -1
- package/lib/components/HeaderButton.js +0 -16
- package/lib/components/HeaderButton.js.map +0 -1
- package/lib/components/ListGroup.js +0 -167
- package/lib/components/ListGroup.js.map +0 -1
- package/lib/components/ListItem.js +0 -37
- package/lib/components/ListItem.js.map +0 -1
- package/lib/components/entries/Checkbox.js +0 -81
- package/lib/components/entries/Checkbox.js.map +0 -1
- package/lib/components/entries/Collapsible.js +0 -48
- package/lib/components/entries/Collapsible.js.map +0 -1
- package/lib/components/entries/List.js +0 -204
- package/lib/components/entries/List.js.map +0 -1
- package/lib/components/entries/NumberField.js +0 -108
- package/lib/components/entries/NumberField.js.map +0 -1
- package/lib/components/entries/Select.js +0 -107
- package/lib/components/entries/Select.js.map +0 -1
- package/lib/components/entries/Simple.js +0 -56
- package/lib/components/entries/Simple.js.map +0 -1
- package/lib/components/entries/TextArea.js +0 -96
- package/lib/components/entries/TextArea.js.map +0 -1
- package/lib/components/entries/TextField.js +0 -121
- package/lib/components/entries/TextField.js.map +0 -1
- package/lib/components/entries/ToggleSwitch.js +0 -87
- package/lib/components/entries/ToggleSwitch.js.map +0 -1
- package/lib/components/icons/index.js +0 -51
- package/lib/components/icons/index.js.map +0 -1
- package/lib/context/LayoutContext.js +0 -9
- package/lib/context/LayoutContext.js.map +0 -1
- package/lib/context/index.js +0 -2
- package/lib/context/index.js.map +0 -1
- package/lib/features/debounce-input/debounceInput.js +0 -14
- package/lib/features/debounce-input/debounceInput.js.map +0 -1
- package/lib/features/debounce-input/index.js +0 -5
- package/lib/features/debounce-input/index.js.map +0 -1
- package/lib/hooks/index.js +0 -4
- package/lib/hooks/index.js.map +0 -1
- package/lib/hooks/useKeyFactory.js +0 -39
- package/lib/hooks/useKeyFactory.js.map +0 -1
- package/lib/hooks/useLayoutState.js +0 -36
- package/lib/hooks/useLayoutState.js.map +0 -1
- package/lib/hooks/usePrevious.js +0 -16
- package/lib/hooks/usePrevious.js.map +0 -1
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
|
@@ -0,0 +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 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').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(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\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 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 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 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","e","component","DataMarker","DEFAULT_LAYOUT","DEFAULT_DESCRIPTION","PropertiesPanel","groups","layoutConfig","layoutChanged","descriptionConfig","descriptionLoaded","createLayout","config","newLayout","assign","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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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bpmn-io/properties-panel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Library for creating bpmn-io properties panels.",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
6
7
|
"files": [
|
|
7
|
-
"
|
|
8
|
-
"assets"
|
|
8
|
+
"dist",
|
|
9
|
+
"assets",
|
|
10
|
+
"preact"
|
|
9
11
|
],
|
|
10
12
|
"scripts": {
|
|
11
|
-
"all": "run-s lint test",
|
|
12
|
-
"build": "del-cli
|
|
13
|
-
"build:watch": "
|
|
13
|
+
"all": "run-s lint build test",
|
|
14
|
+
"build": "del-cli preact dist && rollup -c",
|
|
15
|
+
"build:watch": "rollup -c --watch",
|
|
14
16
|
"lint": "eslint .",
|
|
15
17
|
"dev": "npm test -- --auto-watch --no-single-run",
|
|
16
18
|
"test": "karma start karma.config.js",
|
|
@@ -41,10 +43,15 @@
|
|
|
41
43
|
"@babel/cli": "^7.14.5",
|
|
42
44
|
"@babel/core": "^7.14.3",
|
|
43
45
|
"@babel/plugin-transform-react-jsx": "^7.14.3",
|
|
46
|
+
"@rollup/plugin-babel": "^5.3.0",
|
|
47
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
48
|
+
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
44
49
|
"@testing-library/preact": "^2.0.1",
|
|
45
50
|
"@testing-library/preact-hooks": "^1.1.0",
|
|
51
|
+
"axe-core": "^4.3.5",
|
|
46
52
|
"babel-loader": "^8.2.2",
|
|
47
53
|
"babel-plugin-inline-react-svg": "^2.0.1",
|
|
54
|
+
"babel-plugin-module-resolver": "^4.1.0",
|
|
48
55
|
"chai": "^4.3.4",
|
|
49
56
|
"copy-webpack-plugin": "^9.0.0",
|
|
50
57
|
"cross-env": "^7.0.3",
|
|
@@ -70,6 +77,9 @@
|
|
|
70
77
|
"puppeteer": "^10.0.0",
|
|
71
78
|
"raw-loader": "^4.0.2",
|
|
72
79
|
"react-svg-loader": "^3.0.3",
|
|
80
|
+
"replace-in-file": "^6.3.2",
|
|
81
|
+
"rollup": "^2.61.0",
|
|
82
|
+
"rollup-plugin-copy": "^3.4.0",
|
|
73
83
|
"sinon": "^11.1.1",
|
|
74
84
|
"sinon-chai": "^3.7.0",
|
|
75
85
|
"sirv-cli": "^1.0.12",
|
package/preact/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2015-present Jason Miller
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/preact/README.md
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://preactjs.com" target="_blank">
|
|
3
|
+
|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
</a>
|
|
7
|
+
</p>
|
|
8
|
+
<p align="center">Fast <b>3kB</b> alternative to React with the same modern API.</p>
|
|
9
|
+
|
|
10
|
+
**All the power of Virtual DOM components, without the overhead:**
|
|
11
|
+
|
|
12
|
+
- Familiar React API & patterns: ES6 Class, hooks, and Functional Components
|
|
13
|
+
- Extensive React compatibility via a simple [preact/compat] alias
|
|
14
|
+
- Everything you need: JSX, <abbr title="Virtual DOM">VDOM</abbr>, [DevTools], <abbr title="Hot Module Replacement">HMR</abbr>, <abbr title="Server-Side Rendering">SSR</abbr>.
|
|
15
|
+
- Highly optimized diff algorithm and seamless hydration from Server Side Rendering
|
|
16
|
+
- Supports all modern browsers and IE11
|
|
17
|
+
- Transparent asynchronous rendering with a pluggable scheduler
|
|
18
|
+
- **Instant production-grade app setup with [Preact CLI](https://github.com/preactjs/preact-cli)**
|
|
19
|
+
|
|
20
|
+
### 💁 More information at the [Preact Website ➞](https://preactjs.com)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<table border="0">
|
|
24
|
+
<tbody>
|
|
25
|
+
<tr>
|
|
26
|
+
<td>
|
|
27
|
+
|
|
28
|
+
[](http://npm.im/preact)
|
|
29
|
+
[](https://chat.preactjs.com)
|
|
30
|
+
[](#backers)
|
|
31
|
+
[](#sponsors)
|
|
32
|
+
|
|
33
|
+
[](https://coveralls.io/github/preactjs/preact)
|
|
34
|
+
[](https://unpkg.com/preact/dist/preact.min.js)
|
|
35
|
+
[](https://unpkg.com/preact/dist/preact.min.js)
|
|
36
|
+
</td>
|
|
37
|
+
<td>
|
|
38
|
+
|
|
39
|
+
<img src="https://saucelabs.com/browser-matrix/preact.svg" title="Browser support matrix">
|
|
40
|
+
|
|
41
|
+
</td>
|
|
42
|
+
</tr>
|
|
43
|
+
</tbody>
|
|
44
|
+
</table>
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
You can find some awesome libraries in the [awesome-preact list](https://github.com/preactjs/awesome-preact) :sunglasses:
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Getting Started
|
|
52
|
+
|
|
53
|
+
> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_
|
|
54
|
+
|
|
55
|
+
The easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible tooling for you, and even keeps things like Webpack and Babel up-to-date as they change. Best of all, it's easy to understand! Start a project or compile for production in a single command (`preact build`), with no configuration needed and best practices baked in! 🙌
|
|
56
|
+
|
|
57
|
+
#### Tutorial: Building UI with Preact
|
|
58
|
+
|
|
59
|
+
With Preact, you create user interfaces by assembling trees of components and elements. Components are functions or classes that return a description of what their tree should output. These descriptions are typically written in [JSX](https://facebook.github.io/jsx/) (shown underneath), or [HTM](https://github.com/developit/htm) which leverages standard JavaScript Tagged Templates. Both syntaxes can express trees of elements with "props" (similar to HTML attributes) and children.
|
|
60
|
+
|
|
61
|
+
To get started using Preact, first look at the render() function. This function accepts a tree description and creates the structure described. Next, it appends this structure to a parent DOM element provided as the second argument. Future calls to render() will reuse the existing tree and update it in-place in the DOM. Internally, render() will calculate the difference from previous outputted structures in an attempt to perform as few DOM operations as possible.
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
import { h, render } from 'preact';
|
|
65
|
+
// Tells babel to use h for JSX. It's better to configure this globally.
|
|
66
|
+
// See https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#usage
|
|
67
|
+
// In tsconfig you can specify this with the jsxFactory
|
|
68
|
+
/** @jsx h */
|
|
69
|
+
|
|
70
|
+
// create our tree and append it to document.body:
|
|
71
|
+
render(<main><h1>Hello</h1></main>, document.body);
|
|
72
|
+
|
|
73
|
+
// update the tree in-place:
|
|
74
|
+
render(<main><h1>Hello World!</h1></main>, document.body);
|
|
75
|
+
// ^ this second invocation of render(...) will use a single DOM call to update the text of the <h1>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Hooray! render() has taken our structure and output a User Interface! This approach demonstrates a simple case, but would be difficult to use as an application grows in complexity. Each change would be forced to calculate the difference between the current and updated structure for the entire application. Components can help here – by dividing the User Interface into nested Components each can calculate their difference from their mounted point. Here's an example:
|
|
79
|
+
|
|
80
|
+
```js
|
|
81
|
+
import { render, h } from 'preact';
|
|
82
|
+
import { useState } from 'preact/hooks';
|
|
83
|
+
|
|
84
|
+
/** @jsx h */
|
|
85
|
+
|
|
86
|
+
const App = () => {
|
|
87
|
+
const [input, setInput] = useState('');
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<div>
|
|
91
|
+
<p>Do you agree to the statement: "Preact is awesome"?</p>
|
|
92
|
+
<input value={input} onChange={e => setInput(e.target.value)} />
|
|
93
|
+
</div>
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
render(<App />, document.body);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Backers
|
|
103
|
+
|
|
104
|
+
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]
|
|
105
|
+
|
|
106
|
+
<a href="https://opencollective.com/preact/backer/0/website" target="_blank"><img src="https://opencollective.com/preact/backer/0/avatar.svg"></a>
|
|
107
|
+
<a href="https://opencollective.com/preact/backer/1/website" target="_blank"><img src="https://opencollective.com/preact/backer/1/avatar.svg"></a>
|
|
108
|
+
<a href="https://opencollective.com/preact/backer/2/website" target="_blank"><img src="https://opencollective.com/preact/backer/2/avatar.svg"></a>
|
|
109
|
+
<a href="https://opencollective.com/preact/backer/3/website" target="_blank"><img src="https://opencollective.com/preact/backer/3/avatar.svg"></a>
|
|
110
|
+
<a href="https://opencollective.com/preact/backer/4/website" target="_blank"><img src="https://opencollective.com/preact/backer/4/avatar.svg"></a>
|
|
111
|
+
<a href="https://opencollective.com/preact/backer/5/website" target="_blank"><img src="https://opencollective.com/preact/backer/5/avatar.svg"></a>
|
|
112
|
+
<a href="https://opencollective.com/preact/backer/6/website" target="_blank"><img src="https://opencollective.com/preact/backer/6/avatar.svg"></a>
|
|
113
|
+
<a href="https://opencollective.com/preact/backer/7/website" target="_blank"><img src="https://opencollective.com/preact/backer/7/avatar.svg"></a>
|
|
114
|
+
<a href="https://opencollective.com/preact/backer/8/website" target="_blank"><img src="https://opencollective.com/preact/backer/8/avatar.svg"></a>
|
|
115
|
+
<a href="https://opencollective.com/preact/backer/9/website" target="_blank"><img src="https://opencollective.com/preact/backer/9/avatar.svg"></a>
|
|
116
|
+
<a href="https://opencollective.com/preact/backer/10/website" target="_blank"><img src="https://opencollective.com/preact/backer/10/avatar.svg"></a>
|
|
117
|
+
<a href="https://opencollective.com/preact/backer/11/website" target="_blank"><img src="https://opencollective.com/preact/backer/11/avatar.svg"></a>
|
|
118
|
+
<a href="https://opencollective.com/preact/backer/12/website" target="_blank"><img src="https://opencollective.com/preact/backer/12/avatar.svg"></a>
|
|
119
|
+
<a href="https://opencollective.com/preact/backer/13/website" target="_blank"><img src="https://opencollective.com/preact/backer/13/avatar.svg"></a>
|
|
120
|
+
<a href="https://opencollective.com/preact/backer/14/website" target="_blank"><img src="https://opencollective.com/preact/backer/14/avatar.svg"></a>
|
|
121
|
+
<a href="https://opencollective.com/preact/backer/15/website" target="_blank"><img src="https://opencollective.com/preact/backer/15/avatar.svg"></a>
|
|
122
|
+
<a href="https://opencollective.com/preact/backer/16/website" target="_blank"><img src="https://opencollective.com/preact/backer/16/avatar.svg"></a>
|
|
123
|
+
<a href="https://opencollective.com/preact/backer/17/website" target="_blank"><img src="https://opencollective.com/preact/backer/17/avatar.svg"></a>
|
|
124
|
+
<a href="https://opencollective.com/preact/backer/18/website" target="_blank"><img src="https://opencollective.com/preact/backer/18/avatar.svg"></a>
|
|
125
|
+
<a href="https://opencollective.com/preact/backer/19/website" target="_blank"><img src="https://opencollective.com/preact/backer/19/avatar.svg"></a>
|
|
126
|
+
<a href="https://opencollective.com/preact/backer/20/website" target="_blank"><img src="https://opencollective.com/preact/backer/20/avatar.svg"></a>
|
|
127
|
+
<a href="https://opencollective.com/preact/backer/21/website" target="_blank"><img src="https://opencollective.com/preact/backer/21/avatar.svg"></a>
|
|
128
|
+
<a href="https://opencollective.com/preact/backer/22/website" target="_blank"><img src="https://opencollective.com/preact/backer/22/avatar.svg"></a>
|
|
129
|
+
<a href="https://opencollective.com/preact/backer/23/website" target="_blank"><img src="https://opencollective.com/preact/backer/23/avatar.svg"></a>
|
|
130
|
+
<a href="https://opencollective.com/preact/backer/24/website" target="_blank"><img src="https://opencollective.com/preact/backer/24/avatar.svg"></a>
|
|
131
|
+
<a href="https://opencollective.com/preact/backer/25/website" target="_blank"><img src="https://opencollective.com/preact/backer/25/avatar.svg"></a>
|
|
132
|
+
<a href="https://opencollective.com/preact/backer/26/website" target="_blank"><img src="https://opencollective.com/preact/backer/26/avatar.svg"></a>
|
|
133
|
+
<a href="https://opencollective.com/preact/backer/27/website" target="_blank"><img src="https://opencollective.com/preact/backer/27/avatar.svg"></a>
|
|
134
|
+
<a href="https://opencollective.com/preact/backer/28/website" target="_blank"><img src="https://opencollective.com/preact/backer/28/avatar.svg"></a>
|
|
135
|
+
<a href="https://opencollective.com/preact/backer/29/website" target="_blank"><img src="https://opencollective.com/preact/backer/29/avatar.svg"></a>
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
## Sponsors
|
|
139
|
+
Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]
|
|
140
|
+
|
|
141
|
+
<a href="https://opencollective.com/preact/sponsor/0/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/0/avatar.svg"></a>
|
|
142
|
+
<a href="https://opencollective.com/preact/sponsor/1/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/1/avatar.svg"></a>
|
|
143
|
+
<a href="https://opencollective.com/preact/sponsor/2/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/2/avatar.svg"></a>
|
|
144
|
+
<a href="https://opencollective.com/preact/sponsor/3/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/3/avatar.svg"></a>
|
|
145
|
+
<a href="https://opencollective.com/preact/sponsor/4/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/4/avatar.svg"></a>
|
|
146
|
+
<a href="https://opencollective.com/preact/sponsor/5/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/5/avatar.svg"></a>
|
|
147
|
+
<a href="https://opencollective.com/preact/sponsor/6/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/6/avatar.svg"></a>
|
|
148
|
+
<a href="https://opencollective.com/preact/sponsor/7/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/7/avatar.svg"></a>
|
|
149
|
+
<a href="https://opencollective.com/preact/sponsor/8/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/8/avatar.svg"></a>
|
|
150
|
+
<a href="https://opencollective.com/preact/sponsor/9/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/9/avatar.svg"></a>
|
|
151
|
+
<a href="https://opencollective.com/preact/sponsor/10/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/10/avatar.svg"></a>
|
|
152
|
+
<a href="https://opencollective.com/preact/sponsor/11/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/11/avatar.svg"></a>
|
|
153
|
+
<a href="https://opencollective.com/preact/sponsor/12/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/12/avatar.svg"></a>
|
|
154
|
+
<a href="https://opencollective.com/preact/sponsor/13/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/13/avatar.svg"></a>
|
|
155
|
+
<a href="https://opencollective.com/preact/sponsor/14/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/14/avatar.svg"></a>
|
|
156
|
+
<a href="https://opencollective.com/preact/sponsor/15/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/15/avatar.svg"></a>
|
|
157
|
+
<a href="https://opencollective.com/preact/sponsor/16/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/16/avatar.svg"></a>
|
|
158
|
+
<a href="https://opencollective.com/preact/sponsor/17/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/17/avatar.svg"></a>
|
|
159
|
+
<a href="https://opencollective.com/preact/sponsor/18/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/18/avatar.svg"></a>
|
|
160
|
+
<a href="https://opencollective.com/preact/sponsor/19/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/19/avatar.svg"></a>
|
|
161
|
+
<a href="https://opencollective.com/preact/sponsor/20/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/20/avatar.svg"></a>
|
|
162
|
+
<a href="https://opencollective.com/preact/sponsor/21/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/21/avatar.svg"></a>
|
|
163
|
+
<a href="https://opencollective.com/preact/sponsor/22/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/22/avatar.svg"></a>
|
|
164
|
+
<a href="https://opencollective.com/preact/sponsor/23/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/23/avatar.svg"></a>
|
|
165
|
+
<a href="https://opencollective.com/preact/sponsor/24/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/24/avatar.svg"></a>
|
|
166
|
+
<a href="https://opencollective.com/preact/sponsor/25/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/25/avatar.svg"></a>
|
|
167
|
+
<a href="https://opencollective.com/preact/sponsor/26/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/26/avatar.svg"></a>
|
|
168
|
+
<a href="https://opencollective.com/preact/sponsor/27/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/27/avatar.svg"></a>
|
|
169
|
+
<a href="https://opencollective.com/preact/sponsor/28/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/28/avatar.svg"></a>
|
|
170
|
+
<a href="https://opencollective.com/preact/sponsor/29/website" target="_blank"><img src="https://opencollective.com/preact/sponsor/29/avatar.svg"></a>
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
MIT
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
[](https://preactjs.com)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
[preact/compat]: https://github.com/preactjs/preact/tree/master/compat
|
|
184
|
+
[hyperscript]: https://github.com/dominictarr/hyperscript
|
|
185
|
+
[DevTools]: https://github.com/preactjs/preact-devtools
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var n=require("../../hooks"),t=require("../..");function e(n,t){for(var e in t)n[e]=t[e];return n}function r(n,t){for(var e in n)if("__source"!==e&&!(e in t))return!0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return!0;return!1}function o(n){this.props=n}function u(n,e){function o(n){var t=this.props.ref,o=t==n.ref;return!o&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!o:r(this.props,n)}function u(e){return this.shouldComponentUpdate=o,t.createElement(n,e)}return u.displayName="Memo("+(n.displayName||n.name)+")",u.prototype.isReactComponent=!0,u.__f=!0,u}(o.prototype=new t.Component).isPureReactComponent=!0,o.prototype.shouldComponentUpdate=function(n,t){return r(this.props,n)||r(this.state,t)};var i=t.options.__b;t.options.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),i&&i(n)};var l="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function f(n){function t(t,r){var o=e({},t);return delete o.ref,n(o,(r=t.ref||r)&&("object"!=typeof r||"current"in r)?r:null)}return t.$$typeof=l,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(n.displayName||n.name)+")",t}var c=function(n,e){return null==n?null:t.toChildArray(t.toChildArray(n).map(e))},a={map:c,forEach:c,count:function(n){return n?t.toChildArray(n).length:0},only:function(n){var e=t.toChildArray(n);if(1!==e.length)throw"Children.only";return e[0]},toArray:t.toChildArray},s=t.options.__e;t.options.__e=function(n,t,e){if(n.then)for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),r.__c(n,t);s(n,t,e)};var p=t.options.unmount;function h(){this.__u=0,this.t=null,this.__b=null}function v(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function d(n){var e,r,o;function u(u){if(e||(e=n()).then(function(n){r=n.default||n},function(n){o=n}),o)throw o;if(!r)throw e;return t.createElement(r,u)}return u.displayName="Lazy",u.__f=!0,u}function x(){this.o=null,this.u=null}t.options.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),p&&p(n)},(h.prototype=new t.Component).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var o=v(r.__v),u=!1,i=function(){u||(u=!0,e.__R=null,o?o(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i)},h.prototype.componentWillUnmount=function(){this.t=[]},h.prototype.render=function(n,r){if(this.__b){if(this.__v.__k){var o=document.createElement("div"),u=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,r,o){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c()}),t.__c.__H=null),null!=(t=e({},t)).__c&&(t.__c.__P===o&&(t.__c.__P=r),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,r,o)})),t}(this.__b,o,u.__O=u.__P)}this.__b=null}var i=r.__e&&t.createElement(t.Fragment,null,n.fallback);return i&&(i.__h=null),[t.createElement(t.Fragment,null,r.__e?null:n.children),i]};var m=function(n,t,e){if(++e[1]===e[0]&&n.u.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.u.size))for(e=n.o;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.o=e=e[2]}};function y(n){return this.getChildContext=function(){return n.context},n.children}function b(n){var e=this,r=n.i;e.componentWillUnmount=function(){t.render(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),n.__v?(e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),t.render(t.createElement(y,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount()}function _(n,e){return t.createElement(b,{__v:n,i:e})}(x.prototype=new t.Component).__e=function(n){var t=this,e=v(t.__v),r=t.u.get(n);return r[0]++,function(o){var u=function(){t.props.revealOrder?(r.push(o),m(t,n,r)):o()};e?e(u):u()}},x.prototype.render=function(n){this.o=null,this.u=new Map;var e=t.toChildArray(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&e.reverse();for(var r=e.length;r--;)this.u.set(e[r],this.o=[1,0,this.o]);return n.children},x.prototype.componentDidUpdate=x.prototype.componentDidMount=function(){var n=this;this.u.forEach(function(t,e){m(n,e,t)})};var S="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,w=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,C=function(n){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function g(n,e,r){return null==e.__k&&(e.textContent=""),t.render(n,e),"function"==typeof r&&r(),n?n.__c:null}function E(n,e,r){return t.hydrate(n,e),"function"==typeof r&&r(),n?n.__c:null}t.Component.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(n){Object.defineProperty(t.Component.prototype,n,{configurable:!0,get:function(){return this["UNSAFE_"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t})}})});var R=t.options.event;function N(){}function O(){return this.cancelBubble}function k(){return this.defaultPrevented}t.options.event=function(n){return R&&(n=R(n)),n.persist=N,n.isPropagationStopped=O,n.isDefaultPrevented=k,n.nativeEvent=n};var A,L={configurable:!0,get:function(){return this.class}},U=t.options.vnode;t.options.vnode=function(n){var e=n.type,r=n.props,o=r;if("string"==typeof e){for(var u in o={},r){var i=r[u];"value"===u&&"defaultValue"in r&&null==i||("defaultValue"===u&&"value"in r&&null==r.value?u="value":"download"===u&&!0===i?i="":/ondoubleclick/i.test(u)?u="ondblclick":/^onchange(textarea|input)/i.test(u+e)&&!C(r.type)?u="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(u)?u=u.toLowerCase():w.test(u)?u=u.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===i&&(i=void 0),o[u]=i)}"select"==e&&o.multiple&&Array.isArray(o.value)&&(o.value=t.toChildArray(r.children).forEach(function(n){n.props.selected=-1!=o.value.indexOf(n.props.value)})),"select"==e&&null!=o.defaultValue&&(o.value=t.toChildArray(r.children).forEach(function(n){n.props.selected=o.multiple?-1!=o.defaultValue.indexOf(n.props.value):o.defaultValue==n.props.value})),n.props=o}e&&r.class!=r.className&&(L.enumerable="className"in r,null!=r.className&&(o.class=r.className),Object.defineProperty(o,"className",L)),n.$$typeof=S,U&&U(n)};var j=t.options.__r;t.options.__r=function(n){j&&j(n),A=n.__c};var D={ReactCurrentDispatcher:{current:{readContext:function(n){return A.__n[n.__c].props.value}}}},M="object"==typeof performance&&"function"==typeof performance.now?performance.now.bind(performance):function(){return Date.now()};function T(n){return t.createElement.bind(null,n)}function F(n){return!!n&&n.$$typeof===S}function I(n){return F(n)?t.cloneElement.apply(null,arguments):n}function W(n){return!!n.__k&&(t.render(null,n),!0)}function P(n){return n&&(n.base||1===n.nodeType&&n)||null}var V=function(n,t){return n(t)},z=t.Fragment,B={useState:n.useState,useReducer:n.useReducer,useEffect:n.useEffect,useLayoutEffect:n.useLayoutEffect,useRef:n.useRef,useImperativeHandle:n.useImperativeHandle,useMemo:n.useMemo,useCallback:n.useCallback,useContext:n.useContext,useDebugValue:n.useDebugValue,version:"16.8.0",Children:a,render:g,hydrate:E,unmountComponentAtNode:W,createPortal:_,createElement:t.createElement,createContext:t.createContext,createFactory:T,cloneElement:I,createRef:t.createRef,Fragment:t.Fragment,isValidElement:F,findDOMNode:P,Component:t.Component,PureComponent:o,memo:u,forwardRef:f,unstable_batchedUpdates:V,StrictMode:z,Suspense:h,SuspenseList:x,lazy:d,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:D};Object.keys(n).forEach(function(t){exports[t]=n[t]}),exports.createElement=t.createElement,exports.createContext=t.createContext,exports.createRef=t.createRef,exports.Fragment=t.Fragment,exports.Component=t.Component,exports.version="16.8.0",exports.Children=a,exports.render=g,exports.hydrate=E,exports.unmountComponentAtNode=W,exports.createPortal=_,exports.createFactory=T,exports.cloneElement=I,exports.isValidElement=F,exports.findDOMNode=P,exports.PureComponent=o,exports.memo=u,exports.forwardRef=f,exports.unstable_batchedUpdates=V,exports.StrictMode=z,exports.Suspense=h,exports.SuspenseList=x,exports.lazy=d,exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=D,exports.default=B,exports.unstable_ImmediatePriority=1,exports.unstable_UserBlockingPriority=2,exports.unstable_NormalPriority=3,exports.unstable_LowPriority=4,exports.unstable_IdlePriority=5,exports.unstable_runWithPriority=function(n,t){return t()},exports.unstable_now=M;
|
|
2
|
+
//# sourceMappingURL=compat.js.map
|