{
  "version": 3,
  "sources": ["../../src/document/utils/getContextMenuItemsWithPath.ts", "../../src/document/utils/wantsNativeTextActions.ts", "../../src/document/components/actions/ActionResponder.tsx"],
  "sourcesContent": ["import { isAppleDevice } from \"@framerjs/shared\"\nimport {\n\ttype AppAccelerators,\n\ttype AppAcceleratorsWindows,\n\tisAppAccelerator,\n\tisAppAcceleratorWindows,\n} from \"app/AppAccelerators.ts\"\nimport type { MenuItemOptions } from \"app/menu.ts\"\nimport type { ValidatedActions } from \"document/components/actions/ActionResponder.tsx\"\nimport type { MenuItemOptionsWithPath } from \"menu/types.ts\"\nimport { isBoolean, isFunction, isString, isUndefined } from \"utils/typeChecks.ts\"\n\ninterface VekterContext {\n\tvalidateAction: (action: string | \"*\") => ValidatedActions\n\tappAccelerators: AppAccelerators\n\tappAcceleratorsWindows: AppAcceleratorsWindows\n}\n\n/**\n * Add shortcut to menu items recursively. This is needed so that all menu items and submenu items\n * have shortcuts.\n */\nexport function getContextMenuItemsWithPath(\n\titems: readonly MenuItemOptions[],\n\tcontext: VekterContext | null,\n\tpath: number[] | undefined = [],\n): readonly MenuItemOptionsWithPath[] {\n\tconst itemsToShow: MenuItemOptionsWithPath[] = []\n\n\tfor (const [index, item] of items.entries()) {\n\t\tconst { submenu, ...props } = item\n\n\t\tconst currentPath = path ? [...path, index] : [index]\n\t\tconst itemWithPath: MenuItemOptionsWithPath = { ...props, path: currentPath }\n\n\t\tif (itemWithPath.type === \"separator\") {\n\t\t\tif (itemWithPath.visible === false) continue\n\t\t\t// when the separator is the first or last item, don't add it\n\t\t\tif (index === 0 || index === items.length - 1) continue\n\t\t\t// when the last added item in itemsToShow is a separator, don't add the current separator\n\t\t\tif (itemsToShow[itemsToShow.length - 1]?.type === \"separator\") continue\n\t\t\titemsToShow.push(itemWithPath)\n\t\t\tcontinue\n\t\t}\n\n\t\tif (item.role && context?.validateAction) {\n\t\t\tconst { states, options } = context.validateAction(item.role)\n\t\t\tconst state = states[item.role]\n\t\t\tconst { label, checked, visible } = options[item.role] ?? {}\n\t\t\tif (isString(label)) itemWithPath.label = label\n\t\t\tif (isUndefined(item.checked) && isBoolean(checked)) itemWithPath.checked = checked\n\t\t\tif (isUndefined(item.visible) && isBoolean(visible)) itemWithPath.visible = visible\n\t\t\tif (isUndefined(item.enabled) && isBoolean(state)) itemWithPath.enabled = state\n\t\t}\n\t\tif (item.visible === false) continue\n\n\t\tif (submenu) {\n\t\t\tconst submenuWithShortcut = isFunction(submenu)\n\t\t\t\t? getCachedLazySubmenuWithPath(submenu, context, currentPath)\n\t\t\t\t: getContextMenuItemsWithPath(submenu, context, currentPath)\n\t\t\tconst itemWithSubmenu: MenuItemOptionsWithPath = { ...itemWithPath, submenu: submenuWithShortcut }\n\n\t\t\titemsToShow.push(itemWithSubmenu)\n\t\t\tcontinue\n\t\t}\n\n\t\tconst itemWithShortcut = getItemWithShortcut(itemWithPath, context)\n\t\titemsToShow.push(itemWithShortcut)\n\t}\n\n\t// It's possible that the first/last item is a separator, so we need to remove it\n\tif (itemsToShow.length > 0 && itemsToShow[itemsToShow.length - 1]?.type === \"separator\") {\n\t\titemsToShow.pop()\n\t}\n\tif (itemsToShow.length > 0 && itemsToShow[0]?.type === \"separator\") {\n\t\titemsToShow.shift()\n\t}\n\n\treturn itemsToShow\n}\n\nfunction getCachedLazySubmenuWithPath(\n\tsubmenu: () => readonly MenuItemOptions[],\n\tcontext: VekterContext | null,\n\tpath: number[],\n) {\n\tlet cachedSubmenu: readonly MenuItemOptionsWithPath[] | undefined\n\n\treturn () => {\n\t\tcachedSubmenu ??= getContextMenuItemsWithPath(submenu(), context, path)\n\t\treturn cachedSubmenu\n\t}\n}\n\nfunction getItemWithShortcut(item: MenuItemOptionsWithPath, context: VekterContext | null): MenuItemOptionsWithPath {\n\tif (!context) return item\n\tconst { appAccelerators, appAcceleratorsWindows } = context\n\tif (!appAccelerators || !appAcceleratorsWindows) return item\n\n\tconst { role } = item\n\tif (!role) return item\n\n\tconst itemWithShortcut = { ...item }\n\tif (!isAppleDevice() && !item.acceleratorWindows) {\n\t\titemWithShortcut.acceleratorWindows = isAppAcceleratorWindows(role) ? appAcceleratorsWindows[role] : undefined\n\t}\n\n\tif (!item.accelerator) {\n\t\titemWithShortcut.accelerator = isAppAccelerator(role) ? appAccelerators[role] : undefined\n\t}\n\n\treturn itemWithShortcut\n}\n", "import { getLogger } from \"@framerjs/shared\"\n\nconst log = getLogger(\"wantsNativeTextActions\")\n\nexport function wantsNativeTextActions(element: unknown = document.activeElement): boolean {\n\tconst nativeTextActionElement = resolveElement(element)\n\tif (!nativeTextActionElement) {\n\t\treturn false\n\t}\n\n\tif (nativeTextActionElement.closest(\".wantsNativeTextAction\")) {\n\t\treturn true\n\t}\n\n\tif (nativeTextActionElement instanceof HTMLIFrameElement) {\n\t\t// Text could be selected inside\n\t\treturn true\n\t}\n\n\tif (nativeTextActionElement instanceof HTMLInputElement) {\n\t\tswitch (nativeTextActionElement.type) {\n\t\t\tcase \"date\":\n\t\t\tcase \"datetime-local\":\n\t\t\tcase \"email\":\n\t\t\tcase \"month\":\n\t\t\tcase \"number\":\n\t\t\tcase \"password\":\n\t\t\tcase \"search\":\n\t\t\tcase \"tel\":\n\t\t\tcase \"text\":\n\t\t\tcase \"time\":\n\t\t\tcase \"url\":\n\t\t\tcase \"week\":\n\t\t\t\t// These inputs support text selection and handle their own copy/paste.\n\t\t\t\treturn true\n\t\t\tcase \"checkbox\":\n\t\t\tcase \"color\":\n\t\t\tcase \"file\":\n\t\t\tcase \"image\":\n\t\t\tcase \"radio\":\n\t\t\tcase \"range\":\n\t\t\tcase \"reset\":\n\t\t\tcase \"submit\":\n\t\t\t\t// These inputs do *not* support text selection, they should not block copy/paste.\n\t\t\t\treturn false\n\t\t\tdefault:\n\t\t\t\tlog.reportErrorOncePerMinute(\"Unhandled input type: \" + nativeTextActionElement.type)\n\t\t\t\treturn false\n\t\t}\n\t}\n\n\tif (nativeTextActionElement instanceof HTMLTextAreaElement) {\n\t\treturn true\n\t}\n\n\t// Only allow native context menu for actual links with an href\n\tconst anchor =\n\t\tnativeTextActionElement instanceof HTMLAnchorElement\n\t\t\t? nativeTextActionElement\n\t\t\t: nativeTextActionElement.closest(\"a\")\n\tif (anchor instanceof HTMLAnchorElement && anchor.href) {\n\t\t// You might want to right-click a link to copy URL, open in new tab, etc.\n\t\treturn true\n\t}\n\n\treturn nativeTextActionElement instanceof HTMLElement ? nativeTextActionElement.isContentEditable : false\n}\n\nfunction resolveElement(candidate: unknown): Element | null {\n\tif (candidate instanceof Element) return candidate\n\tif (candidate instanceof Node) {\n\t\treturn candidate.parentElement ?? (candidate.parentNode instanceof Element ? candidate.parentNode : null)\n\t}\n\treturn null\n}\n\nexport function textSelectionWantsNativeTextAction(): boolean {\n\tconst selection = document.getSelection()\n\tif (!selection || selection.rangeCount === 0 || selection.isCollapsed) return false\n\n\tconst candidates = [selection.anchorNode, selection.focusNode, selection.getRangeAt(0).commonAncestorContainer]\n\n\tfor (const candidate of candidates) {\n\t\tconst element = resolveElement(candidate)\n\t\tif (!element) continue\n\t\tif (element.closest(\".wantsNativeTextAction\")) return true\n\t}\n\n\treturn false\n}\n", "import type { AppAction } from \"app/AppActions.ts\"\nimport type { VekterEngine } from \"document/VekterEngine.ts\"\nimport { wantsNativeTextActions } from \"document/utils/wantsNativeTextActions.ts\"\nimport { environment } from \"environment/index.ts\"\nimport type { default as React } from \"react\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { isFunction } from \"utils/typeChecks.ts\"\n\n// ActionResponder exposes the `wantedActions` of `target` to the action dispatcher (also see `dispatchAction`), which behaves much like bubbling keyboard events (or the Cocoa responder chain). The first target (starting from the active element) that responds to an action will get its corresponding function called.\n\nexport type ActionState = boolean | \"native\"\nexport interface ActionOptions {\n\tlabel?: string\n\tchecked?: boolean\n\tvisible?: boolean\n\tenabled?: boolean\n}\n\n// Wrap this around an interface that defines all the actions for your target\nexport type ActionStateProvider<T, C = void> = {\n\t// Blixt magic\n\t[P in FilterMethodsByReturnType<T, void>]: C extends void ? () => ActionState : (context: C) => ActionState\n}\ntype FilterMethodsByReturnType<T, R> = {\n\t[P in keyof T]: T[P] extends () => infer RR ? (RR extends R ? P : never) : never\n}[keyof T]\n\nexport interface ActionTarget<T> {\n\t// The exposed actions. For additional type safety, type as `wantedActions: (keyof T & ExhaustiveActionTypeHere)[]` when defining.\n\twantedActions: (keyof T)[]\n\t// Optionally reject all exposed actions\n\twantsActions?: () => boolean\n\t// Optionally reject an exposed action, in which case the next target will be tried.\n\twantsAction?: (action: keyof T, event?: Event) => ActionState\n\t// Optionally provide a custom title or checked state for an exposed action.\n\toptionsForAction?: (action: keyof T) => ActionOptions | undefined\n}\n\n// Utilities to use the optional wantsActions(), wantsAction() and optionsForAction() on a target. Assumes the action being validated is in wantedActions.\nfunction wantsActions<T>(target: T & ActionTarget<T>): boolean {\n\treturn target.wantsActions ? target.wantsActions() : true\n}\n\nfunction wantsAction<T>(target: T & ActionTarget<T>, action: keyof T, event?: Event): ActionState {\n\treturn target.wantsAction ? target.wantsAction(action, event) : true\n}\n\nfunction optionsForAction<T>(target: T & ActionTarget<T>, action: keyof T): ActionOptions | undefined {\n\treturn target.optionsForAction ? target.optionsForAction(action) : undefined\n}\n\nexport namespace ActionTarget {\n\texport function chain<T extends ActionTarget<T>>(target: T) {\n\t\treturn new Chain(target)\n\t}\n\n\texport function functionTarget<T extends ActionTarget<T>>(target: T | undefined, action: string): T | undefined {\n\t\tif (target && target instanceof Chain) {\n\t\t\treturn target.actionToTargetMap[action]\n\t\t}\n\t\treturn target\n\t}\n\n\tclass Chain<T extends ActionTarget<T>> implements ActionTarget<any> {\n\t\tactionToTargetMap: { [key: string]: any } = {}\n\n\t\tconstructor(target: T) {\n\t\t\tthis.then(target)\n\t\t}\n\n\t\t// biome-ignore lint/suspicious/noThenProperty: pre-existing code\n\t\tthen<U extends ActionTarget<U>>(target: U): Chain<T> {\n\t\t\tthis.wantedActions = this.wantedActions.concat(target.wantedActions as any[]) // Key typing is enforced through the individual targets\n\n\t\t\tconst actionMap = this.actionToTargetMap\n\t\t\tconst actions = target.wantedActions as string[]\n\t\t\tfor (const action of actions) {\n\t\t\t\tactionMap[action] = actionMap[action] || target\n\t\t\t}\n\n\t\t\treturn this\n\t\t}\n\n\t\twantedActions: (keyof this)[] = []\n\n\t\twantsAction(action: keyof this, event?: Event): ActionState {\n\t\t\tconst target = this.actionToTargetMap[action as string] as ActionTarget<any> | undefined\n\t\t\tif (!target || !wantsActions(target)) return false\n\t\t\treturn wantsAction(target, action as any, event)\n\t\t}\n\n\t\toptionsForAction(action: keyof this): ActionOptions | undefined {\n\t\t\tconst target = this.actionToTargetMap[action as string] as ActionTarget<any> | undefined\n\t\t\tif (!target) return undefined\n\t\t\treturn optionsForAction(target, action as any)\n\t\t}\n\t}\n}\n\nclass ActionDispatchEvent extends Event {\n\tstatic eventType = \"vekter-action-dispatch-event\"\n\tactionIdentifier?: string\n\tactionArgument?: unknown\n}\n\nclass ActionValidationEvent extends Event {\n\tstatic eventType = \"vekter-action-validation-event\"\n\tinvalidatedActions?: Set<string>\n\tvalidatedActionStates?: { [key: string]: ActionState }\n\tvalidatedActionOptions?: { [key: string]: ActionOptions }\n}\n\ninterface Props<T> {\n\tchildren?: React.ReactNode\n\ttarget: T & ActionTarget<T>\n\tengine: VekterEngine\n\tglobal?: boolean\n\tstyle?: React.CSSProperties\n}\n\nexport function ActionResponder<T>({ target, engine, children, style, global }: Props<T>) {\n\tconst ref = useRef<HTMLDivElement>(null)\n\n\tconst onAction = useCallback(\n\t\t(event: ActionDispatchEvent) => {\n\t\t\tconst actionIdentifier = event.actionIdentifier as keyof T & string\n\t\t\tif (!actionIdentifier) return\n\t\t\tconst currentTarget = ActionTarget.functionTarget(target, actionIdentifier)\n\t\t\tif (!currentTarget) return\n\t\t\tif (!currentTarget.wantedActions.includes(actionIdentifier)) return\n\t\t\tif (!wantsActions(currentTarget)) return\n\t\t\tconst handler = currentTarget[actionIdentifier]\n\t\t\tif (!isFunction(handler)) return\n\t\t\tconst wanted = wantsAction(currentTarget, actionIdentifier, event)\n\t\t\tif (!wanted) return\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tif (wanted !== true) return\n\t\t\tengine.setEditReason(actionIdentifier)\n\t\t\tconst boundHandler = handler.bind(currentTarget)\n\t\t\tconst action = engine.scheduler.wrapHandler(boundHandler)\n\t\t\taction(event.actionArgument)\n\t\t},\n\t\t[engine, target],\n\t)\n\n\tconst onValidateActions = useCallback(\n\t\t(event: ActionValidationEvent) => {\n\t\t\tconst { invalidatedActions, validatedActionStates, validatedActionOptions } = event\n\t\t\tif (!invalidatedActions || !validatedActionStates || !validatedActionOptions) return\n\t\t\tif (!target) return\n\n\t\t\tfor (const action of target.wantedActions) {\n\t\t\t\t// Action is implemented by target\n\t\t\t\tif (invalidatedActions.has(action as string)) {\n\t\t\t\t\t// Action is one we need to validate\n\t\t\t\t\tinvalidatedActions.delete(action as string)\n\n\t\t\t\t\t// If wantsActions() is not implemented, default to enabled.\n\t\t\t\t\t// If wantsAction() is not implemented, default to enabled.\n\t\t\t\t\tconst state = wantsActions(target) ? wantsAction(target, action, event) : false\n\t\t\t\t\tvalidatedActionStates[action as string] = state\n\n\t\t\t\t\t// Enabled / disabled actions can set options (custom title, visible)\n\t\t\t\t\tif (state === true || state === false) {\n\t\t\t\t\t\tconst options = optionsForAction(target, action)\n\t\t\t\t\t\tif (options) validatedActionOptions[action as string] = options\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (invalidatedActions.size === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t}\n\t\t},\n\t\t[target],\n\t)\n\tuseEffect(() => {\n\t\tif (!ref.current) return\n\t\tconst listener = (global ? document.documentElement : null) || ref.current\n\t\tlistener.addEventListener(ActionDispatchEvent.eventType, onAction)\n\t\tlistener.addEventListener(ActionValidationEvent.eventType, onValidateActions)\n\t\treturn () => {\n\t\t\tlistener.removeEventListener(ActionDispatchEvent.eventType, onAction)\n\t\t\tlistener.removeEventListener(ActionValidationEvent.eventType, onValidateActions)\n\t\t}\n\t}, [global, onAction, onValidateActions])\n\n\tconst onContextMenu = useCallback((event: React.MouseEvent<HTMLElement>) => {\n\t\tif (!wantsNativeTextActions(event.target) && !environment.isDebugBuild) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<div ref={ref} onContextMenu={onContextMenu} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\n// Dispatch an action to the first target that responds to it (if any).\nexport function dispatchAction(action: AppAction, arg?: any): boolean {\n\tconst activeElement = document.activeElement\n\tif (!activeElement) throw Error(\"No active element for action dispatch\")\n\n\tconst event = new ActionDispatchEvent(ActionDispatchEvent.eventType, { bubbles: true })\n\tevent.actionIdentifier = action\n\tevent.actionArgument = arg\n\treturn activeElement.dispatchEvent(event)\n}\n\n// Validate the state for a number of actions. Returns a map with their current enabled state.\nfunction dispatchActionValidation(actions: string[]): ValidatedActions {\n\tconst activeElement = document.activeElement\n\tif (!activeElement) throw Error(\"No active element for action validation\")\n\n\tconst invalidatedActions = new Set<string>()\n\tfor (const action of actions) {\n\t\tinvalidatedActions.add(action)\n\t}\n\n\tconst states = {}\n\tconst options = {}\n\tconst event = new ActionValidationEvent(ActionValidationEvent.eventType, { bubbles: true })\n\tevent.invalidatedActions = invalidatedActions\n\tevent.validatedActionStates = states\n\tevent.validatedActionOptions = options\n\tactiveElement.dispatchEvent(event)\n\treturn { states, options }\n}\n\nconst beforeValidateActionsHandlers: (() => void)[] = []\nconst afterValidateActionsHandlers: (() => void)[] = []\n\nexport function beforeValidatingActions(handler: () => void) {\n\tbeforeValidateActionsHandlers.push(handler)\n}\n\nexport function afterValidatingActions(handler: () => void) {\n\tafterValidateActionsHandlers.push(handler)\n}\n\n// Validates a specific action, or all previously validated ones for \"*\". Returns a map with the current enabled state of (at least) the requested actions.\nexport function validateAction(action: string | \"*\"): ValidatedActions {\n\tconst actions = action === \"*\" ? Object.keys(actionStatesCache) : [action]\n\tbeforeValidateActionsHandlers.forEach(handler => handler())\n\n\t// Add the state for actions that are handled by the current responder chain\n\tconst { states, options } = dispatchActionValidation(actions)\n\tObject.assign(actionStatesCache, states)\n\tObject.assign(actionOptionsCache, options)\n\n\t// Actions that weren't handled at all are marked as disabled\n\tfor (const key of actions) {\n\t\tactionStatesCache[key] = states[key] || (key === \"undo\" || key === \"redo\" || key === \"delete\" ? \"native\" : false)\n\t}\n\n\tafterValidateActionsHandlers.forEach(handler => handler())\n\treturn { states: actionStatesCache, options: actionOptionsCache }\n}\n\nexport interface ValidatedActions {\n\tstates: { [key: string]: ActionState }\n\toptions: { [key: string]: ActionOptions }\n}\nconst actionStatesCache: { [key: string]: ActionState } = {}\nconst actionOptionsCache: { [key: string]: ActionOptions } = {}\n"],
  "mappings": "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",
  "names": ["ActionTarget"]
}
