UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 5.01 kB
{"version":3,"file":"useTabTrigger.js","names":[],"sources":["esm/ui/useTabTrigger.js"],"sourcesContent":["import {\n use,\n useCallback\n} from \"react\";\nimport { appendBaseUrl } from \"../fork/getPathFromState-mods\";\nimport { router } from \"../router/imperative-api\";\nimport { stripGroupSegmentsFromPath } from \"../router/matchers\";\nimport { useNavigatorContext } from \"../views/Navigator\";\nimport { TabTriggerMapContext } from \"./TabContext\";\nfunction shouldHandleMouseEvent(event) {\n if (!event) return true;\n if (\"button\" in event) {\n return !event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey && (event.button == null || event.button === 0) && [void 0, null, \"\", \"self\"].includes(event.currentTarget.target);\n }\n return true;\n}\nfunction useTabTrigger(options) {\n const { state, navigation } = useNavigatorContext();\n const { name, resetOnFocus, onPress, onLongPress } = options;\n const triggerMap = use(TabTriggerMapContext);\n const getTrigger = useCallback(\n (name2) => {\n const config = triggerMap[name2];\n if (!config) return;\n return {\n isFocused: state.index === config.index,\n route: state.routes[config.index],\n resolvedHref: stripGroupSegmentsFromPath(appendBaseUrl(config.href)),\n ...config\n };\n },\n [triggerMap, state]\n );\n const trigger = name !== void 0 ? getTrigger(name) : void 0;\n const switchTab = useCallback(\n (name2, options2) => {\n const config = triggerMap[name2];\n if (config) {\n if (config.type === \"external\") {\n return router.navigate(config.href);\n }\n return navigation?.dispatch({\n ...config.action,\n type: \"JUMP_TO\",\n payload: {\n ...config.action.payload,\n ...options2\n }\n });\n }\n return navigation?.dispatch({\n type: \"JUMP_TO\",\n payload: { name: name2 }\n });\n },\n [navigation, triggerMap]\n );\n const handleOnPress = useCallback(\n (event) => {\n onPress?.(event);\n if (!trigger || event?.isDefaultPrevented()) return;\n navigation?.emit({\n type: \"tabPress\",\n target: trigger.type === \"internal\" ? trigger.route.key : trigger.href,\n canPreventDefault: true\n });\n if (!shouldHandleMouseEvent(event) || trigger.isFocused) return;\n switchTab(name, { resetOnFocus });\n },\n [onPress, name, resetOnFocus, trigger, navigation, switchTab]\n );\n const handleOnLongPress = useCallback(\n (event) => {\n onLongPress?.(event);\n if (!trigger || event?.isDefaultPrevented()) return;\n navigation?.emit({\n type: \"tabLongPress\",\n target: trigger.type === \"internal\" ? trigger.route.key : trigger.href\n });\n if (!shouldHandleMouseEvent(event)) return;\n switchTab(name, { resetOnFocus });\n },\n [onLongPress, name, resetOnFocus, trigger, navigation, switchTab]\n );\n return {\n switchTab,\n getTrigger,\n trigger,\n triggerProps: {\n isFocused: Boolean(trigger?.isFocused),\n onPress: handleOnPress,\n onLongPress: handleOnLongPress\n }\n };\n}\nexport {\n shouldHandleMouseEvent,\n useTabTrigger\n};\n//# sourceMappingURL=useTabTrigger.js.map\n"],"mappings":";;;;;;;;AASA,SAAS,uBAAuB,OAAO;CACrC,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI,YAAY,OAAO;EACrB,OAAO,CAAC,MAAM,WAAW,CAAC,MAAM,UAAU,CAAC,MAAM,WAAW,CAAC,MAAM,aAAa,MAAM,UAAU,QAAQ,MAAM,WAAW,MAAM;GAAC,KAAK;GAAG;GAAM;GAAI;EAAM,CAAC,CAAC,SAAS,MAAM,cAAc,MAAM;CAC/L;CACA,OAAO;AACT;AACA,SAAS,cAAc,SAAS;CAC9B,MAAM,EAAE,OAAO,eAAe,oBAAoB;CAClD,MAAM,EAAE,MAAM,cAAc,SAAS,gBAAgB;CACrD,MAAM,aAAa,IAAI,oBAAoB;CAC3C,MAAM,aAAa,aAChB,UAAU;EACT,MAAM,SAAS,WAAW;EAC1B,IAAI,CAAC,QAAQ;EACb,OAAO;GACL,WAAW,MAAM,UAAU,OAAO;GAClC,OAAO,MAAM,OAAO,OAAO;GAC3B,cAAc,2BAA2B,cAAc,OAAO,IAAI,CAAC;GACnE,GAAG;EACL;CACF,GACA,CAAC,YAAY,KAAK,CACpB;CACA,MAAM,UAAU,SAAS,KAAK,IAAI,WAAW,IAAI,IAAI,KAAK;CAC1D,MAAM,YAAY,aACf,OAAO,aAAa;EACnB,MAAM,SAAS,WAAW;EAC1B,IAAI,QAAQ;GACV,IAAI,OAAO,SAAS,YAAY;IAC9B,OAAO,OAAO,SAAS,OAAO,IAAI;GACpC;GACA,OAAO,YAAY,SAAS;IAC1B,GAAG,OAAO;IACV,MAAM;IACN,SAAS;KACP,GAAG,OAAO,OAAO;KACjB,GAAG;IACL;GACF,CAAC;EACH;EACA,OAAO,YAAY,SAAS;GAC1B,MAAM;GACN,SAAS,EAAE,MAAM,MAAM;EACzB,CAAC;CACH,GACA,CAAC,YAAY,UAAU,CACzB;CACA,MAAM,gBAAgB,aACnB,UAAU;EACT,UAAU,KAAK;EACf,IAAI,CAAC,WAAW,OAAO,mBAAmB,GAAG;EAC7C,YAAY,KAAK;GACf,MAAM;GACN,QAAQ,QAAQ,SAAS,aAAa,QAAQ,MAAM,MAAM,QAAQ;GAClE,mBAAmB;EACrB,CAAC;EACD,IAAI,CAAC,uBAAuB,KAAK,KAAK,QAAQ,WAAW;EACzD,UAAU,MAAM,EAAE,aAAa,CAAC;CAClC,GACA;EAAC;EAAS;EAAM;EAAc;EAAS;EAAY;CAAS,CAC9D;CACA,MAAM,oBAAoB,aACvB,UAAU;EACT,cAAc,KAAK;EACnB,IAAI,CAAC,WAAW,OAAO,mBAAmB,GAAG;EAC7C,YAAY,KAAK;GACf,MAAM;GACN,QAAQ,QAAQ,SAAS,aAAa,QAAQ,MAAM,MAAM,QAAQ;EACpE,CAAC;EACD,IAAI,CAAC,uBAAuB,KAAK,GAAG;EACpC,UAAU,MAAM,EAAE,aAAa,CAAC;CAClC,GACA;EAAC;EAAa;EAAM;EAAc;EAAS;EAAY;CAAS,CAClE;CACA,OAAO;EACL;EACA;EACA;EACA,cAAc;GACZ,WAAW,QAAQ,SAAS,SAAS;GACrC,SAAS;GACT,aAAa;EACf;CACF;AACF"}