first commit
This commit is contained in:
17209
wp-includes/js/dist/vendor/lodash.js
vendored
Normal file
17209
wp-includes/js/dist/vendor/lodash.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
wp-includes/js/dist/vendor/lodash.min.js
vendored
Normal file
9
wp-includes/js/dist/vendor/lodash.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5685
wp-includes/js/dist/vendor/moment.js
vendored
Normal file
5685
wp-includes/js/dist/vendor/moment.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
wp-includes/js/dist/vendor/moment.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/moment.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
29869
wp-includes/js/dist/vendor/react-dom.js
vendored
Normal file
29869
wp-includes/js/dist/vendor/react-dom.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
wp-includes/js/dist/vendor/react-dom.min.js
vendored
Normal file
10
wp-includes/js/dist/vendor/react-dom.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3342
wp-includes/js/dist/vendor/react.js
vendored
Normal file
3342
wp-includes/js/dist/vendor/react.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
wp-includes/js/dist/vendor/react.min.js
vendored
Normal file
10
wp-includes/js/dist/vendor/react.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
760
wp-includes/js/dist/vendor/regenerator-runtime.js
vendored
Normal file
760
wp-includes/js/dist/vendor/regenerator-runtime.js
vendored
Normal file
@ -0,0 +1,760 @@
|
||||
/**
|
||||
* Copyright (c) 2014-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
var runtime = (function (exports) {
|
||||
"use strict";
|
||||
|
||||
var Op = Object.prototype;
|
||||
var hasOwn = Op.hasOwnProperty;
|
||||
var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };
|
||||
var undefined; // More compressible than void 0.
|
||||
var $Symbol = typeof Symbol === "function" ? Symbol : {};
|
||||
var iteratorSymbol = $Symbol.iterator || "@@iterator";
|
||||
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
|
||||
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
|
||||
|
||||
function define(obj, key, value) {
|
||||
Object.defineProperty(obj, key, {
|
||||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true
|
||||
});
|
||||
return obj[key];
|
||||
}
|
||||
try {
|
||||
// IE 8 has a broken Object.defineProperty that only works on DOM objects.
|
||||
define({}, "");
|
||||
} catch (err) {
|
||||
define = function(obj, key, value) {
|
||||
return obj[key] = value;
|
||||
};
|
||||
}
|
||||
|
||||
function wrap(innerFn, outerFn, self, tryLocsList) {
|
||||
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
|
||||
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
|
||||
var generator = Object.create(protoGenerator.prototype);
|
||||
var context = new Context(tryLocsList || []);
|
||||
|
||||
// The ._invoke method unifies the implementations of the .next,
|
||||
// .throw, and .return methods.
|
||||
defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) });
|
||||
|
||||
return generator;
|
||||
}
|
||||
exports.wrap = wrap;
|
||||
|
||||
// Try/catch helper to minimize deoptimizations. Returns a completion
|
||||
// record like context.tryEntries[i].completion. This interface could
|
||||
// have been (and was previously) designed to take a closure to be
|
||||
// invoked without arguments, but in all the cases we care about we
|
||||
// already have an existing method we want to call, so there's no need
|
||||
// to create a new function object. We can even get away with assuming
|
||||
// the method takes exactly one argument, since that happens to be true
|
||||
// in every case, so we don't have to touch the arguments object. The
|
||||
// only additional allocation required is the completion record, which
|
||||
// has a stable shape and so hopefully should be cheap to allocate.
|
||||
function tryCatch(fn, obj, arg) {
|
||||
try {
|
||||
return { type: "normal", arg: fn.call(obj, arg) };
|
||||
} catch (err) {
|
||||
return { type: "throw", arg: err };
|
||||
}
|
||||
}
|
||||
|
||||
var GenStateSuspendedStart = "suspendedStart";
|
||||
var GenStateSuspendedYield = "suspendedYield";
|
||||
var GenStateExecuting = "executing";
|
||||
var GenStateCompleted = "completed";
|
||||
|
||||
// Returning this object from the innerFn has the same effect as
|
||||
// breaking out of the dispatch switch statement.
|
||||
var ContinueSentinel = {};
|
||||
|
||||
// Dummy constructor functions that we use as the .constructor and
|
||||
// .constructor.prototype properties for functions that return Generator
|
||||
// objects. For full spec compliance, you may wish to configure your
|
||||
// minifier not to mangle the names of these two functions.
|
||||
function Generator() {}
|
||||
function GeneratorFunction() {}
|
||||
function GeneratorFunctionPrototype() {}
|
||||
|
||||
// This is a polyfill for %IteratorPrototype% for environments that
|
||||
// don't natively support it.
|
||||
var IteratorPrototype = {};
|
||||
define(IteratorPrototype, iteratorSymbol, function () {
|
||||
return this;
|
||||
});
|
||||
|
||||
var getProto = Object.getPrototypeOf;
|
||||
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
|
||||
if (NativeIteratorPrototype &&
|
||||
NativeIteratorPrototype !== Op &&
|
||||
hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
|
||||
// This environment has a native %IteratorPrototype%; use it instead
|
||||
// of the polyfill.
|
||||
IteratorPrototype = NativeIteratorPrototype;
|
||||
}
|
||||
|
||||
var Gp = GeneratorFunctionPrototype.prototype =
|
||||
Generator.prototype = Object.create(IteratorPrototype);
|
||||
GeneratorFunction.prototype = GeneratorFunctionPrototype;
|
||||
defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: true });
|
||||
defineProperty(
|
||||
GeneratorFunctionPrototype,
|
||||
"constructor",
|
||||
{ value: GeneratorFunction, configurable: true }
|
||||
);
|
||||
GeneratorFunction.displayName = define(
|
||||
GeneratorFunctionPrototype,
|
||||
toStringTagSymbol,
|
||||
"GeneratorFunction"
|
||||
);
|
||||
|
||||
// Helper for defining the .next, .throw, and .return methods of the
|
||||
// Iterator interface in terms of a single ._invoke method.
|
||||
function defineIteratorMethods(prototype) {
|
||||
["next", "throw", "return"].forEach(function(method) {
|
||||
define(prototype, method, function(arg) {
|
||||
return this._invoke(method, arg);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
exports.isGeneratorFunction = function(genFun) {
|
||||
var ctor = typeof genFun === "function" && genFun.constructor;
|
||||
return ctor
|
||||
? ctor === GeneratorFunction ||
|
||||
// For the native GeneratorFunction constructor, the best we can
|
||||
// do is to check its .name property.
|
||||
(ctor.displayName || ctor.name) === "GeneratorFunction"
|
||||
: false;
|
||||
};
|
||||
|
||||
exports.mark = function(genFun) {
|
||||
if (Object.setPrototypeOf) {
|
||||
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
|
||||
} else {
|
||||
genFun.__proto__ = GeneratorFunctionPrototype;
|
||||
define(genFun, toStringTagSymbol, "GeneratorFunction");
|
||||
}
|
||||
genFun.prototype = Object.create(Gp);
|
||||
return genFun;
|
||||
};
|
||||
|
||||
// Within the body of any async function, `await x` is transformed to
|
||||
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
|
||||
// `hasOwn.call(value, "__await")` to determine if the yielded value is
|
||||
// meant to be awaited.
|
||||
exports.awrap = function(arg) {
|
||||
return { __await: arg };
|
||||
};
|
||||
|
||||
function AsyncIterator(generator, PromiseImpl) {
|
||||
function invoke(method, arg, resolve, reject) {
|
||||
var record = tryCatch(generator[method], generator, arg);
|
||||
if (record.type === "throw") {
|
||||
reject(record.arg);
|
||||
} else {
|
||||
var result = record.arg;
|
||||
var value = result.value;
|
||||
if (value &&
|
||||
typeof value === "object" &&
|
||||
hasOwn.call(value, "__await")) {
|
||||
return PromiseImpl.resolve(value.__await).then(function(value) {
|
||||
invoke("next", value, resolve, reject);
|
||||
}, function(err) {
|
||||
invoke("throw", err, resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
return PromiseImpl.resolve(value).then(function(unwrapped) {
|
||||
// When a yielded Promise is resolved, its final value becomes
|
||||
// the .value of the Promise<{value,done}> result for the
|
||||
// current iteration.
|
||||
result.value = unwrapped;
|
||||
resolve(result);
|
||||
}, function(error) {
|
||||
// If a rejected Promise was yielded, throw the rejection back
|
||||
// into the async generator function so it can be handled there.
|
||||
return invoke("throw", error, resolve, reject);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var previousPromise;
|
||||
|
||||
function enqueue(method, arg) {
|
||||
function callInvokeWithMethodAndArg() {
|
||||
return new PromiseImpl(function(resolve, reject) {
|
||||
invoke(method, arg, resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
return previousPromise =
|
||||
// If enqueue has been called before, then we want to wait until
|
||||
// all previous Promises have been resolved before calling invoke,
|
||||
// so that results are always delivered in the correct order. If
|
||||
// enqueue has not been called before, then it is important to
|
||||
// call invoke immediately, without waiting on a callback to fire,
|
||||
// so that the async generator function has the opportunity to do
|
||||
// any necessary setup in a predictable way. This predictability
|
||||
// is why the Promise constructor synchronously invokes its
|
||||
// executor callback, and why async functions synchronously
|
||||
// execute code before the first await. Since we implement simple
|
||||
// async functions in terms of async generators, it is especially
|
||||
// important to get this right, even though it requires care.
|
||||
previousPromise ? previousPromise.then(
|
||||
callInvokeWithMethodAndArg,
|
||||
// Avoid propagating failures to Promises returned by later
|
||||
// invocations of the iterator.
|
||||
callInvokeWithMethodAndArg
|
||||
) : callInvokeWithMethodAndArg();
|
||||
}
|
||||
|
||||
// Define the unified helper method that is used to implement .next,
|
||||
// .throw, and .return (see defineIteratorMethods).
|
||||
defineProperty(this, "_invoke", { value: enqueue });
|
||||
}
|
||||
|
||||
defineIteratorMethods(AsyncIterator.prototype);
|
||||
define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
|
||||
return this;
|
||||
});
|
||||
exports.AsyncIterator = AsyncIterator;
|
||||
|
||||
// Note that simple async functions are implemented on top of
|
||||
// AsyncIterator objects; they just return a Promise for the value of
|
||||
// the final result produced by the iterator.
|
||||
exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
|
||||
if (PromiseImpl === void 0) PromiseImpl = Promise;
|
||||
|
||||
var iter = new AsyncIterator(
|
||||
wrap(innerFn, outerFn, self, tryLocsList),
|
||||
PromiseImpl
|
||||
);
|
||||
|
||||
return exports.isGeneratorFunction(outerFn)
|
||||
? iter // If outerFn is a generator, return the full iterator.
|
||||
: iter.next().then(function(result) {
|
||||
return result.done ? result.value : iter.next();
|
||||
});
|
||||
};
|
||||
|
||||
function makeInvokeMethod(innerFn, self, context) {
|
||||
var state = GenStateSuspendedStart;
|
||||
|
||||
return function invoke(method, arg) {
|
||||
if (state === GenStateExecuting) {
|
||||
throw new Error("Generator is already running");
|
||||
}
|
||||
|
||||
if (state === GenStateCompleted) {
|
||||
if (method === "throw") {
|
||||
throw arg;
|
||||
}
|
||||
|
||||
// Be forgiving, per 25.3.3.3.3 of the spec:
|
||||
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
|
||||
return doneResult();
|
||||
}
|
||||
|
||||
context.method = method;
|
||||
context.arg = arg;
|
||||
|
||||
while (true) {
|
||||
var delegate = context.delegate;
|
||||
if (delegate) {
|
||||
var delegateResult = maybeInvokeDelegate(delegate, context);
|
||||
if (delegateResult) {
|
||||
if (delegateResult === ContinueSentinel) continue;
|
||||
return delegateResult;
|
||||
}
|
||||
}
|
||||
|
||||
if (context.method === "next") {
|
||||
// Setting context._sent for legacy support of Babel's
|
||||
// function.sent implementation.
|
||||
context.sent = context._sent = context.arg;
|
||||
|
||||
} else if (context.method === "throw") {
|
||||
if (state === GenStateSuspendedStart) {
|
||||
state = GenStateCompleted;
|
||||
throw context.arg;
|
||||
}
|
||||
|
||||
context.dispatchException(context.arg);
|
||||
|
||||
} else if (context.method === "return") {
|
||||
context.abrupt("return", context.arg);
|
||||
}
|
||||
|
||||
state = GenStateExecuting;
|
||||
|
||||
var record = tryCatch(innerFn, self, context);
|
||||
if (record.type === "normal") {
|
||||
// If an exception is thrown from innerFn, we leave state ===
|
||||
// GenStateExecuting and loop back for another invocation.
|
||||
state = context.done
|
||||
? GenStateCompleted
|
||||
: GenStateSuspendedYield;
|
||||
|
||||
if (record.arg === ContinueSentinel) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return {
|
||||
value: record.arg,
|
||||
done: context.done
|
||||
};
|
||||
|
||||
} else if (record.type === "throw") {
|
||||
state = GenStateCompleted;
|
||||
// Dispatch the exception by looping back around to the
|
||||
// context.dispatchException(context.arg) call above.
|
||||
context.method = "throw";
|
||||
context.arg = record.arg;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Call delegate.iterator[context.method](context.arg) and handle the
|
||||
// result, either by returning a { value, done } result from the
|
||||
// delegate iterator, or by modifying context.method and context.arg,
|
||||
// setting context.delegate to null, and returning the ContinueSentinel.
|
||||
function maybeInvokeDelegate(delegate, context) {
|
||||
var methodName = context.method;
|
||||
var method = delegate.iterator[methodName];
|
||||
if (method === undefined) {
|
||||
// A .throw or .return when the delegate iterator has no .throw
|
||||
// method, or a missing .next mehtod, always terminate the
|
||||
// yield* loop.
|
||||
context.delegate = null;
|
||||
|
||||
// Note: ["return"] must be used for ES3 parsing compatibility.
|
||||
if (methodName === "throw" && delegate.iterator["return"]) {
|
||||
// If the delegate iterator has a return method, give it a
|
||||
// chance to clean up.
|
||||
context.method = "return";
|
||||
context.arg = undefined;
|
||||
maybeInvokeDelegate(delegate, context);
|
||||
|
||||
if (context.method === "throw") {
|
||||
// If maybeInvokeDelegate(context) changed context.method from
|
||||
// "return" to "throw", let that override the TypeError below.
|
||||
return ContinueSentinel;
|
||||
}
|
||||
}
|
||||
if (methodName !== "return") {
|
||||
context.method = "throw";
|
||||
context.arg = new TypeError(
|
||||
"The iterator does not provide a '" + methodName + "' method");
|
||||
}
|
||||
|
||||
return ContinueSentinel;
|
||||
}
|
||||
|
||||
var record = tryCatch(method, delegate.iterator, context.arg);
|
||||
|
||||
if (record.type === "throw") {
|
||||
context.method = "throw";
|
||||
context.arg = record.arg;
|
||||
context.delegate = null;
|
||||
return ContinueSentinel;
|
||||
}
|
||||
|
||||
var info = record.arg;
|
||||
|
||||
if (! info) {
|
||||
context.method = "throw";
|
||||
context.arg = new TypeError("iterator result is not an object");
|
||||
context.delegate = null;
|
||||
return ContinueSentinel;
|
||||
}
|
||||
|
||||
if (info.done) {
|
||||
// Assign the result of the finished delegate to the temporary
|
||||
// variable specified by delegate.resultName (see delegateYield).
|
||||
context[delegate.resultName] = info.value;
|
||||
|
||||
// Resume execution at the desired location (see delegateYield).
|
||||
context.next = delegate.nextLoc;
|
||||
|
||||
// If context.method was "throw" but the delegate handled the
|
||||
// exception, let the outer generator proceed normally. If
|
||||
// context.method was "next", forget context.arg since it has been
|
||||
// "consumed" by the delegate iterator. If context.method was
|
||||
// "return", allow the original .return call to continue in the
|
||||
// outer generator.
|
||||
if (context.method !== "return") {
|
||||
context.method = "next";
|
||||
context.arg = undefined;
|
||||
}
|
||||
|
||||
} else {
|
||||
// Re-yield the result returned by the delegate method.
|
||||
return info;
|
||||
}
|
||||
|
||||
// The delegate iterator is finished, so forget it and continue with
|
||||
// the outer generator.
|
||||
context.delegate = null;
|
||||
return ContinueSentinel;
|
||||
}
|
||||
|
||||
// Define Generator.prototype.{next,throw,return} in terms of the
|
||||
// unified ._invoke helper method.
|
||||
defineIteratorMethods(Gp);
|
||||
|
||||
define(Gp, toStringTagSymbol, "Generator");
|
||||
|
||||
// A Generator should always return itself as the iterator object when the
|
||||
// @@iterator function is called on it. Some browsers' implementations of the
|
||||
// iterator prototype chain incorrectly implement this, causing the Generator
|
||||
// object to not be returned from this call. This ensures that doesn't happen.
|
||||
// See https://github.com/facebook/regenerator/issues/274 for more details.
|
||||
define(Gp, iteratorSymbol, function() {
|
||||
return this;
|
||||
});
|
||||
|
||||
define(Gp, "toString", function() {
|
||||
return "[object Generator]";
|
||||
});
|
||||
|
||||
function pushTryEntry(locs) {
|
||||
var entry = { tryLoc: locs[0] };
|
||||
|
||||
if (1 in locs) {
|
||||
entry.catchLoc = locs[1];
|
||||
}
|
||||
|
||||
if (2 in locs) {
|
||||
entry.finallyLoc = locs[2];
|
||||
entry.afterLoc = locs[3];
|
||||
}
|
||||
|
||||
this.tryEntries.push(entry);
|
||||
}
|
||||
|
||||
function resetTryEntry(entry) {
|
||||
var record = entry.completion || {};
|
||||
record.type = "normal";
|
||||
delete record.arg;
|
||||
entry.completion = record;
|
||||
}
|
||||
|
||||
function Context(tryLocsList) {
|
||||
// The root entry object (effectively a try statement without a catch
|
||||
// or a finally block) gives us a place to store values thrown from
|
||||
// locations where there is no enclosing try statement.
|
||||
this.tryEntries = [{ tryLoc: "root" }];
|
||||
tryLocsList.forEach(pushTryEntry, this);
|
||||
this.reset(true);
|
||||
}
|
||||
|
||||
exports.keys = function(val) {
|
||||
var object = Object(val);
|
||||
var keys = [];
|
||||
for (var key in object) {
|
||||
keys.push(key);
|
||||
}
|
||||
keys.reverse();
|
||||
|
||||
// Rather than returning an object with a next method, we keep
|
||||
// things simple and return the next function itself.
|
||||
return function next() {
|
||||
while (keys.length) {
|
||||
var key = keys.pop();
|
||||
if (key in object) {
|
||||
next.value = key;
|
||||
next.done = false;
|
||||
return next;
|
||||
}
|
||||
}
|
||||
|
||||
// To avoid creating an additional object, we just hang the .value
|
||||
// and .done properties off the next function object itself. This
|
||||
// also ensures that the minifier will not anonymize the function.
|
||||
next.done = true;
|
||||
return next;
|
||||
};
|
||||
};
|
||||
|
||||
function values(iterable) {
|
||||
if (iterable || iterable === "") {
|
||||
var iteratorMethod = iterable[iteratorSymbol];
|
||||
if (iteratorMethod) {
|
||||
return iteratorMethod.call(iterable);
|
||||
}
|
||||
|
||||
if (typeof iterable.next === "function") {
|
||||
return iterable;
|
||||
}
|
||||
|
||||
if (!isNaN(iterable.length)) {
|
||||
var i = -1, next = function next() {
|
||||
while (++i < iterable.length) {
|
||||
if (hasOwn.call(iterable, i)) {
|
||||
next.value = iterable[i];
|
||||
next.done = false;
|
||||
return next;
|
||||
}
|
||||
}
|
||||
|
||||
next.value = undefined;
|
||||
next.done = true;
|
||||
|
||||
return next;
|
||||
};
|
||||
|
||||
return next.next = next;
|
||||
}
|
||||
}
|
||||
|
||||
throw new TypeError(typeof iterable + " is not iterable");
|
||||
}
|
||||
exports.values = values;
|
||||
|
||||
function doneResult() {
|
||||
return { value: undefined, done: true };
|
||||
}
|
||||
|
||||
Context.prototype = {
|
||||
constructor: Context,
|
||||
|
||||
reset: function(skipTempReset) {
|
||||
this.prev = 0;
|
||||
this.next = 0;
|
||||
// Resetting context._sent for legacy support of Babel's
|
||||
// function.sent implementation.
|
||||
this.sent = this._sent = undefined;
|
||||
this.done = false;
|
||||
this.delegate = null;
|
||||
|
||||
this.method = "next";
|
||||
this.arg = undefined;
|
||||
|
||||
this.tryEntries.forEach(resetTryEntry);
|
||||
|
||||
if (!skipTempReset) {
|
||||
for (var name in this) {
|
||||
// Not sure about the optimal order of these conditions:
|
||||
if (name.charAt(0) === "t" &&
|
||||
hasOwn.call(this, name) &&
|
||||
!isNaN(+name.slice(1))) {
|
||||
this[name] = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
stop: function() {
|
||||
this.done = true;
|
||||
|
||||
var rootEntry = this.tryEntries[0];
|
||||
var rootRecord = rootEntry.completion;
|
||||
if (rootRecord.type === "throw") {
|
||||
throw rootRecord.arg;
|
||||
}
|
||||
|
||||
return this.rval;
|
||||
},
|
||||
|
||||
dispatchException: function(exception) {
|
||||
if (this.done) {
|
||||
throw exception;
|
||||
}
|
||||
|
||||
var context = this;
|
||||
function handle(loc, caught) {
|
||||
record.type = "throw";
|
||||
record.arg = exception;
|
||||
context.next = loc;
|
||||
|
||||
if (caught) {
|
||||
// If the dispatched exception was caught by a catch block,
|
||||
// then let that catch block handle the exception normally.
|
||||
context.method = "next";
|
||||
context.arg = undefined;
|
||||
}
|
||||
|
||||
return !! caught;
|
||||
}
|
||||
|
||||
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||||
var entry = this.tryEntries[i];
|
||||
var record = entry.completion;
|
||||
|
||||
if (entry.tryLoc === "root") {
|
||||
// Exception thrown outside of any try block that could handle
|
||||
// it, so set the completion value of the entire function to
|
||||
// throw the exception.
|
||||
return handle("end");
|
||||
}
|
||||
|
||||
if (entry.tryLoc <= this.prev) {
|
||||
var hasCatch = hasOwn.call(entry, "catchLoc");
|
||||
var hasFinally = hasOwn.call(entry, "finallyLoc");
|
||||
|
||||
if (hasCatch && hasFinally) {
|
||||
if (this.prev < entry.catchLoc) {
|
||||
return handle(entry.catchLoc, true);
|
||||
} else if (this.prev < entry.finallyLoc) {
|
||||
return handle(entry.finallyLoc);
|
||||
}
|
||||
|
||||
} else if (hasCatch) {
|
||||
if (this.prev < entry.catchLoc) {
|
||||
return handle(entry.catchLoc, true);
|
||||
}
|
||||
|
||||
} else if (hasFinally) {
|
||||
if (this.prev < entry.finallyLoc) {
|
||||
return handle(entry.finallyLoc);
|
||||
}
|
||||
|
||||
} else {
|
||||
throw new Error("try statement without catch or finally");
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
abrupt: function(type, arg) {
|
||||
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||||
var entry = this.tryEntries[i];
|
||||
if (entry.tryLoc <= this.prev &&
|
||||
hasOwn.call(entry, "finallyLoc") &&
|
||||
this.prev < entry.finallyLoc) {
|
||||
var finallyEntry = entry;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (finallyEntry &&
|
||||
(type === "break" ||
|
||||
type === "continue") &&
|
||||
finallyEntry.tryLoc <= arg &&
|
||||
arg <= finallyEntry.finallyLoc) {
|
||||
// Ignore the finally entry if control is not jumping to a
|
||||
// location outside the try/catch block.
|
||||
finallyEntry = null;
|
||||
}
|
||||
|
||||
var record = finallyEntry ? finallyEntry.completion : {};
|
||||
record.type = type;
|
||||
record.arg = arg;
|
||||
|
||||
if (finallyEntry) {
|
||||
this.method = "next";
|
||||
this.next = finallyEntry.finallyLoc;
|
||||
return ContinueSentinel;
|
||||
}
|
||||
|
||||
return this.complete(record);
|
||||
},
|
||||
|
||||
complete: function(record, afterLoc) {
|
||||
if (record.type === "throw") {
|
||||
throw record.arg;
|
||||
}
|
||||
|
||||
if (record.type === "break" ||
|
||||
record.type === "continue") {
|
||||
this.next = record.arg;
|
||||
} else if (record.type === "return") {
|
||||
this.rval = this.arg = record.arg;
|
||||
this.method = "return";
|
||||
this.next = "end";
|
||||
} else if (record.type === "normal" && afterLoc) {
|
||||
this.next = afterLoc;
|
||||
}
|
||||
|
||||
return ContinueSentinel;
|
||||
},
|
||||
|
||||
finish: function(finallyLoc) {
|
||||
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||||
var entry = this.tryEntries[i];
|
||||
if (entry.finallyLoc === finallyLoc) {
|
||||
this.complete(entry.completion, entry.afterLoc);
|
||||
resetTryEntry(entry);
|
||||
return ContinueSentinel;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"catch": function(tryLoc) {
|
||||
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
||||
var entry = this.tryEntries[i];
|
||||
if (entry.tryLoc === tryLoc) {
|
||||
var record = entry.completion;
|
||||
if (record.type === "throw") {
|
||||
var thrown = record.arg;
|
||||
resetTryEntry(entry);
|
||||
}
|
||||
return thrown;
|
||||
}
|
||||
}
|
||||
|
||||
// The context.catch method must only be called with a location
|
||||
// argument that corresponds to a known catch block.
|
||||
throw new Error("illegal catch attempt");
|
||||
},
|
||||
|
||||
delegateYield: function(iterable, resultName, nextLoc) {
|
||||
this.delegate = {
|
||||
iterator: values(iterable),
|
||||
resultName: resultName,
|
||||
nextLoc: nextLoc
|
||||
};
|
||||
|
||||
if (this.method === "next") {
|
||||
// Deliberately forget the last sent value so that we don't
|
||||
// accidentally pass it on to the delegate.
|
||||
this.arg = undefined;
|
||||
}
|
||||
|
||||
return ContinueSentinel;
|
||||
}
|
||||
};
|
||||
|
||||
// Regardless of whether this script is executing as a CommonJS module
|
||||
// or not, return the runtime object so that we can declare the variable
|
||||
// regeneratorRuntime in the outer scope, which allows this module to be
|
||||
// injected easily by `bin/regenerator --include-runtime script.js`.
|
||||
return exports;
|
||||
|
||||
}(
|
||||
// If this script is executing as a CommonJS module, use module.exports
|
||||
// as the regeneratorRuntime namespace. Otherwise create a new empty
|
||||
// object. Either way, the resulting object will be used to initialize
|
||||
// the regeneratorRuntime variable at the top of this file.
|
||||
typeof module === "object" ? module.exports : {}
|
||||
));
|
||||
|
||||
try {
|
||||
regeneratorRuntime = runtime;
|
||||
} catch (accidentalStrictMode) {
|
||||
// This module should not be running in strict mode, so the above
|
||||
// assignment should always work unless something is misconfigured. Just
|
||||
// in case runtime.js accidentally runs in strict mode, in modern engines
|
||||
// we can explicitly access globalThis. In older engines we can escape
|
||||
// strict mode using a global Function call. This could conceivably fail
|
||||
// if a Content Security Policy forbids using Function, but in that case
|
||||
// the proper solution is to fix the accidental strict mode problem. If
|
||||
// you've misconfigured your bundler to force strict mode and applied a
|
||||
// CSP to forbid Function, and you're not willing to fix either of those
|
||||
// problems, please detail your unique predicament in a GitHub issue.
|
||||
if (typeof globalThis === "object") {
|
||||
globalThis.regeneratorRuntime = runtime;
|
||||
} else {
|
||||
Function("r", "regeneratorRuntime = r")(runtime);
|
||||
}
|
||||
}
|
1
wp-includes/js/dist/vendor/regenerator-runtime.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/regenerator-runtime.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
101
wp-includes/js/dist/vendor/wp-polyfill-dom-rect.js
vendored
Normal file
101
wp-includes/js/dist/vendor/wp-polyfill-dom-rect.js
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
|
||||
// DOMRect
|
||||
(function (global) {
|
||||
function number(v) {
|
||||
return v === undefined ? 0 : Number(v);
|
||||
}
|
||||
|
||||
function different(u, v) {
|
||||
return u !== v && !(isNaN(u) && isNaN(v));
|
||||
}
|
||||
|
||||
function DOMRect(xArg, yArg, wArg, hArg) {
|
||||
var x, y, width, height, left, right, top, bottom;
|
||||
|
||||
x = number(xArg);
|
||||
y = number(yArg);
|
||||
width = number(wArg);
|
||||
height = number(hArg);
|
||||
|
||||
Object.defineProperties(this, {
|
||||
x: {
|
||||
get: function () { return x; },
|
||||
set: function (newX) {
|
||||
if (different(x, newX)) {
|
||||
x = newX;
|
||||
left = right = undefined;
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
y: {
|
||||
get: function () { return y; },
|
||||
set: function (newY) {
|
||||
if (different(y, newY)) {
|
||||
y = newY;
|
||||
top = bottom = undefined;
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
width: {
|
||||
get: function () { return width; },
|
||||
set: function (newWidth) {
|
||||
if (different(width, newWidth)) {
|
||||
width = newWidth;
|
||||
left = right = undefined;
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
height: {
|
||||
get: function () { return height; },
|
||||
set: function (newHeight) {
|
||||
if (different(height, newHeight)) {
|
||||
height = newHeight;
|
||||
top = bottom = undefined;
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
left: {
|
||||
get: function () {
|
||||
if (left === undefined) {
|
||||
left = x + Math.min(0, width);
|
||||
}
|
||||
return left;
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
right: {
|
||||
get: function () {
|
||||
if (right === undefined) {
|
||||
right = x + Math.max(0, width);
|
||||
}
|
||||
return right;
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
top: {
|
||||
get: function () {
|
||||
if (top === undefined) {
|
||||
top = y + Math.min(0, height);
|
||||
}
|
||||
return top;
|
||||
},
|
||||
enumerable: true
|
||||
},
|
||||
bottom: {
|
||||
get: function () {
|
||||
if (bottom === undefined) {
|
||||
bottom = y + Math.max(0, height);
|
||||
}
|
||||
return bottom;
|
||||
},
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
global.DOMRect = DOMRect;
|
||||
}(self));
|
1
wp-includes/js/dist/vendor/wp-polyfill-dom-rect.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-dom-rect.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(){function e(e){return void 0===e?0:Number(e)}function n(e,n){return!(e===n||isNaN(e)&&isNaN(n))}self.DOMRect=function(t,i,u,r){var o,f,c,a,m=e(t),b=e(i),d=e(u),g=e(r);Object.defineProperties(this,{x:{get:function(){return m},set:function(e){n(m,e)&&(m=e,o=f=void 0)},enumerable:!0},y:{get:function(){return b},set:function(e){n(b,e)&&(b=e,c=a=void 0)},enumerable:!0},width:{get:function(){return d},set:function(e){n(d,e)&&(d=e,o=f=void 0)},enumerable:!0},height:{get:function(){return g},set:function(e){n(g,e)&&(g=e,c=a=void 0)},enumerable:!0},left:{get:function(){return o=void 0===o?m+Math.min(0,d):o},enumerable:!0},right:{get:function(){return f=void 0===f?m+Math.max(0,d):f},enumerable:!0},top:{get:function(){return c=void 0===c?b+Math.min(0,g):c},enumerable:!0},bottom:{get:function(){return a=void 0===a?b+Math.max(0,g):a},enumerable:!0}})}}();
|
1
wp-includes/js/dist/vendor/wp-polyfill-element-closest.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-element-closest.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e){var t=e.Element.prototype;"function"!=typeof t.matches&&(t.matches=t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),o=0;t[o]&&t[o]!==this;)++o;return Boolean(t[o])}),"function"!=typeof t.closest&&(t.closest=function(e){for(var t=this;t&&1===t.nodeType;){if(t.matches(e))return t;t=t.parentNode}return null})}(window);
|
1
wp-includes/js/dist/vendor/wp-polyfill-element-closest.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-element-closest.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e){var t=window.Element.prototype;"function"!=typeof t.matches&&(t.matches=t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),o=0;t[o]&&t[o]!==this;)++o;return Boolean(t[o])}),"function"!=typeof t.closest&&(t.closest=function(e){for(var t=this;t&&1===t.nodeType;){if(t.matches(e))return t;t=t.parentNode}return null})}();
|
650
wp-includes/js/dist/vendor/wp-polyfill-fetch.js
vendored
Normal file
650
wp-includes/js/dist/vendor/wp-polyfill-fetch.js
vendored
Normal file
@ -0,0 +1,650 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
(factory((global.WHATWGFetch = {})));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
/* eslint-disable no-prototype-builtins */
|
||||
var g =
|
||||
(typeof globalThis !== 'undefined' && globalThis) ||
|
||||
(typeof self !== 'undefined' && self) ||
|
||||
// eslint-disable-next-line no-undef
|
||||
(typeof global !== 'undefined' && global) ||
|
||||
{};
|
||||
|
||||
var support = {
|
||||
searchParams: 'URLSearchParams' in g,
|
||||
iterable: 'Symbol' in g && 'iterator' in Symbol,
|
||||
blob:
|
||||
'FileReader' in g &&
|
||||
'Blob' in g &&
|
||||
(function() {
|
||||
try {
|
||||
new Blob();
|
||||
return true
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
})(),
|
||||
formData: 'FormData' in g,
|
||||
arrayBuffer: 'ArrayBuffer' in g
|
||||
};
|
||||
|
||||
function isDataView(obj) {
|
||||
return obj && DataView.prototype.isPrototypeOf(obj)
|
||||
}
|
||||
|
||||
if (support.arrayBuffer) {
|
||||
var viewClasses = [
|
||||
'[object Int8Array]',
|
||||
'[object Uint8Array]',
|
||||
'[object Uint8ClampedArray]',
|
||||
'[object Int16Array]',
|
||||
'[object Uint16Array]',
|
||||
'[object Int32Array]',
|
||||
'[object Uint32Array]',
|
||||
'[object Float32Array]',
|
||||
'[object Float64Array]'
|
||||
];
|
||||
|
||||
var isArrayBufferView =
|
||||
ArrayBuffer.isView ||
|
||||
function(obj) {
|
||||
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeName(name) {
|
||||
if (typeof name !== 'string') {
|
||||
name = String(name);
|
||||
}
|
||||
if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
|
||||
throw new TypeError('Invalid character in header field name: "' + name + '"')
|
||||
}
|
||||
return name.toLowerCase()
|
||||
}
|
||||
|
||||
function normalizeValue(value) {
|
||||
if (typeof value !== 'string') {
|
||||
value = String(value);
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// Build a destructive iterator for the value list
|
||||
function iteratorFor(items) {
|
||||
var iterator = {
|
||||
next: function() {
|
||||
var value = items.shift();
|
||||
return {done: value === undefined, value: value}
|
||||
}
|
||||
};
|
||||
|
||||
if (support.iterable) {
|
||||
iterator[Symbol.iterator] = function() {
|
||||
return iterator
|
||||
};
|
||||
}
|
||||
|
||||
return iterator
|
||||
}
|
||||
|
||||
function Headers(headers) {
|
||||
this.map = {};
|
||||
|
||||
if (headers instanceof Headers) {
|
||||
headers.forEach(function(value, name) {
|
||||
this.append(name, value);
|
||||
}, this);
|
||||
} else if (Array.isArray(headers)) {
|
||||
headers.forEach(function(header) {
|
||||
if (header.length != 2) {
|
||||
throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)
|
||||
}
|
||||
this.append(header[0], header[1]);
|
||||
}, this);
|
||||
} else if (headers) {
|
||||
Object.getOwnPropertyNames(headers).forEach(function(name) {
|
||||
this.append(name, headers[name]);
|
||||
}, this);
|
||||
}
|
||||
}
|
||||
|
||||
Headers.prototype.append = function(name, value) {
|
||||
name = normalizeName(name);
|
||||
value = normalizeValue(value);
|
||||
var oldValue = this.map[name];
|
||||
this.map[name] = oldValue ? oldValue + ', ' + value : value;
|
||||
};
|
||||
|
||||
Headers.prototype['delete'] = function(name) {
|
||||
delete this.map[normalizeName(name)];
|
||||
};
|
||||
|
||||
Headers.prototype.get = function(name) {
|
||||
name = normalizeName(name);
|
||||
return this.has(name) ? this.map[name] : null
|
||||
};
|
||||
|
||||
Headers.prototype.has = function(name) {
|
||||
return this.map.hasOwnProperty(normalizeName(name))
|
||||
};
|
||||
|
||||
Headers.prototype.set = function(name, value) {
|
||||
this.map[normalizeName(name)] = normalizeValue(value);
|
||||
};
|
||||
|
||||
Headers.prototype.forEach = function(callback, thisArg) {
|
||||
for (var name in this.map) {
|
||||
if (this.map.hasOwnProperty(name)) {
|
||||
callback.call(thisArg, this.map[name], name, this);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Headers.prototype.keys = function() {
|
||||
var items = [];
|
||||
this.forEach(function(value, name) {
|
||||
items.push(name);
|
||||
});
|
||||
return iteratorFor(items)
|
||||
};
|
||||
|
||||
Headers.prototype.values = function() {
|
||||
var items = [];
|
||||
this.forEach(function(value) {
|
||||
items.push(value);
|
||||
});
|
||||
return iteratorFor(items)
|
||||
};
|
||||
|
||||
Headers.prototype.entries = function() {
|
||||
var items = [];
|
||||
this.forEach(function(value, name) {
|
||||
items.push([name, value]);
|
||||
});
|
||||
return iteratorFor(items)
|
||||
};
|
||||
|
||||
if (support.iterable) {
|
||||
Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
|
||||
}
|
||||
|
||||
function consumed(body) {
|
||||
if (body._noBody) return
|
||||
if (body.bodyUsed) {
|
||||
return Promise.reject(new TypeError('Already read'))
|
||||
}
|
||||
body.bodyUsed = true;
|
||||
}
|
||||
|
||||
function fileReaderReady(reader) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
reader.onload = function() {
|
||||
resolve(reader.result);
|
||||
};
|
||||
reader.onerror = function() {
|
||||
reject(reader.error);
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
function readBlobAsArrayBuffer(blob) {
|
||||
var reader = new FileReader();
|
||||
var promise = fileReaderReady(reader);
|
||||
reader.readAsArrayBuffer(blob);
|
||||
return promise
|
||||
}
|
||||
|
||||
function readBlobAsText(blob) {
|
||||
var reader = new FileReader();
|
||||
var promise = fileReaderReady(reader);
|
||||
var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);
|
||||
var encoding = match ? match[1] : 'utf-8';
|
||||
reader.readAsText(blob, encoding);
|
||||
return promise
|
||||
}
|
||||
|
||||
function readArrayBufferAsText(buf) {
|
||||
var view = new Uint8Array(buf);
|
||||
var chars = new Array(view.length);
|
||||
|
||||
for (var i = 0; i < view.length; i++) {
|
||||
chars[i] = String.fromCharCode(view[i]);
|
||||
}
|
||||
return chars.join('')
|
||||
}
|
||||
|
||||
function bufferClone(buf) {
|
||||
if (buf.slice) {
|
||||
return buf.slice(0)
|
||||
} else {
|
||||
var view = new Uint8Array(buf.byteLength);
|
||||
view.set(new Uint8Array(buf));
|
||||
return view.buffer
|
||||
}
|
||||
}
|
||||
|
||||
function Body() {
|
||||
this.bodyUsed = false;
|
||||
|
||||
this._initBody = function(body) {
|
||||
/*
|
||||
fetch-mock wraps the Response object in an ES6 Proxy to
|
||||
provide useful test harness features such as flush. However, on
|
||||
ES5 browsers without fetch or Proxy support pollyfills must be used;
|
||||
the proxy-pollyfill is unable to proxy an attribute unless it exists
|
||||
on the object before the Proxy is created. This change ensures
|
||||
Response.bodyUsed exists on the instance, while maintaining the
|
||||
semantic of setting Request.bodyUsed in the constructor before
|
||||
_initBody is called.
|
||||
*/
|
||||
// eslint-disable-next-line no-self-assign
|
||||
this.bodyUsed = this.bodyUsed;
|
||||
this._bodyInit = body;
|
||||
if (!body) {
|
||||
this._noBody = true;
|
||||
this._bodyText = '';
|
||||
} else if (typeof body === 'string') {
|
||||
this._bodyText = body;
|
||||
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
|
||||
this._bodyBlob = body;
|
||||
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
|
||||
this._bodyFormData = body;
|
||||
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
||||
this._bodyText = body.toString();
|
||||
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
|
||||
this._bodyArrayBuffer = bufferClone(body.buffer);
|
||||
// IE 10-11 can't handle a DataView body.
|
||||
this._bodyInit = new Blob([this._bodyArrayBuffer]);
|
||||
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
|
||||
this._bodyArrayBuffer = bufferClone(body);
|
||||
} else {
|
||||
this._bodyText = body = Object.prototype.toString.call(body);
|
||||
}
|
||||
|
||||
if (!this.headers.get('content-type')) {
|
||||
if (typeof body === 'string') {
|
||||
this.headers.set('content-type', 'text/plain;charset=UTF-8');
|
||||
} else if (this._bodyBlob && this._bodyBlob.type) {
|
||||
this.headers.set('content-type', this._bodyBlob.type);
|
||||
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
||||
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (support.blob) {
|
||||
this.blob = function() {
|
||||
var rejected = consumed(this);
|
||||
if (rejected) {
|
||||
return rejected
|
||||
}
|
||||
|
||||
if (this._bodyBlob) {
|
||||
return Promise.resolve(this._bodyBlob)
|
||||
} else if (this._bodyArrayBuffer) {
|
||||
return Promise.resolve(new Blob([this._bodyArrayBuffer]))
|
||||
} else if (this._bodyFormData) {
|
||||
throw new Error('could not read FormData body as blob')
|
||||
} else {
|
||||
return Promise.resolve(new Blob([this._bodyText]))
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
this.arrayBuffer = function() {
|
||||
if (this._bodyArrayBuffer) {
|
||||
var isConsumed = consumed(this);
|
||||
if (isConsumed) {
|
||||
return isConsumed
|
||||
} else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
|
||||
return Promise.resolve(
|
||||
this._bodyArrayBuffer.buffer.slice(
|
||||
this._bodyArrayBuffer.byteOffset,
|
||||
this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
|
||||
)
|
||||
)
|
||||
} else {
|
||||
return Promise.resolve(this._bodyArrayBuffer)
|
||||
}
|
||||
} else if (support.blob) {
|
||||
return this.blob().then(readBlobAsArrayBuffer)
|
||||
} else {
|
||||
throw new Error('could not read as ArrayBuffer')
|
||||
}
|
||||
};
|
||||
|
||||
this.text = function() {
|
||||
var rejected = consumed(this);
|
||||
if (rejected) {
|
||||
return rejected
|
||||
}
|
||||
|
||||
if (this._bodyBlob) {
|
||||
return readBlobAsText(this._bodyBlob)
|
||||
} else if (this._bodyArrayBuffer) {
|
||||
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
|
||||
} else if (this._bodyFormData) {
|
||||
throw new Error('could not read FormData body as text')
|
||||
} else {
|
||||
return Promise.resolve(this._bodyText)
|
||||
}
|
||||
};
|
||||
|
||||
if (support.formData) {
|
||||
this.formData = function() {
|
||||
return this.text().then(decode)
|
||||
};
|
||||
}
|
||||
|
||||
this.json = function() {
|
||||
return this.text().then(JSON.parse)
|
||||
};
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
// HTTP methods whose capitalization should be normalized
|
||||
var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];
|
||||
|
||||
function normalizeMethod(method) {
|
||||
var upcased = method.toUpperCase();
|
||||
return methods.indexOf(upcased) > -1 ? upcased : method
|
||||
}
|
||||
|
||||
function Request(input, options) {
|
||||
if (!(this instanceof Request)) {
|
||||
throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
|
||||
}
|
||||
|
||||
options = options || {};
|
||||
var body = options.body;
|
||||
|
||||
if (input instanceof Request) {
|
||||
if (input.bodyUsed) {
|
||||
throw new TypeError('Already read')
|
||||
}
|
||||
this.url = input.url;
|
||||
this.credentials = input.credentials;
|
||||
if (!options.headers) {
|
||||
this.headers = new Headers(input.headers);
|
||||
}
|
||||
this.method = input.method;
|
||||
this.mode = input.mode;
|
||||
this.signal = input.signal;
|
||||
if (!body && input._bodyInit != null) {
|
||||
body = input._bodyInit;
|
||||
input.bodyUsed = true;
|
||||
}
|
||||
} else {
|
||||
this.url = String(input);
|
||||
}
|
||||
|
||||
this.credentials = options.credentials || this.credentials || 'same-origin';
|
||||
if (options.headers || !this.headers) {
|
||||
this.headers = new Headers(options.headers);
|
||||
}
|
||||
this.method = normalizeMethod(options.method || this.method || 'GET');
|
||||
this.mode = options.mode || this.mode || null;
|
||||
this.signal = options.signal || this.signal || (function () {
|
||||
if ('AbortController' in g) {
|
||||
var ctrl = new AbortController();
|
||||
return ctrl.signal;
|
||||
}
|
||||
}());
|
||||
this.referrer = null;
|
||||
|
||||
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
|
||||
throw new TypeError('Body not allowed for GET or HEAD requests')
|
||||
}
|
||||
this._initBody(body);
|
||||
|
||||
if (this.method === 'GET' || this.method === 'HEAD') {
|
||||
if (options.cache === 'no-store' || options.cache === 'no-cache') {
|
||||
// Search for a '_' parameter in the query string
|
||||
var reParamSearch = /([?&])_=[^&]*/;
|
||||
if (reParamSearch.test(this.url)) {
|
||||
// If it already exists then set the value with the current time
|
||||
this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
|
||||
} else {
|
||||
// Otherwise add a new '_' parameter to the end with the current time
|
||||
var reQueryString = /\?/;
|
||||
this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Request.prototype.clone = function() {
|
||||
return new Request(this, {body: this._bodyInit})
|
||||
};
|
||||
|
||||
function decode(body) {
|
||||
var form = new FormData();
|
||||
body
|
||||
.trim()
|
||||
.split('&')
|
||||
.forEach(function(bytes) {
|
||||
if (bytes) {
|
||||
var split = bytes.split('=');
|
||||
var name = split.shift().replace(/\+/g, ' ');
|
||||
var value = split.join('=').replace(/\+/g, ' ');
|
||||
form.append(decodeURIComponent(name), decodeURIComponent(value));
|
||||
}
|
||||
});
|
||||
return form
|
||||
}
|
||||
|
||||
function parseHeaders(rawHeaders) {
|
||||
var headers = new Headers();
|
||||
// Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
|
||||
// https://tools.ietf.org/html/rfc7230#section-3.2
|
||||
var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
|
||||
// Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
|
||||
// https://github.com/github/fetch/issues/748
|
||||
// https://github.com/zloirock/core-js/issues/751
|
||||
preProcessedHeaders
|
||||
.split('\r')
|
||||
.map(function(header) {
|
||||
return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header
|
||||
})
|
||||
.forEach(function(line) {
|
||||
var parts = line.split(':');
|
||||
var key = parts.shift().trim();
|
||||
if (key) {
|
||||
var value = parts.join(':').trim();
|
||||
try {
|
||||
headers.append(key, value);
|
||||
} catch (error) {
|
||||
console.warn('Response ' + error.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
return headers
|
||||
}
|
||||
|
||||
Body.call(Request.prototype);
|
||||
|
||||
function Response(bodyInit, options) {
|
||||
if (!(this instanceof Response)) {
|
||||
throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
|
||||
}
|
||||
if (!options) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
this.type = 'default';
|
||||
this.status = options.status === undefined ? 200 : options.status;
|
||||
if (this.status < 200 || this.status > 599) {
|
||||
throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].")
|
||||
}
|
||||
this.ok = this.status >= 200 && this.status < 300;
|
||||
this.statusText = options.statusText === undefined ? '' : '' + options.statusText;
|
||||
this.headers = new Headers(options.headers);
|
||||
this.url = options.url || '';
|
||||
this._initBody(bodyInit);
|
||||
}
|
||||
|
||||
Body.call(Response.prototype);
|
||||
|
||||
Response.prototype.clone = function() {
|
||||
return new Response(this._bodyInit, {
|
||||
status: this.status,
|
||||
statusText: this.statusText,
|
||||
headers: new Headers(this.headers),
|
||||
url: this.url
|
||||
})
|
||||
};
|
||||
|
||||
Response.error = function() {
|
||||
var response = new Response(null, {status: 200, statusText: ''});
|
||||
response.status = 0;
|
||||
response.type = 'error';
|
||||
return response
|
||||
};
|
||||
|
||||
var redirectStatuses = [301, 302, 303, 307, 308];
|
||||
|
||||
Response.redirect = function(url, status) {
|
||||
if (redirectStatuses.indexOf(status) === -1) {
|
||||
throw new RangeError('Invalid status code')
|
||||
}
|
||||
|
||||
return new Response(null, {status: status, headers: {location: url}})
|
||||
};
|
||||
|
||||
exports.DOMException = g.DOMException;
|
||||
try {
|
||||
new exports.DOMException();
|
||||
} catch (err) {
|
||||
exports.DOMException = function(message, name) {
|
||||
this.message = message;
|
||||
this.name = name;
|
||||
var error = Error(message);
|
||||
this.stack = error.stack;
|
||||
};
|
||||
exports.DOMException.prototype = Object.create(Error.prototype);
|
||||
exports.DOMException.prototype.constructor = exports.DOMException;
|
||||
}
|
||||
|
||||
function fetch(input, init) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var request = new Request(input, init);
|
||||
|
||||
if (request.signal && request.signal.aborted) {
|
||||
return reject(new exports.DOMException('Aborted', 'AbortError'))
|
||||
}
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
function abortXhr() {
|
||||
xhr.abort();
|
||||
}
|
||||
|
||||
xhr.onload = function() {
|
||||
var options = {
|
||||
status: xhr.status,
|
||||
statusText: xhr.statusText,
|
||||
headers: parseHeaders(xhr.getAllResponseHeaders() || '')
|
||||
};
|
||||
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
|
||||
var body = 'response' in xhr ? xhr.response : xhr.responseText;
|
||||
setTimeout(function() {
|
||||
resolve(new Response(body, options));
|
||||
}, 0);
|
||||
};
|
||||
|
||||
xhr.onerror = function() {
|
||||
setTimeout(function() {
|
||||
reject(new TypeError('Network request failed'));
|
||||
}, 0);
|
||||
};
|
||||
|
||||
xhr.ontimeout = function() {
|
||||
setTimeout(function() {
|
||||
reject(new TypeError('Network request failed'));
|
||||
}, 0);
|
||||
};
|
||||
|
||||
xhr.onabort = function() {
|
||||
setTimeout(function() {
|
||||
reject(new exports.DOMException('Aborted', 'AbortError'));
|
||||
}, 0);
|
||||
};
|
||||
|
||||
function fixUrl(url) {
|
||||
try {
|
||||
return url === '' && g.location.href ? g.location.href : url
|
||||
} catch (e) {
|
||||
return url
|
||||
}
|
||||
}
|
||||
|
||||
xhr.open(request.method, fixUrl(request.url), true);
|
||||
|
||||
if (request.credentials === 'include') {
|
||||
xhr.withCredentials = true;
|
||||
} else if (request.credentials === 'omit') {
|
||||
xhr.withCredentials = false;
|
||||
}
|
||||
|
||||
if ('responseType' in xhr) {
|
||||
if (support.blob) {
|
||||
xhr.responseType = 'blob';
|
||||
} else if (
|
||||
support.arrayBuffer
|
||||
) {
|
||||
xhr.responseType = 'arraybuffer';
|
||||
}
|
||||
}
|
||||
|
||||
if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {
|
||||
var names = [];
|
||||
Object.getOwnPropertyNames(init.headers).forEach(function(name) {
|
||||
names.push(normalizeName(name));
|
||||
xhr.setRequestHeader(name, normalizeValue(init.headers[name]));
|
||||
});
|
||||
request.headers.forEach(function(value, name) {
|
||||
if (names.indexOf(name) === -1) {
|
||||
xhr.setRequestHeader(name, value);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
request.headers.forEach(function(value, name) {
|
||||
xhr.setRequestHeader(name, value);
|
||||
});
|
||||
}
|
||||
|
||||
if (request.signal) {
|
||||
request.signal.addEventListener('abort', abortXhr);
|
||||
|
||||
xhr.onreadystatechange = function() {
|
||||
// DONE (success or failure)
|
||||
if (xhr.readyState === 4) {
|
||||
request.signal.removeEventListener('abort', abortXhr);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
|
||||
})
|
||||
}
|
||||
|
||||
fetch.polyfill = true;
|
||||
|
||||
if (!g.fetch) {
|
||||
g.fetch = fetch;
|
||||
g.Headers = Headers;
|
||||
g.Request = Request;
|
||||
g.Response = Response;
|
||||
}
|
||||
|
||||
exports.Headers = Headers;
|
||||
exports.Request = Request;
|
||||
exports.Response = Response;
|
||||
exports.fetch = fetch;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
1
wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
441
wp-includes/js/dist/vendor/wp-polyfill-formdata.js
vendored
Normal file
441
wp-includes/js/dist/vendor/wp-polyfill-formdata.js
vendored
Normal file
@ -0,0 +1,441 @@
|
||||
/* formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
|
||||
|
||||
/* global FormData self Blob File */
|
||||
/* eslint-disable no-inner-declarations */
|
||||
|
||||
if (typeof Blob !== 'undefined' && (typeof FormData === 'undefined' || !FormData.prototype.keys)) {
|
||||
const global = typeof globalThis === 'object'
|
||||
? globalThis
|
||||
: typeof window === 'object'
|
||||
? window
|
||||
: typeof self === 'object' ? self : this
|
||||
|
||||
// keep a reference to native implementation
|
||||
const _FormData = global.FormData
|
||||
|
||||
// To be monkey patched
|
||||
const _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send
|
||||
const _fetch = global.Request && global.fetch
|
||||
const _sendBeacon = global.navigator && global.navigator.sendBeacon
|
||||
// Might be a worker thread...
|
||||
const _match = global.Element && global.Element.prototype
|
||||
|
||||
// Unable to patch Request/Response constructor correctly #109
|
||||
// only way is to use ES6 class extend
|
||||
// https://github.com/babel/babel/issues/1966
|
||||
|
||||
const stringTag = global.Symbol && Symbol.toStringTag
|
||||
|
||||
// Add missing stringTags to blob and files
|
||||
if (stringTag) {
|
||||
if (!Blob.prototype[stringTag]) {
|
||||
Blob.prototype[stringTag] = 'Blob'
|
||||
}
|
||||
|
||||
if ('File' in global && !File.prototype[stringTag]) {
|
||||
File.prototype[stringTag] = 'File'
|
||||
}
|
||||
}
|
||||
|
||||
// Fix so you can construct your own File
|
||||
try {
|
||||
new File([], '') // eslint-disable-line
|
||||
} catch (a) {
|
||||
global.File = function File (b, d, c) {
|
||||
const blob = new Blob(b, c || {})
|
||||
const t = c && void 0 !== c.lastModified ? new Date(c.lastModified) : new Date()
|
||||
|
||||
Object.defineProperties(blob, {
|
||||
name: {
|
||||
value: d
|
||||
},
|
||||
lastModified: {
|
||||
value: +t
|
||||
},
|
||||
toString: {
|
||||
value () {
|
||||
return '[object File]'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
if (stringTag) {
|
||||
Object.defineProperty(blob, stringTag, {
|
||||
value: 'File'
|
||||
})
|
||||
}
|
||||
|
||||
return blob
|
||||
}
|
||||
}
|
||||
|
||||
function ensureArgs (args, expected) {
|
||||
if (args.length < expected) {
|
||||
throw new TypeError(`${expected} argument required, but only ${args.length} present.`)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} name
|
||||
* @param {string | undefined} filename
|
||||
* @returns {[string, File|string]}
|
||||
*/
|
||||
function normalizeArgs (name, value, filename) {
|
||||
if (value instanceof Blob) {
|
||||
filename = filename !== undefined
|
||||
? String(filename + '')
|
||||
: typeof value.name === 'string'
|
||||
? value.name
|
||||
: 'blob'
|
||||
|
||||
if (value.name !== filename || Object.prototype.toString.call(value) === '[object Blob]') {
|
||||
value = new File([value], filename)
|
||||
}
|
||||
return [String(name), value]
|
||||
}
|
||||
return [String(name), String(value)]
|
||||
}
|
||||
|
||||
// normalize line feeds for textarea
|
||||
// https://html.spec.whatwg.org/multipage/form-elements.html#textarea-line-break-normalisation-transformation
|
||||
function normalizeLinefeeds (value) {
|
||||
return value.replace(/\r?\n|\r/g, '\r\n')
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @param {ArrayLike<T>} arr
|
||||
* @param {{ (elm: T): void; }} cb
|
||||
*/
|
||||
function each (arr, cb) {
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
cb(arr[i])
|
||||
}
|
||||
}
|
||||
|
||||
const escape = str => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22')
|
||||
|
||||
/**
|
||||
* @implements {Iterable}
|
||||
*/
|
||||
class FormDataPolyfill {
|
||||
/**
|
||||
* FormData class
|
||||
*
|
||||
* @param {HTMLFormElement=} form
|
||||
*/
|
||||
constructor (form) {
|
||||
/** @type {[string, string|File][]} */
|
||||
this._data = []
|
||||
|
||||
const self = this
|
||||
form && each(form.elements, (/** @type {HTMLInputElement} */ elm) => {
|
||||
if (
|
||||
!elm.name ||
|
||||
elm.disabled ||
|
||||
elm.type === 'submit' ||
|
||||
elm.type === 'button' ||
|
||||
elm.matches('form fieldset[disabled] *')
|
||||
) return
|
||||
|
||||
if (elm.type === 'file') {
|
||||
const files = elm.files && elm.files.length
|
||||
? elm.files
|
||||
: [new File([], '', { type: 'application/octet-stream' })] // #78
|
||||
|
||||
each(files, file => {
|
||||
self.append(elm.name, file)
|
||||
})
|
||||
} else if (elm.type === 'select-multiple' || elm.type === 'select-one') {
|
||||
each(elm.options, opt => {
|
||||
!opt.disabled && opt.selected && self.append(elm.name, opt.value)
|
||||
})
|
||||
} else if (elm.type === 'checkbox' || elm.type === 'radio') {
|
||||
if (elm.checked) self.append(elm.name, elm.value)
|
||||
} else {
|
||||
const value = elm.type === 'textarea' ? normalizeLinefeeds(elm.value) : elm.value
|
||||
self.append(elm.name, value)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Append a field
|
||||
*
|
||||
* @param {string} name field name
|
||||
* @param {string|Blob|File} value string / blob / file
|
||||
* @param {string=} filename filename to use with blob
|
||||
* @return {undefined}
|
||||
*/
|
||||
append (name, value, filename) {
|
||||
ensureArgs(arguments, 2)
|
||||
this._data.push(normalizeArgs(name, value, filename))
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all fields values given name
|
||||
*
|
||||
* @param {string} name Field name
|
||||
* @return {undefined}
|
||||
*/
|
||||
delete (name) {
|
||||
ensureArgs(arguments, 1)
|
||||
const result = []
|
||||
name = String(name)
|
||||
|
||||
each(this._data, entry => {
|
||||
entry[0] !== name && result.push(entry)
|
||||
})
|
||||
|
||||
this._data = result
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterate over all fields as [name, value]
|
||||
*
|
||||
* @return {Iterator}
|
||||
*/
|
||||
* entries () {
|
||||
for (var i = 0; i < this._data.length; i++) {
|
||||
yield this._data[i]
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterate over all fields
|
||||
*
|
||||
* @param {Function} callback Executed for each item with parameters (value, name, thisArg)
|
||||
* @param {Object=} thisArg `this` context for callback function
|
||||
*/
|
||||
forEach (callback, thisArg) {
|
||||
ensureArgs(arguments, 1)
|
||||
for (const [name, value] of this) {
|
||||
callback.call(thisArg, value, name, this)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return first field value given name
|
||||
* or null if non existent
|
||||
*
|
||||
* @param {string} name Field name
|
||||
* @return {string|File|null} value Fields value
|
||||
*/
|
||||
get (name) {
|
||||
ensureArgs(arguments, 1)
|
||||
const entries = this._data
|
||||
name = String(name)
|
||||
for (let i = 0; i < entries.length; i++) {
|
||||
if (entries[i][0] === name) {
|
||||
return entries[i][1]
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all fields values given name
|
||||
*
|
||||
* @param {string} name Fields name
|
||||
* @return {Array} [{String|File}]
|
||||
*/
|
||||
getAll (name) {
|
||||
ensureArgs(arguments, 1)
|
||||
const result = []
|
||||
name = String(name)
|
||||
each(this._data, data => {
|
||||
data[0] === name && result.push(data[1])
|
||||
})
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for field name existence
|
||||
*
|
||||
* @param {string} name Field name
|
||||
* @return {boolean}
|
||||
*/
|
||||
has (name) {
|
||||
ensureArgs(arguments, 1)
|
||||
name = String(name)
|
||||
for (let i = 0; i < this._data.length; i++) {
|
||||
if (this._data[i][0] === name) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterate over all fields name
|
||||
*
|
||||
* @return {Iterator}
|
||||
*/
|
||||
* keys () {
|
||||
for (const [name] of this) {
|
||||
yield name
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overwrite all values given name
|
||||
*
|
||||
* @param {string} name Filed name
|
||||
* @param {string} value Field value
|
||||
* @param {string=} filename Filename (optional)
|
||||
*/
|
||||
set (name, value, filename) {
|
||||
ensureArgs(arguments, 2)
|
||||
name = String(name)
|
||||
/** @type {[string, string|File][]} */
|
||||
const result = []
|
||||
const args = normalizeArgs(name, value, filename)
|
||||
let replace = true
|
||||
|
||||
// - replace the first occurrence with same name
|
||||
// - discards the remaining with same name
|
||||
// - while keeping the same order items where added
|
||||
each(this._data, data => {
|
||||
data[0] === name
|
||||
? replace && (replace = !result.push(args))
|
||||
: result.push(data)
|
||||
})
|
||||
|
||||
replace && result.push(args)
|
||||
|
||||
this._data = result
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterate over all fields
|
||||
*
|
||||
* @return {Iterator}
|
||||
*/
|
||||
* values () {
|
||||
for (const [, value] of this) {
|
||||
yield value
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a native (perhaps degraded) FormData with only a `append` method
|
||||
* Can throw if it's not supported
|
||||
*
|
||||
* @return {FormData}
|
||||
*/
|
||||
['_asNative'] () {
|
||||
const fd = new _FormData()
|
||||
|
||||
for (const [name, value] of this) {
|
||||
fd.append(name, value)
|
||||
}
|
||||
|
||||
return fd
|
||||
}
|
||||
|
||||
/**
|
||||
* [_blob description]
|
||||
*
|
||||
* @return {Blob} [description]
|
||||
*/
|
||||
['_blob'] () {
|
||||
const boundary = '----formdata-polyfill-' + Math.random(),
|
||||
chunks = [],
|
||||
p = `--${boundary}\r\nContent-Disposition: form-data; name="`
|
||||
this.forEach((value, name) => typeof value == 'string'
|
||||
? chunks.push(p + escape(normalizeLinefeeds(name)) + `"\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
|
||||
: chunks.push(p + escape(normalizeLinefeeds(name)) + `"; filename="${escape(value.name)}"\r\nContent-Type: ${value.type||"application/octet-stream"}\r\n\r\n`, value, `\r\n`))
|
||||
chunks.push(`--${boundary}--`)
|
||||
return new Blob(chunks, {
|
||||
type: "multipart/form-data; boundary=" + boundary
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* The class itself is iterable
|
||||
* alias for formdata.entries()
|
||||
*
|
||||
* @return {Iterator}
|
||||
*/
|
||||
[Symbol.iterator] () {
|
||||
return this.entries()
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the default string description.
|
||||
*
|
||||
* @return {string} [object FormData]
|
||||
*/
|
||||
toString () {
|
||||
return '[object FormData]'
|
||||
}
|
||||
}
|
||||
|
||||
if (_match && !_match.matches) {
|
||||
_match.matches =
|
||||
_match.matchesSelector ||
|
||||
_match.mozMatchesSelector ||
|
||||
_match.msMatchesSelector ||
|
||||
_match.oMatchesSelector ||
|
||||
_match.webkitMatchesSelector ||
|
||||
function (s) {
|
||||
var matches = (this.document || this.ownerDocument).querySelectorAll(s)
|
||||
var i = matches.length
|
||||
while (--i >= 0 && matches.item(i) !== this) {}
|
||||
return i > -1
|
||||
}
|
||||
}
|
||||
|
||||
if (stringTag) {
|
||||
/**
|
||||
* Create the default string description.
|
||||
* It is accessed internally by the Object.prototype.toString().
|
||||
*/
|
||||
FormDataPolyfill.prototype[stringTag] = 'FormData'
|
||||
}
|
||||
|
||||
// Patch xhr's send method to call _blob transparently
|
||||
if (_send) {
|
||||
const setRequestHeader = global.XMLHttpRequest.prototype.setRequestHeader
|
||||
|
||||
global.XMLHttpRequest.prototype.setRequestHeader = function (name, value) {
|
||||
setRequestHeader.call(this, name, value)
|
||||
if (name.toLowerCase() === 'content-type') this._hasContentType = true
|
||||
}
|
||||
|
||||
global.XMLHttpRequest.prototype.send = function (data) {
|
||||
// need to patch send b/c old IE don't send blob's type (#44)
|
||||
if (data instanceof FormDataPolyfill) {
|
||||
const blob = data['_blob']()
|
||||
if (!this._hasContentType) this.setRequestHeader('Content-Type', blob.type)
|
||||
_send.call(this, blob)
|
||||
} else {
|
||||
_send.call(this, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Patch fetch's function to call _blob transparently
|
||||
if (_fetch) {
|
||||
global.fetch = function (input, init) {
|
||||
if (init && init.body && init.body instanceof FormDataPolyfill) {
|
||||
init.body = init.body['_blob']()
|
||||
}
|
||||
|
||||
return _fetch.call(this, input, init)
|
||||
}
|
||||
}
|
||||
|
||||
// Patch navigator.sendBeacon to use native FormData
|
||||
if (_sendBeacon) {
|
||||
global.navigator.sendBeacon = function (url, data) {
|
||||
if (data instanceof FormDataPolyfill) {
|
||||
data = data['_asNative']()
|
||||
}
|
||||
return _sendBeacon.call(this, url, data)
|
||||
}
|
||||
}
|
||||
|
||||
global['FormData'] = FormDataPolyfill
|
||||
}
|
2
wp-includes/js/dist/vendor/wp-polyfill-formdata.min.js
vendored
Normal file
2
wp-includes/js/dist/vendor/wp-polyfill-formdata.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
970
wp-includes/js/dist/vendor/wp-polyfill-importmap.js
vendored
Normal file
970
wp-includes/js/dist/vendor/wp-polyfill-importmap.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
wp-includes/js/dist/vendor/wp-polyfill-importmap.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-importmap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
840
wp-includes/js/dist/vendor/wp-polyfill-inert.js
vendored
Normal file
840
wp-includes/js/dist/vendor/wp-polyfill-inert.js
vendored
Normal file
@ -0,0 +1,840 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
|
||||
typeof define === 'function' && define.amd ? define('inert', factory) :
|
||||
(factory());
|
||||
}(this, (function () { 'use strict';
|
||||
|
||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
/**
|
||||
* This work is licensed under the W3C Software and Document License
|
||||
* (http://www.w3.org/Consortium/Legal/2015/copyright-software-and-document).
|
||||
*/
|
||||
|
||||
(function () {
|
||||
// Return early if we're not running inside of the browser.
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Convenience function for converting NodeLists.
|
||||
/** @type {typeof Array.prototype.slice} */
|
||||
var slice = Array.prototype.slice;
|
||||
|
||||
/**
|
||||
* IE has a non-standard name for "matches".
|
||||
* @type {typeof Element.prototype.matches}
|
||||
*/
|
||||
var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;
|
||||
|
||||
/** @type {string} */
|
||||
var _focusableElementsString = ['a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'details', 'summary', 'iframe', 'object', 'embed', '[contenteditable]'].join(',');
|
||||
|
||||
/**
|
||||
* `InertRoot` manages a single inert subtree, i.e. a DOM subtree whose root element has an `inert`
|
||||
* attribute.
|
||||
*
|
||||
* Its main functions are:
|
||||
*
|
||||
* - to create and maintain a set of managed `InertNode`s, including when mutations occur in the
|
||||
* subtree. The `makeSubtreeUnfocusable()` method handles collecting `InertNode`s via registering
|
||||
* each focusable node in the subtree with the singleton `InertManager` which manages all known
|
||||
* focusable nodes within inert subtrees. `InertManager` ensures that a single `InertNode`
|
||||
* instance exists for each focusable node which has at least one inert root as an ancestor.
|
||||
*
|
||||
* - to notify all managed `InertNode`s when this subtree stops being inert (i.e. when the `inert`
|
||||
* attribute is removed from the root node). This is handled in the destructor, which calls the
|
||||
* `deregister` method on `InertManager` for each managed inert node.
|
||||
*/
|
||||
|
||||
var InertRoot = function () {
|
||||
/**
|
||||
* @param {!HTMLElement} rootElement The HTMLElement at the root of the inert subtree.
|
||||
* @param {!InertManager} inertManager The global singleton InertManager object.
|
||||
*/
|
||||
function InertRoot(rootElement, inertManager) {
|
||||
_classCallCheck(this, InertRoot);
|
||||
|
||||
/** @type {!InertManager} */
|
||||
this._inertManager = inertManager;
|
||||
|
||||
/** @type {!HTMLElement} */
|
||||
this._rootElement = rootElement;
|
||||
|
||||
/**
|
||||
* @type {!Set<!InertNode>}
|
||||
* All managed focusable nodes in this InertRoot's subtree.
|
||||
*/
|
||||
this._managedNodes = new Set();
|
||||
|
||||
// Make the subtree hidden from assistive technology
|
||||
if (this._rootElement.hasAttribute('aria-hidden')) {
|
||||
/** @type {?string} */
|
||||
this._savedAriaHidden = this._rootElement.getAttribute('aria-hidden');
|
||||
} else {
|
||||
this._savedAriaHidden = null;
|
||||
}
|
||||
this._rootElement.setAttribute('aria-hidden', 'true');
|
||||
|
||||
// Make all focusable elements in the subtree unfocusable and add them to _managedNodes
|
||||
this._makeSubtreeUnfocusable(this._rootElement);
|
||||
|
||||
// Watch for:
|
||||
// - any additions in the subtree: make them unfocusable too
|
||||
// - any removals from the subtree: remove them from this inert root's managed nodes
|
||||
// - attribute changes: if `tabindex` is added, or removed from an intrinsically focusable
|
||||
// element, make that node a managed node.
|
||||
this._observer = new MutationObserver(this._onMutation.bind(this));
|
||||
this._observer.observe(this._rootElement, { attributes: true, childList: true, subtree: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this whenever this object is about to become obsolete. This unwinds all of the state
|
||||
* stored in this object and updates the state of all of the managed nodes.
|
||||
*/
|
||||
|
||||
|
||||
_createClass(InertRoot, [{
|
||||
key: 'destructor',
|
||||
value: function destructor() {
|
||||
this._observer.disconnect();
|
||||
|
||||
if (this._rootElement) {
|
||||
if (this._savedAriaHidden !== null) {
|
||||
this._rootElement.setAttribute('aria-hidden', this._savedAriaHidden);
|
||||
} else {
|
||||
this._rootElement.removeAttribute('aria-hidden');
|
||||
}
|
||||
}
|
||||
|
||||
this._managedNodes.forEach(function (inertNode) {
|
||||
this._unmanageNode(inertNode.node);
|
||||
}, this);
|
||||
|
||||
// Note we cast the nulls to the ANY type here because:
|
||||
// 1) We want the class properties to be declared as non-null, or else we
|
||||
// need even more casts throughout this code. All bets are off if an
|
||||
// instance has been destroyed and a method is called.
|
||||
// 2) We don't want to cast "this", because we want type-aware optimizations
|
||||
// to know which properties we're setting.
|
||||
this._observer = /** @type {?} */null;
|
||||
this._rootElement = /** @type {?} */null;
|
||||
this._managedNodes = /** @type {?} */null;
|
||||
this._inertManager = /** @type {?} */null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {!Set<!InertNode>} A copy of this InertRoot's managed nodes set.
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_makeSubtreeUnfocusable',
|
||||
|
||||
|
||||
/**
|
||||
* @param {!Node} startNode
|
||||
*/
|
||||
value: function _makeSubtreeUnfocusable(startNode) {
|
||||
var _this2 = this;
|
||||
|
||||
composedTreeWalk(startNode, function (node) {
|
||||
return _this2._visitNode(node);
|
||||
});
|
||||
|
||||
var activeElement = document.activeElement;
|
||||
|
||||
if (!document.body.contains(startNode)) {
|
||||
// startNode may be in shadow DOM, so find its nearest shadowRoot to get the activeElement.
|
||||
var node = startNode;
|
||||
/** @type {!ShadowRoot|undefined} */
|
||||
var root = undefined;
|
||||
while (node) {
|
||||
if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
||||
root = /** @type {!ShadowRoot} */node;
|
||||
break;
|
||||
}
|
||||
node = node.parentNode;
|
||||
}
|
||||
if (root) {
|
||||
activeElement = root.activeElement;
|
||||
}
|
||||
}
|
||||
if (startNode.contains(activeElement)) {
|
||||
activeElement.blur();
|
||||
// In IE11, if an element is already focused, and then set to tabindex=-1
|
||||
// calling blur() will not actually move the focus.
|
||||
// To work around this we call focus() on the body instead.
|
||||
if (activeElement === document.activeElement) {
|
||||
document.body.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {!Node} node
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_visitNode',
|
||||
value: function _visitNode(node) {
|
||||
if (node.nodeType !== Node.ELEMENT_NODE) {
|
||||
return;
|
||||
}
|
||||
var element = /** @type {!HTMLElement} */node;
|
||||
|
||||
// If a descendant inert root becomes un-inert, its descendants will still be inert because of
|
||||
// this inert root, so all of its managed nodes need to be adopted by this InertRoot.
|
||||
if (element !== this._rootElement && element.hasAttribute('inert')) {
|
||||
this._adoptInertRoot(element);
|
||||
}
|
||||
|
||||
if (matches.call(element, _focusableElementsString) || element.hasAttribute('tabindex')) {
|
||||
this._manageNode(element);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the given node with this InertRoot and with InertManager.
|
||||
* @param {!Node} node
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_manageNode',
|
||||
value: function _manageNode(node) {
|
||||
var inertNode = this._inertManager.register(node, this);
|
||||
this._managedNodes.add(inertNode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister the given node with this InertRoot and with InertManager.
|
||||
* @param {!Node} node
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_unmanageNode',
|
||||
value: function _unmanageNode(node) {
|
||||
var inertNode = this._inertManager.deregister(node, this);
|
||||
if (inertNode) {
|
||||
this._managedNodes['delete'](inertNode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister the entire subtree starting at `startNode`.
|
||||
* @param {!Node} startNode
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_unmanageSubtree',
|
||||
value: function _unmanageSubtree(startNode) {
|
||||
var _this3 = this;
|
||||
|
||||
composedTreeWalk(startNode, function (node) {
|
||||
return _this3._unmanageNode(node);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* If a descendant node is found with an `inert` attribute, adopt its managed nodes.
|
||||
* @param {!HTMLElement} node
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_adoptInertRoot',
|
||||
value: function _adoptInertRoot(node) {
|
||||
var inertSubroot = this._inertManager.getInertRoot(node);
|
||||
|
||||
// During initialisation this inert root may not have been registered yet,
|
||||
// so register it now if need be.
|
||||
if (!inertSubroot) {
|
||||
this._inertManager.setInert(node, true);
|
||||
inertSubroot = this._inertManager.getInertRoot(node);
|
||||
}
|
||||
|
||||
inertSubroot.managedNodes.forEach(function (savedInertNode) {
|
||||
this._manageNode(savedInertNode.node);
|
||||
}, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback used when mutation observer detects subtree additions, removals, or attribute changes.
|
||||
* @param {!Array<!MutationRecord>} records
|
||||
* @param {!MutationObserver} self
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_onMutation',
|
||||
value: function _onMutation(records, self) {
|
||||
records.forEach(function (record) {
|
||||
var target = /** @type {!HTMLElement} */record.target;
|
||||
if (record.type === 'childList') {
|
||||
// Manage added nodes
|
||||
slice.call(record.addedNodes).forEach(function (node) {
|
||||
this._makeSubtreeUnfocusable(node);
|
||||
}, this);
|
||||
|
||||
// Un-manage removed nodes
|
||||
slice.call(record.removedNodes).forEach(function (node) {
|
||||
this._unmanageSubtree(node);
|
||||
}, this);
|
||||
} else if (record.type === 'attributes') {
|
||||
if (record.attributeName === 'tabindex') {
|
||||
// Re-initialise inert node if tabindex changes
|
||||
this._manageNode(target);
|
||||
} else if (target !== this._rootElement && record.attributeName === 'inert' && target.hasAttribute('inert')) {
|
||||
// If a new inert root is added, adopt its managed nodes and make sure it knows about the
|
||||
// already managed nodes from this inert subroot.
|
||||
this._adoptInertRoot(target);
|
||||
var inertSubroot = this._inertManager.getInertRoot(target);
|
||||
this._managedNodes.forEach(function (managedNode) {
|
||||
if (target.contains(managedNode.node)) {
|
||||
inertSubroot._manageNode(managedNode.node);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
}, {
|
||||
key: 'managedNodes',
|
||||
get: function get() {
|
||||
return new Set(this._managedNodes);
|
||||
}
|
||||
|
||||
/** @return {boolean} */
|
||||
|
||||
}, {
|
||||
key: 'hasSavedAriaHidden',
|
||||
get: function get() {
|
||||
return this._savedAriaHidden !== null;
|
||||
}
|
||||
|
||||
/** @param {?string} ariaHidden */
|
||||
|
||||
}, {
|
||||
key: 'savedAriaHidden',
|
||||
set: function set(ariaHidden) {
|
||||
this._savedAriaHidden = ariaHidden;
|
||||
}
|
||||
|
||||
/** @return {?string} */
|
||||
,
|
||||
get: function get() {
|
||||
return this._savedAriaHidden;
|
||||
}
|
||||
}]);
|
||||
|
||||
return InertRoot;
|
||||
}();
|
||||
|
||||
/**
|
||||
* `InertNode` initialises and manages a single inert node.
|
||||
* A node is inert if it is a descendant of one or more inert root elements.
|
||||
*
|
||||
* On construction, `InertNode` saves the existing `tabindex` value for the node, if any, and
|
||||
* either removes the `tabindex` attribute or sets it to `-1`, depending on whether the element
|
||||
* is intrinsically focusable or not.
|
||||
*
|
||||
* `InertNode` maintains a set of `InertRoot`s which are descendants of this `InertNode`. When an
|
||||
* `InertRoot` is destroyed, and calls `InertManager.deregister()`, the `InertManager` notifies the
|
||||
* `InertNode` via `removeInertRoot()`, which in turn destroys the `InertNode` if no `InertRoot`s
|
||||
* remain in the set. On destruction, `InertNode` reinstates the stored `tabindex` if one exists,
|
||||
* or removes the `tabindex` attribute if the element is intrinsically focusable.
|
||||
*/
|
||||
|
||||
|
||||
var InertNode = function () {
|
||||
/**
|
||||
* @param {!Node} node A focusable element to be made inert.
|
||||
* @param {!InertRoot} inertRoot The inert root element associated with this inert node.
|
||||
*/
|
||||
function InertNode(node, inertRoot) {
|
||||
_classCallCheck(this, InertNode);
|
||||
|
||||
/** @type {!Node} */
|
||||
this._node = node;
|
||||
|
||||
/** @type {boolean} */
|
||||
this._overrodeFocusMethod = false;
|
||||
|
||||
/**
|
||||
* @type {!Set<!InertRoot>} The set of descendant inert roots.
|
||||
* If and only if this set becomes empty, this node is no longer inert.
|
||||
*/
|
||||
this._inertRoots = new Set([inertRoot]);
|
||||
|
||||
/** @type {?number} */
|
||||
this._savedTabIndex = null;
|
||||
|
||||
/** @type {boolean} */
|
||||
this._destroyed = false;
|
||||
|
||||
// Save any prior tabindex info and make this node untabbable
|
||||
this.ensureUntabbable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this whenever this object is about to become obsolete.
|
||||
* This makes the managed node focusable again and deletes all of the previously stored state.
|
||||
*/
|
||||
|
||||
|
||||
_createClass(InertNode, [{
|
||||
key: 'destructor',
|
||||
value: function destructor() {
|
||||
this._throwIfDestroyed();
|
||||
|
||||
if (this._node && this._node.nodeType === Node.ELEMENT_NODE) {
|
||||
var element = /** @type {!HTMLElement} */this._node;
|
||||
if (this._savedTabIndex !== null) {
|
||||
element.setAttribute('tabindex', this._savedTabIndex);
|
||||
} else {
|
||||
element.removeAttribute('tabindex');
|
||||
}
|
||||
|
||||
// Use `delete` to restore native focus method.
|
||||
if (this._overrodeFocusMethod) {
|
||||
delete element.focus;
|
||||
}
|
||||
}
|
||||
|
||||
// See note in InertRoot.destructor for why we cast these nulls to ANY.
|
||||
this._node = /** @type {?} */null;
|
||||
this._inertRoots = /** @type {?} */null;
|
||||
this._destroyed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {boolean} Whether this object is obsolete because the managed node is no longer inert.
|
||||
* If the object has been destroyed, any attempt to access it will cause an exception.
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_throwIfDestroyed',
|
||||
|
||||
|
||||
/**
|
||||
* Throw if user tries to access destroyed InertNode.
|
||||
*/
|
||||
value: function _throwIfDestroyed() {
|
||||
if (this.destroyed) {
|
||||
throw new Error('Trying to access destroyed InertNode');
|
||||
}
|
||||
}
|
||||
|
||||
/** @return {boolean} */
|
||||
|
||||
}, {
|
||||
key: 'ensureUntabbable',
|
||||
|
||||
|
||||
/** Save the existing tabindex value and make the node untabbable and unfocusable */
|
||||
value: function ensureUntabbable() {
|
||||
if (this.node.nodeType !== Node.ELEMENT_NODE) {
|
||||
return;
|
||||
}
|
||||
var element = /** @type {!HTMLElement} */this.node;
|
||||
if (matches.call(element, _focusableElementsString)) {
|
||||
if ( /** @type {!HTMLElement} */element.tabIndex === -1 && this.hasSavedTabIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (element.hasAttribute('tabindex')) {
|
||||
this._savedTabIndex = /** @type {!HTMLElement} */element.tabIndex;
|
||||
}
|
||||
element.setAttribute('tabindex', '-1');
|
||||
if (element.nodeType === Node.ELEMENT_NODE) {
|
||||
element.focus = function () {};
|
||||
this._overrodeFocusMethod = true;
|
||||
}
|
||||
} else if (element.hasAttribute('tabindex')) {
|
||||
this._savedTabIndex = /** @type {!HTMLElement} */element.tabIndex;
|
||||
element.removeAttribute('tabindex');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add another inert root to this inert node's set of managing inert roots.
|
||||
* @param {!InertRoot} inertRoot
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'addInertRoot',
|
||||
value: function addInertRoot(inertRoot) {
|
||||
this._throwIfDestroyed();
|
||||
this._inertRoots.add(inertRoot);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the given inert root from this inert node's set of managing inert roots.
|
||||
* If the set of managing inert roots becomes empty, this node is no longer inert,
|
||||
* so the object should be destroyed.
|
||||
* @param {!InertRoot} inertRoot
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'removeInertRoot',
|
||||
value: function removeInertRoot(inertRoot) {
|
||||
this._throwIfDestroyed();
|
||||
this._inertRoots['delete'](inertRoot);
|
||||
if (this._inertRoots.size === 0) {
|
||||
this.destructor();
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'destroyed',
|
||||
get: function get() {
|
||||
return (/** @type {!InertNode} */this._destroyed
|
||||
);
|
||||
}
|
||||
}, {
|
||||
key: 'hasSavedTabIndex',
|
||||
get: function get() {
|
||||
return this._savedTabIndex !== null;
|
||||
}
|
||||
|
||||
/** @return {!Node} */
|
||||
|
||||
}, {
|
||||
key: 'node',
|
||||
get: function get() {
|
||||
this._throwIfDestroyed();
|
||||
return this._node;
|
||||
}
|
||||
|
||||
/** @param {?number} tabIndex */
|
||||
|
||||
}, {
|
||||
key: 'savedTabIndex',
|
||||
set: function set(tabIndex) {
|
||||
this._throwIfDestroyed();
|
||||
this._savedTabIndex = tabIndex;
|
||||
}
|
||||
|
||||
/** @return {?number} */
|
||||
,
|
||||
get: function get() {
|
||||
this._throwIfDestroyed();
|
||||
return this._savedTabIndex;
|
||||
}
|
||||
}]);
|
||||
|
||||
return InertNode;
|
||||
}();
|
||||
|
||||
/**
|
||||
* InertManager is a per-document singleton object which manages all inert roots and nodes.
|
||||
*
|
||||
* When an element becomes an inert root by having an `inert` attribute set and/or its `inert`
|
||||
* property set to `true`, the `setInert` method creates an `InertRoot` object for the element.
|
||||
* The `InertRoot` in turn registers itself as managing all of the element's focusable descendant
|
||||
* nodes via the `register()` method. The `InertManager` ensures that a single `InertNode` instance
|
||||
* is created for each such node, via the `_managedNodes` map.
|
||||
*/
|
||||
|
||||
|
||||
var InertManager = function () {
|
||||
/**
|
||||
* @param {!Document} document
|
||||
*/
|
||||
function InertManager(document) {
|
||||
_classCallCheck(this, InertManager);
|
||||
|
||||
if (!document) {
|
||||
throw new Error('Missing required argument; InertManager needs to wrap a document.');
|
||||
}
|
||||
|
||||
/** @type {!Document} */
|
||||
this._document = document;
|
||||
|
||||
/**
|
||||
* All managed nodes known to this InertManager. In a map to allow looking up by Node.
|
||||
* @type {!Map<!Node, !InertNode>}
|
||||
*/
|
||||
this._managedNodes = new Map();
|
||||
|
||||
/**
|
||||
* All inert roots known to this InertManager. In a map to allow looking up by Node.
|
||||
* @type {!Map<!Node, !InertRoot>}
|
||||
*/
|
||||
this._inertRoots = new Map();
|
||||
|
||||
/**
|
||||
* Observer for mutations on `document.body`.
|
||||
* @type {!MutationObserver}
|
||||
*/
|
||||
this._observer = new MutationObserver(this._watchForInert.bind(this));
|
||||
|
||||
// Add inert style.
|
||||
addInertStyle(document.head || document.body || document.documentElement);
|
||||
|
||||
// Wait for document to be loaded.
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', this._onDocumentLoaded.bind(this));
|
||||
} else {
|
||||
this._onDocumentLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the given element should be an inert root or not.
|
||||
* @param {!HTMLElement} root
|
||||
* @param {boolean} inert
|
||||
*/
|
||||
|
||||
|
||||
_createClass(InertManager, [{
|
||||
key: 'setInert',
|
||||
value: function setInert(root, inert) {
|
||||
if (inert) {
|
||||
if (this._inertRoots.has(root)) {
|
||||
// element is already inert
|
||||
return;
|
||||
}
|
||||
|
||||
var inertRoot = new InertRoot(root, this);
|
||||
root.setAttribute('inert', '');
|
||||
this._inertRoots.set(root, inertRoot);
|
||||
// If not contained in the document, it must be in a shadowRoot.
|
||||
// Ensure inert styles are added there.
|
||||
if (!this._document.body.contains(root)) {
|
||||
var parent = root.parentNode;
|
||||
while (parent) {
|
||||
if (parent.nodeType === 11) {
|
||||
addInertStyle(parent);
|
||||
}
|
||||
parent = parent.parentNode;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!this._inertRoots.has(root)) {
|
||||
// element is already non-inert
|
||||
return;
|
||||
}
|
||||
|
||||
var _inertRoot = this._inertRoots.get(root);
|
||||
_inertRoot.destructor();
|
||||
this._inertRoots['delete'](root);
|
||||
root.removeAttribute('inert');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the InertRoot object corresponding to the given inert root element, if any.
|
||||
* @param {!Node} element
|
||||
* @return {!InertRoot|undefined}
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'getInertRoot',
|
||||
value: function getInertRoot(element) {
|
||||
return this._inertRoots.get(element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the given InertRoot as managing the given node.
|
||||
* In the case where the node has a previously existing inert root, this inert root will
|
||||
* be added to its set of inert roots.
|
||||
* @param {!Node} node
|
||||
* @param {!InertRoot} inertRoot
|
||||
* @return {!InertNode} inertNode
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'register',
|
||||
value: function register(node, inertRoot) {
|
||||
var inertNode = this._managedNodes.get(node);
|
||||
if (inertNode !== undefined) {
|
||||
// node was already in an inert subtree
|
||||
inertNode.addInertRoot(inertRoot);
|
||||
} else {
|
||||
inertNode = new InertNode(node, inertRoot);
|
||||
}
|
||||
|
||||
this._managedNodes.set(node, inertNode);
|
||||
|
||||
return inertNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* De-register the given InertRoot as managing the given inert node.
|
||||
* Removes the inert root from the InertNode's set of managing inert roots, and remove the inert
|
||||
* node from the InertManager's set of managed nodes if it is destroyed.
|
||||
* If the node is not currently managed, this is essentially a no-op.
|
||||
* @param {!Node} node
|
||||
* @param {!InertRoot} inertRoot
|
||||
* @return {?InertNode} The potentially destroyed InertNode associated with this node, if any.
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'deregister',
|
||||
value: function deregister(node, inertRoot) {
|
||||
var inertNode = this._managedNodes.get(node);
|
||||
if (!inertNode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
inertNode.removeInertRoot(inertRoot);
|
||||
if (inertNode.destroyed) {
|
||||
this._managedNodes['delete'](node);
|
||||
}
|
||||
|
||||
return inertNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback used when document has finished loading.
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_onDocumentLoaded',
|
||||
value: function _onDocumentLoaded() {
|
||||
// Find all inert roots in document and make them actually inert.
|
||||
var inertElements = slice.call(this._document.querySelectorAll('[inert]'));
|
||||
inertElements.forEach(function (inertElement) {
|
||||
this.setInert(inertElement, true);
|
||||
}, this);
|
||||
|
||||
// Comment this out to use programmatic API only.
|
||||
this._observer.observe(this._document.body || this._document.documentElement, { attributes: true, subtree: true, childList: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback used when mutation observer detects attribute changes.
|
||||
* @param {!Array<!MutationRecord>} records
|
||||
* @param {!MutationObserver} self
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_watchForInert',
|
||||
value: function _watchForInert(records, self) {
|
||||
var _this = this;
|
||||
records.forEach(function (record) {
|
||||
switch (record.type) {
|
||||
case 'childList':
|
||||
slice.call(record.addedNodes).forEach(function (node) {
|
||||
if (node.nodeType !== Node.ELEMENT_NODE) {
|
||||
return;
|
||||
}
|
||||
var inertElements = slice.call(node.querySelectorAll('[inert]'));
|
||||
if (matches.call(node, '[inert]')) {
|
||||
inertElements.unshift(node);
|
||||
}
|
||||
inertElements.forEach(function (inertElement) {
|
||||
this.setInert(inertElement, true);
|
||||
}, _this);
|
||||
}, _this);
|
||||
break;
|
||||
case 'attributes':
|
||||
if (record.attributeName !== 'inert') {
|
||||
return;
|
||||
}
|
||||
var target = /** @type {!HTMLElement} */record.target;
|
||||
var inert = target.hasAttribute('inert');
|
||||
_this.setInert(target, inert);
|
||||
break;
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
}]);
|
||||
|
||||
return InertManager;
|
||||
}();
|
||||
|
||||
/**
|
||||
* Recursively walk the composed tree from |node|.
|
||||
* @param {!Node} node
|
||||
* @param {(function (!HTMLElement))=} callback Callback to be called for each element traversed,
|
||||
* before descending into child nodes.
|
||||
* @param {?ShadowRoot=} shadowRootAncestor The nearest ShadowRoot ancestor, if any.
|
||||
*/
|
||||
|
||||
|
||||
function composedTreeWalk(node, callback, shadowRootAncestor) {
|
||||
if (node.nodeType == Node.ELEMENT_NODE) {
|
||||
var element = /** @type {!HTMLElement} */node;
|
||||
if (callback) {
|
||||
callback(element);
|
||||
}
|
||||
|
||||
// Descend into node:
|
||||
// If it has a ShadowRoot, ignore all child elements - these will be picked
|
||||
// up by the <content> or <shadow> elements. Descend straight into the
|
||||
// ShadowRoot.
|
||||
var shadowRoot = /** @type {!HTMLElement} */element.shadowRoot;
|
||||
if (shadowRoot) {
|
||||
composedTreeWalk(shadowRoot, callback, shadowRoot);
|
||||
return;
|
||||
}
|
||||
|
||||
// If it is a <content> element, descend into distributed elements - these
|
||||
// are elements from outside the shadow root which are rendered inside the
|
||||
// shadow DOM.
|
||||
if (element.localName == 'content') {
|
||||
var content = /** @type {!HTMLContentElement} */element;
|
||||
// Verifies if ShadowDom v0 is supported.
|
||||
var distributedNodes = content.getDistributedNodes ? content.getDistributedNodes() : [];
|
||||
for (var i = 0; i < distributedNodes.length; i++) {
|
||||
composedTreeWalk(distributedNodes[i], callback, shadowRootAncestor);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// If it is a <slot> element, descend into assigned nodes - these
|
||||
// are elements from outside the shadow root which are rendered inside the
|
||||
// shadow DOM.
|
||||
if (element.localName == 'slot') {
|
||||
var slot = /** @type {!HTMLSlotElement} */element;
|
||||
// Verify if ShadowDom v1 is supported.
|
||||
var _distributedNodes = slot.assignedNodes ? slot.assignedNodes({ flatten: true }) : [];
|
||||
for (var _i = 0; _i < _distributedNodes.length; _i++) {
|
||||
composedTreeWalk(_distributedNodes[_i], callback, shadowRootAncestor);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If it is neither the parent of a ShadowRoot, a <content> element, a <slot>
|
||||
// element, nor a <shadow> element recurse normally.
|
||||
var child = node.firstChild;
|
||||
while (child != null) {
|
||||
composedTreeWalk(child, callback, shadowRootAncestor);
|
||||
child = child.nextSibling;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a style element to the node containing the inert specific styles
|
||||
* @param {!Node} node
|
||||
*/
|
||||
function addInertStyle(node) {
|
||||
if (node.querySelector('style#inert-style, link#inert-style')) {
|
||||
return;
|
||||
}
|
||||
var style = document.createElement('style');
|
||||
style.setAttribute('id', 'inert-style');
|
||||
style.textContent = '\n' + '[inert] {\n' + ' pointer-events: none;\n' + ' cursor: default;\n' + '}\n' + '\n' + '[inert], [inert] * {\n' + ' -webkit-user-select: none;\n' + ' -moz-user-select: none;\n' + ' -ms-user-select: none;\n' + ' user-select: none;\n' + '}\n';
|
||||
node.appendChild(style);
|
||||
}
|
||||
|
||||
if (!HTMLElement.prototype.hasOwnProperty('inert')) {
|
||||
/** @type {!InertManager} */
|
||||
var inertManager = new InertManager(document);
|
||||
|
||||
Object.defineProperty(HTMLElement.prototype, 'inert', {
|
||||
enumerable: true,
|
||||
/** @this {!HTMLElement} */
|
||||
get: function get() {
|
||||
return this.hasAttribute('inert');
|
||||
},
|
||||
/** @this {!HTMLElement} */
|
||||
set: function set(inert) {
|
||||
inertManager.setInert(this, inert);
|
||||
}
|
||||
});
|
||||
}
|
||||
})();
|
||||
|
||||
})));
|
1
wp-includes/js/dist/vendor/wp-polyfill-inert.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-inert.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
34
wp-includes/js/dist/vendor/wp-polyfill-node-contains.js
vendored
Normal file
34
wp-includes/js/dist/vendor/wp-polyfill-node-contains.js
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
// Node.prototype.contains
|
||||
(function() {
|
||||
|
||||
function contains(node) {
|
||||
if (!(0 in arguments)) {
|
||||
throw new TypeError('1 argument is required');
|
||||
}
|
||||
|
||||
do {
|
||||
if (this === node) {
|
||||
return true;
|
||||
}
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
} while (node = node && node.parentNode);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// IE
|
||||
if ('HTMLElement' in self && 'contains' in HTMLElement.prototype) {
|
||||
try {
|
||||
delete HTMLElement.prototype.contains;
|
||||
// eslint-disable-next-line no-empty
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
if ('Node' in self) {
|
||||
Node.prototype.contains = contains;
|
||||
} else {
|
||||
document.contains = Element.prototype.contains = contains;
|
||||
}
|
||||
|
||||
}());
|
1
wp-includes/js/dist/vendor/wp-polyfill-node-contains.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-node-contains.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(){function e(e){if(!(0 in arguments))throw new TypeError("1 argument is required");do{if(this===e)return!0}while(e=e&&e.parentNode);return!1}if("HTMLElement"in self&&"contains"in HTMLElement.prototype)try{delete HTMLElement.prototype.contains}catch(e){}"Node"in self?Node.prototype.contains=e:document.contains=Element.prototype.contains=e}();
|
304
wp-includes/js/dist/vendor/wp-polyfill-object-fit.js
vendored
Normal file
304
wp-includes/js/dist/vendor/wp-polyfill-object-fit.js
vendored
Normal file
@ -0,0 +1,304 @@
|
||||
/*----------------------------------------
|
||||
* objectFitPolyfill 2.3.5
|
||||
*
|
||||
* Made by Constance Chen
|
||||
* Released under the ISC license
|
||||
*
|
||||
* https://github.com/constancecchen/object-fit-polyfill
|
||||
*--------------------------------------*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
// if the page is being rendered on the server, don't continue
|
||||
if (typeof window === 'undefined') return;
|
||||
|
||||
// Workaround for Edge 16-18, which only implemented object-fit for <img> tags
|
||||
var edgeMatch = window.navigator.userAgent.match(/Edge\/(\d{2})\./);
|
||||
var edgeVersion = edgeMatch ? parseInt(edgeMatch[1], 10) : null;
|
||||
var edgePartialSupport = edgeVersion
|
||||
? edgeVersion >= 16 && edgeVersion <= 18
|
||||
: false;
|
||||
|
||||
// If the browser does support object-fit, we don't need to continue
|
||||
var hasSupport = 'objectFit' in document.documentElement.style !== false;
|
||||
if (hasSupport && !edgePartialSupport) {
|
||||
window.objectFitPolyfill = function() {
|
||||
return false;
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the container's parent element to make sure it will
|
||||
* correctly handle and clip absolutely positioned children
|
||||
*
|
||||
* @param {node} $container - parent element
|
||||
*/
|
||||
var checkParentContainer = function($container) {
|
||||
var styles = window.getComputedStyle($container, null);
|
||||
var position = styles.getPropertyValue('position');
|
||||
var overflow = styles.getPropertyValue('overflow');
|
||||
var display = styles.getPropertyValue('display');
|
||||
|
||||
if (!position || position === 'static') {
|
||||
$container.style.position = 'relative';
|
||||
}
|
||||
if (overflow !== 'hidden') {
|
||||
$container.style.overflow = 'hidden';
|
||||
}
|
||||
// Guesstimating that people want the parent to act like full width/height wrapper here.
|
||||
// Mostly attempts to target <picture> elements, which default to inline.
|
||||
if (!display || display === 'inline') {
|
||||
$container.style.display = 'block';
|
||||
}
|
||||
if ($container.clientHeight === 0) {
|
||||
$container.style.height = '100%';
|
||||
}
|
||||
|
||||
// Add a CSS class hook, in case people need to override styles for any reason.
|
||||
if ($container.className.indexOf('object-fit-polyfill') === -1) {
|
||||
$container.className = $container.className + ' object-fit-polyfill';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Check for pre-set max-width/height, min-width/height,
|
||||
* positioning, or margins, which can mess up image calculations
|
||||
*
|
||||
* @param {node} $media - img/video element
|
||||
*/
|
||||
var checkMediaProperties = function($media) {
|
||||
var styles = window.getComputedStyle($media, null);
|
||||
var constraints = {
|
||||
'max-width': 'none',
|
||||
'max-height': 'none',
|
||||
'min-width': '0px',
|
||||
'min-height': '0px',
|
||||
top: 'auto',
|
||||
right: 'auto',
|
||||
bottom: 'auto',
|
||||
left: 'auto',
|
||||
'margin-top': '0px',
|
||||
'margin-right': '0px',
|
||||
'margin-bottom': '0px',
|
||||
'margin-left': '0px',
|
||||
};
|
||||
|
||||
for (var property in constraints) {
|
||||
var constraint = styles.getPropertyValue(property);
|
||||
|
||||
if (constraint !== constraints[property]) {
|
||||
$media.style[property] = constraints[property];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate & set object-position
|
||||
*
|
||||
* @param {string} axis - either "x" or "y"
|
||||
* @param {node} $media - img or video element
|
||||
* @param {string} objectPosition - e.g. "50% 50%", "top left"
|
||||
*/
|
||||
var setPosition = function(axis, $media, objectPosition) {
|
||||
var position, other, start, end, side;
|
||||
objectPosition = objectPosition.split(' ');
|
||||
|
||||
if (objectPosition.length < 2) {
|
||||
objectPosition[1] = objectPosition[0];
|
||||
}
|
||||
|
||||
/* istanbul ignore else */
|
||||
if (axis === 'x') {
|
||||
position = objectPosition[0];
|
||||
other = objectPosition[1];
|
||||
start = 'left';
|
||||
end = 'right';
|
||||
side = $media.clientWidth;
|
||||
} else if (axis === 'y') {
|
||||
position = objectPosition[1];
|
||||
other = objectPosition[0];
|
||||
start = 'top';
|
||||
end = 'bottom';
|
||||
side = $media.clientHeight;
|
||||
} else {
|
||||
return; // Neither x or y axis specified
|
||||
}
|
||||
|
||||
if (position === start || other === start) {
|
||||
$media.style[start] = '0';
|
||||
return;
|
||||
}
|
||||
|
||||
if (position === end || other === end) {
|
||||
$media.style[end] = '0';
|
||||
return;
|
||||
}
|
||||
|
||||
if (position === 'center' || position === '50%') {
|
||||
$media.style[start] = '50%';
|
||||
$media.style['margin-' + start] = side / -2 + 'px';
|
||||
return;
|
||||
}
|
||||
|
||||
// Percentage values (e.g., 30% 10%)
|
||||
if (position.indexOf('%') >= 0) {
|
||||
position = parseInt(position, 10);
|
||||
|
||||
if (position < 50) {
|
||||
$media.style[start] = position + '%';
|
||||
$media.style['margin-' + start] = side * (position / -100) + 'px';
|
||||
} else {
|
||||
position = 100 - position;
|
||||
$media.style[end] = position + '%';
|
||||
$media.style['margin-' + end] = side * (position / -100) + 'px';
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
// Length-based values (e.g. 10px / 10em)
|
||||
else {
|
||||
$media.style[start] = position;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate & set object-fit
|
||||
*
|
||||
* @param {node} $media - img/video/picture element
|
||||
*/
|
||||
var objectFit = function($media) {
|
||||
// IE 10- data polyfill
|
||||
var fit = $media.dataset
|
||||
? $media.dataset.objectFit
|
||||
: $media.getAttribute('data-object-fit');
|
||||
var position = $media.dataset
|
||||
? $media.dataset.objectPosition
|
||||
: $media.getAttribute('data-object-position');
|
||||
|
||||
// Default fallbacks
|
||||
fit = fit || 'cover';
|
||||
position = position || '50% 50%';
|
||||
|
||||
// If necessary, make the parent container work with absolutely positioned elements
|
||||
var $container = $media.parentNode;
|
||||
checkParentContainer($container);
|
||||
|
||||
// Check for any pre-set CSS which could mess up image calculations
|
||||
checkMediaProperties($media);
|
||||
|
||||
// Reset any pre-set width/height CSS and handle fit positioning
|
||||
$media.style.position = 'absolute';
|
||||
$media.style.width = 'auto';
|
||||
$media.style.height = 'auto';
|
||||
|
||||
// `scale-down` chooses either `none` or `contain`, whichever is smaller
|
||||
if (fit === 'scale-down') {
|
||||
if (
|
||||
$media.clientWidth < $container.clientWidth &&
|
||||
$media.clientHeight < $container.clientHeight
|
||||
) {
|
||||
fit = 'none';
|
||||
} else {
|
||||
fit = 'contain';
|
||||
}
|
||||
}
|
||||
|
||||
// `none` (width/height auto) and `fill` (100%) and are straightforward
|
||||
if (fit === 'none') {
|
||||
setPosition('x', $media, position);
|
||||
setPosition('y', $media, position);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fit === 'fill') {
|
||||
$media.style.width = '100%';
|
||||
$media.style.height = '100%';
|
||||
setPosition('x', $media, position);
|
||||
setPosition('y', $media, position);
|
||||
return;
|
||||
}
|
||||
|
||||
// `cover` and `contain` must figure out which side needs covering, and add CSS positioning & centering
|
||||
$media.style.height = '100%';
|
||||
|
||||
if (
|
||||
(fit === 'cover' && $media.clientWidth > $container.clientWidth) ||
|
||||
(fit === 'contain' && $media.clientWidth < $container.clientWidth)
|
||||
) {
|
||||
$media.style.top = '0';
|
||||
$media.style.marginTop = '0';
|
||||
setPosition('x', $media, position);
|
||||
} else {
|
||||
$media.style.width = '100%';
|
||||
$media.style.height = 'auto';
|
||||
$media.style.left = '0';
|
||||
$media.style.marginLeft = '0';
|
||||
setPosition('y', $media, position);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize plugin
|
||||
*
|
||||
* @param {node} media - Optional specific DOM node(s) to be polyfilled
|
||||
*/
|
||||
var objectFitPolyfill = function(media) {
|
||||
if (typeof media === 'undefined' || media instanceof Event) {
|
||||
// If left blank, or a default event, all media on the page will be polyfilled.
|
||||
media = document.querySelectorAll('[data-object-fit]');
|
||||
} else if (media && media.nodeName) {
|
||||
// If it's a single node, wrap it in an array so it works.
|
||||
media = [media];
|
||||
} else if (typeof media === 'object' && media.length && media[0].nodeName) {
|
||||
// If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is.
|
||||
media = media;
|
||||
} else {
|
||||
// Otherwise, if it's invalid or an incorrect type, return false to let people know.
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0; i < media.length; i++) {
|
||||
if (!media[i].nodeName) continue;
|
||||
|
||||
var mediaType = media[i].nodeName.toLowerCase();
|
||||
|
||||
if (mediaType === 'img') {
|
||||
if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill
|
||||
|
||||
if (media[i].complete) {
|
||||
objectFit(media[i]);
|
||||
} else {
|
||||
media[i].addEventListener('load', function() {
|
||||
objectFit(this);
|
||||
});
|
||||
}
|
||||
} else if (mediaType === 'video') {
|
||||
if (media[i].readyState > 0) {
|
||||
objectFit(media[i]);
|
||||
} else {
|
||||
media[i].addEventListener('loadedmetadata', function() {
|
||||
objectFit(this);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
objectFit(media[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
// Loading hasn't finished yet
|
||||
document.addEventListener('DOMContentLoaded', objectFitPolyfill);
|
||||
} else {
|
||||
// `DOMContentLoaded` has already fired
|
||||
objectFitPolyfill();
|
||||
}
|
||||
|
||||
window.addEventListener('resize', objectFitPolyfill);
|
||||
|
||||
window.objectFitPolyfill = objectFitPolyfill;
|
||||
})();
|
1
wp-includes/js/dist/vendor/wp-polyfill-object-fit.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-object-fit.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(){"use strict";if("undefined"!=typeof window){var t=window.navigator.userAgent.match(/Edge\/(\d{2})\./),e=t?parseInt(t[1],10):null,i=!!e&&16<=e&&e<=18;if("objectFit"in document.documentElement.style==0||i){var n=function(t,e,i){var n,o,l,a,d;if((i=i.split(" ")).length<2&&(i[1]=i[0]),"x"===t)n=i[0],o=i[1],l="left",a="right",d=e.clientWidth;else{if("y"!==t)return;n=i[1],o=i[0],l="top",a="bottom",d=e.clientHeight}if(n!==l&&o!==l){if(n!==a&&o!==a)return"center"===n||"50%"===n?(e.style[l]="50%",void(e.style["margin-"+l]=d/-2+"px")):void(0<=n.indexOf("%")?(n=parseInt(n,10))<50?(e.style[l]=n+"%",e.style["margin-"+l]=d*(n/-100)+"px"):(n=100-n,e.style[a]=n+"%",e.style["margin-"+a]=d*(n/-100)+"px"):e.style[l]=n);e.style[a]="0"}else e.style[l]="0"},o=function(t){var e=t.dataset?t.dataset.objectFit:t.getAttribute("data-object-fit"),i=t.dataset?t.dataset.objectPosition:t.getAttribute("data-object-position");e=e||"cover",i=i||"50% 50%";var o=t.parentNode;return function(t){var e=window.getComputedStyle(t,null),i=e.getPropertyValue("position"),n=e.getPropertyValue("overflow"),o=e.getPropertyValue("display");i&&"static"!==i||(t.style.position="relative"),"hidden"!==n&&(t.style.overflow="hidden"),o&&"inline"!==o||(t.style.display="block"),0===t.clientHeight&&(t.style.height="100%"),-1===t.className.indexOf("object-fit-polyfill")&&(t.className=t.className+" object-fit-polyfill")}(o),function(t){var e=window.getComputedStyle(t,null),i={"max-width":"none","max-height":"none","min-width":"0px","min-height":"0px",top:"auto",right:"auto",bottom:"auto",left:"auto","margin-top":"0px","margin-right":"0px","margin-bottom":"0px","margin-left":"0px"};for(var n in i)e.getPropertyValue(n)!==i[n]&&(t.style[n]=i[n])}(t),t.style.position="absolute",t.style.width="auto",t.style.height="auto","scale-down"===e&&(e=t.clientWidth<o.clientWidth&&t.clientHeight<o.clientHeight?"none":"contain"),"none"===e?(n("x",t,i),void n("y",t,i)):"fill"===e?(t.style.width="100%",t.style.height="100%",n("x",t,i),void n("y",t,i)):(t.style.height="100%",void("cover"===e&&t.clientWidth>o.clientWidth||"contain"===e&&t.clientWidth<o.clientWidth?(t.style.top="0",t.style.marginTop="0",n("x",t,i)):(t.style.width="100%",t.style.height="auto",t.style.left="0",t.style.marginLeft="0",n("y",t,i))))},l=function(t){if(void 0===t||t instanceof Event)t=document.querySelectorAll("[data-object-fit]");else if(t&&t.nodeName)t=[t];else if("object"!=typeof t||!t.length||!t[0].nodeName)return!1;for(var e=0;e<t.length;e++)if(t[e].nodeName){var n=t[e].nodeName.toLowerCase();if("img"===n){if(i)continue;t[e].complete?o(t[e]):t[e].addEventListener("load",(function(){o(this)}))}else"video"===n?0<t[e].readyState?o(t[e]):t[e].addEventListener("loadedmetadata",(function(){o(this)})):o(t[e])}return!0};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",l):l(),window.addEventListener("resize",l),window.objectFitPolyfill=l}else window.objectFitPolyfill=function(){return!1}}}();
|
2987
wp-includes/js/dist/vendor/wp-polyfill-url.js
vendored
Normal file
2987
wp-includes/js/dist/vendor/wp-polyfill-url.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
wp-includes/js/dist/vendor/wp-polyfill-url.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill-url.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4356
wp-includes/js/dist/vendor/wp-polyfill.js
vendored
Normal file
4356
wp-includes/js/dist/vendor/wp-polyfill.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
wp-includes/js/dist/vendor/wp-polyfill.min.js
vendored
Normal file
1
wp-includes/js/dist/vendor/wp-polyfill.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user