@snap/camera-kit
Version:
Camera Kit Web
30 lines • 1.64 kB
JavaScript
import { copyDefinedProperties } from "./common/copyDefinedProperties";
import { getConfigurationOverrides } from "./configurationOverrides";
import { Injectable } from "./dependency-injection/Injectable";
const defaultConfiguration = {
lensPerformance: { cluster: 0, benchmarks: [], webglRendererInfo: "unknown" },
logger: "noop",
logLevel: "info",
shouldUseWorker: true,
apiHostname: "camera-kit-api.snapar.com",
userAgentFlavor: "release",
};
export const configurationToken = "configuration";
function isHandledAppleDevice() {
return (/iPad|iPhone|iPod/.test(navigator.platform) ||
(navigator.platform === "MacIntel" && navigator.maxTouchPoints > 2));
}
export const createCameraKitConfigurationFactory = (configuration) => {
const overrides = getConfigurationOverrides();
if (overrides) {
console.warn("Configuration overrides applied", overrides);
}
return Injectable(configurationToken, () => {
const safeConfig = Object.assign(Object.assign({}, configuration), { lensPerformance: configuration.lensPerformance instanceof Promise
?
configuration.lensPerformance.catch(() => defaultConfiguration.lensPerformance)
: configuration.lensPerformance });
return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultConfiguration), { shouldUseWorker: isHandledAppleDevice() ? false : defaultConfiguration.shouldUseWorker }), copyDefinedProperties(safeConfig)), copyDefinedProperties(overrides !== null && overrides !== void 0 ? overrides : {}));
});
};
//# sourceMappingURL=configuration.js.map