@opentui/keymap 0.5.10 → 0.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunks/{index-frk6sdcd.js → index-7g381cth.js} +8 -8
- package/chunks/{index-frk6sdcd.js.map → index-7g381cth.js.map} +2 -2
- package/package.json +5 -5
- package/src/addons/index.js +20 -22
- package/src/addons/index.js.map +2 -2
- package/src/addons/opentui/index.js +5 -7
- package/src/addons/opentui/index.js.map +2 -2
- package/src/extras/graph.js +46 -47
- package/src/extras/graph.js.map +2 -2
- package/src/extras/index.js +11 -13
- package/src/extras/index.js.map +2 -2
- package/src/html.js +6 -8
- package/src/html.js.map +2 -2
- package/src/index.js +125 -126
- package/src/index.js.map +2 -2
- package/src/opentui.js +3 -5
- package/src/opentui.js.map +2 -2
- package/src/react/index.js +6 -8
- package/src/react/index.js.map +2 -2
- package/src/runtime-modules.js +1 -5
- package/src/runtime-modules.js.map +2 -2
- package/src/solid/index.js +7 -9
- package/src/solid/index.js.map +2 -2
- package/src/testing/index.js +8 -10
- package/src/testing/index.js.map +2 -2
- package/chunks/index-p35cyhc4.js +0 -7
- package/chunks/index-p35cyhc4.js.map +0 -9
package/src/extras/graph.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
KEYMAP_EXTENSION_CONTEXT,
|
|
4
|
-
childNodes,
|
|
5
|
-
cloneKeySequence,
|
|
6
3
|
cloneKeyStroke,
|
|
4
|
+
cloneKeySequence,
|
|
5
|
+
getFocusedTargetIfAvailable,
|
|
7
6
|
getActivationPath,
|
|
7
|
+
getSortedLayers,
|
|
8
|
+
isLayerActiveForFocused,
|
|
8
9
|
getCaptureNode,
|
|
9
|
-
getFocusedTargetIfAvailable,
|
|
10
|
-
getNodePresentation,
|
|
11
10
|
getNodeSequence,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
getNodePresentation,
|
|
12
|
+
childNodes,
|
|
13
|
+
KEYMAP_EXTENSION_CONTEXT2
|
|
14
|
+
} from "../../chunks/index-7g381cth.js";
|
|
16
15
|
|
|
17
16
|
// src/extras/lib/graph-snapshot.ts
|
|
18
17
|
function hasOwnFocused(options) {
|
|
@@ -218,18 +217,18 @@ function createGraphSnapshot(options) {
|
|
|
218
217
|
}
|
|
219
218
|
}
|
|
220
219
|
}
|
|
221
|
-
for (const
|
|
222
|
-
if (typeof
|
|
220
|
+
for (const state of bindingStates.values()) {
|
|
221
|
+
if (typeof state.binding.command !== "string") {
|
|
223
222
|
continue;
|
|
224
223
|
}
|
|
225
|
-
const ids = new Set(commandIdsByName.get(
|
|
226
|
-
const chain = catalog.getResolvedCommandChain(
|
|
224
|
+
const ids = new Set(commandIdsByName.get(state.binding.command) ?? []);
|
|
225
|
+
const chain = catalog.getResolvedCommandChain(state.binding.command, focused).entries;
|
|
227
226
|
for (const entry of chain ?? []) {
|
|
228
227
|
for (const id of commandIdsByCommand.get(entry.command) ?? []) {
|
|
229
228
|
ids.add(id);
|
|
230
229
|
}
|
|
231
230
|
}
|
|
232
|
-
|
|
231
|
+
state.commandIds = [...ids];
|
|
233
232
|
}
|
|
234
233
|
const pending = focused === currentFocused ? activation.ensureValidPendingSequence() : undefined;
|
|
235
234
|
const pendingNodes = collectPendingNodes(pending ?? null, layerIds, nodeIds, layerRoots);
|
|
@@ -275,50 +274,50 @@ function createGraphSnapshot(options) {
|
|
|
275
274
|
visitNode(layerRoots.get(layer), null);
|
|
276
275
|
}
|
|
277
276
|
const layers = sortedLayers.map((layer) => {
|
|
278
|
-
const
|
|
277
|
+
const state = layerStates.get(layer);
|
|
279
278
|
return {
|
|
280
|
-
id:
|
|
279
|
+
id: state.id,
|
|
281
280
|
order: layer.order,
|
|
282
281
|
priority: layer.priority,
|
|
283
282
|
target: includeTargets ? layer.target : undefined,
|
|
284
283
|
targetMode: layer.targetMode,
|
|
285
284
|
fields: layer.fields ?? {},
|
|
286
285
|
attrs: layer.attrs,
|
|
287
|
-
active:
|
|
288
|
-
focusActive:
|
|
289
|
-
enabled:
|
|
290
|
-
inactiveReasons:
|
|
286
|
+
active: state.active,
|
|
287
|
+
focusActive: state.focusActive,
|
|
288
|
+
enabled: state.enabled,
|
|
289
|
+
inactiveReasons: state.inactiveReasons,
|
|
291
290
|
rootNodeId: nodeIds.get(layerRoots.get(layer)),
|
|
292
291
|
bindingIds: layer.bindings.map((binding) => bindingStates.get(binding).id),
|
|
293
292
|
commandIds: layer.commands.map((command) => commandStates.get(command).id)
|
|
294
293
|
};
|
|
295
294
|
});
|
|
296
295
|
const commands = [];
|
|
297
|
-
for (const
|
|
296
|
+
for (const state of commandStates.values()) {
|
|
298
297
|
commands.push({
|
|
299
|
-
id:
|
|
300
|
-
layerId:
|
|
301
|
-
name:
|
|
302
|
-
command:
|
|
303
|
-
fields:
|
|
304
|
-
attrs:
|
|
305
|
-
target: includeTargets ?
|
|
306
|
-
active:
|
|
307
|
-
reachable:
|
|
308
|
-
enabled:
|
|
309
|
-
inactiveReasons:
|
|
298
|
+
id: state.id,
|
|
299
|
+
layerId: state.layerState.id,
|
|
300
|
+
name: state.command.command.name,
|
|
301
|
+
command: state.command.command,
|
|
302
|
+
fields: state.command.fields,
|
|
303
|
+
attrs: state.command.attrs,
|
|
304
|
+
target: includeTargets ? state.layerState.layer.target : undefined,
|
|
305
|
+
active: state.active,
|
|
306
|
+
reachable: state.reachable,
|
|
307
|
+
enabled: state.enabled,
|
|
308
|
+
inactiveReasons: state.inactiveReasons
|
|
310
309
|
});
|
|
311
310
|
}
|
|
312
311
|
const bindings = [];
|
|
313
|
-
for (const
|
|
314
|
-
const binding =
|
|
312
|
+
for (const state of bindingStates.values()) {
|
|
313
|
+
const binding = state.binding;
|
|
315
314
|
bindings.push({
|
|
316
|
-
id:
|
|
317
|
-
layerId:
|
|
315
|
+
id: state.id,
|
|
316
|
+
layerId: state.layerState.id,
|
|
318
317
|
sourceLayerOrder: binding.sourceLayerOrder,
|
|
319
318
|
bindingIndex: binding.bindingIndex,
|
|
320
319
|
nodeId: bindingNodeIds.get(binding),
|
|
321
|
-
commandIds:
|
|
320
|
+
commandIds: state.commandIds,
|
|
322
321
|
sequence: cloneKeySequence(binding.sequence),
|
|
323
322
|
command: binding.command,
|
|
324
323
|
commandAttrs: catalog.getBindingCommandAttrs(binding, focused, activeView),
|
|
@@ -326,12 +325,12 @@ function createGraphSnapshot(options) {
|
|
|
326
325
|
event: binding.event,
|
|
327
326
|
preventDefault: binding.preventDefault,
|
|
328
327
|
fallthrough: binding.fallthrough,
|
|
329
|
-
active:
|
|
330
|
-
reachable:
|
|
331
|
-
enabled:
|
|
332
|
-
commandResolved:
|
|
333
|
-
shadowed:
|
|
334
|
-
inactiveReasons:
|
|
328
|
+
active: state.active,
|
|
329
|
+
reachable: state.reachable,
|
|
330
|
+
enabled: state.enabled,
|
|
331
|
+
commandResolved: state.commandResolved,
|
|
332
|
+
shadowed: state.shadowed,
|
|
333
|
+
inactiveReasons: state.inactiveReasons
|
|
335
334
|
});
|
|
336
335
|
}
|
|
337
336
|
const activeKeys = activation.getActiveKeysForFocused(focused, { includeBindings: true, includeMetadata: true });
|
|
@@ -348,7 +347,7 @@ function createGraphSnapshot(options) {
|
|
|
348
347
|
|
|
349
348
|
// src/extras/graph.ts
|
|
350
349
|
function getGraphSnapshot(keymap, options) {
|
|
351
|
-
const context = keymap[
|
|
350
|
+
const context = keymap[KEYMAP_EXTENSION_CONTEXT2]();
|
|
352
351
|
return createGraphSnapshot({
|
|
353
352
|
state: context.state,
|
|
354
353
|
host: context.host,
|
|
@@ -366,9 +365,9 @@ function createGraphExtra(keymap) {
|
|
|
366
365
|
};
|
|
367
366
|
}
|
|
368
367
|
export {
|
|
369
|
-
|
|
370
|
-
|
|
368
|
+
createGraphExtra,
|
|
369
|
+
getGraphSnapshot
|
|
371
370
|
};
|
|
372
371
|
|
|
373
|
-
//# debugId=
|
|
372
|
+
//# debugId=1B9E099A0257148164756E2164756E21
|
|
374
373
|
//# sourceMappingURL=graph.js.map
|
package/src/extras/graph.js.map
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"import type { ActivationService } from \"../../services/activation.js\"\nimport type { CommandCatalogService } from \"../../services/command-catalog.js\"\nimport type { ConditionService } from \"../../services/conditions.js\"\nimport type { State } from \"../../services/state.js\"\nimport type {\n BindingState,\n CommandState,\n KeymapEvent,\n KeymapHost,\n KeySequencePart,\n RegisteredLayer,\n SequenceNode,\n} from \"../../types.js\"\nimport type {\n GraphBinding,\n GraphCommand,\n GraphInactiveReason,\n GraphLayer,\n GraphSequenceNode,\n GraphSnapshot,\n GraphSnapshotOptions,\n} from \"./graph-types.js\"\nimport { cloneKeySequence, cloneKeyStroke } from \"../../services/keys.js\"\nimport {\n getActivationPath,\n getFocusedTargetIfAvailable,\n getSortedLayers,\n isLayerActiveForFocused,\n} from \"../../services/primitives/active-layers.js\"\nimport { childNodes, getCaptureNode, getNodePresentation, getNodeSequence } from \"../../services/sequence-index.js\"\n\ninterface LayerGraphState<TTarget extends object, TEvent extends KeymapEvent> {\n layer: RegisteredLayer<TTarget, TEvent>\n id: string\n focusActive: boolean\n enabled: boolean\n active: boolean\n inactiveReasons: GraphInactiveReason[]\n}\n\ninterface BindingGraphState<TTarget extends object, TEvent extends KeymapEvent> {\n binding: BindingState<TTarget, TEvent>\n id: string\n layerState: LayerGraphState<TTarget, TEvent>\n commandIds: string[]\n enabled: boolean\n commandResolved: boolean\n active: boolean\n reachable: boolean\n shadowed: boolean\n inactiveReasons: GraphInactiveReason[]\n}\n\ninterface CommandGraphState<TTarget extends object, TEvent extends KeymapEvent> {\n command: CommandState<TTarget, TEvent>\n id: string\n layerState: LayerGraphState<TTarget, TEvent>\n active: boolean\n reachable: boolean\n enabled: boolean\n inactiveReasons: GraphInactiveReason[]\n}\n\ninterface SequenceStop {\n event: string\n matches: readonly string[]\n}\n\nfunction hasOwnFocused<TTarget extends object>(\n options: GraphSnapshotOptions<TTarget> | undefined,\n): options is GraphSnapshotOptions<TTarget> & { focused: TTarget | null | undefined } {\n return !!options && Object.prototype.hasOwnProperty.call(options, \"focused\")\n}\n\nfunction layerId<TTarget extends object, TEvent extends KeymapEvent>(layer: RegisteredLayer<TTarget, TEvent>): string {\n return `layer:${layer.order}`\n}\n\nfunction bindingId<TTarget extends object, TEvent extends KeymapEvent>(\n layer: RegisteredLayer<TTarget, TEvent>,\n index: number,\n): string {\n return `binding:${layer.order}:${index}`\n}\n\nfunction commandId<TTarget extends object, TEvent extends KeymapEvent>(\n layer: RegisteredLayer<TTarget, TEvent>,\n index: number,\n): string {\n return `command:${layer.order}:${index}`\n}\n\nfunction nodeId<TTarget extends object, TEvent extends KeymapEvent>(\n layer: RegisteredLayer<TTarget, TEvent>,\n index: number,\n): string {\n return `node:${layer.order}:${index}`\n}\n\nfunction getSequenceMatches(sequence: readonly KeySequencePart[]): string[] {\n return sequence.map((part) => part.match)\n}\n\nfunction isPrefix(left: readonly string[], right: readonly string[]): boolean {\n if (left.length > right.length) {\n return false\n }\n\n for (let index = 0; index < left.length; index += 1) {\n if (left[index] !== right[index]) {\n return false\n }\n }\n\n return true\n}\n\nfunction collectPendingNodes<TTarget extends object, TEvent extends KeymapEvent>(\n pending: State<TTarget, TEvent>[\"pending\"],\n layerIds: ReadonlyMap<RegisteredLayer<TTarget, TEvent>, string>,\n nodeIds: ReadonlyMap<SequenceNode<TTarget, TEvent>, string>,\n roots: ReadonlyMap<RegisteredLayer<TTarget, TEvent>, SequenceNode<TTarget, TEvent>>,\n): { pending: Set<string>; pendingPath: Set<string> } {\n const pendingIds = new Set<string>()\n const pendingPathIds = new Set<string>()\n\n if (!pending) {\n return { pending: pendingIds, pendingPath: pendingPathIds }\n }\n\n for (const capture of pending.captures) {\n const layerGraphId = layerIds.get(capture.layer)\n if (!layerGraphId) {\n continue\n }\n\n const root = roots.get(capture.layer)\n if (!root) {\n continue\n }\n\n let current: SequenceNode<TTarget, TEvent> | null = getCaptureNode(root, capture) ?? null\n const capturedNodeId = current ? nodeIds.get(current) : undefined\n if (capturedNodeId) {\n pendingIds.add(capturedNodeId)\n }\n\n while (current) {\n const currentNodeId = nodeIds.get(current)\n if (currentNodeId) {\n pendingPathIds.add(currentNodeId)\n }\n current = current.parent\n }\n }\n\n return { pending: pendingIds, pendingPath: pendingPathIds }\n}\n\nexport function createGraphSnapshot<TTarget extends object, TEvent extends KeymapEvent>(options: {\n state: State<TTarget, TEvent>\n host: KeymapHost<TTarget, TEvent>\n conditions: ConditionService<TTarget, TEvent>\n catalog: CommandCatalogService<TTarget, TEvent>\n activation: ActivationService<TTarget, TEvent>\n snapshotOptions?: GraphSnapshotOptions<TTarget>\n}): GraphSnapshot<TTarget, TEvent> {\n const { state, host, conditions, catalog, activation, snapshotOptions } = options\n const includeTargets = snapshotOptions?.includeTargets !== false\n const currentFocused = getFocusedTargetIfAvailable(host)\n const focused = hasOwnFocused(snapshotOptions) ? (snapshotOptions.focused ?? null) : currentFocused\n const activeView = catalog.getActiveCommandView(focused)\n const activeCommandStates = new Set(activeView.entries.map((entry) => entry.commandState))\n const reachableCommandStates = new Set(activeView.reachable.map((entry) => entry.commandState))\n const activationPath = getActivationPath(host, focused)\n const sortedLayers = getSortedLayers(state.layers)\n const layerStates = new Map<RegisteredLayer<TTarget, TEvent>, LayerGraphState<TTarget, TEvent>>()\n const commandStates = new Map<CommandState<TTarget, TEvent>, CommandGraphState<TTarget, TEvent>>()\n const bindingStates = new Map<BindingState<TTarget, TEvent>, BindingGraphState<TTarget, TEvent>>()\n const commandIdsByCommand = new Map<CommandState<TTarget, TEvent>[\"command\"], string[]>()\n const commandIdsByName = new Map<string, string[]>()\n const nodeIds = new Map<SequenceNode<TTarget, TEvent>, string>()\n const layerIds = new Map<RegisteredLayer<TTarget, TEvent>, string>()\n const layerRoots = new Map<RegisteredLayer<TTarget, TEvent>, SequenceNode<TTarget, TEvent>>()\n const bindingNodeIds = new Map<BindingState<TTarget, TEvent>, string>()\n const sequenceNodes: GraphSequenceNode[] = []\n\n for (const layer of sortedLayers) {\n layerRoots.set(layer, layer.root)\n }\n\n for (const layer of sortedLayers) {\n const currentLayerId = layerId(layer)\n const targetDestroyed = layer.target ? host.isTargetDestroyed(layer.target) : false\n const focusActive = isLayerActiveForFocused(host, layer, focused, activationPath)\n const enabled = conditions.matchesConditions(layer)\n const inactiveReasons: GraphInactiveReason[] = []\n if (targetDestroyed) inactiveReasons.push(\"target-destroyed\")\n if (!focusActive) inactiveReasons.push(\"focus\")\n if (!enabled) inactiveReasons.push(\"layer-disabled\")\n\n layerIds.set(layer, currentLayerId)\n layerStates.set(layer, {\n layer,\n id: currentLayerId,\n focusActive,\n enabled,\n active: !targetDestroyed && focusActive && enabled,\n inactiveReasons,\n })\n }\n\n for (const layer of sortedLayers) {\n const currentLayerId = layerIds.get(layer)!\n for (const [index, command] of layer.commands.entries()) {\n const currentCommandId = commandId(layer, index)\n const idsByCommand = commandIdsByCommand.get(command.command)\n if (idsByCommand) {\n idsByCommand.push(currentCommandId)\n } else {\n commandIdsByCommand.set(command.command, [currentCommandId])\n }\n\n const idsByName = commandIdsByName.get(command.command.name)\n if (idsByName) {\n idsByName.push(currentCommandId)\n } else {\n commandIdsByName.set(command.command.name, [currentCommandId])\n }\n\n const layerState = layerStates.get(layer)!\n const enabled = conditions.matchesConditions(command)\n const active = activeCommandStates.has(command)\n const reachable = reachableCommandStates.has(command)\n const inactiveReasons = [...layerState.inactiveReasons]\n if (!enabled) {\n inactiveReasons.push(\"command-disabled\")\n }\n if (active && !reachable) {\n inactiveReasons.push(\"shadowed\")\n }\n commandStates.set(command, {\n command,\n id: currentCommandId,\n layerState,\n active,\n reachable,\n enabled,\n inactiveReasons,\n })\n }\n\n let nextNodeIndex = 0\n const visitNode = (node: SequenceNode<TTarget, TEvent>, parentId: string | null): void => {\n const currentNodeId = nodeId(layer, nextNodeIndex)\n nextNodeIndex += 1\n nodeIds.set(node, currentNodeId)\n\n for (const binding of node.bindings) {\n bindingNodeIds.set(binding, currentNodeId)\n }\n\n for (const child of childNodes(node)) {\n visitNode(child, currentNodeId)\n }\n }\n\n const root = layerRoots.get(layer)!\n visitNode(root, null)\n if (!nodeIds.has(root)) {\n nodeIds.set(root, `${currentLayerId}:root`)\n }\n }\n\n const stoppedSequences: SequenceStop[] = []\n for (const layer of sortedLayers) {\n const layerState = layerStates.get(layer)!\n for (const [index, binding] of layer.bindings.entries()) {\n const enabled = conditions.matchesConditions(binding)\n const commandResolved = catalog.isBindingVisible(binding, focused, activeView)\n const active = layerState.active && enabled && commandResolved\n const matches = getSequenceMatches(binding.sequence)\n const shadowed =\n active && stoppedSequences.some((stop) => stop.event === binding.event && isPrefix(stop.matches, matches))\n const inactiveReasons = [...layerState.inactiveReasons]\n if (!enabled) {\n inactiveReasons.push(\"binding-disabled\")\n }\n if (!commandResolved) {\n const unavailable =\n typeof binding.command === \"string\"\n ? catalog.getDispatchUnavailableCommandState(binding.command, focused, false)\n : undefined\n if (unavailable?.reason === \"disabled\") {\n inactiveReasons.push(\"command-disabled\")\n } else if (unavailable?.reason === \"inactive\") {\n inactiveReasons.push(\"command-inactive\")\n } else {\n inactiveReasons.push(\"command-unresolved\")\n }\n }\n if (shadowed) {\n inactiveReasons.push(\"shadowed\")\n }\n\n const currentBindingState: BindingGraphState<TTarget, TEvent> = {\n binding,\n id: bindingId(layer, index),\n layerState,\n commandIds: [],\n enabled,\n commandResolved,\n active,\n reachable: active && !shadowed,\n shadowed,\n inactiveReasons,\n }\n bindingStates.set(binding, currentBindingState)\n\n if (active && binding.command !== undefined && !binding.fallthrough) {\n stoppedSequences.push({ event: binding.event, matches })\n }\n }\n }\n\n for (const state of bindingStates.values()) {\n if (typeof state.binding.command !== \"string\") {\n continue\n }\n\n const ids = new Set(commandIdsByName.get(state.binding.command) ?? [])\n const chain = catalog.getResolvedCommandChain(state.binding.command, focused).entries\n for (const entry of chain ?? []) {\n for (const id of commandIdsByCommand.get(entry.command) ?? []) {\n ids.add(id)\n }\n }\n state.commandIds = [...ids]\n }\n\n const pending = focused === currentFocused ? activation.ensureValidPendingSequence() : undefined\n const pendingNodes = collectPendingNodes(pending ?? null, layerIds, nodeIds, layerRoots)\n\n for (const layer of sortedLayers) {\n const currentLayerId = layerIds.get(layer)!\n const visitNode = (node: SequenceNode<TTarget, TEvent>, parentId: string | null): void => {\n const currentNodeId = nodeIds.get(node)!\n const childIds = childNodes(node)\n .map((child) => nodeIds.get(child)!)\n .filter(Boolean)\n const bindingIds = node.bindings\n .map((binding) => bindingStates.get(binding)?.id)\n .filter((id): id is string => !!id)\n const reachableBindingIds = node.reachableBindings\n .map((binding) => bindingStates.get(binding)?.id)\n .filter((id): id is string => !!id)\n const sequence = getNodeSequence(node)\n const presentation = getNodePresentation(node)\n const active = node.reachableBindings.some((binding) => bindingStates.get(binding)?.active === true)\n const reachable = node.reachableBindings.some((binding) => bindingStates.get(binding)?.reachable === true)\n\n for (let index = 0; index < sequence.length; index += 1) {\n const sourcePart = node.reachableBindings[0]?.sequence[index]\n if (sourcePart) {\n sequence[index] = { ...sourcePart, stroke: cloneKeyStroke(sourcePart.stroke) }\n }\n }\n\n sequenceNodes.push({\n id: currentNodeId,\n layerId: currentLayerId,\n parentId,\n childIds,\n bindingIds,\n reachableBindingIds,\n depth: node.depth,\n sequence,\n stroke: node.stroke ? cloneKeyStroke(node.stroke) : null,\n match: node.match,\n display: presentation.display,\n tokenName: presentation.tokenName,\n active,\n reachable,\n pending: pendingNodes.pending.has(currentNodeId),\n pendingPath: pendingNodes.pendingPath.has(currentNodeId),\n })\n\n for (const child of childNodes(node)) {\n visitNode(child, currentNodeId)\n }\n }\n\n visitNode(layerRoots.get(layer)!, null)\n }\n\n const layers: GraphLayer<TTarget>[] = sortedLayers.map((layer) => {\n const state = layerStates.get(layer)!\n return {\n id: state.id,\n order: layer.order,\n priority: layer.priority,\n target: includeTargets ? layer.target : undefined,\n targetMode: layer.targetMode,\n fields: layer.fields ?? {},\n attrs: layer.attrs,\n active: state.active,\n focusActive: state.focusActive,\n enabled: state.enabled,\n inactiveReasons: state.inactiveReasons,\n rootNodeId: nodeIds.get(layerRoots.get(layer)!)!,\n bindingIds: layer.bindings.map((binding) => bindingStates.get(binding)!.id),\n commandIds: layer.commands.map((command) => commandStates.get(command)!.id),\n }\n })\n\n const commands: GraphCommand<TTarget, TEvent>[] = []\n for (const state of commandStates.values()) {\n commands.push({\n id: state.id,\n layerId: state.layerState.id,\n name: state.command.command.name,\n command: state.command.command,\n fields: state.command.fields,\n attrs: state.command.attrs,\n target: includeTargets ? state.layerState.layer.target : undefined,\n active: state.active,\n reachable: state.reachable,\n enabled: state.enabled,\n inactiveReasons: state.inactiveReasons,\n })\n }\n\n const bindings: GraphBinding<TTarget, TEvent>[] = []\n for (const state of bindingStates.values()) {\n const binding = state.binding\n bindings.push({\n id: state.id,\n layerId: state.layerState.id,\n sourceLayerOrder: binding.sourceLayerOrder,\n bindingIndex: binding.bindingIndex,\n nodeId: bindingNodeIds.get(binding),\n commandIds: state.commandIds,\n sequence: cloneKeySequence(binding.sequence),\n command: binding.command,\n commandAttrs: catalog.getBindingCommandAttrs(binding, focused, activeView),\n attrs: binding.attrs,\n event: binding.event,\n preventDefault: binding.preventDefault,\n fallthrough: binding.fallthrough,\n active: state.active,\n reachable: state.reachable,\n enabled: state.enabled,\n commandResolved: state.commandResolved,\n shadowed: state.shadowed,\n inactiveReasons: state.inactiveReasons,\n })\n }\n\n const activeKeys = activation.getActiveKeysForFocused(focused, { includeBindings: true, includeMetadata: true })\n\n return {\n focused: includeTargets ? focused : undefined,\n pendingSequence: focused === currentFocused ? activation.getPendingSequence() : [],\n activeKeys,\n layers,\n commands,\n bindings,\n sequenceNodes,\n }\n}\n",
|
|
6
6
|
"import { KEYMAP_EXTENSION_CONTEXT, type KeymapExtensionProvider } from \"../services/extension-context.js\"\nimport { createGraphSnapshot } from \"./lib/graph-snapshot.js\"\nimport type { KeymapEvent } from \"../types.js\"\nimport type { GraphSnapshot, GraphSnapshotOptions } from \"./lib/graph-types.js\"\n\nexport type {\n GraphBinding,\n GraphCommand,\n GraphInactiveReason,\n GraphLayer,\n GraphSequenceNode,\n GraphSnapshot,\n GraphSnapshotOptions,\n} from \"./lib/graph-types.js\"\n\nexport interface KeymapGraphExtra<TTarget extends object, TEvent extends KeymapEvent> {\n getGraphSnapshot(options?: GraphSnapshotOptions<TTarget>): GraphSnapshot<TTarget, TEvent>\n}\n\nexport function getGraphSnapshot<TTarget extends object, TEvent extends KeymapEvent>(\n keymap: KeymapExtensionProvider<TTarget, TEvent>,\n options?: GraphSnapshotOptions<TTarget>,\n): GraphSnapshot<TTarget, TEvent> {\n const context = keymap[KEYMAP_EXTENSION_CONTEXT]()\n return createGraphSnapshot({\n state: context.state,\n host: context.host,\n conditions: context.conditions,\n catalog: context.catalog,\n activation: context.activation,\n snapshotOptions: options,\n })\n}\n\nexport function createGraphExtra<TTarget extends object, TEvent extends KeymapEvent>(\n keymap: KeymapExtensionProvider<TTarget, TEvent>,\n): KeymapGraphExtra<TTarget, TEvent> {\n return {\n getGraphSnapshot(options) {\n return getGraphSnapshot(keymap, options)\n },\n }\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "1B9E099A0257148164756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/src/extras/index.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"../../chunks/index-p35cyhc4.js";
|
|
3
|
-
|
|
4
2
|
// src/extras/binding-lookup.ts
|
|
5
3
|
var hasOwn = Object.prototype.hasOwnProperty;
|
|
6
4
|
var EMPTY_BINDINGS = Object.freeze([]);
|
|
@@ -71,8 +69,8 @@ function resolveBindingValue(command, value, bindingDefaults) {
|
|
|
71
69
|
const items = value;
|
|
72
70
|
const bindings = new Array(items.length);
|
|
73
71
|
for (let index = 0;index < items.length; index += 1) {
|
|
74
|
-
const
|
|
75
|
-
bindings[index] = bindingDefaults ? withBindingDefaults(command,
|
|
72
|
+
const binding = resolveBindingItem(command, items[index], index);
|
|
73
|
+
bindings[index] = bindingDefaults ? withBindingDefaults(command, binding, bindingDefaults) : binding;
|
|
76
74
|
}
|
|
77
75
|
return bindings;
|
|
78
76
|
}
|
|
@@ -177,15 +175,15 @@ function createBindingLookup(config, options) {
|
|
|
177
175
|
if (commands.length === 0)
|
|
178
176
|
return group.bindings;
|
|
179
177
|
if (commands.length === 1) {
|
|
180
|
-
const
|
|
181
|
-
const
|
|
178
|
+
const omitted = commands[0];
|
|
179
|
+
const result = [];
|
|
182
180
|
for (let index = 0;index < group.bindings.length; index += 1) {
|
|
183
181
|
const binding = group.bindings[index];
|
|
184
|
-
if (typeof binding.cmd === "string" && binding.cmd ===
|
|
182
|
+
if (typeof binding.cmd === "string" && binding.cmd === omitted)
|
|
185
183
|
continue;
|
|
186
|
-
|
|
184
|
+
result.push(binding);
|
|
187
185
|
}
|
|
188
|
-
return
|
|
186
|
+
return result;
|
|
189
187
|
}
|
|
190
188
|
const omitted = new Set(commands);
|
|
191
189
|
const result = [];
|
|
@@ -338,11 +336,11 @@ function formatCommandBindings(bindings, options = {}) {
|
|
|
338
336
|
return formatted;
|
|
339
337
|
}
|
|
340
338
|
export {
|
|
341
|
-
|
|
342
|
-
formatCommandBindings,
|
|
339
|
+
commandBindings,
|
|
343
340
|
createBindingLookup,
|
|
344
|
-
|
|
341
|
+
formatCommandBindings,
|
|
342
|
+
formatKeySequence
|
|
345
343
|
};
|
|
346
344
|
|
|
347
|
-
//# debugId=
|
|
345
|
+
//# debugId=425AFADC60FBA39D64756E2164756E21
|
|
348
346
|
//# sourceMappingURL=index.js.map
|
package/src/extras/index.js.map
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"import type { Binding, KeyLike, KeymapEvent } from \"../types.js\"\n\nexport type CommandBindingMap = Record<string, KeyLike>\n\nexport interface CommandBindingsOverrideWarning {\n code: \"command-binding-override\"\n command: string\n previousKey: KeyLike\n nextKey: KeyLike\n}\n\nexport interface CommandBindingsError {\n code: \"invalid-command-binding\"\n command: string\n value: unknown\n reason: Error\n}\n\nexport interface CommandBindingsOptions {\n onWarning?: (warning: CommandBindingsOverrideWarning) => void\n onError?: (error: CommandBindingsError) => void\n}\n\nfunction isCommandBindingKey(value: unknown): value is KeyLike {\n return typeof value === \"string\" || (!!value && typeof value === \"object\" && !Array.isArray(value))\n}\n\nexport function commandBindings<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>(\n bindings: Readonly<CommandBindingMap>,\n options?: CommandBindingsOptions,\n): Binding<TTarget, TEvent>[] {\n const normalized: Binding<TTarget, TEvent>[] = []\n const indexesByCommand = new Map<string, number>()\n\n for (const [command, key] of Object.entries(bindings)) {\n if (!isCommandBindingKey(key)) {\n const error = new Error(\n `Invalid command binding for \"${command}\": command bindings must map command strings to key strings or keystroke objects`,\n )\n\n options?.onError?.({\n code: \"invalid-command-binding\",\n command,\n value: key,\n reason: error,\n })\n continue\n }\n\n const normalizedCommand = command.trim()\n\n const nextBinding = {\n key: typeof key === \"string\" ? key : { ...key },\n cmd: normalizedCommand,\n } satisfies Binding<TTarget, TEvent>\n\n const existingIndex = indexesByCommand.get(normalizedCommand)\n if (existingIndex !== undefined) {\n const previousBinding = normalized[existingIndex]!\n options?.onWarning?.({\n code: \"command-binding-override\",\n command: normalizedCommand,\n previousKey: previousBinding.key,\n nextKey: nextBinding.key,\n })\n normalized[existingIndex] = nextBinding\n continue\n }\n\n indexesByCommand.set(normalizedCommand, normalized.length)\n normalized.push(nextBinding)\n }\n\n return normalized\n}\n",
|
|
7
7
|
"import type { KeySequencePart } from \"../types.js\"\n\nexport type KeyModifierName = \"ctrl\" | \"shift\" | \"meta\" | \"super\" | \"hyper\"\n\nexport interface KeySequenceFormatPart {\n stroke: KeySequencePart[\"stroke\"]\n display: string\n match?: KeySequencePart[\"match\"]\n tokenName?: string\n patternName?: string\n}\n\nexport type TokenDisplayResolver =\n | Readonly<Record<string, string>>\n | ((tokenName: string, part: KeySequenceFormatPart) => string | undefined)\n\nexport type PatternDisplayResolver =\n | Readonly<Record<string, string>>\n | ((patternName: string, part: KeySequenceFormatPart) => string | undefined)\n\nexport interface FormatKeySequenceOptions {\n tokenDisplay?: TokenDisplayResolver\n patternDisplay?: PatternDisplayResolver\n keyNameAliases?: Readonly<Record<string, string>>\n modifierAliases?: Partial<Record<KeyModifierName, string>>\n separator?: string\n}\n\nexport interface FormatCommandBindingsOptions extends FormatKeySequenceOptions {\n bindingSeparator?: string\n dedupe?: boolean\n}\n\nexport interface SequenceBindingLike {\n sequence: readonly KeySequenceFormatPart[]\n}\n\nfunction formatStroke(part: KeySequenceFormatPart, options: FormatKeySequenceOptions): string {\n if (part.tokenName) {\n const tokenDisplay = options.tokenDisplay\n if (!tokenDisplay) return part.display\n if (typeof tokenDisplay === \"function\") return tokenDisplay(part.tokenName, part) ?? part.display\n return tokenDisplay[part.tokenName] ?? part.display\n }\n\n if (part.patternName) {\n const patternDisplay = options.patternDisplay\n if (!patternDisplay) return part.display\n if (typeof patternDisplay === \"function\") return patternDisplay(part.patternName, part) ?? part.display\n return patternDisplay[part.patternName] ?? part.display\n }\n\n if (!options.keyNameAliases && !options.modifierAliases) return part.display\n\n // This is on the command-palette hot path; build directly to avoid per-stroke arrays.\n const stroke = part.stroke\n const modifierAliases = options.modifierAliases\n let formatted = \"\"\n let pieceCount = 0\n\n if (stroke.ctrl) {\n formatted = modifierAliases?.ctrl ?? \"ctrl\"\n pieceCount = 1\n }\n\n if (stroke.shift) {\n const alias = modifierAliases?.shift ?? \"shift\"\n formatted = pieceCount === 0 ? alias : `${formatted}+${alias}`\n pieceCount += 1\n }\n\n if (stroke.meta) {\n const alias = modifierAliases?.meta ?? \"meta\"\n formatted = pieceCount === 0 ? alias : `${formatted}+${alias}`\n pieceCount += 1\n }\n\n if (stroke.super) {\n const alias = modifierAliases?.super ?? \"super\"\n formatted = pieceCount === 0 ? alias : `${formatted}+${alias}`\n pieceCount += 1\n }\n\n if (stroke.hyper) {\n const alias = modifierAliases?.hyper ?? \"hyper\"\n formatted = pieceCount === 0 ? alias : `${formatted}+${alias}`\n pieceCount += 1\n }\n\n const name = stroke.name === \"return\" ? \"enter\" : stroke.name\n const keyName = options.keyNameAliases?.[name] ?? name\n return pieceCount === 0 ? keyName : `${formatted}+${keyName}`\n}\n\nexport function formatKeySequence(\n parts: readonly KeySequenceFormatPart[] | undefined,\n options: FormatKeySequenceOptions = {},\n): string {\n if (!parts || parts.length === 0) return \"\"\n\n // Avoid map/join allocation here; binding-list formatting calls this repeatedly.\n const separator = options.separator ?? \" \"\n let formatted = formatStroke(parts[0]!, options)\n for (let index = 1; index < parts.length; index += 1) {\n formatted += separator + formatStroke(parts[index]!, options)\n }\n\n return formatted\n}\n\nexport function formatCommandBindings(\n bindings: readonly SequenceBindingLike[] | undefined,\n options: FormatCommandBindingsOptions = {},\n): string | undefined {\n if (!bindings?.length) return\n\n const bindingSeparator = options.bindingSeparator ?? \", \"\n const dedupe = options.dedupe !== false\n const seen = dedupe ? new Set<string>() : undefined\n let formatted = \"\"\n let itemCount = 0\n\n // One pass keeps dedupe, filtering, and joining allocation-light for large binding lists.\n for (const binding of bindings) {\n const item = formatKeySequence(binding.sequence, options)\n if (!item) continue\n\n if (seen) {\n if (seen.has(item)) continue\n seen.add(item)\n }\n\n formatted = itemCount === 0 ? item : `${formatted}${bindingSeparator}${item}`\n itemCount += 1\n }\n\n return formatted\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": "
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "425AFADC60FBA39D64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/src/html.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"../chunks/index-p35cyhc4.js";
|
|
3
|
-
|
|
4
2
|
// src/html.ts
|
|
5
3
|
import { Keymap } from "@opentui/keymap";
|
|
6
4
|
import { registerDefaultKeys, registerEnabledFields, registerMetadataFields } from "@opentui/keymap/addons";
|
|
@@ -287,13 +285,13 @@ function createDefaultHtmlKeymap(root) {
|
|
|
287
285
|
return keymap;
|
|
288
286
|
}
|
|
289
287
|
export {
|
|
290
|
-
|
|
291
|
-
htmlEventMatchResolver,
|
|
292
|
-
createHtmlKeymapHost,
|
|
293
|
-
createHtmlKeymapEvent,
|
|
288
|
+
createDefaultHtmlKeymap,
|
|
294
289
|
createHtmlKeymap,
|
|
295
|
-
|
|
290
|
+
createHtmlKeymapEvent,
|
|
291
|
+
createHtmlKeymapHost,
|
|
292
|
+
htmlEventMatchResolver,
|
|
293
|
+
normalizeHtmlKeyName
|
|
296
294
|
};
|
|
297
295
|
|
|
298
|
-
//# debugId=
|
|
296
|
+
//# debugId=ED531E4A3D8D0B1564756E2164756E21
|
|
299
297
|
//# sourceMappingURL=html.js.map
|
package/src/html.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { Keymap } from \"@opentui/keymap\"\nimport { registerDefaultKeys, registerEnabledFields, registerMetadataFields } from \"@opentui/keymap/addons\"\nimport type {\n EventMatchResolver,\n HostMetadata,\n HostPlatform,\n KeyStrokeInput,\n KeymapEvent,\n KeymapHost,\n} from \"@opentui/keymap\"\n\nexport interface HtmlKeymapEvent extends KeymapEvent {\n readonly originalEvent?: KeyboardEvent\n}\n\ninterface HtmlKeyboardEventLike {\n key: string\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n preventDefault(): void\n stopPropagation(): void\n}\n\ninterface MutationObserverLike {\n observe(target: EventTarget, options?: unknown): void\n disconnect(): void\n}\n\ninterface MutationObserverCtorLike {\n new (callback: () => void): MutationObserverLike\n}\n\nconst HTML_KEY_NAME_ALIASES = new Map<string, string>([\n [\" \", \"space\"],\n [\"Spacebar\", \"space\"],\n [\"ArrowUp\", \"up\"],\n [\"ArrowDown\", \"down\"],\n [\"ArrowLeft\", \"left\"],\n [\"ArrowRight\", \"right\"],\n [\"Escape\", \"escape\"],\n [\"Esc\", \"escape\"],\n [\"Enter\", \"return\"],\n [\"Backspace\", \"backspace\"],\n [\"Delete\", \"delete\"],\n [\"Tab\", \"tab\"],\n [\"Home\", \"home\"],\n [\"End\", \"end\"],\n [\"PageUp\", \"pageup\"],\n [\"PageDown\", \"pagedown\"],\n [\"Insert\", \"insert\"],\n [\"CapsLock\", \"capslock\"],\n [\"NumLock\", \"numlock\"],\n [\"ScrollLock\", \"scrolllock\"],\n [\"ContextMenu\", \"menu\"],\n [\"Meta\", \"super\"],\n [\"OS\", \"super\"],\n [\"Alt\", \"alt\"],\n [\"Control\", \"control\"],\n [\"Shift\", \"shift\"],\n])\n\nfunction normalizeHostPlatform(value: string | undefined): HostPlatform {\n const normalized = value?.trim().toLowerCase()\n if (!normalized) {\n return \"unknown\"\n }\n\n if (normalized.includes(\"mac\") || normalized.includes(\"darwin\")) {\n return \"macos\"\n }\n\n if (normalized.includes(\"win\")) {\n return \"windows\"\n }\n\n if (normalized.includes(\"linux\") || normalized.includes(\"x11\")) {\n return \"linux\"\n }\n\n return \"unknown\"\n}\n\nfunction detectBrowserPlatform(): HostPlatform {\n const navigatorLike = globalThis.navigator as\n | (Navigator & { userAgentData?: { platform?: string }; userAgent?: string })\n | undefined\n const userAgentPlatform = navigatorLike?.userAgentData?.platform\n const platform = normalizeHostPlatform(userAgentPlatform)\n if (platform !== \"unknown\") {\n return platform\n }\n\n return normalizeHostPlatform(navigatorLike?.platform ?? navigatorLike?.userAgent)\n}\n\nfunction createHtmlHostMetadata(): HostMetadata {\n const platform = detectBrowserPlatform()\n\n return {\n platform,\n primaryModifier: platform === \"macos\" ? \"super\" : platform === \"unknown\" ? \"unknown\" : \"ctrl\",\n modifiers: {\n ctrl: \"supported\",\n shift: \"supported\",\n meta: \"supported\",\n super: \"supported\",\n hyper: \"unsupported\",\n },\n }\n}\n\nfunction isPrintableSymbol(name: string): boolean {\n return name.length === 1 && !/^[a-z0-9]$/i.test(name)\n}\n\nfunction getHtmlEventMatchInputs(event: HtmlKeymapEvent): KeyStrokeInput[] {\n const primary: KeyStrokeInput = {\n name: event.name,\n ctrl: event.ctrl,\n shift: event.shift,\n meta: event.meta,\n super: event.super ?? false,\n hyper: event.hyper || undefined,\n }\n\n if (!primary.shift || !isPrintableSymbol(primary.name)) {\n return [primary]\n }\n\n return [\n primary,\n {\n ...primary,\n shift: false,\n },\n ]\n}\n\nclass HtmlWrappedKeymapEvent implements HtmlKeymapEvent {\n public propagationStopped = false\n\n constructor(\n public readonly name: string,\n public readonly ctrl: boolean,\n public readonly shift: boolean,\n public readonly meta: boolean,\n private readonly superKey: boolean,\n public readonly originalEvent?: KeyboardEvent,\n ) {}\n\n public get super(): boolean {\n return this.superKey\n }\n\n public preventDefault(): void {\n this.originalEvent?.preventDefault()\n }\n\n public stopPropagation(): void {\n this.propagationStopped = true\n this.originalEvent?.stopPropagation()\n }\n}\n\nfunction getMutationObserverCtor(): MutationObserverCtorLike | undefined {\n return globalThis.MutationObserver as MutationObserverCtorLike | undefined\n}\n\nexport function normalizeHtmlKeyName(key: string): string {\n const aliased = HTML_KEY_NAME_ALIASES.get(key)\n if (aliased) {\n return aliased\n }\n\n if (/^F\\d{1,2}$/i.test(key)) {\n return key.toLowerCase()\n }\n\n if (key.length === 1) {\n return key.toLowerCase()\n }\n\n return key.trim().toLowerCase().replace(/\\s+/g, \"\")\n}\n\nexport function createHtmlKeymapEvent(event?: KeyboardEvent | HtmlKeyboardEventLike): HtmlKeymapEvent {\n if (!event) {\n return new HtmlWrappedKeymapEvent(\"command\", false, false, false, false)\n }\n\n const KeyboardEventCtor = globalThis.KeyboardEvent\n\n // Keymap uses `meta` for Alt/Option and `super` for the platform Meta key,\n // so browser `altKey` maps to `meta` and `metaKey` maps to `super`.\n return new HtmlWrappedKeymapEvent(\n normalizeHtmlKeyName(event.key),\n event.ctrlKey,\n event.shiftKey,\n event.altKey,\n event.metaKey,\n KeyboardEventCtor && event instanceof KeyboardEventCtor ? event : undefined,\n )\n}\n\nclass HtmlKeymapHost implements KeymapHost<HTMLElement, HtmlKeymapEvent> {\n public readonly metadata = createHtmlHostMetadata()\n public readonly rootTarget: HTMLElement\n public readonly isDestroyed = false\n\n private observer?: MutationObserverLike\n private readonly targetDestroyListeners = new Map<HTMLElement, Set<() => void>>()\n\n constructor(root: HTMLElement) {\n this.rootTarget = root\n }\n\n public getFocusedTarget(): HTMLElement | null {\n const active = this.rootTarget.ownerDocument.activeElement\n if (!active || typeof active !== \"object\") {\n return null\n }\n\n if (active === this.rootTarget || this.rootTarget.contains(active as HTMLElement)) {\n return active as HTMLElement\n }\n\n return null\n }\n\n public getParentTarget(target: HTMLElement): HTMLElement | null {\n return target.parentElement\n }\n\n public isTargetDestroyed(target: HTMLElement): boolean {\n if (target === this.rootTarget) {\n return false\n }\n\n return !target.isConnected || !this.rootTarget.contains(target)\n }\n\n public onKeyPress(listener: (event: HtmlKeymapEvent) => void): () => void {\n const onKeyDown = (event: KeyboardEvent) => {\n listener(createHtmlKeymapEvent(event))\n }\n\n this.rootTarget.addEventListener(\"keydown\", onKeyDown, { capture: true })\n return () => {\n this.rootTarget.removeEventListener(\"keydown\", onKeyDown, { capture: true })\n }\n }\n\n public onKeyRelease(listener: (event: HtmlKeymapEvent) => void): () => void {\n const onKeyUp = (event: KeyboardEvent) => {\n listener(createHtmlKeymapEvent(event))\n }\n\n this.rootTarget.addEventListener(\"keyup\", onKeyUp, { capture: true })\n return () => {\n this.rootTarget.removeEventListener(\"keyup\", onKeyUp, { capture: true })\n }\n }\n\n public onFocusChange(listener: (target: HTMLElement | null) => void): () => void {\n const notifyFocus = () => {\n queueMicrotask(() => {\n listener(this.getFocusedTarget())\n })\n }\n\n this.rootTarget.addEventListener(\"focusin\", notifyFocus, { capture: true })\n this.rootTarget.addEventListener(\"focusout\", notifyFocus, { capture: true })\n return () => {\n this.rootTarget.removeEventListener(\"focusin\", notifyFocus, { capture: true })\n this.rootTarget.removeEventListener(\"focusout\", notifyFocus, { capture: true })\n }\n }\n\n public onTargetDestroy(target: HTMLElement, listener: () => void): () => void {\n let listeners = this.targetDestroyListeners.get(target)\n if (!listeners) {\n listeners = new Set()\n this.targetDestroyListeners.set(target, listeners)\n }\n\n listeners.add(listener)\n this.ensureObserver()\n this.flushDisconnectedTargets()\n\n return () => {\n const current = this.targetDestroyListeners.get(target)\n if (!current) {\n return\n }\n\n current.delete(listener)\n if (current.size === 0) {\n this.targetDestroyListeners.delete(target)\n }\n\n if (this.targetDestroyListeners.size === 0) {\n this.disconnectObserver()\n }\n }\n }\n\n public createCommandEvent(): HtmlKeymapEvent {\n return createHtmlKeymapEvent()\n }\n\n private ensureObserver(): void {\n if (this.observer || this.targetDestroyListeners.size === 0) {\n return\n }\n\n const MutationObserverCtor = getMutationObserverCtor()\n if (!MutationObserverCtor) {\n return\n }\n\n this.observer = new MutationObserverCtor(() => {\n this.flushDisconnectedTargets()\n })\n this.observer.observe(this.rootTarget, {\n childList: true,\n subtree: true,\n })\n }\n\n private disconnectObserver(): void {\n if (!this.observer) {\n return\n }\n\n this.observer.disconnect()\n this.observer = undefined\n }\n\n private flushDisconnectedTargets(): void {\n for (const [target, listeners] of this.targetDestroyListeners) {\n if (!this.isTargetDestroyed(target)) {\n continue\n }\n\n this.targetDestroyListeners.delete(target)\n for (const current of [...listeners]) {\n current()\n }\n }\n\n if (this.targetDestroyListeners.size === 0) {\n this.disconnectObserver()\n }\n }\n}\n\nexport function createHtmlKeymapHost(root: HTMLElement): KeymapHost<HTMLElement, HtmlKeymapEvent> {\n return new HtmlKeymapHost(root)\n}\n\nexport const htmlEventMatchResolver: EventMatchResolver<HtmlKeymapEvent> = (event, ctx) => {\n return getHtmlEventMatchInputs(event).map((candidate) => ctx.resolveKey(candidate))\n}\n\nexport function createHtmlKeymap(root: HTMLElement): Keymap<HTMLElement, HtmlKeymapEvent> {\n return new Keymap(createHtmlKeymapHost(root))\n}\n\nexport function createDefaultHtmlKeymap(root: HTMLElement): Keymap<HTMLElement, HtmlKeymapEvent> {\n const keymap = new Keymap(createHtmlKeymapHost(root))\n registerDefaultKeys(keymap)\n registerEnabledFields(keymap)\n registerMetadataFields(keymap)\n keymap.prependEventMatchResolver(htmlEventMatchResolver)\n return keymap\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "ED531E4A3D8D0B1564756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|