PageSourceSearch

https://missdream.org/wp-includes/js/dist/keyboard-shortcuts.js

js missdream.org collected 2026-10-02 07:11:40 UTC 10,508 bytes, 306 lines download raw bytes

1(function() {
2"use strict";
3var wp;
4(wp ||= {}).keyboardShortcuts = (() => {
5  var __create = Object.create;
6  var __defProp = Object.defineProperty;
7  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8  var __getOwnPropNames = Object.getOwnPropertyNames;
9  var __getProtoOf = Object.getPrototypeOf;
10  var __hasOwnProp = Object.prototype.hasOwnProperty;
11  var __commonJS = (cb, mod) => function __require() {
12    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13  };
14  var __export = (target, all) => {
15    for (var name in all)
16      __defProp(target, name, { get: all[name], enumerable: true });
17  };
18  var __copyProps = (to, from, except, desc) => {
19    if (from && typeof from === "object" || typeof from === "function") {
20      for (let key of __getOwnPropNames(from))
21        if (!__hasOwnProp.call(to, key) && key !== except)
22          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23    }
24    return to;
25  };
26  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
27    // If the importer is in node compatibility mode or this is not an ESM
28    // file that has been converted to a CommonJS file using a Babel-
29    // compatible transform (i.e. "__esModule" has not been set), then set
30    // "default" to the CommonJS "module.exports" for node compatibility.
31    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
32    mod
33  ));
34  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
36  // package-external:@wordpress/data
37  var require_data = __commonJS({
38    "package-external:@wordpress/data"(exports, module) {
39      module.exports = window.wp.data;
40    }
41  });
42
43  // package-external:@wordpress/keycodes
44  var require_keycodes = __commonJS({
45    "package-external:@wordpress/keycodes"(exports, module) {
46      module.exports = window.wp.keycodes;
47    }
48  });
49
50  // package-external:@wordpress/element
51  var require_element = __commonJS({
52    "package-external:@wordpress/element"(exports, module) {
53      module.exports = window.wp.element;
54    }
55  });
56
57  // vendor-external:react/jsx-runtime
58  var require_jsx_runtime = __commonJS({
59    "vendor-external:react/jsx-runtime"(exports, module) {
60      module.exports = window.ReactJSXRuntime;
61    }
62  });
63
64  
64// packages/keyboard-shortcuts/build-module/index.mjs
65  var index_exports = {};
66  __export(index_exports, {
67    ShortcutProvider: () => ShortcutProvider,
68    __unstableUseShortcutEventMatch: () => useShortcutEventMatch,
69    store: () => store,
70    useShortcut: () => useShortcut
71  });
72
73  
73// packages/keyboard-shortcuts/build-module/store/index.mjs
74  var import_data2 = __toESM(require_data(), 1);
75
76  
76// packages/keyboard-shortcuts/build-module/store/reducer.mjs
77  function reducer(state = {}, action) {
78    switch (action.type) {
79      case "REGISTER_SHORTCUT":
80        return {
81          ...state,
82          [action.name]: {
83            category: action.category,
84            keyCombination: action.keyCombination,
85            aliases: action.aliases,
86            description: action.description
87          }
88        };
89      case "UNREGISTER_SHORTCUT":
90        const { [action.name]: actionName, ...remainingState } = state;
91        return remainingState;
92    }
93    return state;
94  }
95  var reducer_default = reducer;
96
97  
97// packages/keyboard-shortcuts/build-module/store/actions.mjs
98  var actions_exports = {};
99  __export(actions_exports, {
100    registerShortcut: () => registerShortcut,
101    unregisterShortcut: () => unregisterShortcut
102  });
103  function registerShortcut({
104    name,
105    category,
106    description,
107    keyCombination,
108    aliases
109  }) {
110    return {
111      type: "REGISTER_SHORTCUT",
112      name,
113      category,
114      keyCombination,
115      aliases,
116      description
117    };
118  }
119  function unregisterShortcut(name) {
120    return {
121      type: "UNREGISTER_SHORTCUT",
122      name
123    };
124  }
125
126  
126// packages/keyboard-shortcuts/build-module/store/selectors.mjs
127  var selectors_exports = {};
128  __export(selectors_exports, {
129    getAllShortcutKeyCombinations: () => getAllShortcutKeyCombinations,
130    getAllShortcutRawKeyCombinations: () => getAllShortcutRawKeyCombinations,
131    getCategoryShortcuts: () => getCategoryShortcuts,
132    getShortcutAliases: () => getShortcutAliases,
133    getShortcutDescription: () => getShortcutDescription,
134    getShortcutKeyCombination: () => getShortcutKeyCombination,
135    getShortcutRepresentation: () => getShortcutRepresentation
136  });
137  var import_data = __toESM(require_data(), 1);
138  var import_keycodes = __toESM(require_keycodes(), 1);
139  var EMPTY_ARRAY = [];
140  var FORMATTING_METHODS = {
141    /**
142     * Display formatting.
143     */
144    display: import_keycodes.displayShortcut,
145    /**
146     * Raw shortcut formatting.
147     */
148    raw: import_keycodes.rawShortcut,
149    /**
150     * ARIA label formatting.
151     */
152    ariaLabel: import_keycodes.shortcutAriaLabel
153  };
154  function getKeyCombinationRepresentation(shortcut, representation) {
155    if (!shortcut) {
156      return null;
157    }
158    return shortcut.modifier ? FORMATTING_METHODS[representation][shortcut.modifier](
159      shortcut.character
160    ) : shortcut.character;
161  }
162  function getShortcutKeyCombination(state, name) {
163    return state[name] ? state[name].keyCombination : null;
164  }
165  function getShortcutRepresentation(state, name, representation = "display") {
166    const shortcut = getShortcutKeyCombination(state, name);
167    return getKeyCombinationRepresentation(shortcut, representation);
168  }
169  function getShortcutDescription(state, name) {
170    return state[name] ? state[name].description : null;
171  }
172  function getShortcutAliases(state, name) {
173    return state[name] && state[name].aliases ? state[name].aliases : EMPTY_ARRAY;
174  }
175  var getAllShortcutKeyCombinations = (0, import_data.createSelector)(
176    (state, name) => {
177      return [
178        getShortcutKeyCombination(state, name),
179        ...getShortcutAliases(state, name)
180      ].filter(
181        (combination) => !!combination
182      );
183    },
184    (state, name) => [state[name]]
185  );
186  var getAllShortcutRawKeyCombinations = (0, import_data.createSelector)(
187    (state, name) => {
188      return getAllShortcutKeyCombinations(state, name).map(
189        (combination) => getKeyCombinationRepresentation(combination, "raw")
190      );
191    },
192    (state, name) => [state[name]]
193  );
194  var getCategoryShortcuts = (0, import_data.createSelector)(
195    (state, categoryName) => {
196      return Object.entries(state).filter(([, shortcut]) => shortcut.category === categoryName).map(([name]) => name);
197    },
198    (state) => [state]
199  );
200
201  
201// packages/keyboard-shortcuts/build-module/store/index.mjs
202  var STORE_NAME = "core/keyboard-shortcuts";
203  var store = (0, import_data2.createReduxStore)(STORE_NAME, {
204    reducer: reducer_default,
205    actions: actions_exports,
206    selectors: selectors_exports
207  });
208  (0, import_data2.register)(store);
209
210  
210// packages/keyboard-shortcuts/build-module/hooks/use-shortcut.mjs
211  var import_element3 = __toESM(require_element(), 1);
212
213  
213// packages/keyboard-shortcuts/build-module/hooks/use-shortcut-event-match.mjs
214  var import_data3 = __toESM(require_data(), 1);
215  var import_element = __toESM(require_element(), 1);
216  var import_keycodes2 = __toESM(require_keycodes(), 1);
217  function useShortcutEventMatch() {
218    const { getAllShortcutKeyCombinations: getAllShortcutKeyCombinations2 } = (0, import_data3.useSelect)(
219      store
220    );
221    return (0, import_element.useCallback)(
222      (name, event) => {
223        return getAllShortcutKeyCombinations2(name).some(
224          (combination) => {
225            if (!combination) {
226              return false;
227            }
228            return import_keycodes2.isKeyboardEvent[combination.modifier ?? "undefined"](event, combination.character);
229          }
230        );
231      },
232      [getAllShortcutKeyCombinations2]
233    );
234  }
235
236  
236// packages/keyboard-shortcuts/build-module/context.mjs
237  var import_element2 = __toESM(require_element(), 1);
238  var globalShortcuts = /* @__PURE__ */ new Set();
239  var globalListener = (event) => {
240    for (const keyboardShortcut of globalShortcuts) {
241      keyboardShortcut(event);
242    }
243  };
244  var context = (0, import_element2.createContext)({
245    add: (shortcut) => {
246      if (globalShortcuts.size === 0) {
247        document.addEventListener("keydown", globalListener);
248      }
249      globalShortcuts.add(shortcut);
250    },
251    delete: (shortcut) => {
252      globalShortcuts.delete(shortcut);
253      if (globalShortcuts.size === 0) {
254        document.removeEventListener("keydown", globalListener);
255      }
256    }
257  });
258  context.displayName = "KeyboardShortcutsContext";
259
260  
260// packages/keyboard-shortcuts/build-module/hooks/use-shortcut.mjs
261  function useShortcut(name, callback, { isDisabled = false } = {}) {
262    const shortcuts = (0, import_element3.useContext)(context);
263    const isMatch = useShortcutEventMatch();
264    const callbackRef = (0, import_element3.useRef)();
265    (0, import_element3.useEffect)(() => {
266      callbackRef.current = callback;
267    }, [callback]);
268    (0, import_element3.useEffect)(() => {
269      if (isDisabled) {
270        return;
271      }
272      function _callback(event) {
273        if (isMatch(name, event) && callbackRef.current) {
274          callbackRef.current(event);
275        }
276      }
277      shortcuts.add(_callback);
278      return () => {
279        shortcuts.delete(_callback);
280      };
281    }, [name, isDisabled, shortcuts, isMatch]);
282  }
283
284  
284// packages/keyboard-shortcuts/build-module/components/shortcut-provider.mjs
285  var import_element4 = __toESM(require_element(), 1);
286  var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
287  var { Provider } = context;
288  function ShortcutProvider(props) {
289    const [keyboardShortcuts] = (0, import_element4.useState)(
290      () => /* @__PURE__ */ new Set()
291    );
292    function onKeyDown(event) {
293      if (props.onKeyDown) {
294        props.onKeyDown(event);
295      }
296      const nativeEvent = event.nativeEvent;
297      for (const keyboardShortcut of keyboardShortcuts) {
298        keyboardShortcut(nativeEvent);
299      }
300    }
301    return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Provider, { value: keyboardShortcuts, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...props, onKeyDown }) });
302  }
303  return __toCommonJS(index_exports);
304})();
305(window.wp ||= {}).keyboardShortcuts = wp.keyboardShortcuts;
306})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.