UNPKG

@botonic/react

Version:

Build Chatbots using React

85 lines 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveImage = exports.staticAsset = exports.isProd = exports.isDev = void 0; exports.isURL = isURL; exports.normalize = normalize; exports.isInWebviewApp = isInWebviewApp; exports.isDev = process.env.NODE_ENV === 'development'; exports.isProd = process.env.NODE_ENV === 'production'; const staticAsset = path => { try { if (isURL(path)) { return path; // Webpack 5 or Rspack >= fully resolves absolute path to assets } const scriptBaseURL = document .querySelector('script[src*="webchat.botonic.js"]') .getAttribute('src'); const scriptName = scriptBaseURL.split('/').pop(); const basePath = scriptBaseURL.replace(`/${scriptName}`, '/'); const resolvedStaticAssetPath = basePath + path; return resolvedStaticAssetPath; } catch (_e) { console.error(`Could not resolve path: '${path}'`); return normalize(path); } }; exports.staticAsset = staticAsset; const resolveImage = src => { if (isURL(src)) { return src; } return (0, exports.staticAsset)(src); }; exports.resolveImage = resolveImage; function isURL(urlPath) { // @stephenhay (38 chars) from: https://mathiasbynens.be/demo/url-regex const pattern = new RegExp(/^(blob:)?(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/); return !!pattern.test(urlPath); } function normalize(path) { const isAbsolute = path.charAt(0) === '/'; const trailingSlash = path && path[path.length - 1] === '/'; // Normalize the path path = normalizeArray(path.split('/'), !isAbsolute).join('/'); if (!path && !isAbsolute) { path = '.'; } if (path && trailingSlash) { path += '/'; } return (isAbsolute ? '/' : '') + path; } function normalizeArray(parts, allowAboveRoot) { const res = []; for (let i = 0; i < parts.length; i++) { const p = parts[i]; if (!p || p === '.') { continue; } if (p === '..') { if (res.length && res[res.length - 1] !== '..') { res.pop(); } else if (allowAboveRoot) { res.push('..'); } } else { res.push(p); } } return res; } function isInWebviewApp() { const userAgent = window.navigator.userAgent || ''; const standalone = window.navigator.standalone; const isIOS = /iPad|iPhone|iPod/.test(userAgent); const isAndroid = /Android/.test(userAgent); // Detects iOS WebView const isIOSWebView = isIOS && !userAgent.includes('Safari') && !standalone; // Detects Android WebView const isAndroidWebView = isAndroid && userAgent.includes('wv'); return isIOSWebView || isAndroidWebView; } //# sourceMappingURL=environment.js.map