'use strict';
var callBound = require('call-bound');
var toStr = callBound('Object.prototype.toString');
var isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, no-magic-numbers
var objectClass = '[object Object]';
var ddaClass = '[object HTMLAllCollection]';
/** @type {(() => false) | ((value: unknown) => value is HTMLAllCollection)} */
var isDDA = function isDocumentDotAll() {
return /** @type {const} */ (false);
};
if (typeof document === 'object') {
// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly
var all = document.all;
if (toStr(all) === toStr(document.all)) {
isDDA = /** @type {import('.')} */ (function isDocumentDotAll(value) {
/* globals document: false */
// in IE 6-8, typeof document.all is "object" and it's truthy
if ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {
try {
// @ts-expect-error nullish will throw
var str = toStr(value);
// IE 6-8 uses `objectClass`
return (str === ddaClass || str === objectClass)
&& /** @type {Function} */ (value)('') == null; // eslint-disable-line eqeqeq
} catch (e) { /**/ }
}
return false;
});
}
}
module.exports = isDDA;