diff options
author | Nick Coutsos <[email protected]> | 2023-06-05 17:21:00 -0400 |
---|---|---|
committer | Nick Coutsos <[email protected]> | 2023-06-05 17:21:00 -0400 |
commit | 82d338570d3fa4fdec230e465f11e76a810057e4 (patch) | |
tree | 280ea7e59b4ad0db35da176a514cfc8cd264b775 /9657.6f4e9f754310b1969c2f.js.map | |
parent | 3dc558a431a727635254cc0a6d2e4c9d33d92b96 (diff) | |
download | keymap-editor-82d338570d3fa4fdec230e465f11e76a810057e4.tar.gz keymap-editor-82d338570d3fa4fdec230e465f11e76a810057e4.zip |
Remove parameters from behavior overlays
Diffstat (limited to '9657.6f4e9f754310b1969c2f.js.map')
-rw-r--r-- | 9657.6f4e9f754310b1969c2f.js.map | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/9657.6f4e9f754310b1969c2f.js.map b/9657.6f4e9f754310b1969c2f.js.map new file mode 100644 index 0000000..4467432 --- /dev/null +++ b/9657.6f4e9f754310b1969c2f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"9657.6f4e9f754310b1969c2f.js","mappings":"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CACpB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,kBAAmB,CAClB,KACA,MAED,iBAAkB,CACjB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,aAAc,CACb,MACA,MAED,mBAAoB,CACnB,MACA,MAED,eAAgB,CACf,MACA,MAED,mBAAoB,CACnB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,eAAgB,CACf,MACA,MAED,cAAe,CACd,MACA,MAED,eAAgB,CACf,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,+BAAgC,CAC/B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,qBAAsB,CACrB,MACA,MAED,cAAe,CACd,MACA,MAED,gBAAiB,CAChB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,mBAAoB,CACnB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,iBAAkB,CACjB,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CACP,IAGD,IAAIG,EAAMX,EAAIE,GAAMhL,EAAKyL,EAAI,GAC7B,OAAOR,EAAoBK,EAAEG,EAAI,IAAIJ,MAAK,WACzC,OAAOJ,EAAoBS,EAAE1L,EAAI,GAClC,GACD,CACA+K,EAAoB9H,KAAO,WAAa,OAAOD,OAAOC,KAAK6H,EAAM,EACjEC,EAAoB/K,GAAK,MACzBrC,EAAOC,QAAUmN","sources":["webpack:///../api/node_modules/lodash/isNumber.js","webpack:///./src/Common/action-button.module.css?ed83","webpack:///./src/Common/ActionButton.js","webpack:///./src/Sources/Clipboard/store.js","webpack:///./src/Sources/Clipboard/styles.module.css?ff1a","webpack:///./src/Sources/Clipboard/FeedbackModalButton.js","webpack:///./src/Sources/Clipboard/updater.js","webpack:///./src/Sources/Clipboard/ClipboardActions.js","webpack:///./src/Sources/Clipboard/FeedbackDialog.js","webpack:///./src/Sources/Clipboard/KeyboardAddButton.js","webpack:///./src/Sources/Clipboard/KeyboardSelector.js","webpack:///./src/Sources/Clipboard/KeymapRawInput.js","webpack:///./src/Sources/Clipboard/MetadataRawInput.js","webpack:///./src/Sources/Clipboard/MetadataSelector.js","webpack:///./src/Sources/Clipboard/KeymapSourceDialog.js","webpack:///./src/Sources/Clipboard/Picker.js","webpack:///./src/Common/action-button.module.css","webpack:///./src/Sources/Clipboard/styles.module.css","webpack:///./node_modules/keymap-editor-contrib/keyboard-data/ lazy ^\\.\\/.*\\.json$ namespace object"],"sourcesContent":["var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\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]!./action-button.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]!./action-button.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './action-button.module.css'\n\nfunction ActionButton ({ children, secondary, className, ...props }) {\n return (\n <button\n className={[\n className,\n styles.action,\n secondary && styles.secondary\n ].join(' ')}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nActionButton.defaultProps = {\n className: ''\n}\n\nexport default ActionButton\n","import cloneDeep from 'lodash/cloneDeep'\nimport { createContext, useMemo, useReducer } from 'react'\nimport { createSlice } from '@reduxjs/toolkit'\n\nconst STORAGE_KEY_KEYBOARDS = 'keymap_editor_clipboard_slots'\nconst STORAGE_KEY_KEYBOARD = `${STORAGE_KEY_KEYBOARDS}:`\nconst STORAGE_KEY_SELECTED_KEYBOARD = 'keymap_editor_clipboard_selected_slot'\n\nconst BLANK_KEYBOARD_ENTRY = JSON.stringify({\n keyboardId: null,\n isCustom: true,\n keymap: null,\n keymapRaw: '',\n metadata: null,\n metadataRaw: ''\n})\n\nfunction initialState () {\n const storedKeyboardId = JSON.parse(localStorage.getItem(STORAGE_KEY_SELECTED_KEYBOARD) || 'null')\n\n const INITIAL_KEYBOARDS = JSON.parse(localStorage.getItem(STORAGE_KEY_KEYBOARDS) || '[]')\n const INITIAL_KEYBOARD_SLOT_ID = storedKeyboardId || INITIAL_KEYBOARDS[0]?.id\n\n const INITIAL_KEYBOARD_DATA = JSON.parse(\n localStorage.getItem(`${STORAGE_KEY_KEYBOARD}${INITIAL_KEYBOARD_SLOT_ID}`) || 'null'\n )\n\n const INITIAL_KEYBOARD_ID = INITIAL_KEYBOARD_DATA?.keyboardId || 'custom'\n const INITIAL_KEYBOARD_IS_CUSTOM = INITIAL_KEYBOARD_DATA?.isCustom || INITIAL_KEYBOARD_ID === 'custom'\n const INITIAL_KEYMAP_PARSED = INITIAL_KEYBOARD_DATA?.keymap\n const INITIAL_KEYMAP_RAW = INITIAL_KEYBOARD_DATA?.keymapRaw\n const INITIAL_METADATA_PARSED = INITIAL_KEYBOARD_DATA?.metadata\n const INITIAL_METADATA_RAW = INITIAL_KEYBOARD_DATA?.metadataRaw\n\n return {\n keyboards: INITIAL_KEYBOARDS,\n selectedKeyboard: INITIAL_KEYBOARD_SLOT_ID,\n modalOpen: !INITIAL_KEYMAP_RAW,\n feedbackModalOpen: false,\n selection: {\n keyboardId: INITIAL_KEYBOARD_ID,\n isCustom: INITIAL_KEYBOARD_IS_CUSTOM,\n keymap: INITIAL_KEYMAP_PARSED,\n keymapRaw: INITIAL_KEYMAP_RAW,\n metadata: INITIAL_METADATA_PARSED,\n metadataRaw: INITIAL_METADATA_RAW\n },\n pending: {}\n }\n}\n\nexport const pickerSlice = createSlice({\n name: 'clipboard-picker',\n initialState,\n reducers: {\n selectedKeyboard (state, action) {\n state.selectedKeyboard = action.payload.keyboard\n\n const key = `${STORAGE_KEY_KEYBOARD}${state.selectedKeyboard}`\n state.selection = JSON.parse(localStorage.getItem(key) || BLANK_KEYBOARD_ENTRY)\n\n localStorage.setItem(STORAGE_KEY_SELECTED_KEYBOARD, JSON.stringify(state.selectedKeyboard))\n },\n addKeyboard (state, action) {\n const { id, name = null } = action.payload\n const keyboard = { id, name }\n\n state.keyboards.push(keyboard)\n localStorage.setItem(STORAGE_KEY_KEYBOARDS, JSON.stringify(state.keyboards))\n localStorage.setItem(`${STORAGE_KEY_KEYBOARD}${id}`, BLANK_KEYBOARD_ENTRY)\n },\n setKeymap (state, action) {\n const { raw, parsed, pending = false } = action.payload\n if (!state.pending) {\n state.pending = cloneDeep(state.selection)\n }\n state.pending.keymap = parsed\n state.pending.keymapRaw = raw\n if (!pending) {\n state.selection.keymap = parsed\n state.selection.keymapRaw = raw\n }\n },\n setMetadata (state, action) {\n const { keyboardId, isCustom = false, raw, parsed, pending = false } = action.payload\n if (pending && !state.pending) {\n state.pending = cloneDeep(state.selection)\n }\n const target = pending ? state.pending : state.selection\n target.keyboardId = keyboardId || target.keyboardId\n target.isCustom = isCustom\n target.metadata = parsed\n target.metadataRaw = raw\n },\n confirmPending (state) {\n state.selection = state.pending\n state.pending = null\n\n // TODO: should have an action to create and select the initial slot and\n // have Picker automatically dispatch when mounted with 0 keyboards.\n if (!state.selectedKeyboard) {\n state.selectedKeyboard = Date.now()\n }\n\n const key = `${STORAGE_KEY_KEYBOARD}${state.selectedKeyboard}`\n localStorage.setItem(key, JSON.stringify(state.selection))\n\n if (!state.keyboards.length) {\n state.keyboards.push({ id: state.selectedKeyboard })\n }\n\n const keyboard = state.keyboards.find(keyboard => keyboard.id === state.selectedKeyboard)\n if (!keyboard.name) {\n keyboard.name = state.selection.metadata.name\n localStorage.setItem(STORAGE_KEY_KEYBOARDS, JSON.stringify(state.keyboards))\n }\n },\n openModal (state) {\n state.modalOpen = true\n state.pending = state.selection\n if (state.pending.metadataRaw && !state.pending.metadata) {\n try {\n state.pending.metadata = JSON.parse(state.pending.metadataRaw)\n } catch (err) {}\n }\n },\n closeModal (state) {\n state.modalOpen = false\n },\n openFeedbackModal (state) { state.feedbackModalOpen = true },\n closeFeedbackModal (state) { state.feedbackModalOpen = false }\n }\n})\n\nfunction useActionDispatchers (dispatch) {\n return useMemo(() => (\n Object.keys(pickerSlice.actions).reduce((actions, action) => {\n actions[action] = (...args) => dispatch(pickerSlice.actions[action](...args))\n return actions\n }, {})\n ), [dispatch])\n}\n\nexport function usePickerStore () {\n const [state, dispatch] = useReducer(pickerSlice.reducer, null, initialState)\n const dispatchers = useActionDispatchers(dispatch)\n\n return [state, dispatchers]\n}\n\nexport const ClipboardContext = createContext([{}, {}])\n\nexport function PickerStore ({ children }) {\n const [state, dispatchers] = usePickerStore()\n\n return (\n <ClipboardContext.Provider value={[state, dispatchers]}>\n {children}\n </ClipboardContext.Provider>\n )\n}\n\nexport function withPickerStore (Component) {\n return props => (\n <PickerStore>\n <Component {...props} />\n </PickerStore>\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 { useContext } from 'react'\n\nimport Icon from '../../Common/Icon'\nimport { ClipboardContext } from './store'\n\nexport default function FeedbackModalButton () {\n const [, { openFeedbackModal }] = useContext(ClipboardContext)\n\n return (\n <button onClick={openFeedbackModal}>\n <Icon name=\"comments\" /> Feedback?\n </button>\n )\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport isEqual from 'lodash/isEqual'\nimport { useCallback, useContext, useMemo } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport applyKeymapChanges from 'keymap-editor-zmk-backend/lib/apply-keymap-changes'\nimport extractKeymapData from 'keymap-editor-zmk-backend/lib/extract-keymap-data'\n\nimport { stripLegacyProperties } from '../../keymap'\nimport { ClipboardContext } from './store'\n\nconst keymapSelector = state => state.keyboard?.keymap\nconst settingsSelector = state => state.experimentalSettings\n\nexport function useKeymapUpdater () {\n const appKeymapState = useSelector(keymapSelector)\n const { enableBehaviorEditing = false } = useSelector(settingsSelector)\n const [{ selection }, actions] = useContext(ClipboardContext)\n\n const updateNeeded = useMemo(() => (\n appKeymapState &&\n selection.keymap &&\n !isEqual(appKeymapState, selection.keymap)\n ), [appKeymapState, selection.keymap])\n\n const update = useCallback(async function () {\n // When opening the clipboard dialog and a previously parsed keymap differs\n // from the app's current keymap state we're probably wanting to update the\n // keymap source\n const { layouts } = selection.metadata\n const preferredLayout = appKeymapState.chosen['zmk,matrix_transform']\n ? appKeymapState.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n const defaultLayout = Object.keys(layouts)[0]\n const { layout } = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n\n try {\n const raw = await applyKeymapChanges(layout, cloneDeep(appKeymapState), selection.keymapRaw, { enableBehaviorEditing })\n const parsed = await extractKeymapData(raw)\n stripLegacyProperties(parsed)\n\n actions.setKeymap({ raw, parsed })\n return raw\n } catch (err) {\n console.error('Failed to update/parse', appKeymapState)\n console.error(err)\n throw err\n }\n }, [appKeymapState, selection, actions, enableBehaviorEditing])\n\n return [updateNeeded, update]\n}\n","import { useCallback, useContext, useState } from 'react'\nimport { ClipboardContext } from './store'\n\nimport styles from './styles.module.css'\nimport FeedbackModalButton from './FeedbackModalButton'\nimport { Button } from '../Controls'\nimport Icon from '../../Common/Icon'\nimport { useKeymapUpdater } from './updater'\n\nexport default function ClipboardActions () {\n const [updateNeeded, update] = useKeymapUpdater()\n const props = { updateNeeded, update }\n\n return (\n <>\n <ModalButton {...props} />\n <CopyButton {...props} />\n <FeedbackModalButton />\n </>\n )\n}\n\nexport function ModalButton ({ updateNeeded, update }) {\n const [{ selectedKeyboard }, { openModal }] = useContext(ClipboardContext)\n const handleOpenModal = useCallback(async () => {\n if (updateNeeded) {\n await update()\n }\n\n openModal()\n }, [openModal, update, updateNeeded])\n\n if (!selectedKeyboard) {\n return\n }\n\n return (\n <Button onClick={handleOpenModal} title=\"View/update keymap code\">\n Keymap\n </Button>\n )\n}\n\nexport function CopyButton ({ updateNeeded, update }) {\n const title = updateNeeded ? 'Copy updated keymap' : 'No changes'\n const [{ selection }] = useContext(ClipboardContext)\n const [isCopiedVisible, showCopied] = useState(false)\n\n const handleCopy = useCallback(async function () {\n try {\n const raw = await update()\n await navigator.clipboard.writeText(raw)\n showCopied(true)\n setTimeout(() => showCopied(false), 1500)\n } catch (err) {\n console.error('Clipboard write failed')\n console.log(err)\n }\n }, [update])\n\n if (!selection.keymap) {\n return null\n }\n\n return (\n <Button\n title={title}\n disabled={!updateNeeded}\n className={styles.copyButton}\n onClick={handleCopy}\n data-show-copied={isCopiedVisible}\n >\n <Icon name={updateNeeded ? 'clipboard-list' : 'clipboard-check'} />\n </Button>\n )\n}\n","import { useContext } from 'react'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Modal from '../../Common/Modal'\nimport Link from '../../Common/Link'\nimport {\n GitHubIssuesLink,\n DiscordProfileLink\n} from '../../Dialogs/support'\n\nimport { ClipboardContext } from './store'\n\nconst discussionUrl = 'https://github.com/nickcoutsos/keymap-editor/discussions/105'\nconst DiscussionLink = (\n <Link external href={discussionUrl}>\n Feature Discussion\n </Link>\n)\n\nexport default function FeedbackDialog () {\n const [, { closeFeedbackModal }] = useContext(ClipboardContext)\n\n return (\n <Modal onDismiss={closeFeedbackModal}>\n <DialogBox dismissText={null}>\n <h2>Beta Feedback</h2>\n <p>Hey, feel free to ignore this!</p>\n <p>\n I just launched this feature very quickly, I hope it's working well\n for you! Your feedback, if you can spare a moment, would be immensely\n helpful to me. This feature is completely browser-based which means I\n have no server analytics, so even just letting me know that it worked\n would be cool!\n </p>\n <p>Good ways to contact me:</p>\n <ul>\n <li>Ping me at {DiscordProfileLink}</li>\n <li>File an issue at {GitHubIssuesLink}</li>\n <li>Join the {DiscussionLink}</li>\n </ul>\n <div style={{ textAlign: 'center' }}>\n <ActionButton onClick={closeFeedbackModal}>\n Back to editor\n </ActionButton>\n </div>\n </DialogBox>\n </Modal>\n )\n}\n","import { useCallback, useContext } from 'react'\n\nimport Icon from '../../Common/Icon'\nimport { ClipboardContext } from './store'\n\nexport default function KeyboardAddButton () {\n const [, { selectedKeyboard, addKeyboard, openModal }] = useContext(ClipboardContext)\n\n const handleAddKeyboard = useCallback(() => {\n const id = Date.now()\n addKeyboard({ id })\n selectedKeyboard({ keyboard: id })\n openModal()\n }, [addKeyboard, selectedKeyboard, openModal])\n\n return (\n <button onClick={handleAddKeyboard}>\n <Icon name=\"gear\" /> Add Keyboard\n </button>\n )\n}\n","import { useCallback, useContext, useMemo } from 'react'\n\nimport { Select } from '../Controls'\nimport { ClipboardContext } from './store'\nimport KeyboardAddButton from './KeyboardAddButton'\n\nexport default function KeyboardSelector () {\n const [{ keyboards, selectedKeyboard: selectedKeyboardId }, { selectedKeyboard }] = useContext(ClipboardContext)\n\n const selectedKeyboardChoice = useMemo(() => (\n keyboards.find(keyboard => keyboard.id === selectedKeyboardId)\n ), [keyboards, selectedKeyboardId])\n\n const handleSelectKeyboard = useCallback(choice => {\n selectedKeyboard({ keyboard: choice.id })\n }, [selectedKeyboard])\n\n if (keyboards.length === 0) {\n return <KeyboardAddButton />\n }\n\n return (\n <Select\n value={selectedKeyboardChoice}\n options={keyboards}\n onChange={handleSelectKeyboard}\n getOptionLabel={option => option.name || '<unnamed>'}\n getOptionValue={option => option.id}\n formatOptionLabel={option => option.name || <em>[unnamed]</em>}\n >\n <KeyboardAddButton />\n </Select>\n )\n}\n","import { useCallback, useEffect, useState } from 'react'\n\nimport extractKeymapData from 'keymap-editor-zmk-backend/lib/extract-keymap-data'\nimport { stripLegacyProperties } from '../../keymap'\n\nexport default function KeymapRaw ({ value, onChange, ...props }) {\n const [{ raw }, setState] = useState({ raw: value, parsed: null })\n\n useEffect(() => {\n setState(state => ({ ...state, raw: value }))\n }, [value, setState])\n\n const handleChange = useCallback(event => {\n const raw = event.target.value\n setState(state => ({ ...state, raw }))\n }, [setState])\n\n useEffect(() => {\n async function parse () {\n // debounce? handle errors?\n const parsed = await extractKeymapData(raw)\n stripLegacyProperties(parsed)\n setState(state => ({ ...state, parsed }))\n onChange({ raw, parsed })\n }\n\n if (raw) {\n parse()\n }\n }, [raw, setState, onChange])\n\n return (\n <textarea\n onChange={handleChange}\n value={raw}\n {...props}\n />\n )\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { validateInfoJson, InfoValidationError } from 'keymap-layout-tools/lib/validate.js'\n\nimport styles from './styles.module.css'\n\nexport default function MetadataRawInput ({ value, onChange, ...props }) {\n const ref = useRef()\n const [{ raw, error }, setState] = useState({ raw: value, parsed: null, error: null })\n\n const handleMetadataChange = useCallback(event => {\n const raw = event.target.value\n let parsed = null\n let error = null\n\n try {\n parsed = JSON.parse(raw)\n validateInfoJson(parsed)\n } catch (err) {\n error = err\n parsed = null\n }\n\n setState({ raw, parsed, error })\n onChange({ raw, parsed })\n }, [setState, onChange])\n\n useEffect(() => {\n setState(state => ({ ...state, raw: value }))\n }, [value, setState])\n\n return (\n <>\n <textarea\n ref={ref}\n onChange={handleMetadataChange}\n value={raw}\n {...props}\n />\n {error && (\n <p className={styles.parseError}>\n {error instanceof InfoValidationError ? error.errors[0] : error.toString()}\n </p>\n )}\n </>\n )\n}\n","import { useCallback, useContext, useMemo, useState } from 'react'\n\nimport keyboardCatalog from 'keymap-editor-contrib/keyboard-catalog.json'\n\nimport useToggle from '../../Common/hooks/use-toggle'\nimport { GitHubWikiLayoutsLink } from '../../Dialogs/support'\nimport { Select } from '../Controls'\nimport MetadataRawInput from './MetadataRawInput'\nimport styles from './styles.module.css'\nimport { ClipboardContext } from './store'\n\nconst choices = [\n { id: 'custom', name: 'Custom...' },\n ...Object.values(keyboardCatalog)\n]\n\nexport default function MetadataSelector ({ value, onChange }) {\n const [{ pending }, actions] = useContext(ClipboardContext)\n\n const [sectionExpanded, toggleSection, expandSection] = useToggle(!pending?.metadataRaw)\n const [selection, setSelection] = useState(value)\n const selectedChoice = useMemo(() => (\n choices.find(choice => choice.id === selection)\n ), [selection])\n\n const handleChange = useCallback(async choice => {\n setSelection(choice.id)\n\n if (choice.id === 'custom') {\n actions.setMetadata({ pending: true, keyboardId: 'custom', isCustom: true, raw: '', parsed: null })\n expandSection()\n } else {\n try {\n const metadata = await import(`keymap-editor-contrib/keyboard-data/${choice.id}.json`)\n actions.setMetadata({ pending: true, isCustom: false, keyboardId: choice.id, parsed: metadata, raw: '' })\n } catch (err) {\n console.error(`Failed to load metadata for ${choice.id}`, err)\n }\n }\n }, [actions, setSelection, expandSection])\n\n const handleMetadataChange = useCallback(({ raw, parsed, errors }) => {\n actions.setMetadata({\n pending: true,\n id: selectedChoice.id,\n custom: selectedChoice.id === 'custom',\n raw,\n parsed,\n errors\n })\n }, [selectedChoice, actions])\n\n return (\n <article className={styles.source} data-expanded={sectionExpanded}>\n <h2>\n <span onClick={toggleSection}>Keyboard</span> {(\n <div\n style={{\n display: 'inline-block',\n fontSize: 'initial',\n fontWeight: 'normal',\n verticalAlign: 'middle'\n }}\n >\n <Select\n value={selectedChoice}\n onChange={handleChange}\n options={choices}\n getOptionValue={option => option.id}\n getOptionLabel={option => option.name}\n />\n </div>\n )}\n </h2>\n {selectedChoice?.id === 'custom' && (\n <section className={styles.sourceContent}>\n <p>\n In order to understand what keyboard you're using and now to display\n it visually, please paste the JSON source metadata file below.\n </p>\n {pending.metadata && (\n <p>Parsed metadata for: {pending.metadata.name}</p>\n )}\n <MetadataRawInput\n cols={80}\n rows={pending.metadata ? 22 : 5}\n wrap=\"off\"\n spellCheck={false}\n value={pending.metadataRaw}\n onChange={handleMetadataChange}\n />\n {!pending.metadata && (\n <div className={styles.metadataHelp}>\n <h3>Not sure what to put here?</h3>\n <p>\n The <em>Keymap Editor</em> app depends on a defined keyboard\n layout both to provide a friendly graphical representation to\n edit and a readable textual representation. You can learn more\n about this at {GitHubWikiLayoutsLink}.\n </p>\n <p>\n Note: If your keyboard works with QMK's Configurator you may\n be able to quickly get a visual representation by pasting the\n contents of that keyboard's <code>info.json</code> file here.\n </p>\n </div>\n )}\n </section>\n )}\n </article>\n )\n}\n","import { useCallback, useContext } from 'react'\n\nimport Modal from '../../Common/Modal'\nimport DialogBox from '../../Common/DialogBox'\nimport ActionButton from '../../Common/ActionButton'\n\nimport { ClipboardContext } from './store'\nimport KeymapRaw from './KeymapRawInput'\nimport MetadataSelector from './MetadataSelector'\n\nexport default function KeymapSourceDialog ({ onSubmit, onCancel }) {\n const [state, actions] = useContext(ClipboardContext)\n const { pending } = state\n\n const handleKeymapChange = useCallback(({ raw, parsed }) => {\n actions.setKeymap({ pending: true, raw, parsed })\n }, [actions])\n\n const handleSubmit = useCallback(() => {\n actions.confirmPending()\n onSubmit({\n keymap: pending.keymap,\n metadata: pending.metadata\n })\n }, [actions, pending, onSubmit])\n\n const disabled = (\n !pending?.metadata ||\n !pending?.keymap\n )\n\n return (\n <Modal onDismiss={onCancel}>\n <DialogBox style={{ maxWidth: '640px', maxHeight: '90vh', overflow: 'auto' }} dismissText={null}>\n <MetadataSelector value={state.selection.keyboardId} />\n\n <h2>Keymap</h2>\n <p>Paste the devicetree source from your <code>.keymap</code> file below.</p>\n <p>\n You can <em>technically</em> make changes directly to the DeviceTree\n code here, but this isn't intended as an editor.\n </p>\n <KeymapRaw\n cols={80}\n rows={22}\n wrap=\"off\"\n spellCheck={false}\n value={state.selection.keymapRaw}\n onChange={handleKeymapChange}\n />\n <p style={{ textAlign: 'center' }}>\n <ActionButton disabled={disabled} onClick={handleSubmit}>Set Keymap</ActionButton>\n <ActionButton onClick={onCancel} secondary>Cancel</ActionButton>\n </p>\n </DialogBox>\n </Modal>\n )\n}\n","import cloneDeep from 'lodash/cloneDeep'\nimport { useCallback, useContext, useEffect, useState } from 'react'\n\nimport { ClipboardContext, withPickerStore } from './store'\nimport ClipboardActions from './ClipboardActions'\nimport FeedbackDialog from './FeedbackDialog'\nimport KeyboardSelector from './KeyboardSelector'\nimport KeymapSourceDialog from './KeymapSourceDialog'\n\nexport function ClipboardPicker ({ onSelect, onError }) {\n const [state, { closeModal }] = useContext(ClipboardContext)\n const [initState, setInitState] = useState(null)\n\n const selectKeymap = useCallback((keymap, metadata) => {\n const { layouts, sensors = [] } = metadata\n const preferredLayout = keymap.chosen['zmk,matrix_transform']\n ? keymap.chosen['zmk,matrix_transform'].replace(/^&/, '')\n : null\n\n if (typeof layouts !== 'object') {\n console.error('Invalid metadata loaded', metadata)\n return\n }\n\n const defaultLayout = Object.keys(layouts)[0]\n const layoutMetadata = (\n layouts[preferredLayout] ||\n layouts[defaultLayout]\n )\n\n onSelect(cloneDeep({\n source: 'clipboard',\n keyboard: '',\n layoutMetadata,\n layout: layoutMetadata.layout,\n keymap,\n sensors\n }))\n }, [onSelect])\n\n useEffect(() => {\n if (state.selection?.keymap && state.selection?.metadata) {\n selectKeymap(state.selection?.keymap, state.selection?.metadata)\n }\n }, [selectKeymap, state.selection?.keymap, state.selection?.metadata])\n\n const handleSelectKeymap = useCallback(({ keymap, metadata }) => {\n selectKeymap(keymap, metadata)\n closeModal()\n }, [selectKeymap, closeModal])\n\n useEffect(() => {\n if (initState) {\n return\n }\n\n setInitState(true)\n\n if (state.selection?.keymap && state.selection?.metadata) {\n selectKeymap(state.selection?.keymap, state.selection?.metadata)\n }\n }, [initState, setInitState, selectKeymap, state])\n\n return (\n <>\n <KeyboardSelector />\n <ClipboardActions />\n {state.modalOpen && (\n <KeymapSourceDialog\n onSubmit={handleSelectKeymap}\n onCancel={closeModal}\n />\n )}\n {state.feedbackModalOpen && <FeedbackDialog />}\n </>\n )\n}\n\nexport default withPickerStore(ClipboardPicker)\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, \"button.pi2Ig8c3Fdh4H2Jpxdo7 {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.Ctpu4E2dZYJ6g8CUGFOF {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.pi2Ig8c3Fdh4H2Jpxdo7[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/action-button.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,6BAA6B;AAC/B;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB\",\"sourcesContent\":[\"button.action {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.secondary {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.action[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"action\": \"pi2Ig8c3Fdh4H2Jpxdo7\",\n\t\"secondary\": \"Ctpu4E2dZYJ6g8CUGFOF\"\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, \".fnnwBtqwiwSQgnuN5sqg h2 {\\n cursor: pointer;\\n}\\n\\n.meN56P3rXkTYWdDY0oZq {\\n height: auto;\\n transition: height 100ms ease-out;\\n}\\n\\n.H4OUxP43w5pZ9RYBB72x {\\n background-color: rgba(0, 0, 0, 0.1);\\n margin: 10px;\\n padding: 0 10px;\\n border-radius: 4px;\\n}\\n\\n[data-expanded=\\\"false\\\"] .meN56P3rXkTYWdDY0oZq {\\n height: 0;\\n overflow: hidden;\\n}\\n\\n[data-expanded=\\\"false\\\"] h2 {\\n margin-bottom: 0;\\n}\\n\\n.lFxBan5aXNzTEl2SGBzU {\\n color: firebrick;\\n background-color: pink;\\n padding: 4px 8px;\\n border-radius: 4px;\\n}\\n\\n.eVrbmh_w8MbnDUOfUD2N {\\n position: relative;\\n}\\n.eVrbmh_w8MbnDUOfUD2N span {\\n font-size: 120%;\\n margin: auto 5px;\\n}\\n\\n.eVrbmh_w8MbnDUOfUD2N[data-show-copied=\\\"true\\\"]::after {\\n content: \\\"Copied!\\\";\\n position: absolute;\\n right: -5px;\\n top: 50%;\\n\\n transform: translate(100%, -50%);\\n background-color: var(--selection);\\n color: white;\\n padding: 10px;\\n border-radius: 4px;\\n\\n animation: normal 1.5s h0IIQBfKFzrLn6r9v5qG;\\n}\\n\\n@keyframes h0IIQBfKFzrLn6r9v5qG {\\n 0% { opacity: 0; width: 0; margin-left: -100%; }\\n 2.5% { opacity: 1; width: auto; }\\n 75% { opacity: 1; margin-left: 0; }\\n 100% { opacity: 0; }\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Sources/Clipboard/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;AACjB;;AAEA;EACE,YAAY;EACZ,iCAAiC;AACnC;;AAEA;EACE,oCAAoC;EACpC,YAAY;EACZ,eAAe;EACf,kBAAkB;AACpB;;AAEA;EACE,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;EAChB,sBAAsB;EACtB,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,kBAAkB;EAClB,WAAW;EACX,QAAQ;;EAER,gCAAgC;EAChC,kCAAkC;EAClC,YAAY;EACZ,aAAa;EACb,kBAAkB;;EAElB,2CAA+B;AACjC;;AAEA;EACE,KAAK,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE;EAC/C,OAAO,UAAU,EAAE,WAAW,EAAE;EAChC,MAAM,UAAU,EAAE,cAAc,EAAE;EAClC,OAAO,UAAU,EAAE;AACrB\",\"sourcesContent\":[\".source h2 {\\n cursor: pointer;\\n}\\n\\n.sourceContent {\\n height: auto;\\n transition: height 100ms ease-out;\\n}\\n\\n.metadataHelp {\\n background-color: rgba(0, 0, 0, 0.1);\\n margin: 10px;\\n padding: 0 10px;\\n border-radius: 4px;\\n}\\n\\n[data-expanded=\\\"false\\\"] .sourceContent {\\n height: 0;\\n overflow: hidden;\\n}\\n\\n[data-expanded=\\\"false\\\"] h2 {\\n margin-bottom: 0;\\n}\\n\\n.parseError {\\n color: firebrick;\\n background-color: pink;\\n padding: 4px 8px;\\n border-radius: 4px;\\n}\\n\\n.copyButton {\\n position: relative;\\n}\\n.copyButton span {\\n font-size: 120%;\\n margin: auto 5px;\\n}\\n\\n.copyButton[data-show-copied=\\\"true\\\"]::after {\\n content: \\\"Copied!\\\";\\n position: absolute;\\n right: -5px;\\n top: 50%;\\n\\n transform: translate(100%, -50%);\\n background-color: var(--selection);\\n color: white;\\n padding: 10px;\\n border-radius: 4px;\\n\\n animation: normal 1.5s popInOut;\\n}\\n\\n@keyframes popInOut {\\n 0% { opacity: 0; width: 0; margin-left: -100%; }\\n 2.5% { opacity: 1; width: auto; }\\n 75% { opacity: 1; margin-left: 0; }\\n 100% { opacity: 0; }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"source\": \"fnnwBtqwiwSQgnuN5sqg\",\n\t\"sourceContent\": \"meN56P3rXkTYWdDY0oZq\",\n\t\"metadataHelp\": \"H4OUxP43w5pZ9RYBB72x\",\n\t\"parseError\": \"lFxBan5aXNzTEl2SGBzU\",\n\t\"copyButton\": \"eVrbmh_w8MbnDUOfUD2N\",\n\t\"popInOut\": \"h0IIQBfKFzrLn6r9v5qG\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./a_dux.json\": [\n\t\t73158,\n\t\t3712\n\t],\n\t\"./bat43.json\": [\n\t\t60888,\n\t\t3712\n\t],\n\t\"./bdn9_rev2.json\": [\n\t\t94591,\n\t\t3712\n\t],\n\t\"./bfo9000.json\": [\n\t\t19684,\n\t\t3712\n\t],\n\t\"./boardsource3x4.json\": [\n\t\t88602,\n\t\t3712\n\t],\n\t\"./boardsource5x12.json\": [\n\t\t8058,\n\t\t3712\n\t],\n\t\"./bt60_v1.json\": [\n\t\t92628,\n\t\t3712\n\t],\n\t\"./bt60_v1_hs.json\": [\n\t\t84628,\n\t\t3712\n\t],\n\t\"./bt60_v2.json\": [\n\t\t9417,\n\t\t3712\n\t],\n\t\"./bt65_v1.json\": [\n\t\t88455,\n\t\t3712\n\t],\n\t\"./bt75_v1.json\": [\n\t\t25397,\n\t\t3712\n\t],\n\t\"./chalice.json\": [\n\t\t7936,\n\t\t3712\n\t],\n\t\"./clog.json\": [\n\t\t31638,\n\t\t3712\n\t],\n\t\"./contra.json\": [\n\t\t42718,\n\t\t3712\n\t],\n\t\"./corne.json\": [\n\t\t26453,\n\t\t3712\n\t],\n\t\"./corneish_zen.json\": [\n\t\t39757,\n\t\t3712\n\t],\n\t\"./cradio.json\": [\n\t\t62089,\n\t\t3712\n\t],\n\t\"./crbn.json\": [\n\t\t48945,\n\t\t3712\n\t],\n\t\"./eek.json\": [\n\t\t63072,\n\t\t3712\n\t],\n\t\"./elephant42.json\": [\n\t\t83634,\n\t\t3712\n\t],\n\t\"./ergodash.json\": [\n\t\t68972,\n\t\t3712\n\t],\n\t\"./eternal_keypad.json\": [\n\t\t69416,\n\t\t3712\n\t],\n\t\"./eternal_keypad_lefty.json\": [\n\t\t56785,\n\t\t3712\n\t],\n\t\"./ferris_rev02.json\": [\n\t\t97365,\n\t\t3712\n\t],\n\t\"./fourier.json\": [\n\t\t14446,\n\t\t3712\n\t],\n\t\"./helix.json\": [\n\t\t73549,\n\t\t3712\n\t],\n\t\"./hummingbird.json\": [\n\t\t98321,\n\t\t3712\n\t],\n\t\"./iris.json\": [\n\t\t55262,\n\t\t3712\n\t],\n\t\"./jian.json\": [\n\t\t46228,\n\t\t3712\n\t],\n\t\"./jiran.json\": [\n\t\t14465,\n\t\t3712\n\t],\n\t\"./jorne.json\": [\n\t\t19151,\n\t\t3712\n\t],\n\t\"./knob_goblin.json\": [\n\t\t71497,\n\t\t3712\n\t],\n\t\"./kyria.json\": [\n\t\t34458,\n\t\t3712\n\t],\n\t\"./kyria_rev2.json\": [\n\t\t70165,\n\t\t3712\n\t],\n\t\"./kyria_rev3.json\": [\n\t\t33669,\n\t\t3712\n\t],\n\t\"./leeloo.json\": [\n\t\t53677,\n\t\t3712\n\t],\n\t\"./lily58.json\": [\n\t\t21479,\n\t\t3712\n\t],\n\t\"./lotus58.json\": [\n\t\t63918,\n\t\t3712\n\t],\n\t\"./m60.json\": [\n\t\t53132,\n\t\t3712\n\t],\n\t\"./microdox.json\": [\n\t\t56792,\n\t\t3712\n\t],\n\t\"./murphpad.json\": [\n\t\t8662,\n\t\t3712\n\t],\n\t\"./naked60.json\": [\n\t\t79707,\n\t\t3712\n\t],\n\t\"./nibble.json\": [\n\t\t58244,\n\t\t3712\n\t],\n\t\"./nice60.json\": [\n\t\t41501,\n\t\t3712\n\t],\n\t\"./osprette.json\": [\n\t\t13467,\n\t\t3712\n\t],\n\t\"./pancake.json\": [\n\t\t19011,\n\t\t3712\n\t],\n\t\"./planck_rev6.json\": [\n\t\t55991,\n\t\t3712\n\t],\n\t\"./preonic_rev3.json\": [\n\t\t47308,\n\t\t3712\n\t],\n\t\"./qaz.json\": [\n\t\t46923,\n\t\t3712\n\t],\n\t\"./quefrency.json\": [\n\t\t23956,\n\t\t3712\n\t],\n\t\"./redox.json\": [\n\t\t17104,\n\t\t3712\n\t],\n\t\"./reviung41.json\": [\n\t\t71414,\n\t\t3712\n\t],\n\t\"./reviung5.json\": [\n\t\t31009,\n\t\t3712\n\t],\n\t\"./romac.json\": [\n\t\t15683,\n\t\t3712\n\t],\n\t\"./romac_plus.json\": [\n\t\t55318,\n\t\t3712\n\t],\n\t\"./s40nc.json\": [\n\t\t56036,\n\t\t3712\n\t],\n\t\"./snap.json\": [\n\t\t24380,\n\t\t3712\n\t],\n\t\"./sofle.json\": [\n\t\t45082,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_corne.json\": [\n\t\t20216,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_lily58.json\": [\n\t\t2674,\n\t\t3712\n\t],\n\t\"./splitkb_aurora_sweep.json\": [\n\t\t9738,\n\t\t3712\n\t],\n\t\"./splitreus62.json\": [\n\t\t47003,\n\t\t3712\n\t],\n\t\"./tg4x.json\": [\n\t\t87454,\n\t\t3712\n\t],\n\t\"./tidbit.json\": [\n\t\t60386,\n\t\t3712\n\t],\n\t\"./two_percent_milk.json\": [\n\t\t67150,\n\t\t3712\n\t],\n\t\"./waterfowl.json\": [\n\t\t14194,\n\t\t3712\n\t],\n\t\"./zmk_uno.json\": [\n\t\t71578,\n\t\t3712\n\t],\n\t\"./zodiark.json\": [\n\t\t12069,\n\t\t3712\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 71554;\nmodule.exports = webpackAsyncContext;"],"names":["baseGetTag","isObjectLike","module","exports","value","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","ActionButton","children","secondary","className","props","styles","join","defaultProps","STORAGE_KEY_KEYBOARDS","STORAGE_KEY_KEYBOARD","STORAGE_KEY_SELECTED_KEYBOARD","BLANK_KEYBOARD_ENTRY","JSON","stringify","keyboardId","isCustom","keymap","keymapRaw","metadata","metadataRaw","initialState","storedKeyboardId","parse","localStorage","getItem","INITIAL_KEYBOARDS","INITIAL_KEYBOARD_SLOT_ID","id","INITIAL_KEYBOARD_DATA","INITIAL_KEYBOARD_ID","INITIAL_KEYBOARD_IS_CUSTOM","INITIAL_KEYMAP_PARSED","INITIAL_KEYMAP_RAW","keyboards","selectedKeyboard","modalOpen","feedbackModalOpen","selection","pending","pickerSlice","createSlice","name","reducers","state","action","payload","keyboard","key","setItem","addKeyboard","push","setKeymap","raw","parsed","cloneDeep","setMetadata","target","confirmPending","Date","now","length","find","openModal","err","closeModal","openFeedbackModal","closeFeedbackModal","ClipboardContext","createContext","PickerStore","dispatch","useReducer","reducer","dispatchers","useMemo","Object","keys","actions","reduce","usePickerStore","Provider","FeedbackModalButton","useContext","onClick","Icon","i","keymapSelector","settingsSelector","experimentalSettings","ClipboardActions","appKeymapState","enableBehaviorEditing","useSelector","isEqual","useCallback","layouts","preferredLayout","chosen","replace","defaultLayout","layout","applyKeymapChanges","extractKeymapData","stripLegacyProperties","console","error","updateNeeded","update","ModalButton","CopyButton","handleOpenModal","title","useState","isCopiedVisible","showCopied","handleCopy","navigator","clipboard","writeText","setTimeout","log","disabled","DiscussionLink","Link","external","href","FeedbackDialog","Modal","onDismiss","DialogBox","dismissText","DiscordProfileLink","GitHubIssuesLink","style","textAlign","KeyboardAddButton","handleAddKeyboard","KeyboardSelector","selectedKeyboardId","selectedKeyboardChoice","handleSelectKeyboard","choice","onChange","getOptionLabel","option","getOptionValue","formatOptionLabel","KeymapRaw","setState","useEffect","handleChange","event","MetadataRawInput","ref","useRef","handleMetadataChange","validateInfoJson","InfoValidationError","errors","toString","choices","values","keyboardCatalog","MetadataSelector","useToggle","sectionExpanded","toggleSection","expandSection","setSelection","selectedChoice","custom","display","fontSize","fontWeight","verticalAlign","cols","rows","wrap","spellCheck","GitHubWikiLayoutsLink","KeymapSourceDialog","onSubmit","onCancel","handleKeymapChange","handleSubmit","maxWidth","maxHeight","overflow","ClipboardPicker","onSelect","onError","initState","setInitState","selectKeymap","sensors","layoutMetadata","source","handleSelectKeymap","Component","___CSS_LOADER_EXPORT___","locals","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","t"],"sourceRoot":""}
\ No newline at end of file |