{"version":3,"file":"8381.8f645ca9725922cd6c71.js","mappings":"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","sources":["webpack:///./src/Common/input.module.css?8347","webpack:///./src/Common/Input.js","webpack:///./src/Keyboard/Behaviors/BehaviorHeader.js","webpack:///./src/Keyboard/Behaviors/styles.module.css?4611","webpack:///./src/Keyboard/Behaviors/PropertyName.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/styles.module.css?9c7d","webpack:///./src/Keyboard/Behaviors/PropertyValue/simple-types.js","webpack:///./src/ValuePicker/ChoicesPicker.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/collection-types.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/BehaviorsPropertyValue.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/BindingsPropertyValue.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/PropertyValue.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/index.js","webpack:///./src/Keyboard/Behaviors/BehaviorEditor.js","webpack:///./src/Keyboard/Behaviors/BetaNoticeDialog.js","webpack:///./src/Keyboard/Behaviors/NewBehaviorModal.js","webpack:///./src/Keyboard/Behaviors/create-behavior.js","webpack:///./src/Keyboard/Behaviors/Behaviors.js","webpack:///./src/Keyboard/Common/Devicetree/nodePropTypes.js","webpack:///./src/Keyboard/Common/Devicetree/NodeIdentifiers.js","webpack:///./src/reducer-util.js","webpack:///./src/Common/input.module.css","webpack:///./src/Keyboard/Behaviors/PropertyValue/styles.module.css","webpack:///./src/Keyboard/Behaviors/styles.module.css"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./input.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./input.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import PropTypes from 'prop-types'\nimport styles from './input.module.css'\n\nexport default function Input ({ validator, required = false, value = '', ...rest }) {\n const error = validator(value) || (!value && required && 'cannot be empty')\n\n return (\n \n \n {error && {error}}\n \n )\n}\n\nInput.propTypes = {\n value: PropTypes.any.isRequired,\n required: PropTypes.bool,\n validator: PropTypes.func\n}\n","import NodeIdentifiers from '../Common/Devicetree/NodeIdentifiers'\n\nexport default function BehaviorHeader (props) {\n const { node } = props\n\n return (\n
\n

{node.properties.compatible.parsed}

\n \n
\n )\n}\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './styles.module.css'\n\nexport default function PropertyName ({ property, schema, required = false }) {\n return (\n <>\n \n {property}\n {required && *}\n \n {schema.deprecatedBy && (\n \n (deprecated)\n \n )}\n \n )\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import Icon from '../../../Common/Icon'\nimport styles from './styles.module.css'\n\nexport function RawPropertyValue ({ prop, schema, onUpdate }) {\n return (\n <>\n onUpdate({\n ...prop,\n raw: e.target.value,\n useRaw: true\n })}\n />\n \n )\n}\n\nexport function ConstPropertyValue ({ schema }) {\n return (\n \n {schema.const}\n \n )\n}\n\nexport function StringPropertyValue ({ prop, schema, onUpdate }) {\n return (\n {\n onUpdate({\n ...prop,\n parsed: e.target.value,\n useRaw: false\n })\n }}\n />\n )\n}\n\nexport function IntegerPropertyValue ({ prop, schema, onUpdate }) {\n return (\n {\n onUpdate({\n ...prop,\n parsed: Number(e.target.value),\n useRaw: false\n })\n }}\n />\n )\n}\n\nexport function BooleanPropertyValue ({ prop, onUpdate }) {\n return (\n {\n onUpdate({\n parsed: !!e.target.checked,\n useRaw: false\n })\n }}\n />\n )\n}\n","import fuzzysort from 'fuzzysort'\nimport PropTypes from 'prop-types'\nimport { useCallback, useMemo } from 'react'\n\nimport ResultList from './ResultList'\nimport SearchFilter from './SearchFilter'\nimport style from './style.module.css'\n\n// TODO: This is only used in behavior editor and should probably be replaced\n// with a customized react-select.\nfunction ChoicesPicker (props) {\n const { choices, prompt, onSelect } = props\n const formattedChoices = useMemo(() => {\n return choices.map(value => ({ value }))\n }, [choices])\n\n const renderSearchResult = useCallback(result => {\n const title = result.search\n ? (\n \n {fuzzysort.highlight(result.search, (v, i) => (\n {v}\n ))}\n \n )\n : (\n \n {result.value}\n \n )\n\n return (\n <>\n {title}\n {result.description &&

{result.description}

}\n \n )\n }, [])\n\n return (\n
\n

{prompt || 'Select'}

\n results && (\n onSelect(choice.value)}\n renderResult={renderSearchResult}\n />\n )}\n />\n
\n )\n}\n\nChoicesPicker.propTypes = {\n choices: PropTypes.arrayOf(PropTypes.stirng).isRequired,\n prompt: PropTypes.string,\n onSelect: PropTypes.func.isRequired\n}\n\nexport default ChoicesPicker\n","import map from 'lodash/map'\nimport { useCallback, useContext, useMemo, useState } from 'react'\nimport ActionButton from '../../../Common/ActionButton'\nimport Icon from '../../../Common/Icon'\nimport Modal from '../../../Common/Modal'\n\nimport { DefinitionsContext } from '../../../Contexts/Definitions'\nimport ChoicesPicker from '../../../ValuePicker/ChoicesPicker'\n\nimport styles from './styles.module.css'\n\nfunction useSchemaChoices (schema) {\n const definitions = useContext(DefinitionsContext)\n return useMemo(() => {\n if (!schema.choices) {\n return []\n }\n\n if (Array.isArray(schema.choices)) {\n return schema.choices\n }\n\n if (!schema.choices.$source) {\n throw new Error('Expected schema.choices.$source')\n }\n\n const source = definitions[schema.choices.$source]\n if (schema.choices.$key) {\n return map(source, schema.choices.$key)\n }\n\n return source\n }, [definitions, schema.choices])\n}\n\nexport function EnumPropertyValue ({ prop = {}, schema, onUpdate }) {\n const choices = schema.enum\n const value = prop.parsed\n const handleChange = useCallback(event => {\n onUpdate({\n ...prop,\n parsed: choices[event.target.value],\n useRaw: false\n })\n }, [prop, choices, onUpdate])\n\n return (\n \n )\n}\n\nexport function MultiSelectPropertyValue ({ prop = {}, schema, onUpdate }) {\n const choices = useSchemaChoices(schema)\n const { parsed: selected = [] } = prop\n const handleChange = useCallback(selected => {\n onUpdate({ ...prop, useRaw: false, parsed: selected })\n }, [prop, onUpdate])\n\n const MultiSelect = choices.length > 20\n ? MultiSelectChips\n : MultiSelectCheckboxes\n\n return (\n \n )\n}\n\nfunction MultiSelectCheckboxes ({ selected, choices, onUpdate }) {\n const handleChange = useCallback(choice => {\n onUpdate(\n selected.includes(choice)\n ? selected.filter(v => v !== choice)\n : [...selected, choice]\n )\n }, [selected, onUpdate])\n\n return (\n
    \n {choices.map((choice, i) => (\n
  1. \n \n
  2. \n ))}\n
\n )\n}\n\nfunction MultiSelectChips ({ selected, choices, onUpdate }) {\n const [adding, setAdding] = useState(false)\n const addChoice = useCallback(choice => {\n onUpdate([...selected, choice])\n setAdding(false)\n }, [setAdding, selected, onUpdate])\n const remove = useCallback(choice => {\n onUpdate(selected.filter(value => value !== choice))\n }, [selected, onUpdate])\n\n // TODO: make these CSS classes more generic if I want to share them between\n // unrelated components. (or refactor the elements themselves)\n return (\n <>\n
    \n {selected.map((choice, i) => (\n
  • \n \n {choice} {(\n remove(choice)}\n />\n )}\n \n
  • \n ))}\n
\n setAdding(true)}>\n Add\n \n {adding && (\n setAdding(false)}>\n \n \n )}\n \n )\n}\n","import compact from 'lodash/compact'\nimport { useCallback, useState } from 'react'\n\nimport Icon from '../../../Common/Icon'\nimport ValuePicker from '../../../ValuePicker'\nimport { replaceIndex, withoutIndex } from '../../../reducer-util'\n\nimport styles from './styles.module.css'\nimport ActionButton from '../../../Common/ActionButton'\n\nexport default function BehaviorssPropertyValue ({ prop = {}, schema = {}, onUpdate }) {\n const { parsed: selection = [] } = prop\n const { length } = schema\n const [editing, setEditing] = useState(null)\n\n const canAddMore = (\n length === undefined || (length && selection.length < length)\n )\n\n const insertPhandle = useCallback(() => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: [...selection, '']\n })\n\n setEditing(selection.length)\n }, [prop, selection, onUpdate, setEditing])\n\n const updatePhandle = useCallback(result => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: replaceIndex(selection, editing, result.code)\n })\n\n setEditing(null)\n }, [prop, selection, editing, onUpdate])\n\n const removePhandle = useCallback(index => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: withoutIndex(selection, index)\n })\n }, [prop, selection, onUpdate])\n\n return (\n
\n
    \n {selection.map((phandle, i) => (\n
  1. \n setEditing(i)}\n >\n {phandle}\n {length !== 1 && (\n {\n event.stopPropagation()\n removePhandle(i)\n }}\n />\n )}\n \n
  2. \n ))}\n
\n {editing !== null && (\n setEditing(null)}\n />\n )}\n {canAddMore && (\n \n Add Behavior\n \n )}\n
\n )\n}\n","import { useCallback } from 'react'\nimport ActionButton from '../../../Common/ActionButton'\nimport Icon from '../../../Common/Icon'\nimport { replaceIndex, withoutIndex } from '../../../reducer-util'\n\nimport Key from '../../Keys/Key'\nimport KeyWrapper from '../../Keys/KeyWrapper'\n\nimport styles from './styles.module.css'\n\nexport default function BindingsPropertyValue ({ prop = {}, onUpdate }) {\n const { parsed: selection = [] } = prop\n\n const insertBinding = useCallback(() => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: [...selection, { value: '', params: [] }]\n })\n }, [prop, selection, onUpdate])\n\n const updateBinding = useCallback((binding, i) => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: replaceIndex(selection, i, binding)\n })\n }, [prop, selection, onUpdate])\n\n const removeBinding = useCallback(index => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: withoutIndex(selection, index)\n })\n }, [prop, selection, onUpdate])\n\n return (\n <>\n
    \n {selection.map((binding, i) => (\n
  1. \n \n updateBinding(binding, i)}\n />\n
    \n {\n e.stopPropagation()\n removeBinding(i)\n }}\n />\n
    \n
    \n
  2. \n ))}\n
\n \n Add binding\n \n \n )\n}\n","import PropTypes from 'prop-types'\n\nimport KeyPositionSelector from '../../Common/KeyPositionSelector'\nimport {\n RawPropertyValue,\n ConstPropertyValue,\n StringPropertyValue,\n IntegerPropertyValue,\n BooleanPropertyValue\n} from './simple-types'\nimport {\n EnumPropertyValue,\n MultiSelectPropertyValue\n} from './collection-types'\nimport BehaviorsPropertyValue from './BehaviorsPropertyValue'\nimport BindingsPropertyValue from './BindingsPropertyValue'\n\nfunction PropertyValue (props) {\n const { schema = {} } = props\n const { type } = schema\n if ('const' in schema) {\n return \n }\n\n if ('enum' in schema) {\n return \n }\n\n if (schema.helper === 'key-position-picker') {\n const { prop = {}, onUpdate } = props\n return (\n {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: value\n })\n }}\n />\n )\n }\n\n if (schema.choices) {\n return \n }\n\n switch (type) {\n case 'string':\n return \n case 'int':\n return \n case 'boolean':\n return \n case 'phandle':\n case 'phandles':\n return \n case 'phandle-array':\n return \n default:\n return \n }\n}\n\nPropertyValue.propTypes = {\n schema: PropTypes.shape({\n type: PropTypes.oneOf([\n 'string',\n 'boolean',\n 'int',\n 'array',\n 'phandle',\n 'phandles',\n 'phandle-array',\n\n 'integer-union'\n ]),\n required: PropTypes.bool,\n description: PropTypes.string,\n default: PropTypes.any,\n const: PropTypes.any,\n helper: PropTypes.any\n }),\n prop: PropTypes.shape({\n parsed: PropTypes.any,\n raw: PropTypes.string\n }),\n onUpdate: PropTypes.func.isRequired\n}\n\nexport default PropertyValue\n","import PropertyValue from './PropertyValue'\n\nexport default PropertyValue\n","import cloneDeep from 'lodash/cloneDeep'\nimport omit from 'lodash/omit'\nimport { useCallback, useContext, useState } from 'react'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Icon from '../../Common/Icon'\nimport Modal from '../../Common/Modal'\nimport { DefinitionsContext } from '../../Contexts/Definitions'\nimport BehaviorHeader from './BehaviorHeader'\nimport PropertyName from './PropertyName'\nimport PropertyValue from './PropertyValue'\nimport styles from './styles.module.css'\n\nfunction BehaviorEditor ({ node, onUpdate, onCancel }) {\n const { behaviors: schemas } = useContext(DefinitionsContext)\n const [pendingChanges, setPendingChanges] = useState(node)\n const schema = schemas[node.properties.compatible?.parsed]\n\n const handlePropNameChange = prop => event => {\n setPendingChanges({\n ...pendingChanges,\n properties: Object.keys(pendingChanges.properties).reduce((acc, key) => {\n const value = pendingChanges.properties[key]\n if (key === prop) {\n key = event.target.value\n }\n\n acc[key] = value\n return acc\n }, {})\n })\n }\n\n const handlePropValueChange = name => value => {\n setPendingChanges({\n ...pendingChanges,\n properties: {\n ...pendingChanges.properties,\n [name]: value\n }\n })\n }\n\n const handleDeleteProp = name => {\n setPendingChanges({\n ...pendingChanges,\n properties: omit(pendingChanges.properties, name)\n })\n }\n\n const confirm = useCallback(() => {\n onUpdate(cloneDeep(pendingChanges))\n }, [pendingChanges, onUpdate])\n\n const schemaProps = schema?.properties || {}\n const propertiesList = (\n schema\n ? Object.keys(schemaProps)\n : Object.keys(pendingChanges.properties)\n ).filter(property => {\n return property !== 'label' && (\n !schemaProps[property]?.deprecatedBy ||\n !!pendingChanges.properties[property]\n )\n })\n\n const propDeprecationMapping = Object.keys(schemaProps).reduce((map, name) => {\n const { deprecatedBy: otherProp } = schemaProps[name]\n if (otherProp) {\n map[otherProp] = name\n }\n return map\n }, {})\n\n const requiredPropertiesList = Object.keys(schemaProps).filter(name => {\n const { required, deprecatedBy } = schemaProps[name]\n const deprecatedProp = propDeprecationMapping[name]\n\n // Ignore this property's \"required\" flag if we currently have a value for\n // another property that either deprecates or is deprecated by this one.\n if ((deprecatedBy || deprecatedProp) in pendingChanges.properties) {\n return false\n }\n\n return required\n })\n\n const requiredPropsMissingValues = requiredPropertiesList.filter(name => (\n !pendingChanges.properties[name]\n ))\n\n return (\n \n \n
\n

Edit {node.name} (&{node.labels[0]})

\n \n\n

Configuration

\n \n \n \n \n \n \n \n \n \n {propertiesList.map((name, i) => (\n \n \n \n \n \n ))}\n \n
PropertyValue
\n {name in schemaProps\n ? (\n \n )\n : (\n \n )}\n \n \n \n {(pendingChanges.properties[name] && !requiredPropertiesList.includes(name)) && (\n handleDeleteProp(name)}\n />\n )}\n
\n {requiredPropertiesList.length > 0 && (\n

\n *Property is required.\n

\n )}\n
\n 0} onClick={confirm}>Okay\n Cancel\n
\n
\n
\n
\n )\n}\n\nexport default BehaviorEditor\n","import DialogBox from '../../Common/DialogBox'\nimport Link from '../../Common/Link'\nimport Modal from '../../Common/Modal'\n\nexport default function BetaNoticeDialog ({ onDismiss }) {\n const issuesLink = (\n \n Keymap Editor Issues\n \n )\n\n return (\n \n \n

Behavior Editing Beta Test

\n

Welcome to the behavior editing beta!

\n\n

\n This feature has been a long time coming, and while it should enable a\n lot of advanced ZMK features through the app it is still a work in\n progress. Some features are still missing so the use experience is a\n little rough, and there may be errors as well. Some familiarity with\n ZMK behavior functionality is expected.\n

\n\n

\n I've been using it for a while and it seems to be in a pretty workable\n state, but I can't catch everything, so it would mean a lot to me for\n you to share any feedback or issues on GitHub: {issuesLink}.\n

\n
\n
\n )\n}\n","import PropTypes from 'prop-types'\nimport { useMemo, useState } from 'react'\n\nimport { behaviorSchemas } from 'zmk-data/behaviors'\n\nimport ActionButton from '../../Common/ActionButton'\nimport { Select } from '../../Sources/Controls'\n\nimport DialogBox from '../../Common/DialogBox'\nimport Modal from '../../Common/Modal'\n\nconst knownBehaviorTypes = [\n 'zmk,behavior-hold-tap',\n 'zmk,behavior-mod-morph',\n 'zmk,behavior-tap-dance',\n 'zmk,behavior-sticky-key',\n 'zmk,behavior-caps-word',\n 'zmk,behavior-sensor-rotate',\n 'zmk,behavior-sensor-rotate-var'\n]\n\nconst options = knownBehaviorTypes.map(value => ({ value, label: behaviorSchemas[value].description }))\n\nfunction NewBehaviorModal ({ onUpdate, onCancel }) {\n const [pendingSelection, setPendingSelection] = useState('')\n const selected = useMemo(() => options.find(option => option.value === pendingSelection), [pendingSelection])\n\n return (\n \n \n

Add new behavior

\n \n
\n onUpdate(pendingSelection)}\n >\n Create\n \n Cancel\n
\n
\n
\n )\n}\n\nNewBehaviorModal.propTypes = {\n onUpdate: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired\n}\n\nexport default NewBehaviorModal\n","import times from 'lodash/times'\nimport { behaviorSchemas } from 'zmk-data/behaviors'\n\nfunction isBindingType (propSchema) {\n return ['phandle', 'phandles', 'phandle-array'].includes(propSchema.type)\n}\n\nexport function createBehavior (compatible, { name, labels, label }) {\n const schema = behaviorSchemas[compatible]\n return {\n name,\n labels,\n properties: {\n compatible: {\n raw: `\"${compatible}\"`,\n parsed: compatible\n },\n label: {\n raw: `\"${label}\"`,\n parsed: label\n },\n ...Object.keys(schema.properties).reduce((props, prop) => {\n const propSchema = schema.properties[prop]\n if (isBindingType(propSchema) && propSchema.length) {\n props[prop] = {\n parsed: times(propSchema.length, () => '&none')\n }\n } else if ('const' in propSchema) {\n props[prop] = {\n parsed: propSchema.const,\n // this isn't right but conveniently only affects #binding-cells\n // which is an integer and which we never need to use as a raw value\n raw: `<${propSchema.const.toString()}>`\n }\n }\n\n return props\n }, {})\n }\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport ActionButton from '../../Common/ActionButton'\nimport Icon from '../../Common/Icon'\nimport BehaviorEditor from './BehaviorEditor'\nimport BetaNoticeDialog from './BetaNoticeDialog'\nimport NewBehaviorModal from './NewBehaviorModal'\nimport styles from './styles.module.css'\nimport { createBehavior } from './create-behavior'\nimport {\n selectBehaviors,\n addBehavior,\n deleteBehavior,\n updateBehavior\n} from './behaviorsSlice'\n\nimport { selectMacros } from '../Macros/macrosSlice'\n\nfunction Behaviors () {\n const experimentalSettings = useSelector(state => state.experimentalSettings)\n const macros = useSelector(selectMacros)\n\n const [editing, setEditing] = useState(null)\n const [creating, setCreating] = useState(false)\n const [betaDisclaimerVisible, setBetaDisclaimerVisible] = useState(false)\n const behaviors = useSelector(selectBehaviors)\n const dispatch = useDispatch()\n\n const handleAdd = useCallback(() => {\n setCreating(true)\n }, [setCreating])\n\n const handleAddPending = useCallback(compatible => {\n setCreating(false)\n dispatch(addBehavior({\n behavior: createBehavior(compatible, {\n name: 'new_behavior',\n labels: ['new_behavior'],\n label: 'NEW_BEHAVIOR'\n })\n }))\n\n setTimeout(() => setEditing(behaviors.length))\n }, [behaviors, dispatch, setCreating, setEditing])\n\n const handleEdit = useCallback(index => {\n setEditing(index)\n }, [setEditing])\n\n const handleDelete = useCallback((index) => {\n dispatch(deleteBehavior({ behaviorIndex: index }))\n }, [dispatch])\n\n const showBetaDialog = useCallback(event => {\n event.stopPropagation()\n setBetaDisclaimerVisible(true)\n }, [setBetaDisclaimerVisible])\n\n const hideBetaDialog = useCallback(() => {\n setBetaDisclaimerVisible(false)\n }, [setBetaDisclaimerVisible])\n\n const toggleBeta = useCallback(enableBehaviorEditing => {\n dispatch({\n type: 'SETTINGS_UPDATE',\n settings: {\n ...experimentalSettings,\n enableBehaviorEditing\n }\n })\n }, [experimentalSettings, dispatch])\n\n return (\n
\n\n {creating && (\n setCreating(false)}\n />\n )}\n\n {editing !== null && (\n setEditing(null)}\n onUpdate={behavior => {\n setEditing(null)\n dispatch(updateBehavior({\n behaviorIndex: editing,\n behavior,\n macros\n }))\n }}\n />\n )}\n\n {betaDisclaimerVisible && (\n \n )}\n\n
\n \n\n \n Details\n \n\n

Custom Behaviors

\n \n \n \n \n \n \n \n \n \n {behaviors.map((behavior, i) => (\n \n \n \n \n \n ))}\n \n
BindingCompatibleActions
&{behavior.labels[0]}{behavior.properties.compatible.raw}\n {experimentalSettings.enableBehaviorEditing && (\n <>\n handleEdit(i)} name=\"wrench\" />\n handleDelete(i)} name=\"trash-can\" />\n \n )}\n
\n\n \n Add New Behavior\n \n
\n
\n )\n}\n\nexport default Behaviors\n","import PropTypes from 'prop-types'\n\nexport const propValueShape = {\n useRaw: PropTypes.bool,\n raw: PropTypes.string,\n parsed: PropTypes.any\n}\n\nexport const devicetreeNodeShape = {\n name: PropTypes.string.isRequired,\n labels: PropTypes.arrayOf(PropTypes.string).isRequired,\n properties: PropTypes.objectOf(function (propValue, key, componentName, location, propFullName) {\n try {\n PropTypes.checkPropTypes({\n propValue: PropTypes.shape(propValueShape).isRequired\n }, { propValue }, location, componentName)\n } catch (err) {\n return new Error(\n 'Invalid prop `' + propFullName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.'\n )\n }\n }).isRequired\n}\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Input from '../../../Common/Input'\nimport { devicetreeNodeShape } from './nodePropTypes'\nimport {\n validateDevicetreeLabel,\n validateDevicetreeNodeName\n} from './validators'\n\n// TODO: break this apart to match individual toggles\nfunction isCombined (node) {\n const { name } = node\n const { labels: [nodeLabel] = [] } = node\n const { label: labelProp } = node.properties\n\n return (\n name.toLowerCase() === (nodeLabel || '').toLowerCase() &&\n name.toLowerCase() === (labelProp?.parsed || '').toLowerCase()\n )\n}\n\nexport default function NodeIdentifiers ({ node, onUpdate }) {\n // TODO: trigger value updates when toggling\n const [nameFromBind, setNameFromBind] = useState(isCombined(node))\n const [labelFromBind, setLabelFromBind] = useState(isCombined(node))\n const [\n handleUpdateNodeName,\n handleUpdateNodeLabel,\n handleUpdateLabelProperty\n ] = useIdentifierUpdaters(node, onUpdate, nameFromBind, labelFromBind)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Bind\n \n
Node\n \n \n
Label\n null}\n onChange={handleUpdateLabelProperty}\n />\n \n
\n )\n}\n\nfunction useIdentifierUpdaters (node, onUpdate, nameFromBind, labelFromBind) {\n const handleUpdateNodeName = useCallback(e => {\n onUpdate({ ...node, name: e.target.value })\n }, [node, onUpdate])\n\n const handleUpdateNodeLabel = useCallback(e => {\n const { value } = e.target\n const labels = [value, ...node.labels.slice(1)]\n const name = nameFromBind ? value : node.name\n const properties = labelFromBind\n ? {\n ...node.properties,\n label: {\n parsed: value.toUpperCase(),\n raw: `\"${value.toUpperCase()}\"`,\n useRaw: false\n }\n }\n : node.properties\n\n onUpdate({ ...node, name, labels, properties })\n }, [node, onUpdate, nameFromBind, labelFromBind])\n\n const handleUpdateLabelProperty = useCallback(e => onUpdate({\n ...node,\n properties: {\n ...node.properties,\n label: {\n ...node.properties.label,\n parsed: e.target.value,\n useRaw: false\n }\n }\n }), [node, onUpdate])\n\n return [\n handleUpdateNodeName,\n handleUpdateNodeLabel,\n handleUpdateLabelProperty\n ]\n}\n\nNodeIdentifiers.propTypes = {\n node: PropTypes.shape(devicetreeNodeShape).isRequired,\n onUpdate: PropTypes.func.isRequired\n}\n","\nexport const withoutIndex = (array, index) => [\n ...array.slice(0, index),\n ...array.slice(index + 1)\n]\n\nexport const replaceIndex = (array, index, value) => [\n ...array.slice(0, index),\n value,\n ...array.slice(index + 1)\n]\n\nexport function repositionElement (array, index, target) {\n if (target === -1) {\n return [...array.filter((_, i) => i !== index), array[index]]\n }\n\n const reordered = array.reduce((arr, val, i) => {\n if (i === target) arr.push(array[index])\n if (i !== index) arr.push(val)\n return arr\n }, [])\n\n return reordered\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".OaJISbD1WCmb03at77EG {\\n position: relative;\\n}\\n\\n.MUN9De8dUvbPGH9cEDoQ {\\n position: absolute;\\n z-index: 10;\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n max-width: 250px;\\n width: 100%;\\n\\n border-radius: 4px;\\n padding: 3px 5px;\\n\\n color: white;\\n background-color: var(--error-highlight);\\n font-size: 85%;\\n font-family: sans-serif;\\n\\n opacity: 0.9;\\n}\\n.MUN9De8dUvbPGH9cEDoQ::before {\\n position: absolute;\\n display: block;\\n content: ' ';\\n z-index: -1;\\n\\n left: 50%;\\n width: 10px;\\n height: 10px;\\n\\n background-color: var(--error-highlight);\\n transform: translate(-50%, -7px) rotate(45deg);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/input.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,gCAAgC;EAChC,gBAAgB;EAChB,WAAW;;EAEX,kBAAkB;EAClB,gBAAgB;;EAEhB,YAAY;EACZ,wCAAwC;EACxC,cAAc;EACd,uBAAuB;;EAEvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;EACZ,WAAW;;EAEX,SAAS;EACT,WAAW;EACX,YAAY;;EAEZ,wCAAwC;EACxC,8CAA8C;AAChD\",\"sourcesContent\":[\".wrapper {\\n position: relative;\\n}\\n\\n.error {\\n position: absolute;\\n z-index: 10;\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n max-width: 250px;\\n width: 100%;\\n\\n border-radius: 4px;\\n padding: 3px 5px;\\n\\n color: white;\\n background-color: var(--error-highlight);\\n font-size: 85%;\\n font-family: sans-serif;\\n\\n opacity: 0.9;\\n}\\n.error::before {\\n position: absolute;\\n display: block;\\n content: ' ';\\n z-index: -1;\\n\\n left: 50%;\\n width: 10px;\\n height: 10px;\\n\\n background-color: var(--error-highlight);\\n transform: translate(-50%, -7px) rotate(45deg);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"OaJISbD1WCmb03at77EG\",\n\t\"error\": \"MUN9De8dUvbPGH9cEDoQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".S3t60CK1JCROFIrRlm4j [readonly] {\\n cursor: not-allowed;\\n color: gray;\\n outline: gray;\\n}\\n\\ninput.S3t60CK1JCROFIrRlm4j[type=\\\"text\\\"],\\ninput.S3t60CK1JCROFIrRlm4j[type=\\\"number\\\"],\\nselect.S3t60CK1JCROFIrRlm4j {\\n width: 100%;\\n}\\n\\nol.MedG7SPG2ge2h7j2yqrJ {\\n list-style-type: none;\\n margin-top: 0;\\n padding: 0;\\n}\\n.V50Bekt6td9yQOSiDGdx {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.V50Bekt6td9yQOSiDGdx li {\\n display: inline-block;\\n line-height: 2rem;\\n}\\nol.QNg3v6_eJoK7_qV0_y9n {\\n margin: 0;\\n}\\nol.QNg3v6_eJoK7_qV0_y9n li {\\n line-height: 2rem;\\n}\\nol.u65C3Uji7covMUn996dR {\\n list-style-type: none;\\n padding: 0;\\n}\\n.xp5u4Uo4X2fxxX9KwwXu {\\n cursor: pointer;\\n margin: 2px;\\n padding: 5px;\\n font-family: monospace;\\n border-radius: 1rem;\\n background-color: var(--key-bg-base);\\n}\\n.xp5u4Uo4X2fxxX9KwwXu:hover {\\n background-color: var(--hover-selection);\\n color: white;\\n}\\n\\n.gpFGP00LCwlGjK6yrGWw {\\n vertical-align: text-bottom;\\n margin: 0 2px;\\n}\\n.gpFGP00LCwlGjK6yrGWw:hover {\\n color: black;\\n}\\n\\n.gsAzkKxnfzTcp5ApwmWS {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 10px;\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n}\\n\\n/* Copied from MacroEditor :( */\\n.KrcWDYfRVRfvRhpsBFxs {\\n visibility: hidden;\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n font-size: 80%;\\n\\n color: var(--key-color-hover);\\n}\\n.KrcWDYfRVRfvRhpsBFxs > * {\\n margin: 2px;\\n opacity: 0.5;\\n cursor: pointer;\\n}\\n.gsAzkKxnfzTcp5ApwmWS li :hover .KrcWDYfRVRfvRhpsBFxs {\\n visibility: visible;\\n z-index: 10;\\n}\\n\\n.KrcWDYfRVRfvRhpsBFxs :hover {\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Behaviors/PropertyValue/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,mBAAmB;EACnB,WAAW;EACX,aAAa;AACf;;AAEA;;;EAGE,WAAW;AACb;;AAEA;EACE,qBAAqB;EACrB,aAAa;EACb,UAAU;AACZ;AACA;EACE,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,qBAAqB;EACrB,iBAAiB;AACnB;AACA;EACE,SAAS;AACX;AACA;EACE,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,UAAU;AACZ;AACA;EACE,eAAe;EACf,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,mBAAmB;EACnB,oCAAoC;AACtC;AACA;EACE,wCAAwC;EACxC,YAAY;AACd;;AAEA;EACE,2BAA2B;EAC3B,aAAa;AACf;AACA;EACE,YAAY;AACd;;AAEA;EACE,aAAa;EACb,eAAe;EACf,SAAS;EACT,qBAAqB;EACrB,UAAU;EACV,SAAS;AACX;;AAEA,+BAA+B;AAC/B;EACE,kBAAkB;EAClB,kBAAkB;EAClB,QAAQ;EACR,UAAU;EACV,cAAc;;EAEd,6BAA6B;AAC/B;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;AACjB;AACA;EACE,mBAAmB;EACnB,WAAW;AACb;;AAEA;EACE,UAAU;AACZ\",\"sourcesContent\":[\".propertyValue [readonly] {\\n cursor: not-allowed;\\n color: gray;\\n outline: gray;\\n}\\n\\ninput.propertyValue[type=\\\"text\\\"],\\ninput.propertyValue[type=\\\"number\\\"],\\nselect.propertyValue {\\n width: 100%;\\n}\\n\\nol.propertyMultiSelect {\\n list-style-type: none;\\n margin-top: 0;\\n padding: 0;\\n}\\n.propertyMultiSelectChips {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.propertyMultiSelectChips li {\\n display: inline-block;\\n line-height: 2rem;\\n}\\nol.propertyPhandleSelect {\\n margin: 0;\\n}\\nol.propertyPhandleSelect li {\\n line-height: 2rem;\\n}\\nol.propertyPhandleSingleton {\\n list-style-type: none;\\n padding: 0;\\n}\\n.behaviorBind {\\n cursor: pointer;\\n margin: 2px;\\n padding: 5px;\\n font-family: monospace;\\n border-radius: 1rem;\\n background-color: var(--key-bg-base);\\n}\\n.behaviorBind:hover {\\n background-color: var(--hover-selection);\\n color: white;\\n}\\n\\n.phandleRemove {\\n vertical-align: text-bottom;\\n margin: 0 2px;\\n}\\n.phandleRemove:hover {\\n color: black;\\n}\\n\\n.propertyBindingsValue {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 10px;\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n}\\n\\n/* Copied from MacroEditor :( */\\n.actions {\\n visibility: hidden;\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n font-size: 80%;\\n\\n color: var(--key-color-hover);\\n}\\n.actions > * {\\n margin: 2px;\\n opacity: 0.5;\\n cursor: pointer;\\n}\\n.propertyBindingsValue li :hover .actions {\\n visibility: visible;\\n z-index: 10;\\n}\\n\\n.actions :hover {\\n opacity: 1;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"propertyValue\": \"S3t60CK1JCROFIrRlm4j\",\n\t\"propertyMultiSelect\": \"MedG7SPG2ge2h7j2yqrJ\",\n\t\"propertyMultiSelectChips\": \"V50Bekt6td9yQOSiDGdx\",\n\t\"propertyPhandleSelect\": \"QNg3v6_eJoK7_qV0_y9n\",\n\t\"propertyPhandleSingleton\": \"u65C3Uji7covMUn996dR\",\n\t\"behaviorBind\": \"xp5u4Uo4X2fxxX9KwwXu\",\n\t\"phandleRemove\": \"gpFGP00LCwlGjK6yrGWw\",\n\t\"propertyBindingsValue\": \"gsAzkKxnfzTcp5ApwmWS\",\n\t\"actions\": \"KrcWDYfRVRfvRhpsBFxs\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".kcj881bnLDph62EcKelj {\\n padding-bottom: 60px;\\n}\\n\\n.GeuMxQtBvZYr0nOURDHd {\\n display: flex;\\n width: 190px;\\n flex-direction: column;\\n padding: 10px;\\n gap: 10px;\\n position: fixed;\\n}\\n\\n.NqlHG1MKBiOUUFAed3CM {\\n max-width: 700px;\\n margin: 0 auto;\\n padding-bottom: 60px;\\n}\\n\\n.NqlHG1MKBiOUUFAed3CM table {\\n border-spacing: 0;\\n}\\n.NqlHG1MKBiOUUFAed3CM table thead {\\n text-align: left;\\n}\\n\\n.NqlHG1MKBiOUUFAed3CM table tbody tr td {\\n padding: 10px;\\n margin: 0;\\n}\\n.NqlHG1MKBiOUUFAed3CM table tbody tr:nth-child(even) {\\n background-color: var(--key-bg-base);\\n}\\n\\n.Q3_rmo3XiEVg8qfXgKX_ {\\n cursor: pointer;\\n padding: 5px;\\n opacity: 0.6;\\n}\\n.Q3_rmo3XiEVg8qfXgKX_:hover {\\n opacity: 1;\\n}\\n\\ntable.czOKx_t_EDF44pilzyzA { max-height: 80vh; }\\ntable.czOKx_t_EDF44pilzyzA th { text-align: left }\\ntable.czOKx_t_EDF44pilzyzA input { font-family: monospace }\\ntable.czOKx_t_EDF44pilzyzA td {\\n padding: 4px;\\n vertical-align: top;\\n}\\ntable.czOKx_t_EDF44pilzyzA .s8rWNi6e8BZ7yQubfDws {\\n font-family: monospace;\\n}\\n.Bux6GxjreGZZkcXqx6kv {\\n display: block;\\n font-style: italic;\\n}\\n\\n.xvIZYbb8L5QbOLcesQ4T {\\n color: red;\\n font-style: italic;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Behaviors/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,oBAAoB;AACtB;;AAEA;EACE,aAAa;EACb,YAAY;EACZ,sBAAsB;EACtB,aAAa;EACb,SAAS;EACT,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,cAAc;EACd,oBAAoB;AACtB;;AAEA;EACE,iBAAiB;AACnB;AACA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,SAAS;AACX;AACA;EACE,oCAAoC;AACtC;;AAEA;EACE,eAAe;EACf,YAAY;EACZ,YAAY;AACd;AACA;EACE,UAAU;AACZ;;AAEA,6BAAmB,gBAAgB,EAAE;AACrC,gCAAsB,iBAAiB;AACvC,mCAAyB,uBAAuB;AAChD;EACE,YAAY;EACZ,mBAAmB;AACrB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,UAAU;EACV,kBAAkB;AACpB\",\"sourcesContent\":[\".main {\\n padding-bottom: 60px;\\n}\\n\\n.sidebar {\\n display: flex;\\n width: 190px;\\n flex-direction: column;\\n padding: 10px;\\n gap: 10px;\\n position: fixed;\\n}\\n\\n.panel {\\n max-width: 700px;\\n margin: 0 auto;\\n padding-bottom: 60px;\\n}\\n\\n.panel table {\\n border-spacing: 0;\\n}\\n.panel table thead {\\n text-align: left;\\n}\\n\\n.panel table tbody tr td {\\n padding: 10px;\\n margin: 0;\\n}\\n.panel table tbody tr:nth-child(even) {\\n background-color: var(--key-bg-base);\\n}\\n\\n.action {\\n cursor: pointer;\\n padding: 5px;\\n opacity: 0.6;\\n}\\n.action:hover {\\n opacity: 1;\\n}\\n\\ntable.editorForm { max-height: 80vh; }\\ntable.editorForm th { text-align: left }\\ntable.editorForm input { font-family: monospace }\\ntable.editorForm td {\\n padding: 4px;\\n vertical-align: top;\\n}\\ntable.editorForm .propertyName {\\n font-family: monospace;\\n}\\n.propertyDeprecation {\\n display: block;\\n font-style: italic;\\n}\\n\\n.requiredIndicator {\\n color: red;\\n font-style: italic;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"main\": \"kcj881bnLDph62EcKelj\",\n\t\"sidebar\": \"GeuMxQtBvZYr0nOURDHd\",\n\t\"panel\": \"NqlHG1MKBiOUUFAed3CM\",\n\t\"action\": \"Q3_rmo3XiEVg8qfXgKX_\",\n\t\"editorForm\": \"czOKx_t_EDF44pilzyzA\",\n\t\"propertyName\": \"s8rWNi6e8BZ7yQubfDws\",\n\t\"propertyDeprecation\": \"Bux6GxjreGZZkcXqx6kv\",\n\t\"requiredIndicator\": \"xvIZYbb8L5QbOLcesQ4T\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","Input","validator","required","value","rest","error","className","styles","type","propTypes","PropTypes","BehaviorHeader","props","node","properties","compatible","parsed","NodeIdentifiers","PropertyName","property","schema","title","deprecatedBy","RawPropertyValue","prop","onUpdate","Icon","name","raw","onChange","e","target","useRaw","ConstPropertyValue","join","const","StringPropertyValue","placeholder","default","IntegerPropertyValue","Number","BooleanPropertyValue","checked","ChoicesPicker","choices","prompt","onSelect","formattedChoices","useMemo","map","renderSearchResult","useCallback","result","search","fuzzysort","v","i","description","style","SearchFilter","initialQuery","searchKey","renderResults","results","ResultList","choice","renderResult","isRequired","EnumPropertyValue","enum","handleChange","event","indexOf","MultiSelectPropertyValue","definitions","useContext","DefinitionsContext","Array","isArray","$source","Error","source","$key","useSchemaChoices","selected","MultiSelect","length","MultiSelectChips","MultiSelectCheckboxes","includes","filter","useState","adding","setAdding","addChoice","remove","onClick","ActionButton","secondary","Modal","onDismiss","BehaviorssPropertyValue","selection","editing","setEditing","canAddMore","insertPhandle","updatePhandle","replaceIndex","code","removePhandle","index","withoutIndex","compact","phandle","stopPropagation","ValuePicker","params","slot","context","behaviour","onCancel","BindingsPropertyValue","insertBinding","updateBinding","binding","removeBinding","KeyWrapper","Key","PropertyValue","helper","KeyPositionSelector","schemas","behaviors","pendingChanges","setPendingChanges","handlePropValueChange","confirm","cloneDeep","schemaProps","propertiesList","Object","keys","propDeprecationMapping","reduce","otherProp","requiredPropertiesList","deprecatedProp","requiredPropsMissingValues","DialogBox","dismissText","maxHeight","overflow","labels","acc","key","omit","handleDeleteProp","textAlign","disabled","BetaNoticeDialog","issuesLink","Link","external","href","label","behaviorSchemas","NewBehaviorModal","pendingSelection","setPendingSelection","find","option","formatOptionLabel","opacity","margin","createBehavior","propSchema","isBindingType","times","toString","experimentalSettings","useSelector","state","macros","selectMacros","creating","setCreating","betaDisclaimerVisible","setBetaDisclaimerVisible","selectBehaviors","dispatch","useDispatch","handleAdd","handleAddPending","addBehavior","behavior","setTimeout","handleEdit","handleDelete","deleteBehavior","behaviorIndex","showBetaDialog","hideBetaDialog","toggleBeta","enableBehaviorEditing","settings","updateBehavior","backgroundColor","width","propValueShape","devicetreeNodeShape","propValue","componentName","location","propFullName","err","isCombined","nodeLabel","labelProp","toLowerCase","nameFromBind","setNameFromBind","labelFromBind","setLabelFromBind","slice","toUpperCase","useIdentifierUpdaters","handleUpdateNodeName","handleUpdateNodeLabel","handleUpdateLabelProperty","validateDevicetreeLabel","readOnly","validateDevicetreeNodeName","array","repositionElement","_","arr","val","push","___CSS_LOADER_EXPORT___","module","id","locals"],"sourceRoot":""}