117 lines
2.6 KiB
JavaScript
117 lines
2.6 KiB
JavaScript
"use strict";
|
|
/* eslint no-empty: 0 */
|
|
|
|
var __read = this && this.__read || function (o, n) {
|
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
if (!m) return o;
|
|
var i = m.call(o),
|
|
r,
|
|
ar = [],
|
|
e;
|
|
|
|
try {
|
|
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
|
|
ar.push(r.value);
|
|
}
|
|
} catch (error) {
|
|
e = {
|
|
error: error
|
|
};
|
|
} finally {
|
|
try {
|
|
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
} finally {
|
|
if (e) throw e.error;
|
|
}
|
|
}
|
|
|
|
return ar;
|
|
};
|
|
|
|
var __importDefault = this && this.__importDefault || function (mod) {
|
|
return mod && mod.__esModule ? mod : {
|
|
"default": mod
|
|
};
|
|
};
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
|
|
var react_1 = require("react");
|
|
|
|
var screenfull_1 = __importDefault(require("screenfull"));
|
|
|
|
var useUnmount_1 = __importDefault(require("../useUnmount"));
|
|
|
|
var dom_1 = require("../utils/dom");
|
|
|
|
exports["default"] = function (target, options) {
|
|
var _a = options || {},
|
|
onExitFull = _a.onExitFull,
|
|
onFull = _a.onFull;
|
|
|
|
var onExitFullRef = react_1.useRef(onExitFull);
|
|
onExitFullRef.current = onExitFull;
|
|
var onFullRef = react_1.useRef(onFull);
|
|
onFullRef.current = onFull;
|
|
|
|
var _b = __read(react_1.useState(false), 2),
|
|
state = _b[0],
|
|
setState = _b[1];
|
|
|
|
var onChange = react_1.useCallback(function () {
|
|
if (screenfull_1["default"].isEnabled) {
|
|
var isFullscreen = screenfull_1["default"].isFullscreen;
|
|
|
|
if (isFullscreen) {
|
|
onFullRef.current && onFullRef.current();
|
|
} else {
|
|
screenfull_1["default"].off('change', onChange);
|
|
onExitFullRef.current && onExitFullRef.current();
|
|
}
|
|
|
|
setState(isFullscreen);
|
|
}
|
|
}, []);
|
|
var setFull = react_1.useCallback(function () {
|
|
var el = dom_1.getTargetElement(target);
|
|
|
|
if (!el) {
|
|
return;
|
|
}
|
|
|
|
if (screenfull_1["default"].isEnabled) {
|
|
try {
|
|
screenfull_1["default"].request(el);
|
|
screenfull_1["default"].on('change', onChange);
|
|
} catch (error) {}
|
|
}
|
|
}, [target, onChange]);
|
|
var exitFull = react_1.useCallback(function () {
|
|
if (!state) {
|
|
return;
|
|
}
|
|
|
|
if (screenfull_1["default"].isEnabled) {
|
|
screenfull_1["default"].exit();
|
|
}
|
|
}, [state]);
|
|
var toggleFull = react_1.useCallback(function () {
|
|
if (state) {
|
|
exitFull();
|
|
} else {
|
|
setFull();
|
|
}
|
|
}, [state, setFull, exitFull]);
|
|
useUnmount_1["default"](function () {
|
|
if (screenfull_1["default"].isEnabled) {
|
|
screenfull_1["default"].off('change', onChange);
|
|
}
|
|
});
|
|
return [state, {
|
|
setFull: setFull,
|
|
exitFull: exitFull,
|
|
toggleFull: toggleFull
|
|
}];
|
|
}; |