aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/polyfill.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/polyfill.ts')
-rw-r--r--packages/excalidraw/polyfill.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/excalidraw/polyfill.ts b/packages/excalidraw/polyfill.ts
new file mode 100644
index 0000000..b8b080f
--- /dev/null
+++ b/packages/excalidraw/polyfill.ts
@@ -0,0 +1,33 @@
+const polyfill = () => {
+ if (!Array.prototype.at) {
+ // Taken from https://github.com/tc39/proposal-relative-indexing-method#polyfill so that it works in tests
+ /* eslint-disable */
+ Object.defineProperty(Array.prototype, "at", {
+ value: function (n: number) {
+ // ToInteger() abstract op
+ n = Math.trunc(n) || 0;
+ // Allow negative indexing from the end
+ if (n < 0) {
+ n += this.length;
+ }
+ // OOB access is guaranteed to return undefined
+ if (n < 0 || n >= this.length) {
+ return undefined;
+ }
+ // Otherwise, this is just normal property access
+ return this[n];
+ },
+ writable: true,
+ enumerable: false,
+ configurable: true,
+ });
+ }
+
+ if (!Element.prototype.replaceChildren) {
+ Element.prototype.replaceChildren = function (...nodes) {
+ this.innerHTML = "";
+ this.append(...nodes);
+ };
+ }
+};
+export default polyfill;