From 752bbf1f32191d596d4252510bb5a21e950126a1 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Fri, 26 May 2023 08:53:44 +0900 Subject: [PATCH] [refactor] seperate polyfill --- src/main.ts | 28 ++-------------------------- src/ts/polyfill.ts | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 26 deletions(-) create mode 100644 src/ts/polyfill.ts diff --git a/src/main.ts b/src/main.ts index 25899d8d..d5c8268d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,34 +2,10 @@ import "./styles.css"; import "core-js/actual" import App from "./App.svelte"; import { loadData } from "./ts/globalApi"; -import { ReadableStream, WritableStream, TransformStream } from "web-streams-polyfill/ponyfill/es2018"; -import { Buffer as BufferPolyfill } from 'buffer' import { initHotkey } from "./ts/hotkey"; +import { polyfill } from "./ts/polyfill"; -const testDom = document.createElement('div'); -const supports = ('draggable' in testDom) || ('ondragstart' in testDom && 'ondrop' in testDom); -const isIos = navigator.userAgent ? (!!navigator.userAgent.match('iPhone OS') || !!navigator.userAgent.match('iPad')) : false -testDom.remove() - -if((!supports) || isIos){ - const dragDrop = await import("mobile-drag-drop") - const dragDropBehavior = await import("mobile-drag-drop/scroll-behaviour") - - dragDrop.polyfill({ - // use this to make use of the scroll behaviour - dragImageTranslateOverride: dragDropBehavior.scrollBehaviourDragImageTranslateOverride, - holdToDrag: 400, - forceApply: true - }); -} - -//Polyfills -declare var Buffer: typeof BufferPolyfill; -globalThis.Buffer = BufferPolyfill -//@ts-ignore -globalThis.WritableStream = globalThis.WritableStream ?? WritableStream -globalThis.ReadableStream = globalThis.ReadableStream ?? ReadableStream -globalThis.TransformStream = globalThis.TransformStream ?? TransformStream +polyfill() const app = new App({ target: document.getElementById("app"), diff --git a/src/ts/polyfill.ts b/src/ts/polyfill.ts new file mode 100644 index 00000000..66c01dcf --- /dev/null +++ b/src/ts/polyfill.ts @@ -0,0 +1,30 @@ +import { ReadableStream, WritableStream, TransformStream } from "web-streams-polyfill/ponyfill/es2018"; +import { Buffer as BufferPolyfill } from 'buffer' +import { polyfill as dragPolyfill} from "mobile-drag-drop" +import {scrollBehaviourDragImageTranslateOverride} from 'mobile-drag-drop/scroll-behaviour' + +export function polyfill() { + try { + const testDom = document.createElement('div'); + const supports = ('draggable' in testDom) || ('ondragstart' in testDom && 'ondrop' in testDom); + const isIos = navigator.userAgent ? (!!navigator.userAgent.match('iPhone OS') || !!navigator.userAgent.match('iPad')) : false + testDom.remove() + + if((!supports) || isIos){ + + dragPolyfill({ + // use this to make use of the scroll behaviour + dragImageTranslateOverride: scrollBehaviourDragImageTranslateOverride, + holdToDrag: 400, + forceApply: true + }); + } + } catch (error) { + + } + globalThis.Buffer = BufferPolyfill + //@ts-ignore + globalThis.WritableStream = globalThis.WritableStream ?? WritableStream + globalThis.ReadableStream = globalThis.ReadableStream ?? ReadableStream + globalThis.TransformStream = globalThis.TransformStream ?? TransformStream +} \ No newline at end of file