wp/wp-includes/js/dist/preferences.js
changeset 19 3d72ae0968f4
child 21 48c4eec2b7e6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/js/dist/preferences.js	Tue Sep 27 16:37:53 2022 +0200
@@ -0,0 +1,345 @@
+/******/ (function() { // webpackBootstrap
+/******/ 	"use strict";
+/******/ 	// The require scope
+/******/ 	var __webpack_require__ = {};
+/******/ 	
+/************************************************************************/
+/******/ 	/* webpack/runtime/define property getters */
+/******/ 	!function() {
+/******/ 		// define getter functions for harmony exports
+/******/ 		__webpack_require__.d = function(exports, definition) {
+/******/ 			for(var key in definition) {
+/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ 				}
+/******/ 			}
+/******/ 		};
+/******/ 	}();
+/******/ 	
+/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
+/******/ 	!function() {
+/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
+/******/ 	}();
+/******/ 	
+/******/ 	/* webpack/runtime/make namespace object */
+/******/ 	!function() {
+/******/ 		// define __esModule on exports
+/******/ 		__webpack_require__.r = function(exports) {
+/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 			}
+/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 		};
+/******/ 	}();
+/******/ 	
+/************************************************************************/
+var __webpack_exports__ = {};
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+  "PreferenceToggleMenuItem": function() { return /* reexport */ PreferenceToggleMenuItem; },
+  "store": function() { return /* reexport */ store; }
+});
+
+// NAMESPACE OBJECT: ./node_modules/@wordpress/preferences/build-module/store/actions.js
+var actions_namespaceObject = {};
+__webpack_require__.r(actions_namespaceObject);
+__webpack_require__.d(actions_namespaceObject, {
+  "set": function() { return set; },
+  "setDefaults": function() { return setDefaults; },
+  "toggle": function() { return toggle; }
+});
+
+// NAMESPACE OBJECT: ./node_modules/@wordpress/preferences/build-module/store/selectors.js
+var selectors_namespaceObject = {};
+__webpack_require__.r(selectors_namespaceObject);
+__webpack_require__.d(selectors_namespaceObject, {
+  "get": function() { return get; }
+});
+
+;// CONCATENATED MODULE: external ["wp","element"]
+var external_wp_element_namespaceObject = window["wp"]["element"];
+;// CONCATENATED MODULE: external ["wp","data"]
+var external_wp_data_namespaceObject = window["wp"]["data"];
+;// CONCATENATED MODULE: external ["wp","components"]
+var external_wp_components_namespaceObject = window["wp"]["components"];
+;// CONCATENATED MODULE: external ["wp","i18n"]
+var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
+;// CONCATENATED MODULE: external ["wp","primitives"]
+var external_wp_primitives_namespaceObject = window["wp"]["primitives"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js
+
+
+/**
+ * WordPress dependencies
+ */
+
+const check = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
+  xmlns: "http://www.w3.org/2000/svg",
+  viewBox: "0 0 24 24"
+}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
+  d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
+}));
+/* harmony default export */ var library_check = (check);
+
+;// CONCATENATED MODULE: external ["wp","a11y"]
+var external_wp_a11y_namespaceObject = window["wp"]["a11y"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/store/reducer.js
+/**
+ * WordPress dependencies
+ */
+
+/**
+ * Reducer returning the defaults for user preferences.
+ *
+ * This is kept intentionally separate from the preferences
+ * themselves so that defaults are not persisted.
+ *
+ * @param {Object} state  Current state.
+ * @param {Object} action Dispatched action.
+ *
+ * @return {Object} Updated state.
+ */
+
+function defaults() {
+  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  let action = arguments.length > 1 ? arguments[1] : undefined;
+
+  if (action.type === 'SET_PREFERENCE_DEFAULTS') {
+    const {
+      scope,
+      defaults: values
+    } = action;
+    return { ...state,
+      [scope]: { ...state[scope],
+        ...values
+      }
+    };
+  }
+
+  return state;
+}
+/**
+ * Reducer returning the user preferences.
+ *
+ * @param {Object} state  Current state.
+ * @param {Object} action Dispatched action.
+ *
+ * @return {Object} Updated state.
+ */
+
+function preferences() {
+  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  let action = arguments.length > 1 ? arguments[1] : undefined;
+
+  if (action.type === 'SET_PREFERENCE_VALUE') {
+    const {
+      scope,
+      name,
+      value
+    } = action;
+    return { ...state,
+      [scope]: { ...state[scope],
+        [name]: value
+      }
+    };
+  }
+
+  return state;
+}
+/* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
+  defaults,
+  preferences
+}));
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/store/actions.js
+/**
+ * Returns an action object used in signalling that a preference should be
+ * toggled.
+ *
+ * @param {string} scope The preference scope (e.g. core/edit-post).
+ * @param {string} name  The preference name.
+ */
+function toggle(scope, name) {
+  return function (_ref) {
+    let {
+      select,
+      dispatch
+    } = _ref;
+    const currentValue = select.get(scope, name);
+    dispatch.set(scope, name, !currentValue);
+  };
+}
+/**
+ * Returns an action object used in signalling that a preference should be set
+ * to a value
+ *
+ * @param {string} scope The preference scope (e.g. core/edit-post).
+ * @param {string} name  The preference name.
+ * @param {*}      value The value to set.
+ *
+ * @return {Object} Action object.
+ */
+
+function set(scope, name, value) {
+  return {
+    type: 'SET_PREFERENCE_VALUE',
+    scope,
+    name,
+    value
+  };
+}
+/**
+ * Returns an action object used in signalling that preference defaults should
+ * be set.
+ *
+ * @param {string}            scope    The preference scope (e.g. core/edit-post).
+ * @param {Object<string, *>} defaults A key/value map of preference names to values.
+ *
+ * @return {Object} Action object.
+ */
+
+function setDefaults(scope, defaults) {
+  return {
+    type: 'SET_PREFERENCE_DEFAULTS',
+    scope,
+    defaults
+  };
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/store/selectors.js
+/**
+ * Returns a boolean indicating whether a prefer is active for a particular
+ * scope.
+ *
+ * @param {Object} state The store state.
+ * @param {string} scope The scope of the feature (e.g. core/edit-post).
+ * @param {string} name  The name of the feature.
+ *
+ * @return {*} Is the feature enabled?
+ */
+function get(state, scope, name) {
+  var _state$preferences$sc, _state$defaults$scope;
+
+  const value = (_state$preferences$sc = state.preferences[scope]) === null || _state$preferences$sc === void 0 ? void 0 : _state$preferences$sc[name];
+  return value !== undefined ? value : (_state$defaults$scope = state.defaults[scope]) === null || _state$defaults$scope === void 0 ? void 0 : _state$defaults$scope[name];
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/store/constants.js
+/**
+ * The identifier for the data store.
+ *
+ * @type {string}
+ */
+const STORE_NAME = 'core/preferences';
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/store/index.js
+/**
+ * WordPress dependencies
+ */
+
+/**
+ * Internal dependencies
+ */
+
+/**
+ * Internal dependencies
+ */
+
+
+
+
+
+/**
+ * Store definition for the interface namespace.
+ *
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
+ *
+ * @type {Object}
+ */
+
+const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, {
+  reducer: reducer,
+  actions: actions_namespaceObject,
+  selectors: selectors_namespaceObject,
+  persist: ['preferences']
+}); // Once we build a more generic persistence plugin that works across types of stores
+// we'd be able to replace this with a register call.
+
+(0,external_wp_data_namespaceObject.registerStore)(STORE_NAME, {
+  reducer: reducer,
+  actions: actions_namespaceObject,
+  selectors: selectors_namespaceObject,
+  persist: ['preferences']
+});
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/components/preference-toggle-menu-item/index.js
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+function PreferenceToggleMenuItem(_ref) {
+  let {
+    scope,
+    name,
+    label,
+    info,
+    messageActivated,
+    messageDeactivated,
+    shortcut
+  } = _ref;
+  const isActive = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(store).get(scope, name), [name]);
+  const {
+    toggle
+  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
+
+  const speakMessage = () => {
+    if (isActive) {
+      const message = messageDeactivated || (0,external_wp_i18n_namespaceObject.sprintf)(
+      /* translators: %s: preference name, e.g. 'Fullscreen mode' */
+      (0,external_wp_i18n_namespaceObject.__)('Preference deactivated - %s'), label);
+      (0,external_wp_a11y_namespaceObject.speak)(message);
+    } else {
+      const message = messageActivated || (0,external_wp_i18n_namespaceObject.sprintf)(
+      /* translators: %s: preference name, e.g. 'Fullscreen mode' */
+      (0,external_wp_i18n_namespaceObject.__)('Preference activated - %s'), label);
+      (0,external_wp_a11y_namespaceObject.speak)(message);
+    }
+  };
+
+  return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.MenuItem, {
+    icon: isActive && library_check,
+    isSelected: isActive,
+    onClick: () => {
+      toggle(scope, name);
+      speakMessage();
+    },
+    role: "menuitemcheckbox",
+    info: info,
+    shortcut: shortcut
+  }, label);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/components/index.js
+
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences/build-module/index.js
+
+
+
+(window.wp = window.wp || {}).preferences = __webpack_exports__;
+/******/ })()
+;
\ No newline at end of file