You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
4.8 KiB
1 line
4.8 KiB
{"ast":null,"code":"import '../../../constants/index.mjs';\nimport { EVENT_CODE } from '../../../constants/aria.mjs';\nconst MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nconst getDirectionAwareKey = (key, dir) => {\n if (dir !== \"rtl\") return key;\n switch (key) {\n case EVENT_CODE.right:\n return EVENT_CODE.left;\n case EVENT_CODE.left:\n return EVENT_CODE.right;\n default:\n return key;\n }\n};\nconst getFocusIntent = (event, orientation, dir) => {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [EVENT_CODE.left, EVENT_CODE.right].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [EVENT_CODE.up, EVENT_CODE.down].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n};\nconst reorderArray = (array, atIdx) => {\n return array.map((_, idx) => array[(idx + atIdx) % array.length]);\n};\nconst focusFirst = elements => {\n const {\n activeElement: prevActive\n } = document;\n for (const element of elements) {\n if (element === prevActive) return;\n element.focus();\n if (prevActive !== document.activeElement) return;\n }\n};\nexport { focusFirst, getFocusIntent, reorderArray };","map":{"version":3,"names":["MAP_KEY_TO_FOCUS_INTENT","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","PageUp","Home","PageDown","End","getDirectionAwareKey","key","dir","EVENT_CODE","right","left","getFocusIntent","event","orientation","includes","up","down","reorderArray","array","atIdx","map","_","idx","length","focusFirst","elements","activeElement","prevActive","document","element","focus"],"sources":["../../../../../../packages/components/roving-focus-group/src/utils.ts"],"sourcesContent":["import { EVENT_CODE } from '@element-plus/constants'\nimport type { HTMLAttributes } from 'vue'\n\ntype Orientation = HTMLAttributes['aria-orientation']\ntype Direction = 'ltr' | 'rtl'\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next'\n\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev',\n ArrowUp: 'prev',\n ArrowRight: 'next',\n ArrowDown: 'next',\n PageUp: 'first',\n Home: 'first',\n PageDown: 'last',\n End: 'last',\n}\n\nconst getDirectionAwareKey = (key: string, dir?: Direction) => {\n if (dir !== 'rtl') return key\n\n switch (key) {\n case EVENT_CODE.right:\n return EVENT_CODE.left\n case EVENT_CODE.left:\n return EVENT_CODE.right\n default:\n return key\n }\n}\n\nexport const getFocusIntent = (\n event: KeyboardEvent,\n orientation?: Orientation,\n dir?: Direction\n) => {\n const key = getDirectionAwareKey(event.key, dir)\n if (\n orientation === 'vertical' &&\n [EVENT_CODE.left, EVENT_CODE.right].includes(key)\n )\n return undefined\n if (\n orientation === 'horizontal' &&\n [EVENT_CODE.up, EVENT_CODE.down].includes(key)\n )\n return undefined\n return MAP_KEY_TO_FOCUS_INTENT[key]\n}\n\nexport const reorderArray = <T>(array: T[], atIdx: number) => {\n return array.map((_, idx) => array[(idx + atIdx) % array.length])\n}\n\nexport const focusFirst = (elements: HTMLElement[]) => {\n const { activeElement: prevActive } = document\n\n for (const element of elements) {\n if (element === prevActive) return\n element.focus()\n if (prevActive !== document.activeElement) return\n }\n}\n"],"mappings":";;AACA,MAAMA,uBAAuB,GAAG;EAC9BC,SAAS,EAAE,MAAM;EACjBC,OAAO,EAAE,MAAM;EACfC,UAAU,EAAE,MAAM;EAClBC,SAAS,EAAE,MAAM;EACjBC,MAAM,EAAE,OAAO;EACfC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE,MAAM;EAChBC,GAAG,EAAE;AACP,CAAC;AACD,MAAMC,oBAAoB,GAAGA,CAACC,GAAG,EAAEC,GAAG,KAAK;EACzC,IAAIA,GAAG,KAAK,KAAK,EACf,OAAOD,GAAG;EACZ,QAAQA,GAAG;IACT,KAAKE,UAAU,CAACC,KAAK;MACnB,OAAOD,UAAU,CAACE,IAAI;IACxB,KAAKF,UAAU,CAACE,IAAI;MAClB,OAAOF,UAAU,CAACC,KAAK;IACzB;MACE,OAAOH,GAAG;EAChB;AACA,CAAC;AACW,MAACK,cAAc,GAAGA,CAACC,KAAK,EAAEC,WAAW,EAAEN,GAAG,KAAK;EACzD,MAAMD,GAAG,GAAGD,oBAAoB,CAACO,KAAK,CAACN,GAAG,EAAEC,GAAG,CAAC;EAChD,IAAIM,WAAW,KAAK,UAAU,IAAI,CAACL,UAAU,CAACE,IAAI,EAAEF,UAAU,CAACC,KAAK,CAAC,CAACK,QAAQ,CAACR,GAAG,CAAC,EACjF,OAAO,KAAK,CAAC;EACf,IAAIO,WAAW,KAAK,YAAY,IAAI,CAACL,UAAU,CAACO,EAAE,EAAEP,UAAU,CAACQ,IAAI,CAAC,CAACF,QAAQ,CAACR,GAAG,CAAC,EAChF,OAAO,KAAK,CAAC;EACf,OAAOV,uBAAuB,CAACU,GAAG,CAAC;AACrC;AACY,MAACW,YAAY,GAAGA,CAACC,KAAK,EAAEC,KAAK,KAAK;EAC5C,OAAOD,KAAK,CAACE,GAAG,CAAC,CAACC,CAAC,EAAEC,GAAG,KAAKJ,KAAK,CAAC,CAACI,GAAG,GAAGH,KAAK,IAAID,KAAK,CAACK,MAAM,CAAC,CAAC;AACnE;AACY,MAACC,UAAU,GAAIC,QAAQ,IAAK;EACtC,MAAM;IAAEC,aAAa,EAAEC;EAAU,CAAE,GAAGC,QAAQ;EAC9C,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;IAC9B,IAAII,OAAO,KAAKF,UAAU,EACxB;IACFE,OAAO,CAACC,KAAK,EAAE;IACf,IAAIH,UAAU,KAAKC,QAAQ,CAACF,aAAa,EACvC;EACN;AACA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |