@upscopeio/react 2025.12.5 → 2025.12.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- import { CobrowsingSdkConfiguration, Upscope } from "./sdk";
2
- import { SDKEvents } from "./sdk-types";
1
+ import { CobrowsingSdkConfiguration, SDKEvents, Upscope } from "./sdk";
3
2
 
4
3
  type UpscopeContext = {
5
4
  getLookupCode: () => Promise<string | undefined>;
6
5
  isSharing: boolean;
7
- listen: (event: keyof SDKEvents, callback: (data: any) => void) => void;
6
+ listen: <T extends keyof SDKEvents>(
7
+ event: T,
8
+ callback: SDKEvents[T] extends undefined ? () => void : (...args: SDKEvents[T]) => void,
9
+ ) => void;
8
10
  reset: () => void;
9
11
  shortId: string | undefined;
10
12
  Upscope: undefined | Upscope;
package/index.js CHANGED
@@ -410,7 +410,6 @@ export function UpscopeProvider(_param) {
410
410
  configProps
411
411
  ]);
412
412
  useEffect(function() {
413
- if (!loaded) return;
414
413
  Upscope("on", "sessionStart", function() {
415
414
  setSharing(true);
416
415
  });
@@ -421,7 +420,6 @@ export function UpscopeProvider(_param) {
421
420
  setSharing(false);
422
421
  });
423
422
  }, [
424
- loaded,
425
423
  Upscope
426
424
  ]);
427
425
  var getLookupCode = useCallback(/*#__PURE__*/ _asyncToGenerator(function() {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport equal from \"fast-deep-equal\";\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { upscopeFor } from \"./sdk.js\";\nconst UpscopeContext = createContext({\n async getLookupCode() {\n return \"\";\n },\n isSharing: false,\n listen: (event, callback) => { },\n reset: () => { },\n shortId: undefined,\n Upscope: undefined,\n});\nexport function Masked({ children }) {\n const beforeRef = useRef(null);\n const afterRef = useRef(null);\n useEffect(() => {\n if (beforeRef.current && afterRef.current) {\n let { nextSibling } = beforeRef.current;\n while (nextSibling && nextSibling !== afterRef.current) {\n nextSibling.dataset.upscopeMasked = \"true\";\n nextSibling = nextSibling.nextSibling;\n }\n }\n }, [beforeRef, afterRef, children]);\n return (_jsxs(_Fragment, { children: [_jsx(\"script\", { ref: beforeRef }), children, _jsx(\"script\", { ref: afterRef })] }));\n}\nexport function NoRemoteControl({ children }) {\n const beforeRef = useRef(null);\n const afterRef = useRef(null);\n useEffect(() => {\n if (beforeRef.current && afterRef.current) {\n let { nextSibling } = beforeRef.current;\n while (nextSibling && nextSibling !== afterRef.current) {\n nextSibling.dataset.upscopeNoRemoteControl = \"true\";\n nextSibling = nextSibling.nextSibling;\n }\n }\n }, [beforeRef, afterRef, children]);\n return (_jsxs(_Fragment, { children: [_jsx(\"script\", { ref: beforeRef }), children, _jsx(\"script\", { ref: afterRef })] }));\n}\nexport function UpscopeProvider({ children, enabled, test, windowContext, ...configProps }) {\n const Upscope = useMemo(() => (...args) => {\n if (test)\n return; // Do not use Upscope SDK on test\n upscopeFor(windowContext ?? window)(...args);\n }, [test, windowContext]);\n const [loaded, setLoaded] = useState(false);\n const [sharing, setSharing] = useState(false);\n const [shortId, setShortId] = useState(undefined);\n const [currentConfiguration, setCurrentConfiguration] = useState(undefined);\n const upscopeActive = enabled && loaded;\n const [pendingConfigurationUpdate, setPendingConfigurationUpdate] = useState(null);\n enabled ??= true;\n useEffect(() => {\n if (currentConfiguration === undefined || !upscopeActive) {\n setPendingConfigurationUpdate(null);\n return;\n }\n const config = Object.entries(configProps)\n .filter(([configName, configValue]) => configName !== \"regionWhitelist\" &&\n !equal(configValue, currentConfiguration[configName]))\n .reduce((config, [configName, configValue]) => {\n config[configName] = configValue;\n return config;\n }, {});\n setPendingConfigurationUpdate(Object.keys(config).length === 0 ? null : config);\n }, [currentConfiguration, configProps, upscopeActive]);\n useEffect(() => {\n if (!currentConfiguration)\n return;\n const isEnabledFirstTime = enabled && !loaded;\n const isDisabledAfterInit = !enabled && loaded;\n if (isEnabledFirstTime) {\n Upscope(\"init\", currentConfiguration);\n setLoaded(true);\n }\n else if (isDisabledAfterInit) {\n Upscope(\"reset\", false);\n }\n }, [enabled, loaded, currentConfiguration, Upscope]);\n useEffect(() => {\n if (upscopeActive) {\n Upscope(\"getShortId\", (shortId) => {\n setShortId(shortId);\n });\n }\n else {\n setShortId(undefined);\n }\n }, [upscopeActive, Upscope]);\n useEffect(() => {\n if (!upscopeActive || !pendingConfigurationUpdate || !currentConfiguration)\n return;\n Upscope(\"updateConnection\", pendingConfigurationUpdate);\n setPendingConfigurationUpdate(null);\n const newCurrentConfiguration = { ...currentConfiguration, ...pendingConfigurationUpdate };\n setCurrentConfiguration(newCurrentConfiguration);\n }, [upscopeActive, pendingConfigurationUpdate, currentConfiguration, Upscope]);\n useEffect(() => {\n if (currentConfiguration || !enabled)\n return;\n // Initialize configurations\n setCurrentConfiguration(configProps);\n }, [enabled, currentConfiguration, configProps]);\n useEffect(() => {\n if (!loaded)\n return;\n Upscope(\"on\", \"sessionStart\", () => {\n setSharing(true);\n });\n Upscope(\"on\", \"sessionContinue\", () => {\n setSharing(true);\n });\n Upscope(\"on\", \"sessionEnd\", () => {\n setSharing(false);\n });\n }, [loaded, Upscope]);\n const getLookupCode = useCallback(async () => {\n return new Promise((resolve) => {\n if (!upscopeActive) {\n resolve(undefined);\n return;\n }\n Upscope(\"getLookupCode\", (lookupCode) => {\n resolve(lookupCode);\n });\n });\n }, [upscopeActive, Upscope]);\n const listen = useCallback((event, callback) => {\n Upscope(\"on\", event, callback);\n }, [Upscope]);\n const reset = useCallback(() => {\n Upscope(\"reset\", true);\n }, [Upscope]);\n return (_jsx(UpscopeContext.Provider, { value: {\n getLookupCode,\n isSharing: sharing,\n listen,\n reset,\n shortId,\n Upscope,\n }, children: children }));\n}\nexport function useUpscope() {\n return useContext(UpscopeContext);\n}\n"]}
1
+ {"version":3,"sources":["index.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,OAAO,IAAI,EAAE,YAAY,SAAS,EAAE,QAAQ,KAAK,QAAQ,oBAAoB;AACtF,OAAO,WAAW,kBAAkB;AACpC,SAAS,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,QAAQ,QAAQ;AACrG,SAAS,UAAU,QAAQ,WAAW;AACtC,IAAM,iBAAiB,cAAc;IAC3B,eAAN,SAAM;eAAgB,kBAAA,WAAA;;gBAClB;;oBAAO;;;QACX;;IACA,WAAW,KAAK;IAChB,QAAQ,SAAC,OAAO,UAAa,CAAE;IAC/B,OAAO,WAAM,CAAE;IACf,SAAS;IACT,SAAS;AACb;AACA,OAAO,SAAS,OAAO,KAAY,EAAE;QAAd,AAAE,WAAF,MAAE;IACrB,IAAM,YAAY,OAAO,IAAI;IAC7B,IAAM,WAAW,OAAO,IAAI;IAC5B,UAAU,WAAM;QACZ,IAAI,UAAU,OAAO,IAAI,SAAS,OAAO,EAAE;YACvC,IAAI,AAAE,cAAgB,UAAU,OAAO,CAAjC;YACN,MAAO,eAAe,gBAAgB,SAAS,OAAO,CAAE;gBACpD,YAAY,OAAO,CAAC,aAAa,GAAG;gBACpC,cAAc,YAAY,WAAW;YACzC;QACJ,CAAC;IACL,GAAG;QAAC;QAAW;QAAU;KAAS;IAClC,OAAQ,MAAM,WAAW;QAAE,UAAU;YAAC,KAAK,UAAU;gBAAE,KAAK;YAAU;YAAI;YAAU,KAAK,UAAU;gBAAE,KAAK;YAAS;SAAG;IAAC;AAC3H,CAAC;AACD,OAAO,SAAS,gBAAgB,KAAY,EAAE;QAAd,AAAE,WAAF,MAAE;IAC9B,IAAM,YAAY,OAAO,IAAI;IAC7B,IAAM,WAAW,OAAO,IAAI;IAC5B,UAAU,WAAM;QACZ,IAAI,UAAU,OAAO,IAAI,SAAS,OAAO,EAAE;YACvC,IAAI,AAAE,cAAgB,UAAU,OAAO,CAAjC;YACN,MAAO,eAAe,gBAAgB,SAAS,OAAO,CAAE;gBACpD,YAAY,OAAO,CAAC,sBAAsB,GAAG;gBAC7C,cAAc,YAAY,WAAW;YACzC;QACJ,CAAC;IACL,GAAG;QAAC;QAAW;QAAU;KAAS;IAClC,OAAQ,MAAM,WAAW;QAAE,UAAU;YAAC,KAAK,UAAU;gBAAE,KAAK;YAAU;YAAI;YAAU,KAAK,UAAU;gBAAE,KAAK;YAAS;SAAG;IAAC;AAC3H,CAAC;AACD,OAAO,SAAS,gBAAgB,QAA4D;;QAA1D,WAAF,OAAE,UAAU,UAAZ,OAAY,SAAS,OAArB,OAAqB,MAAM,gBAA3B,OAA2B,eAAkB,uCAA7C;QAAE;QAAU;QAAS;QAAM;;IACvD,IAAM,UAAU,QAAQ;eAAM,WAAa;6CAAT;gBAAA;;YAC9B,IAAI,MACA,QAAQ,iCAAiC;YAC7C,WAAW,0BAAA,2BAAA,gBAAiB,MAAM,EAAlC,aAAoC,mBAAG;QAC3C;OAAG;QAAC;QAAM;KAAc;IACxB,IAA4B,2BAAA,SAAS,KAAK,OAAnC,SAAqB,cAAb,YAAa;IAC5B,IAA8B,4BAAA,SAAS,KAAK,OAArC,UAAuB,eAAd,aAAc;IAC9B,IAA8B,4BAAA,SAAS,gBAAhC,UAAuB,eAAd,aAAc;IAC9B,IAAwD,4BAAA,SAAS,gBAA1D,uBAAiD,eAA3B,0BAA2B;IACxD,IAAM,gBAAgB,WAAW;IACjC,IAAoE,4BAAA,SAAS,IAAI,OAA1E,6BAA6D,eAAjC,gCAAiC;IACpE,oBAAA,qBAAA,UAAA,UAAY,IAAI;IAChB,UAAU,WAAM;QACZ,IAAI,yBAAyB,aAAa,CAAC,eAAe;YACtD,8BAA8B,IAAI;YAClC;QACJ,CAAC;QACD,IAAM,SAAS,OAAO,OAAO,CAAC,aACzB,MAAM,CAAC;qDAAE,0BAAY;mBAAiB,eAAe,qBACtD,CAAC,MAAM,aAAa,oBAAoB,CAAC,WAAW;WACnD,MAAM,CAAC,SAAC,eAAsC;qDAA7B,0BAAY;YAC9B,MAAM,CAAC,WAAW,GAAG;YACrB,OAAO;QACX,GAAG,CAAC;QACJ,8BAA8B,OAAO,IAAI,CAAC,QAAQ,MAAM,KAAK,IAAI,IAAI,GAAG,MAAM;IAClF,GAAG;QAAC;QAAsB;QAAa;KAAc;IACrD,UAAU,WAAM;QACZ,IAAI,CAAC,sBACD;QACJ,IAAM,qBAAqB,WAAW,CAAC;QACvC,IAAM,sBAAsB,CAAC,WAAW;QACxC,IAAI,oBAAoB;YACpB,QAAQ,QAAQ;YAChB,UAAU,IAAI;QAClB,OACK,IAAI,qBAAqB;YAC1B,QAAQ,SAAS,KAAK;QAC1B,CAAC;IACL,GAAG;QAAC;QAAS;QAAQ;QAAsB;KAAQ;IACnD,UAAU,WAAM;QACZ,IAAI,eAAe;YACf,QAAQ,cAAc,SAAC,SAAY;gBAC/B,WAAW;YACf;QACJ,OACK;YACD,WAAW;QACf,CAAC;IACL,GAAG;QAAC;QAAe;KAAQ;IAC3B,UAAU,WAAM;QACZ,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,sBAClD;QACJ,QAAQ,oBAAoB;QAC5B,8BAA8B,IAAI;QAClC,IAAM,0BAA0B,kBAAK,sBAAyB;QAC9D,wBAAwB;IAC5B,GAAG;QAAC;QAAe;QAA4B;QAAsB;KAAQ;IAC7E,UAAU,WAAM;QACZ,IAAI,wBAAwB,CAAC,SACzB;QACJ,4BAA4B;QAC5B,wBAAwB;IAC5B,GAAG;QAAC;QAAS;QAAsB;KAAY;IAC/C,UAAU,WAAM;QACZ,QAAQ,MAAM,gBAAgB,WAAM;YAChC,WAAW,IAAI;QACnB;QACA,QAAQ,MAAM,mBAAmB,WAAM;YACnC,WAAW,IAAI;QACnB;QACA,QAAQ,MAAM,cAAc,WAAM;YAC9B,WAAW,KAAK;QACpB;IACJ,GAAG;QAAC;KAAQ;IACZ,IAAM,gBAAgB,0BAAY,kBAAA,WAAY;;YAC1C;;gBAAO,IAAI,QAAQ,SAAC,SAAY;oBAC5B,IAAI,CAAC,eAAe;wBAChB,QAAQ;wBACR;oBACJ,CAAC;oBACD,QAAQ,iBAAiB,SAAC,YAAe;wBACrC,QAAQ;oBACZ;gBACJ;;;IACJ,IAAG;QAAC;QAAe;KAAQ;IAC3B,IAAM,SAAS,YAAY,SAAC,OAAO,UAAa;QAC5C,QAAQ,MAAM,OAAO;IACzB,GAAG;QAAC;KAAQ;IACZ,IAAM,QAAQ,YAAY,WAAM;QAC5B,QAAQ,SAAS,IAAI;IACzB,GAAG;QAAC;KAAQ;IACZ,OAAQ,KAAK,eAAe,QAAQ,EAAE;QAAE,OAAO;YACvC,eAAA;YACA,WAAW;YACX,QAAA;YACA,OAAA;YACA,SAAA;YACA,SAAA;QACJ;QAAG,UAAU;IAAS;AAC9B,CAAC;AACD,OAAO,SAAS,aAAa;IACzB,OAAO,WAAW;AACtB,CAAC","file":"index.js","sourcesContent":["import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport equal from \"fast-deep-equal\";\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { upscopeFor } from \"./sdk.js\";\nconst UpscopeContext = createContext({\n async getLookupCode() {\n return \"\";\n },\n isSharing: false,\n listen: (event, callback) => { },\n reset: () => { },\n shortId: undefined,\n Upscope: undefined,\n});\nexport function Masked({ children }) {\n const beforeRef = useRef(null);\n const afterRef = useRef(null);\n useEffect(() => {\n if (beforeRef.current && afterRef.current) {\n let { nextSibling } = beforeRef.current;\n while (nextSibling && nextSibling !== afterRef.current) {\n nextSibling.dataset.upscopeMasked = \"true\";\n nextSibling = nextSibling.nextSibling;\n }\n }\n }, [beforeRef, afterRef, children]);\n return (_jsxs(_Fragment, { children: [_jsx(\"script\", { ref: beforeRef }), children, _jsx(\"script\", { ref: afterRef })] }));\n}\nexport function NoRemoteControl({ children }) {\n const beforeRef = useRef(null);\n const afterRef = useRef(null);\n useEffect(() => {\n if (beforeRef.current && afterRef.current) {\n let { nextSibling } = beforeRef.current;\n while (nextSibling && nextSibling !== afterRef.current) {\n nextSibling.dataset.upscopeNoRemoteControl = \"true\";\n nextSibling = nextSibling.nextSibling;\n }\n }\n }, [beforeRef, afterRef, children]);\n return (_jsxs(_Fragment, { children: [_jsx(\"script\", { ref: beforeRef }), children, _jsx(\"script\", { ref: afterRef })] }));\n}\nexport function UpscopeProvider({ children, enabled, test, windowContext, ...configProps }) {\n const Upscope = useMemo(() => (...args) => {\n if (test)\n return; // Do not use Upscope SDK on test\n upscopeFor(windowContext ?? window)(...args);\n }, [test, windowContext]);\n const [loaded, setLoaded] = useState(false);\n const [sharing, setSharing] = useState(false);\n const [shortId, setShortId] = useState(undefined);\n const [currentConfiguration, setCurrentConfiguration] = useState(undefined);\n const upscopeActive = enabled && loaded;\n const [pendingConfigurationUpdate, setPendingConfigurationUpdate] = useState(null);\n enabled ??= true;\n useEffect(() => {\n if (currentConfiguration === undefined || !upscopeActive) {\n setPendingConfigurationUpdate(null);\n return;\n }\n const config = Object.entries(configProps)\n .filter(([configName, configValue]) => configName !== \"regionWhitelist\" &&\n !equal(configValue, currentConfiguration[configName]))\n .reduce((config, [configName, configValue]) => {\n config[configName] = configValue;\n return config;\n }, {});\n setPendingConfigurationUpdate(Object.keys(config).length === 0 ? null : config);\n }, [currentConfiguration, configProps, upscopeActive]);\n useEffect(() => {\n if (!currentConfiguration)\n return;\n const isEnabledFirstTime = enabled && !loaded;\n const isDisabledAfterInit = !enabled && loaded;\n if (isEnabledFirstTime) {\n Upscope(\"init\", currentConfiguration);\n setLoaded(true);\n }\n else if (isDisabledAfterInit) {\n Upscope(\"reset\", false);\n }\n }, [enabled, loaded, currentConfiguration, Upscope]);\n useEffect(() => {\n if (upscopeActive) {\n Upscope(\"getShortId\", (shortId) => {\n setShortId(shortId);\n });\n }\n else {\n setShortId(undefined);\n }\n }, [upscopeActive, Upscope]);\n useEffect(() => {\n if (!upscopeActive || !pendingConfigurationUpdate || !currentConfiguration)\n return;\n Upscope(\"updateConnection\", pendingConfigurationUpdate);\n setPendingConfigurationUpdate(null);\n const newCurrentConfiguration = { ...currentConfiguration, ...pendingConfigurationUpdate };\n setCurrentConfiguration(newCurrentConfiguration);\n }, [upscopeActive, pendingConfigurationUpdate, currentConfiguration, Upscope]);\n useEffect(() => {\n if (currentConfiguration || !enabled)\n return;\n // Initialize configurations\n setCurrentConfiguration(configProps);\n }, [enabled, currentConfiguration, configProps]);\n useEffect(() => {\n Upscope(\"on\", \"sessionStart\", () => {\n setSharing(true);\n });\n Upscope(\"on\", \"sessionContinue\", () => {\n setSharing(true);\n });\n Upscope(\"on\", \"sessionEnd\", () => {\n setSharing(false);\n });\n }, [Upscope]);\n const getLookupCode = useCallback(async () => {\n return new Promise((resolve) => {\n if (!upscopeActive) {\n resolve(undefined);\n return;\n }\n Upscope(\"getLookupCode\", (lookupCode) => {\n resolve(lookupCode);\n });\n });\n }, [upscopeActive, Upscope]);\n const listen = useCallback((event, callback) => {\n Upscope(\"on\", event, callback);\n }, [Upscope]);\n const reset = useCallback(() => {\n Upscope(\"reset\", true);\n }, [Upscope]);\n return (_jsx(UpscopeContext.Provider, { value: {\n getLookupCode,\n isSharing: sharing,\n listen,\n reset,\n shortId,\n Upscope,\n }, children: children }));\n}\nexport function useUpscope() {\n return useContext(UpscopeContext);\n}\n"]}
package/package.json CHANGED
@@ -9,5 +9,5 @@
9
9
  "react": ">=16.2.0",
10
10
  "react-dom": ">=16.2.0"
11
11
  },
12
- "version": "2025.12.5"
12
+ "version": "2025.12.7"
13
13
  }
package/sdk.js CHANGED
@@ -24,6 +24,7 @@ function _unsupportedIterableToArray(o, minLen) {
24
24
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
25
25
  }
26
26
  var loadedWindows = new WeakSet();
27
+ var environment = window.__upscope__sdk__load__environment;
27
28
  function loadSDK(w, apiKey) {
28
29
  if (typeof w.Upscope !== "undefined") {
29
30
  loadedWindows.add(w);
@@ -41,7 +42,12 @@ function loadSDK(w, apiKey) {
41
42
  var s = document.createElement("script");
42
43
  s.type = "text/javascript";
43
44
  s.async = true;
44
- s.src = "https://code.upscope.io/".concat(apiKey, ".js");
45
+ var _;
46
+ s.src = (_ = ({
47
+ development: "http://code.upscope.local/".concat(apiKey, ".js"),
48
+ production: "https://code.upscope.io/".concat(apiKey, ".js"),
49
+ staging: "https://code.upscope.xyz/".concat(apiKey, ".js")
50
+ })[environment !== null && environment !== void 0 ? environment : "production"]) !== null && _ !== void 0 ? _ : "https://code.upscope.io/".concat(apiKey, ".js");
45
51
  document.head.appendChild(s);
46
52
  loadedWindows.add(w);
47
53
  }
@@ -55,8 +61,8 @@ var ScopedUpscope = function ScopedUpscope(w) {
55
61
  var config = instruction[1];
56
62
  if (!(config === null || config === void 0 ? void 0 : config.apiKey)) throw new Error("API key not specified");
57
63
  loadSDK(w, config.apiKey);
58
- } else {
59
- throw new Error("Upscope is not loaded");
64
+ } else if (instruction[0] !== "on") {
65
+ throw new Error('Upscope is not loaded yet. Please call "init" as your first command.');
60
66
  }
61
67
  }
62
68
  (_w = w).Upscope.apply(_w, _toConsumableArray(instruction));
package/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["sdk.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,gBAAgB,IAAI;AAC1B,SAAS,QAAQ,CAAC,EAAE,MAAM,EAAE;IACxB,IAAI,OAAO,EAAE,OAAO,KAAK,aAAa;QAClC,cAAc,GAAG,CAAC;QAClB;IACJ,CAAC;IACD,IAAM,IAAI,SAAJ,KAAuB;QAAT,IAAA,IAAA,OAAA,UAAA,QAAA,AAAG,OAAH,UAAA,OAAA,OAAA,GAAA,OAAA,MAAA,OAAA;YAAG,KAAH,QAAA,SAAA,CAAA,KAAO;QAAD;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC;IACb;IACA,EAAE,CAAC,GAAG,EAAE;IACR,kDAAkD;IAClD,EAAE,OAAO,GAAG;IACZ,IAAM,IAAI,SAAS,aAAa,CAAC;IACjC,EAAE,IAAI,GAAG;IACT,EAAE,KAAK,GAAG,IAAI;IACd,EAAE,GAAG,GAAG,AAAC,2BAAiC,OAAP,QAAO;IAC1C,SAAS,IAAI,CAAC,WAAW,CAAC;IAC1B,cAAc,GAAG,CAAC;AACtB;AACA,IAAM,gBAAgB,SAAhB,cAA0B,CAAC,EAAkB;IAAhB,IAAA,IAAA,OAAA,UAAA,QAAA,AAAG,cAAH,UAAA,OAAA,IAAA,OAAA,KAAc,GAAd,OAAA,GAAA,OAAA,MAAA,OAAA;QAAG,YAAH,OAAA,KAAA,SAAA,CAAA,KAAc;IAAD;QAY5C;IAXA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI;QACvB,IAAI,WAAW,CAAC,EAAE,KAAK,QAAQ;YAC3B,IAAM,SAAS,WAAW,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAA,mBAAA,oBAAA,KAAA,IAAA,OAAQ,MAAK,AAAC,GACf,MAAM,IAAI,MAAM,yBAAyB;YAC7C,QAAQ,GAAG,OAAO,MAAM;QAC5B,OACK;YACD,MAAM,IAAI,MAAM,yBAAyB;QAC7C,CAAC;IACL,CAAC;IACD,CAAA,KAAA,GAAE,OAAO,CAAT,MAAA,IAAU,mBAAG;AACjB;AACA,OAAO,IAAM,aAAa,SAAb,WAAuB,CAAC,EAAE;IACnC,OAAO,WAAoB;yCAAhB;YAAA;;QACP,cAAA,MAAA,KAAA,GAAA;YAAc;SAAkB,CAAhC,OAAiB,mBAAG;IACxB;AACJ,EAAE;AACF,IAAM,WAAW,WAAW;AAC5B,eAAe,SAAS","file":"sdk.js","sourcesContent":["const loadedWindows = new WeakSet();\nfunction loadSDK(w, apiKey) {\n if (typeof w.Upscope !== \"undefined\") {\n loadedWindows.add(w);\n return;\n }\n const i = function (...args) {\n i.q.push(args);\n };\n i.q = [];\n // The real Upscope implementation is loaded below\n w.Upscope = i;\n const s = document.createElement(\"script\");\n s.type = \"text/javascript\";\n s.async = true;\n s.src = `https://code.upscope.io/${apiKey}.js`;\n document.head.appendChild(s);\n loadedWindows.add(w);\n}\nconst ScopedUpscope = function (w, ...instruction) {\n if (!loadedWindows.has(w)) {\n if (instruction[0] === \"init\") {\n const config = instruction[1];\n if (!config?.apiKey)\n throw new Error(\"API key not specified\");\n loadSDK(w, config.apiKey);\n }\n else {\n throw new Error(\"Upscope is not loaded\");\n }\n }\n w.Upscope(...instruction);\n};\nexport const upscopeFor = function (w) {\n return (...instruction) => {\n ScopedUpscope(w, ...instruction);\n };\n};\nconst _Upscope = upscopeFor(window);\nexport default _Upscope;\n"]}
1
+ {"version":3,"sources":["sdk.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,gBAAgB,IAAI;AAC1B,IAAM,cAAc,OAAO,iCAAiC;AAC5D,SAAS,QAAQ,CAAC,EAAE,MAAM,EAAE;IACxB,IAAI,OAAO,EAAE,OAAO,KAAK,aAAa;QAClC,cAAc,GAAG,CAAC;QAClB;IACJ,CAAC;IACD,IAAM,IAAI,SAAJ,KAAuB;QAAT,IAAA,IAAA,OAAA,UAAA,QAAA,AAAG,OAAH,UAAA,OAAA,OAAA,GAAA,OAAA,MAAA,OAAA;YAAG,KAAH,QAAA,SAAA,CAAA,KAAO;QAAD;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC;IACb;IACA,EAAE,CAAC,GAAG,EAAE;IACR,kDAAkD;IAClD,EAAE,OAAO,GAAG;IACZ,IAAM,IAAI,SAAS,aAAa,CAAC;IACjC,EAAE,IAAI,GAAG;IACT,EAAE,KAAK,GAAG,IAAI;QAEV;IADJ,EAAE,GAAG,GACD,CAAA,IAAA,CAAA;QACI,aAAa,AAAC,6BAAmC,OAAP,QAAO;QACjD,YAAY,AAAC,2BAAiC,OAAP,QAAO;QAC9C,SAAS,AAAC,4BAAkC,OAAP,QAAO;IAChD,CAAA,CAAC,CAAC,wBAAA,yBAAA,cAAe,YAAY,CAAC,cAJ9B,eAAA,IAIkC,AAAC,2BAAiC,OAAP,QAAO,MAAI;IAC5E,SAAS,IAAI,CAAC,WAAW,CAAC;IAC1B,cAAc,GAAG,CAAC;AACtB;AACA,IAAM,gBAAgB,SAAhB,cAA0B,CAAC,EAAkB;IAAhB,IAAA,IAAA,OAAA,UAAA,QAAA,AAAG,cAAH,UAAA,OAAA,IAAA,OAAA,KAAc,GAAd,OAAA,GAAA,OAAA,MAAA,OAAA;QAAG,YAAH,OAAA,KAAA,SAAA,CAAA,KAAc;IAAD;QAY5C;IAXA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI;QACvB,IAAI,WAAW,CAAC,EAAE,KAAK,QAAQ;YAC3B,IAAM,SAAS,WAAW,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAA,mBAAA,oBAAA,KAAA,IAAA,OAAQ,MAAK,AAAC,GACf,MAAM,IAAI,MAAM,yBAAyB;YAC7C,QAAQ,GAAG,OAAO,MAAM;QAC5B,OACK,IAAI,WAAW,CAAC,EAAE,KAAK,MAAM;YAC9B,MAAM,IAAI,MAAM,wEAAwE;QAC5F,CAAC;IACL,CAAC;IACD,CAAA,KAAA,GAAE,OAAO,CAAT,MAAA,IAAU,mBAAG;AACjB;AACA,OAAO,IAAM,aAAa,SAAb,WAAuB,CAAC,EAAE;IACnC,OAAO,WAAoB;yCAAhB;YAAA;;QACP,cAAA,MAAA,KAAA,GAAA;YAAc;SAAkB,CAAhC,OAAiB,mBAAG;IACxB;AACJ,EAAE;AACF,IAAM,WAAW,WAAW;AAC5B,eAAe,SAAS","file":"sdk.js","sourcesContent":["const loadedWindows = new WeakSet();\nconst environment = window.__upscope__sdk__load__environment;\nfunction loadSDK(w, apiKey) {\n if (typeof w.Upscope !== \"undefined\") {\n loadedWindows.add(w);\n return;\n }\n const i = function (...args) {\n i.q.push(args);\n };\n i.q = [];\n // The real Upscope implementation is loaded below\n w.Upscope = i;\n const s = document.createElement(\"script\");\n s.type = \"text/javascript\";\n s.async = true;\n s.src =\n {\n development: `http://code.upscope.local/${apiKey}.js`,\n production: `https://code.upscope.io/${apiKey}.js`,\n staging: `https://code.upscope.xyz/${apiKey}.js`,\n }[environment ?? \"production\"] ?? `https://code.upscope.io/${apiKey}.js`;\n document.head.appendChild(s);\n loadedWindows.add(w);\n}\nconst ScopedUpscope = function (w, ...instruction) {\n if (!loadedWindows.has(w)) {\n if (instruction[0] === \"init\") {\n const config = instruction[1];\n if (!config?.apiKey)\n throw new Error(\"API key not specified\");\n loadSDK(w, config.apiKey);\n }\n else if (instruction[0] !== \"on\") {\n throw new Error('Upscope is not loaded yet. Please call \"init\" as your first command.');\n }\n }\n w.Upscope(...instruction);\n};\nexport const upscopeFor = function (w) {\n return (...instruction) => {\n ScopedUpscope(w, ...instruction);\n };\n};\nconst _Upscope = upscopeFor(window);\nexport default _Upscope;\n"]}