Files
pole-book/server/node_modules/media-chrome/dist/cjs/react/media-store.js

135 lines
5.1 KiB
JavaScript

var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var media_store_exports = {};
__export(media_store_exports, {
AvailabilityStates: () => import_constants.AvailabilityStates,
MediaActionTypes: () => MediaActionTypes,
MediaContext: () => MediaContext,
MediaProvider: () => MediaProvider,
MediaStateNames: () => MediaStateNames,
StreamTypes: () => import_constants.StreamTypes,
VolumeLevels: () => import_constants.VolumeLevels,
timeUtils: () => timeUtils,
useMediaDispatch: () => useMediaDispatch,
useMediaFullscreenRef: () => useMediaFullscreenRef,
useMediaRef: () => useMediaRef,
useMediaSelector: () => useMediaSelector,
useMediaStore: () => useMediaStore
});
module.exports = __toCommonJS(media_store_exports);
var import_react = __toESM(require("react"), 1);
var import_constants = require("../constants.js");
var import_media_store = __toESM(require("../media-store/media-store.js"), 1);
var import_useSyncExternalStoreWithSelector = require("./useSyncExternalStoreWithSelector.js");
var timeUtils = __toESM(require("../utils/time.js"), 1);
const {
REGISTER_MEDIA_STATE_RECEIVER,
// eslint-disable-line
UNREGISTER_MEDIA_STATE_RECEIVER,
// eslint-disable-line
// NOTE: These generic state change requests are not currently supported (CJP)
MEDIA_SHOW_TEXT_TRACKS_REQUEST,
// eslint-disable-line
MEDIA_HIDE_TEXT_TRACKS_REQUEST,
// eslint-disable-line
...StateChangeRequests
} = import_constants.MediaUIEvents;
const MediaActionTypes = {
...StateChangeRequests,
MEDIA_ELEMENT_CHANGE_REQUEST: "mediaelementchangerequest",
FULLSCREEN_ELEMENT_CHANGE_REQUEST: "fullscreenelementchangerequest"
};
const MediaStateNames = { ...import_constants.MediaUIProps };
const identity = (x) => x;
const MediaContext = (0, import_react.createContext)(null);
const MediaProvider = ({
children,
mediaStore
}) => {
const value = (0, import_react.useMemo)(
() => mediaStore != null ? mediaStore : (0, import_media_store.default)({ documentElement: globalThis.document }),
[mediaStore]
);
(0, import_react.useEffect)(() => {
value == null ? void 0 : value.dispatch({
type: "documentelementchangerequest",
detail: globalThis.document
});
return () => {
value == null ? void 0 : value.dispatch({
type: "documentelementchangerequest",
detail: void 0
});
};
}, []);
return /* @__PURE__ */ import_react.default.createElement(MediaContext.Provider, { value }, children);
};
const useMediaStore = () => {
const store = (0, import_react.useContext)(MediaContext);
return store;
};
const useMediaDispatch = () => {
var _a;
const store = (0, import_react.useContext)(MediaContext);
const dispatch = (_a = store == null ? void 0 : store.dispatch) != null ? _a : identity;
return (value) => {
return dispatch(value);
};
};
const useMediaRef = () => {
const dispatch = useMediaDispatch();
return (mediaEl) => {
dispatch({
type: MediaActionTypes.MEDIA_ELEMENT_CHANGE_REQUEST,
detail: mediaEl
});
};
};
const useMediaFullscreenRef = () => {
const dispatch = useMediaDispatch();
return (fullscreenEl) => {
dispatch({
type: MediaActionTypes.FULLSCREEN_ELEMENT_CHANGE_REQUEST,
detail: fullscreenEl
});
};
};
const refEquality = (a, b) => a === b;
const useMediaSelector = (selector, equalityFn = refEquality) => {
var _a, _b, _c;
const store = (0, import_react.useContext)(MediaContext);
const selectedState = (0, import_useSyncExternalStoreWithSelector.useSyncExternalStoreWithSelector)(
(_a = store == null ? void 0 : store.subscribe) != null ? _a : identity,
(_b = store == null ? void 0 : store.getState) != null ? _b : identity,
(_c = store == null ? void 0 : store.getState) != null ? _c : identity,
selector,
equalityFn
);
return selectedState;
};