UNPKG

9.84 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.isImage = exports.isVideo = exports.isCanvas = undefined;
7exports.isTextureDataReady = isTextureDataReady;
8exports.getTextureDataResolution = getTextureDataResolution;
9exports.isCubeTextureDataReady = isCubeTextureDataReady;
10exports.getCubeTextureDataResolution = getCubeTextureDataResolution;
11
12var _window = require('global/window');
13
14var _window2 = _interopRequireDefault(_window);
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18var HTMLVideoElement = _window2.default.HTMLVideoElement;
19var HTMLCanvasElement = _window2.default.HTMLCanvasElement;
20var HTMLImageElement = _window2.default.HTMLImageElement;
21
22// https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState
23
24var _ref = HTMLVideoElement || {},
25 _ref$HAVE_NOTHING = _ref.HAVE_NOTHING,
26 HAVE_NOTHING = _ref$HAVE_NOTHING === undefined ? 0 : _ref$HAVE_NOTHING,
27 _ref$HAVE_METADATA = _ref.HAVE_METADATA,
28 HAVE_METADATA = _ref$HAVE_METADATA === undefined ? 1 : _ref$HAVE_METADATA,
29 _ref$HAVE_CURRENT_DAT = _ref.HAVE_CURRENT_DATA,
30 HAVE_CURRENT_DATA = _ref$HAVE_CURRENT_DAT === undefined ? 2 : _ref$HAVE_CURRENT_DAT,
31 _ref$HAVE_FUTURE_DATA = _ref.HAVE_FUTURE_DATA,
32 HAVE_FUTURE_DATA = _ref$HAVE_FUTURE_DATA === undefined ? 3 : _ref$HAVE_FUTURE_DATA,
33 _ref$HAVE_ENOUGH_DATA = _ref.HAVE_ENOUGH_DATA,
34 HAVE_ENOUGH_DATA = _ref$HAVE_ENOUGH_DATA === undefined ? 4 : _ref$HAVE_ENOUGH_DATA;
35
36var isCanvas = exports.isCanvas = function isCanvas(d) {
37 return d instanceof HTMLCanvasElement;
38};
39var isVideo = exports.isVideo = function isVideo(d) {
40 return d instanceof HTMLVideoElement;
41};
42var isImage = exports.isImage = function isImage(d) {
43 return d instanceof HTMLImageElement;
44};
45
46function isTextureDataReady(data) {
47 var resolution = getTextureDataResolution(data);
48 if (!resolution[0] || !resolution[1]) {
49 return false;
50 }
51 if (isVideo(data) && data.readyState >= HAVE_CURRENT_DATA) {
52 return true;
53 } else if (isImage(data) || isCanvas(data)) {
54 if (data.width && data.height) {
55 return true;
56 }
57 }
58 return false;
59}
60
61function getTextureDataResolution(data) {
62 if (isImage(data) || isCanvas(data)) {
63 return [data.width, data.height];
64 } else if (isVideo(data)) {
65 return [data.videoWidth || 0, data.videoHeight || 0];
66 } else if (data && data.shape) {
67 return data.shape;
68 } else {
69 return [0, 0];
70 }
71}
72
73function isCubeTextureDataReady(data) {
74 if (isVideo(data) && data.readyState >= HAVE_CURRENT_DATA) {
75 return true;
76 } else if (isImage(data) || isCanvas(data)) {
77 if (data.width && data.height) {
78 return true;
79 }
80 }
81 return false;
82}
83
84function getCubeTextureDataResolution(data) {
85 if (Array.isArray(data)) {
86 data = data.filter(function (d) {
87 return d;
88 }).filter(function (d) {
89 return isImage(d) || isVideo(d) || d.shape.every(Boolean);
90 })[0];
91 return getCubeTextureDataResolution(data);
92 }
93 if (isImage(data) || isCanvas(data)) {
94 return [data.width, data.height];
95 } else if (isVideo(data)) {
96 return [data.videoWidth || 0, data.videoHeight || 0];
97 } else if (data && data.shape) {
98 return data.shape;
99 } else {
100 return [0, 0];
101 }
102}
103//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXh0dXJlL3V0aWxzLmpzIl0sIm5hbWVzIjpbImlzVGV4dHVyZURhdGFSZWFkeSIsImdldFRleHR1cmVEYXRhUmVzb2x1dGlvbiIsImlzQ3ViZVRleHR1cmVEYXRhUmVhZHkiLCJnZXRDdWJlVGV4dHVyZURhdGFSZXNvbHV0aW9uIiwiSFRNTFZpZGVvRWxlbWVudCIsIkhUTUxDYW52YXNFbGVtZW50IiwiSFRNTEltYWdlRWxlbWVudCIsIkhBVkVfTk9USElORyIsIkhBVkVfTUVUQURBVEEiLCJIQVZFX0NVUlJFTlRfREFUQSIsIkhBVkVfRlVUVVJFX0RBVEEiLCJIQVZFX0VOT1VHSF9EQVRBIiwiaXNDYW52YXMiLCJkIiwiaXNWaWRlbyIsImlzSW1hZ2UiLCJkYXRhIiwicmVzb2x1dGlvbiIsInJlYWR5U3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsInZpZGVvV2lkdGgiLCJ2aWRlb0hlaWdodCIsInNoYXBlIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiZXZlcnkiLCJCb29sZWFuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFtQmdCQSxrQixHQUFBQSxrQjtRQWFBQyx3QixHQUFBQSx3QjtRQVlBQyxzQixHQUFBQSxzQjtRQVdBQyw0QixHQUFBQSw0Qjs7QUF2RGhCOzs7Ozs7SUFFT0MsZ0Isb0JBQUFBLGdCO0lBQ0FDLGlCLG9CQUFBQSxpQjtJQUNBQyxnQixvQkFBQUEsZ0I7O0FBRVA7O1dBT0tGLG9CQUFvQixFOzZCQUx2QkcsWTtJQUFBQSxZLHFDQUFlLEM7OEJBQ2ZDLGE7SUFBQUEsYSxzQ0FBZ0IsQztpQ0FDaEJDLGlCO0lBQUFBLGlCLHlDQUFvQixDO2lDQUNwQkMsZ0I7SUFBQUEsZ0IseUNBQW1CLEM7aUNBQ25CQyxnQjtJQUFBQSxnQix5Q0FBbUIsQzs7QUFHZCxJQUFNQyw4QkFBVyxTQUFYQSxRQUFXLENBQUNDLENBQUQ7QUFBQSxTQUFPQSxhQUFhUixpQkFBcEI7QUFBQSxDQUFqQjtBQUNBLElBQU1TLDRCQUFVLFNBQVZBLE9BQVUsQ0FBQ0QsQ0FBRDtBQUFBLFNBQU9BLGFBQWFULGdCQUFwQjtBQUFBLENBQWhCO0FBQ0EsSUFBTVcsNEJBQVUsU0FBVkEsT0FBVSxDQUFDRixDQUFEO0FBQUEsU0FBT0EsYUFBYVAsZ0JBQXBCO0FBQUEsQ0FBaEI7O0FBRUEsU0FBU04sa0JBQVQsQ0FBNEJnQixJQUE1QixFQUFrQztBQUN2QyxNQUFNQyxhQUFhaEIseUJBQXlCZSxJQUF6QixDQUFuQjtBQUNBLE1BQUksQ0FBQ0MsV0FBVyxDQUFYLENBQUQsSUFBa0IsQ0FBQ0EsV0FBVyxDQUFYLENBQXZCLEVBQXNDO0FBQUUsV0FBTyxLQUFQO0FBQWM7QUFDdEQsTUFBSUgsUUFBUUUsSUFBUixLQUFpQkEsS0FBS0UsVUFBTCxJQUFtQlQsaUJBQXhDLEVBQTJEO0FBQ3pELFdBQU8sSUFBUDtBQUNELEdBRkQsTUFFTyxJQUFJTSxRQUFRQyxJQUFSLEtBQWlCSixTQUFTSSxJQUFULENBQXJCLEVBQXFDO0FBQzFDLFFBQUlBLEtBQUtHLEtBQUwsSUFBY0gsS0FBS0ksTUFBdkIsRUFBK0I7QUFDN0IsYUFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNELFNBQU8sS0FBUDtBQUNEOztBQUVNLFNBQVNuQix3QkFBVCxDQUFrQ2UsSUFBbEMsRUFBd0M7QUFDN0MsTUFBSUQsUUFBUUMsSUFBUixLQUFpQkosU0FBU0ksSUFBVCxDQUFyQixFQUFxQztBQUNuQyxXQUFPLENBQUNBLEtBQUtHLEtBQU4sRUFBYUgsS0FBS0ksTUFBbEIsQ0FBUDtBQUNELEdBRkQsTUFFTyxJQUFJTixRQUFRRSxJQUFSLENBQUosRUFBbUI7QUFDeEIsV0FBTyxDQUFDQSxLQUFLSyxVQUFMLElBQW1CLENBQXBCLEVBQXVCTCxLQUFLTSxXQUFMLElBQW9CLENBQTNDLENBQVA7QUFDRCxHQUZNLE1BRUEsSUFBSU4sUUFBUUEsS0FBS08sS0FBakIsRUFBd0I7QUFDN0IsV0FBT1AsS0FBS08sS0FBWjtBQUNELEdBRk0sTUFFQTtBQUNMLFdBQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFQO0FBQ0Q7QUFDRjs7QUFFTSxTQUFTckIsc0JBQVQsQ0FBZ0NjLElBQWhDLEVBQXNDO0FBQzNDLE1BQUlGLFFBQVFFLElBQVIsS0FBaUJBLEtBQUtFLFVBQUwsSUFBbUJULGlCQUF4QyxFQUEyRDtBQUN6RCxXQUFPLElBQVA7QUFDRCxHQUZELE1BRU8sSUFBSU0sUUFBUUMsSUFBUixLQUFpQkosU0FBU0ksSUFBVCxDQUFyQixFQUFxQztBQUMxQyxRQUFJQSxLQUFLRyxLQUFMLElBQWNILEtBQUtJLE1BQXZCLEVBQStCO0FBQzdCLGFBQU8sSUFBUDtBQUNEO0FBQ0Y7QUFDRCxTQUFPLEtBQVA7QUFDRDs7QUFFTSxTQUFTakIsNEJBQVQsQ0FBc0NhLElBQXRDLEVBQTRDO0FBQ2pELE1BQUlRLE1BQU1DLE9BQU4sQ0FBY1QsSUFBZCxDQUFKLEVBQXlCO0FBQ3ZCQSxXQUFPQSxLQUNKVSxNQURJLENBQ0csVUFBQ2IsQ0FBRDtBQUFBLGFBQU9BLENBQVA7QUFBQSxLQURILEVBRUphLE1BRkksQ0FFRyxVQUFDYixDQUFEO0FBQUEsYUFBT0UsUUFBUUYsQ0FBUixLQUFjQyxRQUFRRCxDQUFSLENBQWQsSUFBNEJBLEVBQUVVLEtBQUYsQ0FBUUksS0FBUixDQUFjQyxPQUFkLENBQW5DO0FBQUEsS0FGSCxFQUdKLENBSEksQ0FBUDtBQUlBLFdBQU96Qiw2QkFBNkJhLElBQTdCLENBQVA7QUFDRDtBQUNELE1BQUlELFFBQVFDLElBQVIsS0FBaUJKLFNBQVNJLElBQVQsQ0FBckIsRUFBcUM7QUFDbkMsV0FBTyxDQUFDQSxLQUFLRyxLQUFOLEVBQWFILEtBQUtJLE1BQWxCLENBQVA7QUFDRCxHQUZELE1BRU8sSUFBSU4sUUFBUUUsSUFBUixDQUFKLEVBQW1CO0FBQ3hCLFdBQU8sQ0FBQ0EsS0FBS0ssVUFBTCxJQUFtQixDQUFwQixFQUF1QkwsS0FBS00sV0FBTCxJQUFvQixDQUEzQyxDQUFQO0FBQ0QsR0FGTSxNQUVBLElBQUlOLFFBQVFBLEtBQUtPLEtBQWpCLEVBQXdCO0FBQzdCLFdBQU9QLEtBQUtPLEtBQVo7QUFDRCxHQUZNLE1BRUE7QUFDTCxXQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBUDtBQUNEO0FBQ0YiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2luZG93IGZyb20gJ2dsb2JhbC93aW5kb3cnXG5cbmNvbnN0IHtIVE1MVmlkZW9FbGVtZW50fSA9IHdpbmRvd1xuY29uc3Qge0hUTUxDYW52YXNFbGVtZW50fSA9IHdpbmRvd1xuY29uc3Qge0hUTUxJbWFnZUVsZW1lbnR9ID0gd2luZG93XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MTWVkaWFFbGVtZW50L3JlYWR5U3RhdGVcbmNvbnN0IHtcbiAgSEFWRV9OT1RISU5HID0gMCxcbiAgSEFWRV9NRVRBREFUQSA9IDEsXG4gIEhBVkVfQ1VSUkVOVF9EQVRBID0gMixcbiAgSEFWRV9GVVRVUkVfREFUQSA9IDMsXG4gIEhBVkVfRU5PVUdIX0RBVEEgPSA0LFxufSA9IChIVE1MVmlkZW9FbGVtZW50IHx8IHt9KVxuXG5leHBvcnQgY29uc3QgaXNDYW52YXMgPSAoZCkgPT4gZCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50XG5leHBvcnQgY29uc3QgaXNWaWRlbyA9IChkKSA9PiBkIGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudFxuZXhwb3J0IGNvbnN0IGlzSW1hZ2UgPSAoZCkgPT4gZCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnRcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dHVyZURhdGFSZWFkeShkYXRhKSB7XG4gIGNvbnN0IHJlc29sdXRpb24gPSBnZXRUZXh0dXJlRGF0YVJlc29sdXRpb24oZGF0YSlcbiAgaWYgKCFyZXNvbHV0aW9uWzBdIHx8ICFyZXNvbHV0aW9uWzFdKSB7IHJldHVybiBmYWxzZSB9XG4gIGlmIChpc1ZpZGVvKGRhdGEpICYmIGRhdGEucmVhZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRfREFUQSkge1xuICAgIHJldHVybiB0cnVlXG4gIH0gZWxzZSBpZiAoaXNJbWFnZShkYXRhKSB8fCBpc0NhbnZhcyhkYXRhKSkge1xuICAgIGlmIChkYXRhLndpZHRoICYmIGRhdGEuaGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHR1cmVEYXRhUmVzb2x1dGlvbihkYXRhKSB7XG4gIGlmIChpc0ltYWdlKGRhdGEpIHx8IGlzQ2FudmFzKGRhdGEpKSB7XG4gICAgcmV0dXJuIFtkYXRhLndpZHRoLCBkYXRhLmhlaWdodF1cbiAgfSBlbHNlIGlmIChpc1ZpZGVvKGRhdGEpKSB7XG4gICAgcmV0dXJuIFtkYXRhLnZpZGVvV2lkdGggfHwgMCwgZGF0YS52aWRlb0hlaWdodCB8fCAwXVxuICB9IGVsc2UgaWYgKGRhdGEgJiYgZGF0YS5zaGFwZSkge1xuICAgIHJldHVybiBkYXRhLnNoYXBlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFswLCAwXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1YmVUZXh0dXJlRGF0YVJlYWR5KGRhdGEpIHtcbiAgaWYgKGlzVmlkZW8oZGF0YSkgJiYgZGF0YS5yZWFkeVN0YXRlID49IEhBVkVfQ1VSUkVOVF9EQVRBKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfSBlbHNlIGlmIChpc0ltYWdlKGRhdGEpIHx8IGlzQ2FudmFzKGRhdGEpKSB7XG4gICAgaWYgKGRhdGEud2lkdGggJiYgZGF0YS5oZWlnaHQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3ViZVRleHR1cmVEYXRhUmVzb2x1dGlvbihkYXRhKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGFcbiAgICAgIC5maWx0ZXIoKGQpID0+IGQpXG4gICAgICAuZmlsdGVyKChkKSA9PiBpc0ltYWdlKGQpIHx8IGlzVmlkZW8oZCkgfHwgZC5zaGFwZS5ldmVyeShCb29sZWFuKSlcbiAgICAgIFswXVxuICAgIHJldHVybiBnZXRDdWJlVGV4dHVyZURhdGFSZXNvbHV0aW9uKGRhdGEpXG4gIH1cbiAgaWYgKGlzSW1hZ2UoZGF0YSkgfHwgaXNDYW52YXMoZGF0YSkpIHtcbiAgICByZXR1cm4gW2RhdGEud2lkdGgsIGRhdGEuaGVpZ2h0XVxuICB9IGVsc2UgaWYgKGlzVmlkZW8oZGF0YSkpIHtcbiAgICByZXR1cm4gW2RhdGEudmlkZW9XaWR0aCB8fCAwLCBkYXRhLnZpZGVvSGVpZ2h0IHx8IDBdXG4gIH0gZWxzZSBpZiAoZGF0YSAmJiBkYXRhLnNoYXBlKSB7XG4gICAgcmV0dXJuIGRhdGEuc2hhcGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gWzAsIDBdXG4gIH1cbn1cbiJdfQ==
\No newline at end of file