react-native-animated-glow
Version:
A performant, highly-customizable animated glow effect for React Native, powered by Skia and Reanimated.
29 lines (28 loc) • 1.19 kB
JavaScript
// src/animated-glow/SkiaWebLoader.web.ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureSkiaWebLoaded = exports.skiaWebState = void 0;
const react_native_1 = require("react-native");
const web_1 = require("@shopify/react-native-skia/lib/module/web");
const package_json_1 = require("canvaskit-wasm/package.json");
// The state starts as 'idle' on web
exports.skiaWebState = {
status: 'idle',
subscribers: new Set(),
};
let hasBeenTriggered = false;
const ensureSkiaWebLoaded = () => {
if (react_native_1.Platform.OS !== 'web' || hasBeenTriggered || exports.skiaWebState.status !== 'idle') {
return;
}
hasBeenTriggered = true;
exports.skiaWebState.status = 'loading';
(0, web_1.LoadSkiaWeb)({
locateFile: (file) => `https://cdn.jsdelivr.net/npm/canvaskit-wasm@${package_json_1.version}/bin/full/${file}`
}).then(() => {
exports.skiaWebState.status = 'ready';
exports.skiaWebState.subscribers.forEach(callback => callback());
exports.skiaWebState.subscribers.clear(); // Clean up after notifying
}).catch(console.error);
};
exports.ensureSkiaWebLoaded = ensureSkiaWebLoaded;
;