@beamimpact/web-sdk 1.57.5 → 1.58.1
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/dist/chunks/{_share-dialog-dependencies-DsJ2sKCC.esm.js → _share-dialog-dependencies-DPid-O65.esm.js} +2 -2
- package/dist/chunks/{_share-dialog-dependencies-DsJ2sKCC.esm.js.map → _share-dialog-dependencies-DPid-O65.esm.js.map} +1 -1
- package/dist/chunks/{cart-DKQHSz5X.esm.d.ts → cart-Cm16_NVB.esm.d.ts} +3 -4
- package/dist/chunks/{css-card-grid-CiqEjkwR.esm.js → css-card-grid-tjA36yWj.esm.js} +2 -2
- package/dist/chunks/{css-card-grid-CiqEjkwR.esm.js.map → css-card-grid-tjA36yWj.esm.js.map} +1 -1
- package/dist/chunks/{handlebars-B_i-to-h.esm.js → handlebars-3tRO54kz.esm.js} +7 -7
- package/dist/chunks/{handlebars-B_i-to-h.esm.js.map → handlebars-3tRO54kz.esm.js.map} +1 -1
- package/dist/chunks/{index-DGOC8m2r.esm.d.ts → index-BG63SUjk.esm.d.ts} +1 -1
- package/dist/chunks/index-BiOlmhqL.esm.js +32 -0
- package/dist/chunks/index-BiOlmhqL.esm.js.map +1 -0
- package/dist/chunks/{index-Bi9LFICg.esm.d.ts → index-Bn65er6F.esm.d.ts} +1 -1
- package/dist/chunks/index-BygeMtqf.esm.js +2 -0
- package/dist/chunks/{index-BaAhcyM6.esm.js.map → index-BygeMtqf.esm.js.map} +1 -1
- package/dist/chunks/{index-BebFL9KU.esm.js → index-C8pScO8d.esm.js} +4 -4
- package/dist/chunks/index-C8pScO8d.esm.js.map +1 -0
- package/dist/chunks/{index-h_-rDiMR.esm.d.ts → index-CSQv0_2I.esm.d.ts} +1 -1
- package/dist/chunks/index-CsNyA6Px.esm.js +2 -0
- package/dist/chunks/index-CsNyA6Px.esm.js.map +1 -0
- package/dist/chunks/index-DnFFgYbT.esm.js +2 -0
- package/dist/chunks/index-DnFFgYbT.esm.js.map +1 -0
- package/dist/chunks/index-U1QpwjdF.esm.js +32 -0
- package/dist/chunks/index-U1QpwjdF.esm.js.map +1 -0
- package/dist/chunks/{index-DQ89VjpD.esm.d.ts → index-_M2mg4n1.esm.d.ts} +1 -1
- package/dist/chunks/{index-B-QZylCa.esm.js → index-lSPlMuMz.esm.js} +4 -4
- package/dist/chunks/index-lSPlMuMz.esm.js.map +1 -0
- package/dist/chunks/{index-Beh5bQDw.esm.js → index-tkscjKkq.esm.js} +7 -7
- package/dist/chunks/{index-Beh5bQDw.esm.js.map → index-tkscjKkq.esm.js.map} +1 -1
- package/dist/chunks/{promo-pill-label-BWPhroK6.esm.js → promo-pill-label-DYR3PZH7.esm.js} +2 -2
- package/dist/chunks/{promo-pill-label-BWPhroK6.esm.js.map → promo-pill-label-DYR3PZH7.esm.js.map} +1 -1
- package/dist/chunks/{share-button-C-QLknal.esm.js → share-button-CqrSfHAr.esm.js} +2 -2
- package/dist/chunks/{share-button-C-QLknal.esm.js.map → share-button-CqrSfHAr.esm.js.map} +1 -1
- package/dist/chunks/{share-button-CIP03E7T.esm.js → share-button-DP2wLhmP.esm.js} +2 -2
- package/dist/chunks/{share-button-CIP03E7T.esm.js.map → share-button-DP2wLhmP.esm.js.map} +1 -1
- package/dist/chunks/statsig-DlszSNOf.esm.js +2 -0
- package/dist/chunks/statsig-DlszSNOf.esm.js.map +1 -0
- package/dist/chunks/{update-cart-B5Tr9N3V.esm.d.ts → update-cart-uoS0BDZq.esm.d.ts} +1 -1
- package/dist/chunks/{utils-BPcZ5h8J.esm.d.ts → utils-DfsVjUY-.esm.d.ts} +1 -0
- package/dist/chunks/{utils-C5hmbxa4.esm.js → utils-ly9wMwUO.esm.js} +2 -2
- package/dist/chunks/utils-ly9wMwUO.esm.js.map +1 -0
- package/dist/components/beam-partner-logos.d.ts +1 -1
- package/dist/components/community-impact.d.ts +1 -1
- package/dist/components/community-impact.esm.js +1 -1
- package/dist/components/community-impact.js +1 -1
- package/dist/components/cumulative-impact.d.ts +1 -1
- package/dist/components/cumulative-impact.esm.js +1 -1
- package/dist/components/cumulative-impact.js +1 -1
- package/dist/components/impact-overview.d.ts +1 -1
- package/dist/components/impact-overview.esm.js +1 -1
- package/dist/components/impact-overview.js +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/post-purchase.d.ts +1 -1
- package/dist/components/post-purchase.esm.js +1 -1
- package/dist/components/post-purchase.js +1 -1
- package/dist/components/product-details-page.d.ts +1 -1
- package/dist/components/product-details-page.esm.js +3 -3
- package/dist/components/product-details-page.js +3 -3
- package/dist/components/redeem-transaction.d.ts +1 -1
- package/dist/components/redeem-transaction.esm.js +1 -1
- package/dist/components/redeem-transaction.js +1 -1
- package/dist/components/select-nonprofit.d.ts +1 -1
- package/dist/components/select-nonprofit.esm.js +25 -27
- package/dist/components/select-nonprofit.esm.js.map +1 -1
- package/dist/components/select-nonprofit.js +25 -27
- package/dist/components/select-nonprofit.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.d.ts +1 -1
- package/dist/components/select-subscription-nonprofit.esm.js +2 -2
- package/dist/components/select-subscription-nonprofit.esm.js.map +1 -1
- package/dist/components/select-subscription-nonprofit.js +2 -2
- package/dist/components/select-subscription-nonprofit.js.map +1 -1
- package/dist/components/shopify.d.ts +4 -4
- package/dist/components/shopify.esm.js +1 -1
- package/dist/components/shopify.esm.js.map +1 -1
- package/dist/components/shopify.js +1 -1
- package/dist/components/shopify.js.map +1 -1
- package/dist/components/social-share.d.ts +1 -1
- package/dist/components/social-share.esm.js +1 -1
- package/dist/components/social-share.js +1 -1
- package/dist/components/subscriber-select-nonprofit.d.ts +1 -1
- package/dist/components/subscriber-select-nonprofit.esm.js +4 -4
- package/dist/components/subscriber-select-nonprofit.esm.js.map +1 -1
- package/dist/components/subscriber-select-nonprofit.js +4 -4
- package/dist/components/subscriber-select-nonprofit.js.map +1 -1
- package/dist/components/subscription-impact.d.ts +1 -1
- package/dist/components/subscription-impact.esm.js +1 -1
- package/dist/components/subscription-impact.js +1 -1
- package/dist/components/subscription-management.d.ts +1 -1
- package/dist/components/subscription-management.esm.js +1 -1
- package/dist/components/subscription-management.esm.js.map +1 -1
- package/dist/components/subscription-management.js +1 -1
- package/dist/components/subscription-management.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/beam.d.ts +1 -1
- package/dist/integrations/beam.esm.js +1 -1
- package/dist/integrations/beam.js +1 -1
- package/dist/integrations/cart.d.ts +2 -2
- package/dist/integrations/cart.esm.js +1 -1
- package/dist/integrations/cart.js +1 -1
- package/dist/integrations/logs.d.ts +2 -2
- package/dist/integrations/logs.esm.js +1 -1
- package/dist/integrations/logs.js +1 -1
- package/dist/integrations/promoManager.d.ts +1 -1
- package/dist/integrations/promoManager.esm.js +1 -1
- package/dist/integrations/promoManager.js +1 -1
- package/dist/integrations/session.esm.js +1 -1
- package/dist/integrations/session.js +1 -1
- package/dist/integrations/shopify-order.d.ts +1 -1
- package/dist/integrations/shopify-order.esm.js +1 -1
- package/dist/integrations/shopify-order.js +1 -1
- package/dist/integrations/shopify.d.ts +3 -3
- package/dist/integrations/shopify.esm.js +1 -1
- package/dist/integrations/shopify.js +1 -1
- package/dist/integrations/statsig.d.ts +8 -5
- package/dist/integrations/statsig.esm.js +14 -14
- package/dist/integrations/statsig.esm.js.map +1 -1
- package/dist/integrations/statsig.js +14 -14
- package/dist/integrations/statsig.js.map +1 -1
- package/dist/integrations/utils.d.ts +1 -1
- package/dist/integrations/utils.esm.js +1 -1
- package/dist/integrations/utils.js +1 -1
- package/dist/react/beam-partner-logos.d.ts +1 -1
- package/dist/react/community-impact.d.ts +1 -1
- package/dist/react/community-impact.esm.js +1 -1
- package/dist/react/community-impact.js +1 -1
- package/dist/react/cumulative-impact.d.ts +1 -1
- package/dist/react/cumulative-impact.esm.js +1 -1
- package/dist/react/cumulative-impact.js +1 -1
- package/dist/react/impact-overview.d.ts +1 -1
- package/dist/react/impact-overview.esm.js +1 -1
- package/dist/react/impact-overview.js +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.esm.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/post-purchase.d.ts +1 -1
- package/dist/react/post-purchase.esm.js +1 -1
- package/dist/react/post-purchase.js +1 -1
- package/dist/react/product-details-page.d.ts +1 -1
- package/dist/react/product-details-page.esm.js +1 -1
- package/dist/react/product-details-page.js +1 -1
- package/dist/react/redeem-transaction.d.ts +1 -1
- package/dist/react/redeem-transaction.esm.js +1 -1
- package/dist/react/redeem-transaction.js +1 -1
- package/dist/react/select-nonprofit.d.ts +1 -1
- package/dist/react/select-nonprofit.esm.js +1 -1
- package/dist/react/select-nonprofit.js +1 -1
- package/dist/react/select-subscription-nonprofit.d.ts +1 -1
- package/dist/react/select-subscription-nonprofit.esm.js +1 -1
- package/dist/react/select-subscription-nonprofit.js +1 -1
- package/dist/react/shopify.esm.js +1 -1
- package/dist/react/shopify.esm.js.map +1 -1
- package/dist/react/shopify.js +1 -1
- package/dist/react/shopify.js.map +1 -1
- package/dist/react/social-share.d.ts +1 -1
- package/dist/react/social-share.esm.js +1 -1
- package/dist/react/social-share.js +1 -1
- package/dist/react/subscriber-select-nonprofit.d.ts +1 -1
- package/dist/react/subscriber-select-nonprofit.esm.js +1 -1
- package/dist/react/subscriber-select-nonprofit.js +1 -1
- package/dist/react/subscription-impact.d.ts +1 -1
- package/dist/react/subscription-impact.esm.js +1 -1
- package/dist/react/subscription-impact.js +1 -1
- package/dist/react/subscription-management.d.ts +1 -1
- package/dist/react/subscription-management.esm.js +1 -1
- package/dist/react/subscription-management.js +1 -1
- package/dist/utils/beam-errors.d.ts +1 -1
- package/dist/utils/beam-errors.esm.js +1 -1
- package/dist/utils/beam-errors.js +1 -1
- package/dist/utils/cart.d.ts +1 -1
- package/dist/utils/cart.esm.js +1 -1
- package/dist/utils/cart.js +1 -1
- package/dist/utils/clear-beam-storage.d.ts +1 -1
- package/dist/utils/clear-beam-storage.esm.js +1 -1
- package/dist/utils/clear-beam-storage.js +1 -1
- package/dist/utils/cookies.d.ts +1 -1
- package/dist/utils/cookies.esm.js +1 -1
- package/dist/utils/cookies.js +1 -1
- package/dist/utils/events.d.ts +1 -1
- package/dist/utils/events.esm.js +1 -1
- package/dist/utils/events.js +1 -1
- package/dist/utils/local-storage.d.ts +1 -1
- package/dist/utils/local-storage.esm.js +1 -1
- package/dist/utils/local-storage.js +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.esm.js +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/makeApiKeyHeader.d.ts +1 -1
- package/dist/utils/makeApiKeyHeader.esm.js +1 -1
- package/dist/utils/makeApiKeyHeader.js +1 -1
- package/dist/utils/memoize-last.d.ts +1 -1
- package/dist/utils/memoize-last.esm.js +1 -1
- package/dist/utils/memoize-last.js +1 -1
- package/dist/utils/network-listeners.d.ts +1 -1
- package/dist/utils/network-listeners.esm.js +1 -1
- package/dist/utils/network-listeners.js +1 -1
- package/dist/utils/promoManager.d.ts +1 -1
- package/dist/utils/promoManager.esm.js +1 -1
- package/dist/utils/promoManager.js +1 -1
- package/dist/utils/remote-session.d.ts +1 -1
- package/dist/utils/remote-session.esm.js +1 -1
- package/dist/utils/remote-session.js +1 -1
- package/dist/utils/wait-for-element.d.ts +1 -1
- package/dist/utils/wait-for-element.esm.js +1 -1
- package/dist/utils/wait-for-element.js +1 -1
- package/package.json +2 -1
- package/dist/chunks/index-B-QZylCa.esm.js.map +0 -1
- package/dist/chunks/index-B8g4VHgI.esm.js +0 -32
- package/dist/chunks/index-B8g4VHgI.esm.js.map +0 -1
- package/dist/chunks/index-BX0p4BVY.esm.js +0 -32
- package/dist/chunks/index-BX0p4BVY.esm.js.map +0 -1
- package/dist/chunks/index-BaAhcyM6.esm.js +0 -2
- package/dist/chunks/index-BebFL9KU.esm.js.map +0 -1
- package/dist/chunks/index-Duq6tIq8.esm.js +0 -2
- package/dist/chunks/index-Duq6tIq8.esm.js.map +0 -1
- package/dist/chunks/utils-C5hmbxa4.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-Beh5bQDw.esm.js","sources":["../../src/shared/fragments/css-variable-map.ts","../../src/shared/controllers/async-controller.ts","../../src/api-sdk/fetch-json.ts","../../src/api-sdk/make-openapi-method.ts","../../src/api-sdk/v3/routes.ts","../../src/shared/fragments/error-message-template.ts","../../src/shared/fragments/loading-template.ts","../../src/shared/fragments/custom-text.ts","../../src/shared/localize.ts","../../src/shared/is-all-html-elements.ts","../../src/shared/cart-contents.ts","../../src/integrations/logs/index.ts"],"sourcesContent":["export const _cssVariableMap = (variables: Record<string, string>) => {\n return Object.entries(variables)\n .map(([k, v]) => `${k}: ${v};`)\n .join(\"\\n\");\n};\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\ntype AsyncFunction = (...args: any[]) => Promise<any>;\n\n/**\n * Creates a declarative wrapper around async operations\n * @example\n * class MyElement extends LitElement {\n * private user = new AsyncController(\n * this,\n * async ({ id }) => get(url, { id }));\n *\n * async updated(changedProperties) {\n * if (changedProperties.has(\"userId\")) {\n * await this.user.exec({ id: this.userId })\n * }\n * }\n *\n * render() {\n * const { data, loading, error } = this.user;\n * if (loading) return html`Please wait...`\n * if (error) return html`Error! <button @click=${this.user.retry}>Reload</button>`;\n * return html`My name is: ${data.name}`\n * }\n * }\n */\nexport class AsyncController<TFn extends AsyncFunction> implements ReactiveController {\n public data: Awaited<ReturnType<TFn>> | null = null;\n public loading = false;\n public error: Error | null = null;\n\n private readonly host: ReactiveControllerHost;\n private readonly asyncFn: TFn;\n private lastArgs?: Parameters<TFn>;\n\n constructor(host: ReactiveControllerHost, asyncFn: TFn) {\n (this.host = host).addController(this);\n this.asyncFn = asyncFn;\n }\n\n public async exec(...args: Parameters<TFn>): Promise<ReturnType<TFn> | null> {\n this.lastArgs = args;\n this.loading = true;\n this.host.requestUpdate();\n try {\n // TODO: prevent race condition if later invocation returns before earlier\n this.data = await this.asyncFn(...args);\n this.error = null;\n } catch (err) {\n if (err instanceof Error) {\n this.error = err;\n this.data = null;\n }\n }\n this.loading = false;\n this.host.requestUpdate();\n return this.data;\n }\n\n public async retry() {\n return this.exec(...((this.lastArgs || []) as Parameters<TFn>));\n }\n\n hostDisconnected() {\n // TODO: cancel API calls\n }\n}\n","/**\n * Wrapper over window.fetch that expects/returns JSON\n */\nimport { BeamError, NetworkError } from \"../utils/beam-errors\";\nimport { logger } from \"../utils/logger\";\nimport { version as pkgVersion } from \"../../package.json\";\n\nexport async function fetchJson<T = unknown>(url: RequestInfo, options?: RequestInit): Promise<T> {\n const fetchOptions = {\n method: \"GET\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n \"X-Beam-Client\": \"WebSDK\",\n \"X-Beam-Client-Version\": pkgVersion,\n ...options?.headers,\n },\n preflightContinue: true,\n mode: options?.mode || \"cors\",\n body: options?.body != null ? options.body : undefined,\n };\n\n let response;\n try {\n response = await fetch(url, fetchOptions);\n // fetch can throw a TypeError if the server can't be reached, catch and log below\n } catch (err) {\n const error = new BeamError(`Network call failed (${fetchOptions?.method.toUpperCase()} ${url})`);\n error.cause = err;\n logger.error(error, url);\n throw error;\n }\n let body;\n let text;\n // This can throw a SyntaxError if response payload is malformed JSON\n try {\n text = await response.text();\n if (text) {\n // (response can be empty)\n body = JSON.parse(text);\n }\n } catch (err) {\n let error = err as Error;\n if (err instanceof SyntaxError) {\n error = new NetworkError(response, body, `Response invalid. Expected JSON. Received: \"${text}\"`);\n error.cause = err;\n }\n logger.error(error);\n throw error;\n }\n // Translate 4xx, 5xx status to runtime error\n if (!response.ok) {\n const error = new NetworkError(response, body, \"Response was not OK\");\n logger.error(error);\n throw error;\n }\n\n return body;\n}\n","import { DEFAULT_BASE_URL } from \"./constants\";\nimport { fetchJson } from \"./fetch-json\";\nimport { paths } from \"./openapi-spec\";\nimport { THttpMethod } from \"./types\";\n\nexport const makeOpenApiMethod = <\n TPathName extends keyof paths,\n TMethod extends keyof paths[TPathName],\n TStatusCode extends paths[TPathName][TMethod] extends { responses: any }\n ? keyof paths[TPathName][TMethod][\"responses\"]\n : never,\n>(\n pathName: TPathName,\n method: TMethod,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used as `typeof okHttpStatus` in type positions\n okHttpStatus: TStatusCode,\n) => {\n type TRouteSpec = paths[typeof pathName];\n type TRouteMethod = TRouteSpec[typeof method];\n type TParams = \"parameters\" extends keyof TRouteMethod ? TRouteMethod[\"parameters\"] : never;\n type TPathParams = TParams extends { path: any } ? TParams[\"path\"] : Record<string, never>;\n type TQueryParams = TParams extends { query: any } ? TParams[\"query\"] : Record<string, never>;\n type TRequestBody = TRouteMethod extends { requestBody: { content: { \"application/json\": any } } }\n ? TRouteMethod[\"requestBody\"][\"content\"][\"application/json\"]\n : never;\n type TAllResponses = TRouteMethod extends { responses: any } ? TRouteMethod[\"responses\"] : never;\n type TOkResponse = TAllResponses[typeof okHttpStatus] extends { content: { \"application/json\": any } }\n ? TAllResponses[typeof okHttpStatus][\"content\"][\"application/json\"]\n : never;\n const openApi = {\n [pathName]: async function ({\n headers = {},\n baseUrl = DEFAULT_BASE_URL,\n apiRoot = \"/api/v3\",\n pathParams = {},\n queryParams = {},\n requestBody,\n keepalive,\n }: {\n baseUrl?: string;\n apiRoot?: string;\n pathParams?: TPathParams;\n queryParams?: TQueryParams;\n requestBody?: TRequestBody;\n headers?: Record<string, string>;\n keepalive?: boolean;\n }) {\n const pathWithParams: string = Object.entries(pathParams).reduce((newPath: string, [k, v]) => {\n return newPath.replace(`{${k}}`, v as string);\n }, pathName as string);\n const cleanQueryParams = JSON.parse(JSON.stringify(queryParams));\n const search = new URLSearchParams(cleanQueryParams as unknown as Record<string, string>).toString();\n const url = baseUrl + apiRoot + pathWithParams + (search && `?${search}`);\n const options = {\n headers,\n method: method as THttpMethod,\n body: JSON.stringify(requestBody),\n ...(keepalive !== undefined && { keepalive }),\n };\n\n return fetchJson<TOkResponse>(url, options);\n },\n };\n\n // Use object to create function with dynamic name, for better stacktraces\n return openApi[pathName];\n};\n","import { makeOpenApiMethod } from \"../make-openapi-method\";\nimport { memoizeLast } from \"../../utils\";\n\nexport const getChainNonprofits = makeOpenApiMethod(\"/chain/{chainId}/nonprofits\", \"get\", 200);\n\nexport const getImpact = makeOpenApiMethod(\"/impact\", \"get\", 200);\n\nexport const getCumulativeImpact = makeOpenApiMethod(\"/chain/{chainId}/cumulativeImpact\", \"get\", 200);\n\nexport const postSelectNonprofit = makeOpenApiMethod(\"/selectNonprofit\", \"post\", 201);\n\nexport const postTransaction = makeOpenApiMethod(\"/transaction\", \"post\", 201);\n\nexport const putTransaction = makeOpenApiMethod(\"/transaction/{transactionId}\", \"put\", 204);\n\nexport const postCart = makeOpenApiMethod(\"/cart\", \"post\", 200);\n\nexport const postChainEligibleNonprofitsForCart = memoizeLast(\n makeOpenApiMethod(\"/chain/findEligibleNonprofitsForCart\", \"post\", 200),\n);\n\nexport const postLogs = makeOpenApiMethod(\"/logs\", \"post\", 200);\n\nexport const postExperimentSession = makeOpenApiMethod(\"/experimentSession\", \"post\", 200);\n\nexport const updateSubscription = makeOpenApiMethod(\"/subscriptions/updateSubscriptionNonprofit\", \"post\", 200);\n\nexport const postFindOrCreateSubscription = makeOpenApiMethod(\"/subscriptions/findOrCreateSubscription\", \"post\", 200);\n\nexport const postProductDetailsPage = makeOpenApiMethod(\"/productDetailsPage\", \"post\", 200);\n","import { html } from \"lit\";\nimport { MissingConfig, NetworkError } from \"../../utils/beam-errors\";\n\nconst strings = {\n errorTitle: `Beam encountered an error. Please try again.`,\n retry: `Retry`,\n};\n\nexport const _errorMessage = ({ error, retry }: { error: Error; retry?: (...args: never) => void }) => {\n let details = html``;\n if (error instanceof NetworkError) {\n const response = JSON.stringify(\n {\n status: error.response.status,\n statusText: error.response.statusText,\n url: error.response.url,\n body: error.body,\n },\n null,\n 4,\n );\n details = html`\n <p><b>Network Response:</b></p>\n <p>${response}</p>\n `;\n }\n if (error instanceof MissingConfig) {\n details = html`\n <p><b>Missing Required Config Options:</b></p>\n <p>${error.missingConfigKeyNames.join(\", \")}</p>\n `;\n }\n return html`<div class=\"beam-error\" style=\"text-align: left\">\n <p>${strings.errorTitle} ${retry ? html` <button type=\"reset\" @click=\"${retry}\">${strings.retry}</button>` : \"\"}</p>\n <br />\n <details>\n <div style=\"white-space: pre-wrap; font-family: monospace; line-height: 1;\">\n ${details}\n <p><b>Message:</b> ${error.message || html`<i>None</i>`}</p>\n <p><b>Stack:</b> ${error.stack}</p>\n </div>\n </details>\n <br />\n <p>Help: <a href=\"https://www.beamimpact.com\">www.beamimpact.com</a></p>\n </div>`;\n};\n","import { html } from \"lit\";\n\nconst strings = {\n loading: \"\", // Default is no loading content\n};\n\nexport const _loading = () => {\n return html`<p class=\"beam-loading\">${strings.loading}</p>`;\n};\n","import { CSSResult, unsafeCSS } from \"lit\";\n\n/**\n * Create an object that can be passed to cssVariableMap\n * to define CSS variables in a style tag. The default properties\n * are the ones exposed for customization in the remote config interface.\n * @example\n * const variables = {\n * ...customizableTextJs(\"widget-header\",\n * \"widget-border-color\": \"red\"\n * };\n *\n * html`<style>:host { ${_cssVariableMap(variables)} }</style>`;\n * @returns {{[p: string]: string}}\n */\nexport const defineCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-fontFamily`]: fontFamily,\n [`${prefix}-fontStyle`]: fontStyle,\n [`${prefix}-fontSize`]: fontSize,\n [`${prefix}-fontWeight`]: fontWeight,\n [`${prefix}-textTransform`]: textTransform,\n [`${prefix}-marginTop`]: marginTop,\n [`${prefix}-lineHeight`]: lineHeight,\n [`${prefix}-color`]: color,\n [`${prefix}-letterSpacing`]: letterSpacing,\n [`${prefix}-textDecoration`]: textDecoration,\n };\n};\n\n/**\n * Returns a string that defines css properties based on variables,\n * which can be used in a css`` template. The default properties are the\n * ones exposed for customization in the remote config interface.\n * @example\n * css`.widget-header { ${customizableTextCss(\"widget-header\")} border: none; }`\n * @returns {CSSResult}\n */\nexport const useCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n font-family: var(${prefix}-fontFamily, ${fontFamily});\n font-style: var(${prefix}-fontStyle, ${fontStyle});\n font-size: var(${prefix}-fontSize, ${fontSize});\n font-weight: var(${prefix}-fontWeight, ${fontWeight});\n text-transform: var(${prefix}-textTransform, ${textTransform});\n margin-top: var(${prefix}-marginTop, ${marginTop});\n line-height: var(${prefix}-lineHeight, ${lineHeight});\n text-decoration: var(${prefix}-textDecoration, ${textDecoration});\n color: var(${prefix}-color, ${color});\n letter-spacing: var(${prefix}-letterSpacing, ${letterSpacing});\n `);\n};\n\n/**\n * Same as useCustomText except returns an object that can be passed to styleMap\n */\nexport const useCustomTextMap = (\n namespace = \"\",\n {\n fontSize = \"inherit\",\n fontStyle = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n fontSize: `var(${prefix}-fontSize, ${fontSize})`,\n fontStyle: `var(${prefix}-fontStyle, ${fontStyle})`,\n fontWeight: `var(${prefix}-fontWeight, ${fontWeight})`,\n textTransform: `var(${prefix}-textTransform, ${textTransform})`,\n textDecoration: `var(${prefix}-textDecoration, ${textDecoration})`,\n marginTop: `var(${prefix}-marginTop, ${marginTop})`,\n lineHeight: `var(${prefix}-lineHeight, ${lineHeight})`,\n letterSpacing: `var(${prefix}-letterSpacing, ${letterSpacing})`,\n };\n};\n","import { LANGUAGES } from \"../api-sdk/types\";\nimport { logger } from \"../utils/logger\";\nimport { BeamError } from \"../utils/beam-errors\";\n\n/**\n * User-provided strings may include embedded translations in JSON form\n * This function extracts the string for the provided language\n * If it fails to parse, or the string is not json-like, it returns the whole string\n */\nconst localizeUserString = (lang: LANGUAGES, str: string): string => {\n const isJson = str.startsWith(\"{\") && !str.startsWith(\"{{\");\n if (isJson) {\n try {\n const json = JSON.parse(str);\n return json[lang] ?? json[\"en\"] ?? str;\n } catch (err) {\n logger.error(new BeamError(\"Failed to extract JSON translation from string\"), str);\n return str;\n }\n }\n return str;\n};\n\nexport { localizeUserString };\n","export const isAllHtmlElements = (a: Array<unknown>): a is Array<HTMLElement> => {\n return a.every((el) => el instanceof HTMLElement);\n};\n","import { paths } from \"../api-sdk/openapi-spec\";\nimport { BEAM_COOKIE_NAMES } from \"../api-sdk/constants\";\nexport type TCartApi =\n paths[\"/chain/findEligibleNonprofitsForCart\"][\"post\"][\"requestBody\"][\"content\"][\"application/json\"][\"cart\"];\n\n// Same as type from API but with non-optional fields, so we can use where Shopify guarantees values\nexport type TCart = TCartApi & {\n content: {\n items: Record<string, any>[];\n discounts?: Record<string, any>[] | undefined | null;\n };\n};\n\nexport type TCartItems = TCart[\"content\"][\"items\"];\n\nexport type TCartDiscounts = TCart[\"content\"][\"discounts\"];\n\nexport type TBeamCartLocalStorage = {\n cartId: string;\n beamCartId?: string;\n subtotal: number;\n itemCount: number;\n currencyCode: string;\n} & TCart;\n\nexport const BEAM_CART_COOKIE_NAME = BEAM_COOKIE_NAMES.CART;\n\nexport type Discount = {\n code: string;\n applicable: boolean;\n};\n","import { postLogs } from \"../../api-sdk/v3/routes\";\nimport { logger } from \"../../utils/logger\";\nimport { DEFAULT_LOG_URL } from \"../../api-sdk/constants\";\nimport { paths } from \"../../api-sdk/openapi-spec\";\n\ntype PostLogsReq = paths[\"/logs\"][\"post\"][\"requestBody\"][\"content\"][\"application/json\"];\n\ninterface SendLogConfig {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport async function sendLog(config: SendLogConfig, payload: PostLogsReq): Promise<void> {\n const { apiKey, baseUrl } = config;\n try {\n await postLogs({\n baseUrl: baseUrl || DEFAULT_LOG_URL,\n headers: {\n authorization: `Api-Key ${apiKey}`,\n },\n requestBody: {\n ...payload,\n },\n });\n } catch (err) {\n logger.error(\"Failed to send log\", err);\n }\n}\n"],"names":["_cssVariableMap","variables","k","v","AsyncController","host","asyncFn","args","err","fetchJson","url","options","fetchOptions","pkgVersion","response","error","BeamError","logger","body","text","NetworkError","makeOpenApiMethod","pathName","method","okHttpStatus","headers","baseUrl","DEFAULT_BASE_URL","apiRoot","pathParams","queryParams","requestBody","keepalive","pathWithParams","newPath","cleanQueryParams","search","getImpact","getCumulativeImpact","postSelectNonprofit","postCart","postChainEligibleNonprofitsForCart","memoizeLast","postLogs","postExperimentSession","updateSubscription","postFindOrCreateSubscription","postProductDetailsPage","strings","_errorMessage","retry","details","html","MissingConfig","_loading","defineCustomText","namespace","fontFamily","fontStyle","fontSize","fontWeight","textTransform","textDecoration","marginTop","lineHeight","color","letterSpacing","prefix","useCustomText","unsafeCSS","localizeUserString","lang","str","json","isAllHtmlElements","a","el","BEAM_CART_COOKIE_NAME","BEAM_COOKIE_NAMES","sendLog","config","payload","apiKey","DEFAULT_LOG_URL"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-tkscjKkq.esm.js","sources":["../../src/shared/fragments/css-variable-map.ts","../../src/shared/controllers/async-controller.ts","../../src/api-sdk/fetch-json.ts","../../src/api-sdk/make-openapi-method.ts","../../src/api-sdk/v3/routes.ts","../../src/shared/fragments/error-message-template.ts","../../src/shared/fragments/loading-template.ts","../../src/shared/fragments/custom-text.ts","../../src/shared/localize.ts","../../src/shared/is-all-html-elements.ts","../../src/shared/cart-contents.ts","../../src/integrations/logs/index.ts"],"sourcesContent":["export const _cssVariableMap = (variables: Record<string, string>) => {\n return Object.entries(variables)\n .map(([k, v]) => `${k}: ${v};`)\n .join(\"\\n\");\n};\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\ntype AsyncFunction = (...args: any[]) => Promise<any>;\n\n/**\n * Creates a declarative wrapper around async operations\n * @example\n * class MyElement extends LitElement {\n * private user = new AsyncController(\n * this,\n * async ({ id }) => get(url, { id }));\n *\n * async updated(changedProperties) {\n * if (changedProperties.has(\"userId\")) {\n * await this.user.exec({ id: this.userId })\n * }\n * }\n *\n * render() {\n * const { data, loading, error } = this.user;\n * if (loading) return html`Please wait...`\n * if (error) return html`Error! <button @click=${this.user.retry}>Reload</button>`;\n * return html`My name is: ${data.name}`\n * }\n * }\n */\nexport class AsyncController<TFn extends AsyncFunction> implements ReactiveController {\n public data: Awaited<ReturnType<TFn>> | null = null;\n public loading = false;\n public error: Error | null = null;\n\n private readonly host: ReactiveControllerHost;\n private readonly asyncFn: TFn;\n private lastArgs?: Parameters<TFn>;\n\n constructor(host: ReactiveControllerHost, asyncFn: TFn) {\n (this.host = host).addController(this);\n this.asyncFn = asyncFn;\n }\n\n public async exec(...args: Parameters<TFn>): Promise<ReturnType<TFn> | null> {\n this.lastArgs = args;\n this.loading = true;\n this.host.requestUpdate();\n try {\n // TODO: prevent race condition if later invocation returns before earlier\n this.data = await this.asyncFn(...args);\n this.error = null;\n } catch (err) {\n if (err instanceof Error) {\n this.error = err;\n this.data = null;\n }\n }\n this.loading = false;\n this.host.requestUpdate();\n return this.data;\n }\n\n public async retry() {\n return this.exec(...((this.lastArgs || []) as Parameters<TFn>));\n }\n\n hostDisconnected() {\n // TODO: cancel API calls\n }\n}\n","/**\n * Wrapper over window.fetch that expects/returns JSON\n */\nimport { BeamError, NetworkError } from \"../utils/beam-errors\";\nimport { logger } from \"../utils/logger\";\nimport { version as pkgVersion } from \"../../package.json\";\n\nexport async function fetchJson<T = unknown>(url: RequestInfo, options?: RequestInit): Promise<T> {\n const fetchOptions = {\n method: \"GET\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n \"X-Beam-Client\": \"WebSDK\",\n \"X-Beam-Client-Version\": pkgVersion,\n ...options?.headers,\n },\n preflightContinue: true,\n mode: options?.mode || \"cors\",\n body: options?.body != null ? options.body : undefined,\n };\n\n let response;\n try {\n response = await fetch(url, fetchOptions);\n // fetch can throw a TypeError if the server can't be reached, catch and log below\n } catch (err) {\n const error = new BeamError(`Network call failed (${fetchOptions?.method.toUpperCase()} ${url})`);\n error.cause = err;\n logger.error(error, url);\n throw error;\n }\n let body;\n let text;\n // This can throw a SyntaxError if response payload is malformed JSON\n try {\n text = await response.text();\n if (text) {\n // (response can be empty)\n body = JSON.parse(text);\n }\n } catch (err) {\n let error = err as Error;\n if (err instanceof SyntaxError) {\n error = new NetworkError(response, body, `Response invalid. Expected JSON. Received: \"${text}\"`);\n error.cause = err;\n }\n logger.error(error);\n throw error;\n }\n // Translate 4xx, 5xx status to runtime error\n if (!response.ok) {\n const error = new NetworkError(response, body, \"Response was not OK\");\n logger.error(error);\n throw error;\n }\n\n return body;\n}\n","import { DEFAULT_BASE_URL } from \"./constants\";\nimport { fetchJson } from \"./fetch-json\";\nimport { paths } from \"./openapi-spec\";\nimport { THttpMethod } from \"./types\";\n\nexport const makeOpenApiMethod = <\n TPathName extends keyof paths,\n TMethod extends keyof paths[TPathName],\n TStatusCode extends paths[TPathName][TMethod] extends { responses: any }\n ? keyof paths[TPathName][TMethod][\"responses\"]\n : never,\n>(\n pathName: TPathName,\n method: TMethod,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used as `typeof okHttpStatus` in type positions\n okHttpStatus: TStatusCode,\n) => {\n type TRouteSpec = paths[typeof pathName];\n type TRouteMethod = TRouteSpec[typeof method];\n type TParams = \"parameters\" extends keyof TRouteMethod ? TRouteMethod[\"parameters\"] : never;\n type TPathParams = TParams extends { path: any } ? TParams[\"path\"] : Record<string, never>;\n type TQueryParams = TParams extends { query: any } ? TParams[\"query\"] : Record<string, never>;\n type TRequestBody = TRouteMethod extends { requestBody: { content: { \"application/json\": any } } }\n ? TRouteMethod[\"requestBody\"][\"content\"][\"application/json\"]\n : never;\n type TAllResponses = TRouteMethod extends { responses: any } ? TRouteMethod[\"responses\"] : never;\n type TOkResponse = TAllResponses[typeof okHttpStatus] extends { content: { \"application/json\": any } }\n ? TAllResponses[typeof okHttpStatus][\"content\"][\"application/json\"]\n : never;\n const openApi = {\n [pathName]: async function ({\n headers = {},\n baseUrl = DEFAULT_BASE_URL,\n apiRoot = \"/api/v3\",\n pathParams = {},\n queryParams = {},\n requestBody,\n keepalive,\n }: {\n baseUrl?: string;\n apiRoot?: string;\n pathParams?: TPathParams;\n queryParams?: TQueryParams;\n requestBody?: TRequestBody;\n headers?: Record<string, string>;\n keepalive?: boolean;\n }) {\n const pathWithParams: string = Object.entries(pathParams).reduce((newPath: string, [k, v]) => {\n return newPath.replace(`{${k}}`, v as string);\n }, pathName as string);\n const cleanQueryParams = JSON.parse(JSON.stringify(queryParams));\n const search = new URLSearchParams(cleanQueryParams as unknown as Record<string, string>).toString();\n const url = baseUrl + apiRoot + pathWithParams + (search && `?${search}`);\n const options = {\n headers,\n method: method as THttpMethod,\n body: JSON.stringify(requestBody),\n ...(keepalive !== undefined && { keepalive }),\n };\n\n return fetchJson<TOkResponse>(url, options);\n },\n };\n\n // Use object to create function with dynamic name, for better stacktraces\n return openApi[pathName];\n};\n","import { makeOpenApiMethod } from \"../make-openapi-method\";\nimport { memoizeLast } from \"../../utils\";\n\nexport const getChainNonprofits = makeOpenApiMethod(\"/chain/{chainId}/nonprofits\", \"get\", 200);\n\nexport const getImpact = makeOpenApiMethod(\"/impact\", \"get\", 200);\n\nexport const getCumulativeImpact = makeOpenApiMethod(\"/chain/{chainId}/cumulativeImpact\", \"get\", 200);\n\nexport const postSelectNonprofit = makeOpenApiMethod(\"/selectNonprofit\", \"post\", 201);\n\nexport const postTransaction = makeOpenApiMethod(\"/transaction\", \"post\", 201);\n\nexport const putTransaction = makeOpenApiMethod(\"/transaction/{transactionId}\", \"put\", 204);\n\nexport const postCart = makeOpenApiMethod(\"/cart\", \"post\", 200);\n\nexport const postChainEligibleNonprofitsForCart = memoizeLast(\n makeOpenApiMethod(\"/chain/findEligibleNonprofitsForCart\", \"post\", 200),\n);\n\nexport const postLogs = makeOpenApiMethod(\"/logs\", \"post\", 200);\n\nexport const postExperimentSession = makeOpenApiMethod(\"/experimentSession\", \"post\", 200);\n\nexport const updateSubscription = makeOpenApiMethod(\"/subscriptions/updateSubscriptionNonprofit\", \"post\", 200);\n\nexport const postFindOrCreateSubscription = makeOpenApiMethod(\"/subscriptions/findOrCreateSubscription\", \"post\", 200);\n\nexport const postProductDetailsPage = makeOpenApiMethod(\"/productDetailsPage\", \"post\", 200);\n","import { html } from \"lit\";\nimport { MissingConfig, NetworkError } from \"../../utils/beam-errors\";\n\nconst strings = {\n errorTitle: `Beam encountered an error. Please try again.`,\n retry: `Retry`,\n};\n\nexport const _errorMessage = ({ error, retry }: { error: Error; retry?: (...args: never) => void }) => {\n let details = html``;\n if (error instanceof NetworkError) {\n const response = JSON.stringify(\n {\n status: error.response.status,\n statusText: error.response.statusText,\n url: error.response.url,\n body: error.body,\n },\n null,\n 4,\n );\n details = html`\n <p><b>Network Response:</b></p>\n <p>${response}</p>\n `;\n }\n if (error instanceof MissingConfig) {\n details = html`\n <p><b>Missing Required Config Options:</b></p>\n <p>${error.missingConfigKeyNames.join(\", \")}</p>\n `;\n }\n return html`<div class=\"beam-error\" style=\"text-align: left\">\n <p>${strings.errorTitle} ${retry ? html` <button type=\"reset\" @click=\"${retry}\">${strings.retry}</button>` : \"\"}</p>\n <br />\n <details>\n <div style=\"white-space: pre-wrap; font-family: monospace; line-height: 1;\">\n ${details}\n <p><b>Message:</b> ${error.message || html`<i>None</i>`}</p>\n <p><b>Stack:</b> ${error.stack}</p>\n </div>\n </details>\n <br />\n <p>Help: <a href=\"https://www.beamimpact.com\">www.beamimpact.com</a></p>\n </div>`;\n};\n","import { html } from \"lit\";\n\nconst strings = {\n loading: \"\", // Default is no loading content\n};\n\nexport const _loading = () => {\n return html`<p class=\"beam-loading\">${strings.loading}</p>`;\n};\n","import { CSSResult, unsafeCSS } from \"lit\";\n\n/**\n * Create an object that can be passed to cssVariableMap\n * to define CSS variables in a style tag. The default properties\n * are the ones exposed for customization in the remote config interface.\n * @example\n * const variables = {\n * ...customizableTextJs(\"widget-header\",\n * \"widget-border-color\": \"red\"\n * };\n *\n * html`<style>:host { ${_cssVariableMap(variables)} }</style>`;\n * @returns {{[p: string]: string}}\n */\nexport const defineCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n [`${prefix}-fontFamily`]: fontFamily,\n [`${prefix}-fontStyle`]: fontStyle,\n [`${prefix}-fontSize`]: fontSize,\n [`${prefix}-fontWeight`]: fontWeight,\n [`${prefix}-textTransform`]: textTransform,\n [`${prefix}-marginTop`]: marginTop,\n [`${prefix}-lineHeight`]: lineHeight,\n [`${prefix}-color`]: color,\n [`${prefix}-letterSpacing`]: letterSpacing,\n [`${prefix}-textDecoration`]: textDecoration,\n };\n};\n\n/**\n * Returns a string that defines css properties based on variables,\n * which can be used in a css`` template. The default properties are the\n * ones exposed for customization in the remote config interface.\n * @example\n * css`.widget-header { ${customizableTextCss(\"widget-header\")} border: none; }`\n * @returns {CSSResult}\n */\nexport const useCustomText = (\n namespace = \"\",\n {\n fontFamily = \"inherit\",\n fontStyle = \"inherit\",\n fontSize = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n color = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): CSSResult => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return unsafeCSS(`\\\n font-family: var(${prefix}-fontFamily, ${fontFamily});\n font-style: var(${prefix}-fontStyle, ${fontStyle});\n font-size: var(${prefix}-fontSize, ${fontSize});\n font-weight: var(${prefix}-fontWeight, ${fontWeight});\n text-transform: var(${prefix}-textTransform, ${textTransform});\n margin-top: var(${prefix}-marginTop, ${marginTop});\n line-height: var(${prefix}-lineHeight, ${lineHeight});\n text-decoration: var(${prefix}-textDecoration, ${textDecoration});\n color: var(${prefix}-color, ${color});\n letter-spacing: var(${prefix}-letterSpacing, ${letterSpacing});\n `);\n};\n\n/**\n * Same as useCustomText except returns an object that can be passed to styleMap\n */\nexport const useCustomTextMap = (\n namespace = \"\",\n {\n fontSize = \"inherit\",\n fontStyle = \"inherit\",\n fontWeight = \"inherit\",\n textTransform = \"none\",\n textDecoration = \"none\",\n marginTop = \"0\",\n lineHeight = \"inherit\",\n letterSpacing = \"normal\",\n } = {},\n): Record<string, string> => {\n const prefix = namespace.startsWith(\"--beam-\") ? namespace : `--beam-${namespace}`;\n return {\n fontSize: `var(${prefix}-fontSize, ${fontSize})`,\n fontStyle: `var(${prefix}-fontStyle, ${fontStyle})`,\n fontWeight: `var(${prefix}-fontWeight, ${fontWeight})`,\n textTransform: `var(${prefix}-textTransform, ${textTransform})`,\n textDecoration: `var(${prefix}-textDecoration, ${textDecoration})`,\n marginTop: `var(${prefix}-marginTop, ${marginTop})`,\n lineHeight: `var(${prefix}-lineHeight, ${lineHeight})`,\n letterSpacing: `var(${prefix}-letterSpacing, ${letterSpacing})`,\n };\n};\n","import { LANGUAGES } from \"../api-sdk/types\";\nimport { logger } from \"../utils/logger\";\nimport { BeamError } from \"../utils/beam-errors\";\n\n/**\n * User-provided strings may include embedded translations in JSON form\n * This function extracts the string for the provided language\n * If it fails to parse, or the string is not json-like, it returns the whole string\n */\nconst localizeUserString = (lang: LANGUAGES, str: string): string => {\n const isJson = str.startsWith(\"{\") && !str.startsWith(\"{{\");\n if (isJson) {\n try {\n const json = JSON.parse(str);\n return json[lang] ?? json[\"en\"] ?? str;\n } catch (err) {\n logger.error(new BeamError(\"Failed to extract JSON translation from string\"), str);\n return str;\n }\n }\n return str;\n};\n\nexport { localizeUserString };\n","export const isAllHtmlElements = (a: Array<unknown>): a is Array<HTMLElement> => {\n return a.every((el) => el instanceof HTMLElement);\n};\n","import { paths } from \"../api-sdk/openapi-spec\";\nimport { BEAM_COOKIE_NAMES } from \"../api-sdk/constants\";\nexport type TCartApi =\n paths[\"/chain/findEligibleNonprofitsForCart\"][\"post\"][\"requestBody\"][\"content\"][\"application/json\"][\"cart\"];\n\n// Same as type from API but with non-optional fields, so we can use where Shopify guarantees values\nexport type TCart = TCartApi & {\n content: {\n items: Record<string, any>[];\n discounts?: Record<string, any>[] | undefined | null;\n };\n};\n\nexport type TCartItems = TCart[\"content\"][\"items\"];\n\nexport type TCartDiscounts = TCart[\"content\"][\"discounts\"];\n\nexport type TBeamCartLocalStorage = {\n cartId: string;\n beamCartId?: string;\n subtotal: number;\n itemCount: number;\n currencyCode: string;\n} & TCart;\n\nexport const BEAM_CART_COOKIE_NAME = BEAM_COOKIE_NAMES.CART;\n\nexport type Discount = {\n code: string;\n applicable: boolean;\n};\n","import { postLogs } from \"../../api-sdk/v3/routes\";\nimport { logger } from \"../../utils/logger\";\nimport { DEFAULT_LOG_URL } from \"../../api-sdk/constants\";\nimport { paths } from \"../../api-sdk/openapi-spec\";\n\ntype PostLogsReq = paths[\"/logs\"][\"post\"][\"requestBody\"][\"content\"][\"application/json\"];\n\ninterface SendLogConfig {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport async function sendLog(config: SendLogConfig, payload: PostLogsReq): Promise<void> {\n const { apiKey, baseUrl } = config;\n try {\n await postLogs({\n baseUrl: baseUrl || DEFAULT_LOG_URL,\n headers: {\n authorization: `Api-Key ${apiKey}`,\n },\n requestBody: {\n ...payload,\n },\n });\n } catch (err) {\n logger.error(\"Failed to send log\", err);\n }\n}\n"],"names":["_cssVariableMap","variables","k","v","AsyncController","host","asyncFn","args","err","fetchJson","url","options","fetchOptions","pkgVersion","response","error","BeamError","logger","body","text","NetworkError","makeOpenApiMethod","pathName","method","okHttpStatus","headers","baseUrl","DEFAULT_BASE_URL","apiRoot","pathParams","queryParams","requestBody","keepalive","pathWithParams","newPath","cleanQueryParams","search","getImpact","getCumulativeImpact","postSelectNonprofit","postCart","postChainEligibleNonprofitsForCart","memoizeLast","postLogs","postExperimentSession","updateSubscription","postFindOrCreateSubscription","postProductDetailsPage","strings","_errorMessage","retry","details","html","MissingConfig","_loading","defineCustomText","namespace","fontFamily","fontStyle","fontSize","fontWeight","textTransform","textDecoration","marginTop","lineHeight","color","letterSpacing","prefix","useCustomText","unsafeCSS","localizeUserString","lang","str","json","isAllHtmlElements","a","el","BEAM_CART_COOKIE_NAME","BEAM_COOKIE_NAMES","sendLog","config","payload","apiKey","DEFAULT_LOG_URL"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as n,i as s,b as m,n as b}from"./lit-BEag9MFp.esm.js";import"./_share-dialog-dependencies-
|
|
1
|
+
import{a as n,i as s,b as m,n as b}from"./lit-BEag9MFp.esm.js";import"./_share-dialog-dependencies-DPid-O65.esm.js";import"./vendor-DUOg5fL-.esm.js";var d=Object.defineProperty,p=(e,r,t,P)=>{for(var o=void 0,l=e.length-1,i;l>=0;l--)(i=e[l])&&(o=i(r,t,o)||o);return o&&d(r,t,o),o};class a extends n{constructor(){super(...arguments),this.promo=null,this.shortVersion=!1}static get styles(){return s`
|
|
2
2
|
sl-badge::part(base) {
|
|
3
3
|
background-color: var(--beam-promoPillLabel-color-background, #000);
|
|
4
4
|
color: var(--beam-promoPillLabel-color, #fff);
|
|
@@ -13,4 +13,4 @@ import{a as n,i as s,b as m,n as b}from"./lit-BEag9MFp.esm.js";import"./_share-d
|
|
|
13
13
|
margin: var(--beam-promoPillLabel-border-margin);
|
|
14
14
|
}
|
|
15
15
|
`}render(){if(this.promo){const r=this.shortVersion?this.promo["promo-text-short"]:this.promo["promo-text-long"];return m`<sl-badge pill aria-label="${r}">${r}</sl-badge>`}else return m``}}p([b({type:Object})],a.prototype,"promo"),p([b({type:Boolean})],a.prototype,"shortVersion"),customElements.get("beam-promo-info-pill")||customElements.define("beam-promo-info-pill",a);const f={"--beam-promoPillLabel-color-background":"#000","--beam-promoPillLabel-color":"#fff","--beam-promoPillLabel-border":"#000","--beam-promoPillLabel-border-width":"0px","--beam-promoPillLabel-font-size":"11px","--beam-promoPillLabel-font":"inherit","--beam-promoPillLabel-font-weight":"bold","--beam-promoPillLabel-text-transform":"none","--beam-promoPillLabel-text-wrap":"wrap","--beam-promoPillLabel-text-padding":"4px 15px","--beam-promoPillLabel-border-margin":"0px"};export{f as p};
|
|
16
|
-
//# sourceMappingURL=promo-pill-label-
|
|
16
|
+
//# sourceMappingURL=promo-pill-label-DYR3PZH7.esm.js.map
|
package/dist/chunks/{promo-pill-label-BWPhroK6.esm.js.map → promo-pill-label-DYR3PZH7.esm.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promo-pill-label-
|
|
1
|
+
{"version":3,"file":"promo-pill-label-DYR3PZH7.esm.js","sources":["../../src/shared/components/promo-pill-label.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport \"../shoelace-components\";\nimport \"@shoelace-style/shoelace/dist/components/badge/badge.js\";\n\ntype Promo = {\n \"promo-text-long\": string;\n \"promo-text-short\": string;\n};\n\nexport class BeamPromoInfoPill extends LitElement {\n @property({ type: Object }) promo: Promo | null = null;\n @property({ type: Boolean }) shortVersion = false;\n\n static get styles() {\n return css`\n sl-badge::part(base) {\n background-color: var(--beam-promoPillLabel-color-background, #000);\n color: var(--beam-promoPillLabel-color, #fff);\n border: var(--beam-promoPillLabel-border-width, 0px) solid var(--beam-promoPillLabel-border, #000);\n border-radius: 18.37px;\n font-family: var(--beam-promoPillLabel-font, inherit);\n font-size: var(--beam-promoPillLabel-font-size, 12px);\n font-weight: var(--beam-promoPillLabel-font-weight, bold);\n text-transform: var(--beam-promoPillLabel-text-transform, none);\n text-wrap: var(--beam-promoPillLabel-text-wrap, wrap);\n padding: var(--beam-promoPillLabel-text-padding);\n margin: var(--beam-promoPillLabel-border-margin);\n }\n `;\n }\n\n render() {\n if (this.promo) {\n const promoText = this.shortVersion ? this.promo[\"promo-text-short\"] : this.promo[\"promo-text-long\"];\n return html`<sl-badge pill aria-label=\"${promoText}\">${promoText}</sl-badge>`;\n } else {\n return html``;\n }\n }\n}\n\ncustomElements.get(\"beam-promo-info-pill\") || customElements.define(\"beam-promo-info-pill\", BeamPromoInfoPill);\n\nexport const promoPillLabelConfigDefaults = {\n \"--beam-promoPillLabel-color-background\": \"#000\",\n \"--beam-promoPillLabel-color\": \"#fff\",\n \"--beam-promoPillLabel-border\": \"#000\",\n \"--beam-promoPillLabel-border-width\": \"0px\",\n \"--beam-promoPillLabel-font-size\": \"11px\",\n \"--beam-promoPillLabel-font\": \"inherit\",\n \"--beam-promoPillLabel-font-weight\": \"bold\",\n \"--beam-promoPillLabel-text-transform\": \"none\",\n \"--beam-promoPillLabel-text-wrap\": \"wrap\",\n \"--beam-promoPillLabel-text-padding\": \"4px 15px\",\n \"--beam-promoPillLabel-border-margin\": \"0px\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-promo-info-pill\": BeamPromoInfoPill;\n }\n}\n"],"names":["BeamPromoInfoPill","LitElement","css","promoText","html","__decorateClass","property","promoPillLabelConfigDefaults"],"mappings":"wRAUO,MAAMA,UAA0BC,CAAW,CAA3C,aAAA,CAAA,MAAA,GAAA,SAAA,EACuB,KAAA,MAAsB,KACrB,KAAA,aAAe,EAAA,CAE5C,WAAW,QAAS,CAClB,OAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,KAeT,CAEA,QAAS,CACP,GAAI,KAAK,MAAO,CACd,MAAMC,EAAY,KAAK,aAAe,KAAK,MAAM,kBAAkB,EAAI,KAAK,MAAM,iBAAiB,EACnG,OAAOC,+BAAkCD,CAAS,KAAKA,CAAS,aAClE,KACE,QAAOC,GAEX,CACF,CA7B8BC,EAAA,CAA3BC,EAAS,CAAE,KAAM,MAAO,CAAC,CAAA,EADfN,EACiB,UAAA,OAAA,EACCK,EAAA,CAA5BC,EAAS,CAAE,KAAM,OAAQ,CAAC,CAAA,EAFhBN,EAEkB,0BA8B/B,eAAe,IAAI,sBAAsB,GAAK,eAAe,OAAO,uBAAwBA,CAAiB,EAEtG,MAAMO,EAA+B,CAC1C,yCAA0C,OAC1C,8BAA+B,OAC/B,+BAAgC,OAChC,qCAAsC,MACtC,kCAAmC,OACnC,6BAA8B,UAC9B,oCAAqC,OACrC,uCAAwC,OACxC,kCAAmC,OACnC,qCAAsC,WACtC,sCAAuC,KACzC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as x}from"./index-
|
|
1
|
+
import{a as x}from"./index-tkscjKkq.esm.js";import{a as y,b as d,D as v,n as s}from"./lit-BEag9MFp.esm.js";import{p as m,u as p,s as r}from"./share-button-DP2wLhmP.esm.js";import{D as S}from"./utils-ly9wMwUO.esm.js";import"./vendor-DUOg5fL-.esm.js";const I=(l,{source:e="contentLength"}={})=>{const a=l instanceof NodeList?Array.from(l):l;if(a.length===0||!x(a))return;const i=(e==="contentLength"?a.sort((t,o)=>o.innerText.length-t.innerText.length)[0]:a.sort((t,o)=>o.clientHeight-t.clientHeight)[0])?.clientHeight||0;for(const t of a)t.clientHeight!==i&&(t.style.height=i+"px")};function w(){return/Android|iPhone/i.test(navigator.userAgent)}var C=Object.defineProperty,h=(l,e,a,i)=>{for(var t=void 0,o=l.length-1,c;o>=0;o--)(c=l[o])&&(t=c(e,a,t)||t);return t&&C(e,a,t),t};class n extends y{constructor(){super(...arguments),this.shareIcon=null,this.imageUrl=null,this.brandName=null,this.buttonText=null,this.configLang="en",this.baseUrl=S,this.nonprofitId=null,this.storeId=null,this.transactionId=null}connectedCallback(){super.connectedCallback()}async handleShareClick(){try{if(!this.imageUrl||!this.brandName||!this.configLang)return;await import("./_share-dialog-dependencies-DPid-O65.esm.js");const{nonprofitId:e,storeId:a,transactionId:i,baseUrl:t,apiKey:o}=this;m({baseUrl:t,apiKey:o,requestBody:{eventName:"shareImageButtonClick",nonprofitId:e,storeId:a,timestamp:Date.now(),transactionId:i}}).catch(()=>null),w()?this.openSystemShareSheet(this.imageUrl):this.handleShareDialog(this.imageUrl,this.brandName)}catch(e){console.error("Error sharing impact:",e)}}async handleShareDialog(e,a){if(!e)return;const i=this.shadowRoot?.querySelector("sl-dialog");if(i){i.show();return}await import("./_share-dialog-dependencies-DPid-O65.esm.js");const t=this.shadowRoot?.querySelector("#modal-root"),o=await p(e),c=URL.createObjectURL(o),b=()=>{this.shadowRoot?.querySelector("sl-dialog")?.hide()},g=async()=>{m({baseUrl:this.baseUrl,apiKey:this.apiKey,requestBody:{eventName:"copyImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:this.transactionId}}).catch(()=>null),await navigator.clipboard.write([new ClipboardItem({"image/png":o})]),setTimeout(b,250)},u=()=>{m({baseUrl:this.baseUrl,apiKey:this.apiKey,requestBody:{eventName:"downloadImageButtonClick",nonprofitId:this.nonprofitId,storeId:this.storeId,timestamp:Date.now(),transactionId:this.transactionId}}).catch(()=>null),setTimeout(b,250)},f=d`
|
|
2
2
|
<style>
|
|
3
3
|
.plain-button {
|
|
4
4
|
border: none;
|
|
@@ -169,4 +169,4 @@ import{a as x}from"./index-Beh5bQDw.esm.js";import{a as y,b as d,D as v,n as s}f
|
|
|
169
169
|
</button>
|
|
170
170
|
<div id="modal-root"></div>
|
|
171
171
|
`}}h([s({type:String})],n.prototype,"shareIcon"),h([s({type:String})],n.prototype,"imageUrl"),h([s({type:String})],n.prototype,"brandName"),h([s({type:String})],n.prototype,"buttonText"),h([s({type:String})],n.prototype,"configLang"),h([s({type:String})],n.prototype,"baseUrl"),h([s({type:String})],n.prototype,"nonprofitId"),h([s({type:String})],n.prototype,"storeId"),h([s({type:String})],n.prototype,"transactionId"),h([s({type:String})],n.prototype,"apiKey"),customElements.get("beam-share-button")||customElements.define("beam-share-button",n);const k={"--beam-share-button-fontFamily":"inherit","--beam-share-button-fontSize":"14px","--beam-share-button-fontWeight":"600","--beam-share-button-textTransform":"none","--beam-share-button-marginTop":"10px","--beam-share-button-marginBottom":"10px","--beam-share-button-padding":"8px 18px 8px 16px","--beam-share-button-lineHeight":"inherit","--beam-share-button-color":"#0A323C","--beam-share-button-backgroundColor":"#fff","--beam-share-button-borderRadius":"30px","--beam-share-button-borderColor":"#0A323C","--beam-share-button-borderWidth":"1px","--beam-share-button-width":"auto","--beam-share-button-hover-borderColor":"transparent","--beam-share-button-hover-backgroundColor":"#0A323C","--beam-share-button-hover-color":"#fff","--beam-share-button-icon-size":"16px","--beam-share-button-text-textDecoration":"none","--beam-share-dialog-padding":"30px 30px","--beam-share-title-fontSize":"30px","--beam-share-title-fontWeight":"bold","--beam-share-text-fontSize":"16px","--beam-share-text-lineHeight":"1.3","--beam-share-text-marginTop":"10px","--beam-share-image-borderRadius":"4px","--beam-share-image-width":"200px","--beam-share-image-margin":"20px","--beam-share-actions-margin":"30px 60px","--beam-share-action-icon-size":"32px","--beam-share-action-text-fontSize":"16px","--beam-share-action-text-lineHeight":"1.3","--beam-share-text-action-marginTop":"10px","--beam-share-close-backgroundColor":"#ffd522","--beam-share-close-text-color":"#000","--beam-share-close-padding":"12px","--beam-share-close-borderRadius":"4px","--beam-share-close-fontSize":"16px","--beam-share-close-fontWeight":"bold","--beam-share-close-focus-borderColor":"#c2dcff"};export{k as a,I as s};
|
|
172
|
-
//# sourceMappingURL=share-button-
|
|
172
|
+
//# sourceMappingURL=share-button-CqrSfHAr.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-button-C-QLknal.esm.js","sources":["../../src/shared/sync-element-heights.ts","../../src/shared/feature-detection.ts","../../src/shared/components/share-button.ts"],"sourcesContent":["import { isAllHtmlElements } from \"./is-all-html-elements\";\n\n/**\n * Synchronize heights of elements\n * @param {Array<HTMLElement|null>} elements - Elements to synchronize\n * @param {'contentLength' | 'currentHeight'} [options.source='contentLength'] -\n * Method used to get the height value to sync across elements. `contentLength`\n * (innerText.length) is reliable for pure text content when responding to\n * window resizing. Otherwise, currentHeight can be used to sync the tallest\n * element's height to all the other elements. Note that this works poorly\n * unless content is allowed to reflow with explicit height attributes removed\n * between synchronization calls.\n */\nexport const syncElementHeights = (\n elements: Array<HTMLElement | null> | NodeList,\n {\n source = \"contentLength\",\n }: {\n source?: \"contentLength\" | \"currentHeight\";\n } = {},\n) => {\n const els = elements instanceof NodeList ? Array.from(elements) : elements;\n\n if (els.length === 0 || !isAllHtmlElements(els)) {\n return;\n }\n\n const heightSource =\n source === \"contentLength\"\n ? els.sort((a, b) => {\n return b.innerText.length - a.innerText.length;\n })[0]\n : els.sort((a, b) => {\n return b.clientHeight - a.clientHeight;\n })[0];\n\n const syncedHeight = heightSource?.clientHeight || 0;\n\n for (const el of els) {\n if (el.clientHeight !== syncedHeight) {\n el.style[\"height\"] = syncedHeight + \"px\";\n }\n }\n};\n","export function isMobile() {\n return /Android|iPhone/i.test(navigator.userAgent);\n}\n\nexport function hasSystemShare() {\n return !!navigator.share;\n}\n","import { LitElement, html, render } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { urlToFile } from \"../files\";\nimport { isMobile } from \"../feature-detection\";\nimport { strings } from \"./strings/share-button\";\n\ninterface SlDialogElement extends HTMLElement {\n show: () => void;\n hide: () => void;\n}\n\nexport class BeamShareButton extends LitElement {\n @property({ type: String }) shareIcon: string | null = null;\n @property({ type: String }) imageUrl?: string | null = null;\n @property({ type: String }) brandName: string | null = null;\n @property({ type: String }) buttonText?: string | null = null;\n @property({ type: String }) configLang: LANGUAGES = \"en\";\n @property({ type: String }) baseUrl: string = DEFAULT_BASE_URL;\n @property({ type: String }) nonprofitId?: number | null = null;\n @property({ type: String }) storeId?: number | null = null;\n @property({ type: String }) transactionId?: number | null = null;\n @property({ type: String }) apiKey!: string;\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n async handleShareClick() {\n try {\n if (!this.imageUrl || !this.brandName || !this.configLang) return;\n await import(\"./_share-dialog-dependencies.js\");\n\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareImageButtonClick\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n\n if (isMobile()) {\n this.openSystemShareSheet(this.imageUrl);\n } else {\n this.handleShareDialog(this.imageUrl, this.brandName);\n }\n } catch (err) {\n console.error(\"Error sharing impact:\", err);\n }\n }\n\n async handleShareDialog(imageUrl: string, brandName: string) {\n if (!imageUrl) return;\n\n const existingDialog = this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement;\n\n if (existingDialog) {\n existingDialog.show();\n return;\n }\n\n await import(\"./_share-dialog-dependencies.js\"); // Import libraries async to reduce bundle size if share feature is unused\n\n const modalRoot = this.shadowRoot?.querySelector(\"#modal-root\") as HTMLElement;\n\n const file = await urlToFile(imageUrl);\n\n const dataUrl = URL.createObjectURL(file);\n\n const handleClickClose = () => {\n (this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement)?.hide();\n };\n\n const handleClickCopy = async () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"copyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": file })]);\n setTimeout(handleClickClose, 250);\n };\n\n const handleClickDownload = () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"downloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n setTimeout(handleClickClose, 250);\n };\n\n const dialogTemplate = html`\n <style>\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .share-dialog::part(panel) {\n padding: var(--beam-share-dialog-padding);\n text-align: center;\n }\n .share-title {\n font-size: var(--beam-share-title-fontSize);\n font-weight: var(--beam-share-title-fontWeight);\n }\n .share-text {\n font-size: var(--beam-share-text-fontSize);\n line-height: var(--beam-share-text-lineHeight);\n margin-top: var(--beam-share-text-marginTop);\n }\n .share-image {\n border-radius: var(--beam-share-image-borderRadius);\n width: var(--beam-share-image-width);\n display: block;\n margin: var(--beam-share-image-margin) auto;\n }\n .share-actions {\n margin: var(--beam-share-actions-margin);\n }\n .share-action-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 5px;\n }\n .share-action-icon {\n font-size: var(--beam-share-action-icon-size);\n }\n .share-action-button:hover .share-action-icon {\n scale: 1.1;\n }\n .share-action-text {\n font-size: var(--beam-share-action-text-fontSize);\n line-height: var(--beam-share-action-text-lineHeight);\n margin-top: var(--beam-share-text-action-marginTop);\n }\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .plain-link {\n text-decoration: none;\n color: inherit;\n }\n .share-close {\n display: block;\n background-color: var(--beam-share-close-backgroundColor);\n color: var(--beam-share-close-text-color);\n justify-content: center;\n padding: var(--beam-share-close-padding);\n border-radius: var(--beam-share-close-borderRadius);\n width: 100%;\n font-size: var(--beam-share-close-fontSize);\n font-weight: var(--beam-share-close-fontWeight);\n }\n .share-close:hover {\n outline: 2px solid var(--beam-share-close-focus-borderColor);\n }\n </style>\n <sl-dialog open label=\"${strings[this.configLang].impactShareTitle()}\" no-header class=\"share-dialog\">\n <h2 class=\"share-title\">${strings[this.configLang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.configLang].impactShareText({ brandName })}</p>\n <img\n data-speedsize-ignore=\"true\"\n src=\"${imageUrl}\"\n alt=\"${strings[this.configLang].impactShareTitle()}\"\n class=\"share-image\"\n />\n <div class=\"share-actions\" style=\"display: flex; justify-content: space-evenly\">\n <div style=\"flex: 1; text-align: center\">\n <button class=\"plain-button button share-action-button\" @click=\"${handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.configLang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareCopy()}</div>\n </button>\n </div>\n <div style=\"flex: 1; text-align: center\">\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.configLang].impactShareTitle()}\"\n href=\"${dataUrl}\"\n @click=\"${handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.configLang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n <button class=\"plain-button button share-close\" @click=\"${handleClickClose}\">\n ${strings[this.configLang].impactShareClose()}\n </button>\n </sl-dialog>\n `;\n if (modalRoot) {\n render(dialogTemplate, modalRoot);\n }\n }\n\n async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n const file = await urlToFile(imageUrl);\n\n if (navigator.share) {\n await navigator\n .share({\n files: [file],\n })\n .then(() => {\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareSheetShare\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n })\n .catch(() => null);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n render() {\n if (!this.imageUrl || !this.brandName || !this.configLang) return html``;\n return html`\n <style>\n .share-button {\n font-family: var(--beam-share-button-fontFamily);\n font-size: var(--beam-share-button-fontSize);\n font-weight: var(--beam-share-button-fontWeight);\n margin-top: var(--beam-share-button-marginTop);\n margin-bottom: var(--beam-share-button-marginBottom);\n text-transform: var(--beam-share-button-textTransform);\n line-height: var(--beam-share-button-lineHeight);\n background-color: var(--beam-share-button-backgroundColor);\n color: var(--beam-share-button-color, inherit);\n border-radius: var(--beam-share-button-borderRadius);\n border-color: var(--beam-share-button-borderColor);\n border-width: var(--beam-share-button-borderWidth);\n /* add extra padding on side without icon for optical alignment */\n padding: var(--beam-share-button-padding);\n width: var(--beam-share-button-width);\n transition: 0.15s;\n }\n .share-button:hover {\n background-color: var(--beam-share-button-hover-backgroundColor);\n color: var(--beam-share-button-hover-color);\n border-color: var(--beam-share-button-hover-borderColor);\n }\n .share-button-text {\n text-decoration: var(--beam-share-button-text-textDecoration);\n margin-left: 0.33em;\n }\n .share-button-icon {\n font-size: var(--beam-share-button-icon-size);\n }\n .button {\n cursor: pointer;\n }\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n </style>\n <button\n @click=\"${this.handleShareClick}\"\n baseUrl=\"${this.baseUrl}\"\n class=\"share-button share-button-inline button icon-button\"\n >\n <sl-icon\n name=\"${this.shareIcon}\"\n library=\"lucide\"\n label=\"${strings[this.configLang].impactShareButton()}\"\n class=\"share-button-icon\"\n ></sl-icon>\n <span class=\"share-button-text\">${this.buttonText || strings[this.configLang].impactShareButton()}</span>\n </button>\n <div id=\"modal-root\"></div>\n `;\n }\n}\n\ncustomElements.get(\"beam-share-button\") || customElements.define(\"beam-share-button\", BeamShareButton);\n\nexport const shareButtonConfigDefaults = {\n \"--beam-share-button-fontFamily\": \"inherit\",\n \"--beam-share-button-fontSize\": \"14px\",\n \"--beam-share-button-fontWeight\": \"600\",\n \"--beam-share-button-textTransform\": \"none\",\n \"--beam-share-button-marginTop\": \"10px\",\n \"--beam-share-button-marginBottom\": \"10px\",\n \"--beam-share-button-padding\": \"8px 18px 8px 16px\",\n \"--beam-share-button-lineHeight\": \"inherit\",\n \"--beam-share-button-color\": \"#0A323C\",\n \"--beam-share-button-backgroundColor\": \"#fff\",\n \"--beam-share-button-borderRadius\": \"30px\",\n \"--beam-share-button-borderColor\": \"#0A323C\",\n \"--beam-share-button-borderWidth\": \"1px\",\n\n \"--beam-share-button-width\": \"auto\",\n\n \"--beam-share-button-hover-borderColor\": \"transparent\",\n \"--beam-share-button-hover-backgroundColor\": \"#0A323C\",\n \"--beam-share-button-hover-color\": \"#fff\",\n\n \"--beam-share-button-icon-size\": \"16px\",\n\n \"--beam-share-button-text-textDecoration\": \"none\",\n\n \"--beam-share-dialog-padding\": \"30px 30px\",\n\n \"--beam-share-title-fontSize\": \"30px\",\n \"--beam-share-title-fontWeight\": \"bold\",\n\n \"--beam-share-text-fontSize\": \"16px\",\n \"--beam-share-text-lineHeight\": \"1.3\",\n \"--beam-share-text-marginTop\": \"10px\",\n\n \"--beam-share-image-borderRadius\": \"4px\",\n \"--beam-share-image-width\": \"200px\",\n \"--beam-share-image-margin\": \"20px\",\n\n \"--beam-share-actions-margin\": \"30px 60px\",\n \"--beam-share-action-icon-size\": \"32px\",\n\n \"--beam-share-action-text-fontSize\": \"16px\",\n \"--beam-share-action-text-lineHeight\": \"1.3\",\n \"--beam-share-text-action-marginTop\": \"10px\",\n\n \"--beam-share-close-backgroundColor\": \"#ffd522\",\n \"--beam-share-close-text-color\": \"#000\",\n \"--beam-share-close-padding\": \"12px\",\n \"--beam-share-close-borderRadius\": \"4px\",\n \"--beam-share-close-fontSize\": \"16px\",\n \"--beam-share-close-fontWeight\": \"bold\",\n\n \"--beam-share-close-focus-borderColor\": \"#c2dcff\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-share-button\": BeamShareButton;\n }\n}\n"],"names":["syncElementHeights","elements","source","els","isAllHtmlElements","syncedHeight","a","b","el","isMobile","v","o","l","e","n","r","i","BeamShareButton","LitElement","DEFAULT_BASE_URL","nonprofitId","storeId","transactionId","baseUrl","apiKey","postSocialShareAnalyticsEvent","err","imageUrl","brandName","existingDialog","modalRoot","file","urlToFile","dataUrl","handleClickClose","handleClickCopy","handleClickDownload","dialogTemplate","html","strings","render","__decorateClass","property","shareButtonConfigDefaults"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"share-button-CqrSfHAr.esm.js","sources":["../../src/shared/sync-element-heights.ts","../../src/shared/feature-detection.ts","../../src/shared/components/share-button.ts"],"sourcesContent":["import { isAllHtmlElements } from \"./is-all-html-elements\";\n\n/**\n * Synchronize heights of elements\n * @param {Array<HTMLElement|null>} elements - Elements to synchronize\n * @param {'contentLength' | 'currentHeight'} [options.source='contentLength'] -\n * Method used to get the height value to sync across elements. `contentLength`\n * (innerText.length) is reliable for pure text content when responding to\n * window resizing. Otherwise, currentHeight can be used to sync the tallest\n * element's height to all the other elements. Note that this works poorly\n * unless content is allowed to reflow with explicit height attributes removed\n * between synchronization calls.\n */\nexport const syncElementHeights = (\n elements: Array<HTMLElement | null> | NodeList,\n {\n source = \"contentLength\",\n }: {\n source?: \"contentLength\" | \"currentHeight\";\n } = {},\n) => {\n const els = elements instanceof NodeList ? Array.from(elements) : elements;\n\n if (els.length === 0 || !isAllHtmlElements(els)) {\n return;\n }\n\n const heightSource =\n source === \"contentLength\"\n ? els.sort((a, b) => {\n return b.innerText.length - a.innerText.length;\n })[0]\n : els.sort((a, b) => {\n return b.clientHeight - a.clientHeight;\n })[0];\n\n const syncedHeight = heightSource?.clientHeight || 0;\n\n for (const el of els) {\n if (el.clientHeight !== syncedHeight) {\n el.style[\"height\"] = syncedHeight + \"px\";\n }\n }\n};\n","export function isMobile() {\n return /Android|iPhone/i.test(navigator.userAgent);\n}\n\nexport function hasSystemShare() {\n return !!navigator.share;\n}\n","import { LitElement, html, render } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\nimport { postSocialShareAnalyticsEvent } from \"../../api-sdk/v2/users/events\";\nimport { DEFAULT_BASE_URL } from \"../../api-sdk/constants\";\nimport \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\nimport { LANGUAGES } from \"../../api-sdk/types\";\nimport { urlToFile } from \"../files\";\nimport { isMobile } from \"../feature-detection\";\nimport { strings } from \"./strings/share-button\";\n\ninterface SlDialogElement extends HTMLElement {\n show: () => void;\n hide: () => void;\n}\n\nexport class BeamShareButton extends LitElement {\n @property({ type: String }) shareIcon: string | null = null;\n @property({ type: String }) imageUrl?: string | null = null;\n @property({ type: String }) brandName: string | null = null;\n @property({ type: String }) buttonText?: string | null = null;\n @property({ type: String }) configLang: LANGUAGES = \"en\";\n @property({ type: String }) baseUrl: string = DEFAULT_BASE_URL;\n @property({ type: String }) nonprofitId?: number | null = null;\n @property({ type: String }) storeId?: number | null = null;\n @property({ type: String }) transactionId?: number | null = null;\n @property({ type: String }) apiKey!: string;\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n async handleShareClick() {\n try {\n if (!this.imageUrl || !this.brandName || !this.configLang) return;\n await import(\"./_share-dialog-dependencies.js\");\n\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareImageButtonClick\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n\n if (isMobile()) {\n this.openSystemShareSheet(this.imageUrl);\n } else {\n this.handleShareDialog(this.imageUrl, this.brandName);\n }\n } catch (err) {\n console.error(\"Error sharing impact:\", err);\n }\n }\n\n async handleShareDialog(imageUrl: string, brandName: string) {\n if (!imageUrl) return;\n\n const existingDialog = this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement;\n\n if (existingDialog) {\n existingDialog.show();\n return;\n }\n\n await import(\"./_share-dialog-dependencies.js\"); // Import libraries async to reduce bundle size if share feature is unused\n\n const modalRoot = this.shadowRoot?.querySelector(\"#modal-root\") as HTMLElement;\n\n const file = await urlToFile(imageUrl);\n\n const dataUrl = URL.createObjectURL(file);\n\n const handleClickClose = () => {\n (this.shadowRoot?.querySelector(\"sl-dialog\") as SlDialogElement)?.hide();\n };\n\n const handleClickCopy = async () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"copyImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n await navigator.clipboard.write([new ClipboardItem({ \"image/png\": file })]);\n setTimeout(handleClickClose, 250);\n };\n\n const handleClickDownload = () => {\n void postSocialShareAnalyticsEvent({\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n requestBody: {\n eventName: \"downloadImageButtonClick\",\n nonprofitId: this.nonprofitId,\n storeId: this.storeId,\n timestamp: Date.now(),\n transactionId: this.transactionId,\n },\n }).catch(() => null);\n setTimeout(handleClickClose, 250);\n };\n\n const dialogTemplate = html`\n <style>\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .share-dialog::part(panel) {\n padding: var(--beam-share-dialog-padding);\n text-align: center;\n }\n .share-title {\n font-size: var(--beam-share-title-fontSize);\n font-weight: var(--beam-share-title-fontWeight);\n }\n .share-text {\n font-size: var(--beam-share-text-fontSize);\n line-height: var(--beam-share-text-lineHeight);\n margin-top: var(--beam-share-text-marginTop);\n }\n .share-image {\n border-radius: var(--beam-share-image-borderRadius);\n width: var(--beam-share-image-width);\n display: block;\n margin: var(--beam-share-image-margin) auto;\n }\n .share-actions {\n margin: var(--beam-share-actions-margin);\n }\n .share-action-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 5px;\n }\n .share-action-icon {\n font-size: var(--beam-share-action-icon-size);\n }\n .share-action-button:hover .share-action-icon {\n scale: 1.1;\n }\n .share-action-text {\n font-size: var(--beam-share-action-text-fontSize);\n line-height: var(--beam-share-action-text-lineHeight);\n margin-top: var(--beam-share-text-action-marginTop);\n }\n .plain-button {\n border: none;\n background: none;\n font-size: inherit;\n font-family: inherit;\n }\n .plain-link {\n text-decoration: none;\n color: inherit;\n }\n .share-close {\n display: block;\n background-color: var(--beam-share-close-backgroundColor);\n color: var(--beam-share-close-text-color);\n justify-content: center;\n padding: var(--beam-share-close-padding);\n border-radius: var(--beam-share-close-borderRadius);\n width: 100%;\n font-size: var(--beam-share-close-fontSize);\n font-weight: var(--beam-share-close-fontWeight);\n }\n .share-close:hover {\n outline: 2px solid var(--beam-share-close-focus-borderColor);\n }\n </style>\n <sl-dialog open label=\"${strings[this.configLang].impactShareTitle()}\" no-header class=\"share-dialog\">\n <h2 class=\"share-title\">${strings[this.configLang].impactShareTitle()}</h2>\n <p class=\"share-text\">${strings[this.configLang].impactShareText({ brandName })}</p>\n <img\n data-speedsize-ignore=\"true\"\n src=\"${imageUrl}\"\n alt=\"${strings[this.configLang].impactShareTitle()}\"\n class=\"share-image\"\n />\n <div class=\"share-actions\" style=\"display: flex; justify-content: space-evenly\">\n <div style=\"flex: 1; text-align: center\">\n <button class=\"plain-button button share-action-button\" @click=\"${handleClickCopy}\">\n <sl-icon\n library=\"lucide\"\n name=\"copy\"\n label=\"${strings[this.configLang].impactShareCopy()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareCopy()}</div>\n </button>\n </div>\n <div style=\"flex: 1; text-align: center\">\n <a\n class=\"plain-button button share-action-button plain-link\"\n download=\"${strings[this.configLang].impactShareTitle()}\"\n href=\"${dataUrl}\"\n @click=\"${handleClickDownload}\"\n >\n <sl-icon\n library=\"lucide\"\n name=\"download\"\n label=\"${strings[this.configLang].impactShareDownload()}\"\n class=\"share-action-icon\"\n ></sl-icon>\n <div class=\"share-action-text\">${strings[this.configLang].impactShareDownload()}</div>\n </a>\n </div>\n </div>\n <button class=\"plain-button button share-close\" @click=\"${handleClickClose}\">\n ${strings[this.configLang].impactShareClose()}\n </button>\n </sl-dialog>\n `;\n if (modalRoot) {\n render(dialogTemplate, modalRoot);\n }\n }\n\n async openSystemShareSheet(imageUrl: string) {\n if (!imageUrl) return;\n\n const file = await urlToFile(imageUrl);\n\n if (navigator.share) {\n await navigator\n .share({\n files: [file],\n })\n .then(() => {\n const { nonprofitId, storeId, transactionId, baseUrl, apiKey } = this;\n void postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody: { eventName: \"shareSheetShare\", nonprofitId, storeId, timestamp: Date.now(), transactionId },\n }).catch(() => null);\n })\n .catch(() => null);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n }\n render() {\n if (!this.imageUrl || !this.brandName || !this.configLang) return html``;\n return html`\n <style>\n .share-button {\n font-family: var(--beam-share-button-fontFamily);\n font-size: var(--beam-share-button-fontSize);\n font-weight: var(--beam-share-button-fontWeight);\n margin-top: var(--beam-share-button-marginTop);\n margin-bottom: var(--beam-share-button-marginBottom);\n text-transform: var(--beam-share-button-textTransform);\n line-height: var(--beam-share-button-lineHeight);\n background-color: var(--beam-share-button-backgroundColor);\n color: var(--beam-share-button-color, inherit);\n border-radius: var(--beam-share-button-borderRadius);\n border-color: var(--beam-share-button-borderColor);\n border-width: var(--beam-share-button-borderWidth);\n /* add extra padding on side without icon for optical alignment */\n padding: var(--beam-share-button-padding);\n width: var(--beam-share-button-width);\n transition: 0.15s;\n }\n .share-button:hover {\n background-color: var(--beam-share-button-hover-backgroundColor);\n color: var(--beam-share-button-hover-color);\n border-color: var(--beam-share-button-hover-borderColor);\n }\n .share-button-text {\n text-decoration: var(--beam-share-button-text-textDecoration);\n margin-left: 0.33em;\n }\n .share-button-icon {\n font-size: var(--beam-share-button-icon-size);\n }\n .button {\n cursor: pointer;\n }\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n </style>\n <button\n @click=\"${this.handleShareClick}\"\n baseUrl=\"${this.baseUrl}\"\n class=\"share-button share-button-inline button icon-button\"\n >\n <sl-icon\n name=\"${this.shareIcon}\"\n library=\"lucide\"\n label=\"${strings[this.configLang].impactShareButton()}\"\n class=\"share-button-icon\"\n ></sl-icon>\n <span class=\"share-button-text\">${this.buttonText || strings[this.configLang].impactShareButton()}</span>\n </button>\n <div id=\"modal-root\"></div>\n `;\n }\n}\n\ncustomElements.get(\"beam-share-button\") || customElements.define(\"beam-share-button\", BeamShareButton);\n\nexport const shareButtonConfigDefaults = {\n \"--beam-share-button-fontFamily\": \"inherit\",\n \"--beam-share-button-fontSize\": \"14px\",\n \"--beam-share-button-fontWeight\": \"600\",\n \"--beam-share-button-textTransform\": \"none\",\n \"--beam-share-button-marginTop\": \"10px\",\n \"--beam-share-button-marginBottom\": \"10px\",\n \"--beam-share-button-padding\": \"8px 18px 8px 16px\",\n \"--beam-share-button-lineHeight\": \"inherit\",\n \"--beam-share-button-color\": \"#0A323C\",\n \"--beam-share-button-backgroundColor\": \"#fff\",\n \"--beam-share-button-borderRadius\": \"30px\",\n \"--beam-share-button-borderColor\": \"#0A323C\",\n \"--beam-share-button-borderWidth\": \"1px\",\n\n \"--beam-share-button-width\": \"auto\",\n\n \"--beam-share-button-hover-borderColor\": \"transparent\",\n \"--beam-share-button-hover-backgroundColor\": \"#0A323C\",\n \"--beam-share-button-hover-color\": \"#fff\",\n\n \"--beam-share-button-icon-size\": \"16px\",\n\n \"--beam-share-button-text-textDecoration\": \"none\",\n\n \"--beam-share-dialog-padding\": \"30px 30px\",\n\n \"--beam-share-title-fontSize\": \"30px\",\n \"--beam-share-title-fontWeight\": \"bold\",\n\n \"--beam-share-text-fontSize\": \"16px\",\n \"--beam-share-text-lineHeight\": \"1.3\",\n \"--beam-share-text-marginTop\": \"10px\",\n\n \"--beam-share-image-borderRadius\": \"4px\",\n \"--beam-share-image-width\": \"200px\",\n \"--beam-share-image-margin\": \"20px\",\n\n \"--beam-share-actions-margin\": \"30px 60px\",\n \"--beam-share-action-icon-size\": \"32px\",\n\n \"--beam-share-action-text-fontSize\": \"16px\",\n \"--beam-share-action-text-lineHeight\": \"1.3\",\n \"--beam-share-text-action-marginTop\": \"10px\",\n\n \"--beam-share-close-backgroundColor\": \"#ffd522\",\n \"--beam-share-close-text-color\": \"#000\",\n \"--beam-share-close-padding\": \"12px\",\n \"--beam-share-close-borderRadius\": \"4px\",\n \"--beam-share-close-fontSize\": \"16px\",\n \"--beam-share-close-fontWeight\": \"bold\",\n\n \"--beam-share-close-focus-borderColor\": \"#c2dcff\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-share-button\": BeamShareButton;\n }\n}\n"],"names":["syncElementHeights","elements","source","els","isAllHtmlElements","syncedHeight","a","b","el","isMobile","v","o","l","e","n","r","i","BeamShareButton","LitElement","DEFAULT_BASE_URL","nonprofitId","storeId","transactionId","baseUrl","apiKey","postSocialShareAnalyticsEvent","err","imageUrl","brandName","existingDialog","modalRoot","file","urlToFile","dataUrl","handleClickClose","handleClickCopy","handleClickDownload","dialogTemplate","html","strings","render","__decorateClass","property","shareButtonConfigDefaults"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as m,n as u,a as p,b as l}from"./lit-BEag9MFp.esm.js";import{r as d}from"./index-
|
|
1
|
+
import{i as m,n as u,a as p,b as l}from"./lit-BEag9MFp.esm.js";import{r as d}from"./index-tkscjKkq.esm.js";var h=Object.defineProperty,c=(a,o,i,e)=>{for(var r=void 0,s=a.length-1,n;s>=0;s--)(n=a[s])&&(r=n(o,i,r)||r);return r&&h(o,i,r),r};class t extends p{constructor(){super(...arguments),this.value=0,this.animateProgress=!0}render(){return l`<div class="progress-bar-container">
|
|
2
2
|
<style>
|
|
3
3
|
:host {
|
|
4
4
|
--beam-ProgressBar-value: ${this.value};
|
|
@@ -51,4 +51,4 @@ import{i as m,n as u,a as p,b as l}from"./lit-BEag9MFp.esm.js";import{r as d}fro
|
|
|
51
51
|
border-radius: var(--beam-ProgressBar-progress-border-radius, 8px);
|
|
52
52
|
}
|
|
53
53
|
`,c([u({type:Number})],t.prototype,"value"),c([u({type:Boolean})],t.prototype,"animateProgress"),customElements.get("beam-progress-bar")||customElements.define("beam-progress-bar",t);const b={"--beam-ProgressBar-border-radius":"8px","--beam-ProgressBar-progress-border-radius":"8px","--beam-ProgressBar-height":"8px","--beam-ProgressBar-color-background":"transparent","--beam-ProgressBar-border-width":"1px","--beam-ProgressBar-color-border":"currentColor","--beam-ProgressBar-color-bar":"currentColor","--beam-ProgressBar-animation-duration-base":"0s","--beam-ProgressBar-animation-duration-variable":"0s"};async function g({baseUrl:a,apiKey:o,requestBody:i}){try{const e=a+"/api/v4/events/socialShare",r=JSON.stringify(i);await d(e,{method:"POST",body:r,headers:{authorization:`Api-Key ${o}`}})}catch(e){console.error(e)}}const S=async a=>fetch(a).then(async o=>{const i=new URL(a),e=await o.blob();return new File([e],i.pathname,{type:e.type})}),B={en:{impactShareButton:()=>"Share to Grow Your Impact",impactShareText:({brandName:a=""})=>`Help ${a} reach their giving goal by sharing this cause on social media`,impactShareTitle:()=>"Share on Social Media",impactShareCopy:()=>"Copy",impactShareDownload:()=>"Download",impactShareClose:()=>"Close"},fr:{impactShareButton:()=>"Partagez pour augmentez votre cause",impactShareText:({brandName:a=""})=>`Aidez ${a} a atteindre leur objectif en partageant cette cause sur votre r\xE9seaux sociaux`,impactShareTitle:()=>"Partager sur votre r\xE9seaux sociaux",impactShareCopy:()=>"Copier",impactShareDownload:()=>"T\xE9l\xE9charger",impactShareClose:()=>"Fermer"},de:{impactShareButton:()=>"Teil, um unserem Beitrag zu erh\xF6hen",impactShareText:({brandName:a=""})=>`Hilf ${a} ihre Spendenziel zu erreichen`,impactShareTitle:()=>"In den sozialen Medien teilen",impactShareCopy:()=>"Kopieren",impactShareDownload:()=>"Herunterladen",impactShareClose:()=>"Schlie\xDFen"},es:{impactShareButton:()=>"Comparte para aumentar nuestro impacto",impactShareText:({brandName:a=""})=>`Comparte en las redes sociales para ayudar a ${a} a alcanzar su objetivo.`,impactShareTitle:()=>"Compartir en redes sociales",impactShareCopy:()=>"Copiar",impactShareDownload:()=>"Descargar",impactShareClose:()=>"Cerrar"},it:{impactShareButton:()=>"Condividi, aiutaci a fare la differenza",impactShareText:({brandName:a=""})=>`Aiuta ${a} a raggiungere il suo obiettivo di donazione condividendo questa causa sui social media.`,impactShareTitle:()=>"Condividi, aiutaci a fare la differenza",impactShareCopy:()=>"Copia",impactShareDownload:()=>"Scarica",impactShareClose:()=>"Chiudi"},pl:{impactShareButton:()=>"Udost\u0119pnij, by szerzy\u0107 nasz\u0105 misj\u0119",impactShareText:({brandName:a=""})=>`Pom\xF3\u017C ${a} osi\u0105gn\u0105\u0107 cel i podziel si\u0119 t\u0105 inicjatyw\u0105 na swoim profilu`,impactShareTitle:()=>"Udost\u0119pnij na swoim profilu",impactShareCopy:()=>"Kopiuj",impactShareDownload:()=>"Pobierz",impactShareClose:()=>"Zamknij"},ja:{impactShareButton:()=>"\u6D3B\u52D5\u306E\u8F2A\u3092\u5E83\u3052\u3088\u3046",impactShareText:({brandName:a=""})=>`${a}\u306E\u5BC4\u4ED8\u76EE\u6A19\u9054\u6210\u306B\u5411\u3051\u3066\u3001SNS\u3067\u3053\u306E\u6D3B\u52D5\u3092\u662F\u975E\u30B7\u30A7\u30A2\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,impactShareTitle:()=>"SNS\u3067\u30B7\u30A7\u30A2\u3059\u308B",impactShareCopy:()=>"\u30B3\u30D4\u30FC",impactShareDownload:()=>"\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",impactShareClose:()=>"\u9589\u3058\u308B"}};export{b as a,g as p,B as s,S as u};
|
|
54
|
-
//# sourceMappingURL=share-button-
|
|
54
|
+
//# sourceMappingURL=share-button-DP2wLhmP.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-button-
|
|
1
|
+
{"version":3,"file":"share-button-DP2wLhmP.esm.js","sources":["../../src/shared/components/progress-bar.ts","../../src/api-sdk/v2/users/events.ts","../../src/shared/files.ts","../../src/shared/components/strings/share-button.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\n\nexport class BeamProgressBar extends LitElement {\n @property({ type: Number }) value = 0;\n @property({ type: Boolean }) animateProgress = true;\n\n render() {\n return html`<div class=\"progress-bar-container\">\n <style>\n :host {\n --beam-ProgressBar-value: ${this.value};\n }\n </style>\n <div class=\"progress-bar\"></div>\n </div>`;\n }\n\n static styles = css`\n :host {\n display: inline-block;\n min-width: 20px;\n }\n\n .progress-bar-container {\n border-radius: var(--beam-ProgressBar-border-radius, 8px);\n height: var(--beam-ProgressBar-height, 8px);\n padding: 0;\n width: 100%;\n background: var(--beam-ProgressBar-color-background, lightgray);\n position: relative;\n border: var(--beam-ProgressBar-border-width, 1px) solid var(--beam-ProgressBar-color-border, currentColor);\n overflow: hidden;\n }\n\n @keyframes animate-bar {\n 0% {\n width: 0;\n }\n\n 100% {\n width: calc(var(--beam-ProgressBar-value) * 1%);\n }\n }\n\n .progress-bar {\n width: calc(var(--beam-ProgressBar-value, 0) * 1%);\n height: 100%;\n position: absolute;\n background: var(--beam-ProgressBar-color-bar, linear-gradient(to right, currentColor, currentColor));\n left: 0;\n bottom: 0;\n top: 0;\n background-clip: padding-box;\n animation-duration: calc(\n var(--beam-ProgressBar-animation-duration-base, 0s) + var(--beam-ProgressBar-animation-duration-variable, 0s) *\n var(--beam-ProgressBar-value) / 100\n );\n animation-iteration-count: 1;\n animation-name: animate-bar;\n animation-timing-function: linear;\n border-radius: var(--beam-ProgressBar-progress-border-radius, 8px);\n }\n `;\n}\n\ncustomElements.get(\"beam-progress-bar\") || customElements.define(\"beam-progress-bar\", BeamProgressBar);\n\nexport const progressBarConfigDefaults = {\n \"--beam-ProgressBar-border-radius\": \"8px\",\n \"--beam-ProgressBar-progress-border-radius\": \"8px\",\n \"--beam-ProgressBar-height\": \"8px\",\n \"--beam-ProgressBar-color-background\": \"transparent\",\n \"--beam-ProgressBar-border-width\": \"1px\",\n \"--beam-ProgressBar-color-border\": \"currentColor\",\n \"--beam-ProgressBar-color-bar\": \"currentColor\",\n \"--beam-ProgressBar-animation-duration-base\": \"0s\",\n \"--beam-ProgressBar-animation-duration-variable\": \"0s\",\n} as const;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"beam-progress-bar\": BeamProgressBar;\n }\n}\n","import { TUrl } from \"../../types\";\nimport { fetchJson } from \"../../fetch-json\";\n\nexport interface SocialShareAnalyticsEventPayload {\n eventName?: string | null;\n nonprofitId?: number | null;\n storeId?: number | null;\n transactionId?: number | null;\n timestamp?: number | null;\n}\n\nexport async function postSocialShareAnalyticsEvent({\n baseUrl,\n apiKey,\n requestBody,\n}: {\n baseUrl: TUrl;\n apiKey: string;\n requestBody: SocialShareAnalyticsEventPayload;\n}): Promise<void> {\n try {\n const url = baseUrl + \"/api/v4/events/socialShare\";\n const body = JSON.stringify(requestBody);\n await fetchJson(url, {\n method: \"POST\",\n body,\n headers: { authorization: `Api-Key ${apiKey}` },\n });\n } catch (error: any) {\n console.error(error);\n }\n}\n","export const urlToFile = async (url: string) => {\n return fetch(url).then(async (r) => {\n const u = new URL(url);\n const blob = await r.blob();\n return new File([blob], u.pathname, { type: blob.type });\n });\n};\n","export const strings = {\n en: {\n impactShareButton: () => `Share to Grow Your Impact`,\n impactShareText: ({ brandName = \"\" }) =>\n `Help ${brandName} reach their giving goal by sharing this cause on social media`,\n impactShareTitle: () => `Share on Social Media`,\n impactShareCopy: () => `Copy`,\n impactShareDownload: () => `Download`,\n impactShareClose: () => `Close`,\n },\n fr: {\n impactShareButton: () => `Partagez pour augmentez votre cause`,\n impactShareText: ({ brandName = \"\" }) =>\n `Aidez ${brandName} a atteindre leur objectif en partageant cette cause sur votre réseaux sociaux`,\n impactShareTitle: () => `Partager sur votre réseaux sociaux`,\n impactShareCopy: () => `Copier`,\n impactShareDownload: () => `Télécharger`,\n impactShareClose: () => `Fermer`,\n },\n de: {\n impactShareButton: () => `Teil, um unserem Beitrag zu erhöhen`, // TODO: Update translation copy SDK-2210\n impactShareText: ({ brandName = \"\" }) => `Hilf ${brandName} ihre Spendenziel zu erreichen`,\n impactShareTitle: () => `In den sozialen Medien teilen`,\n impactShareCopy: () => `Kopieren`,\n impactShareDownload: () => `Herunterladen`,\n impactShareClose: () => `Schließen`,\n },\n es: {\n impactShareButton: () => \"Comparte para aumentar nuestro impacto\", // TODO: Update translation copy SDK-2210\n impactShareText: ({ brandName = \"\" }) =>\n `Comparte en las redes sociales para ayudar a ${brandName} a alcanzar su objetivo.`,\n impactShareTitle: () => \"Compartir en redes sociales\",\n impactShareCopy: () => \"Copiar\",\n impactShareDownload: () => \"Descargar\",\n impactShareClose: () => \"Cerrar\",\n },\n it: {\n impactShareButton: () => \"Condividi, aiutaci a fare la differenza\", // TODO: Update translation copy SDK-2210\n impactShareText: ({ brandName = \"\" }) =>\n `Aiuta ${brandName} a raggiungere il suo obiettivo di donazione condividendo questa causa sui social media.`,\n impactShareTitle: () => \"Condividi, aiutaci a fare la differenza\",\n impactShareCopy: () => \"Copia\",\n impactShareDownload: () => \"Scarica\",\n impactShareClose: () => \"Chiudi\",\n },\n pl: {\n impactShareButton: () => `Udostępnij, by szerzyć naszą misję`, // TODO: Update translation copy SDK-2210\n impactShareText: ({ brandName = \"\" }) =>\n `Pomóż ${brandName} osiągnąć cel i podziel się tą inicjatywą na swoim profilu`,\n impactShareTitle: () => `Udostępnij na swoim profilu`,\n impactShareCopy: () => `Kopiuj`,\n impactShareDownload: () => `Pobierz`,\n impactShareClose: () => `Zamknij`,\n },\n ja: {\n impactShareButton: () => `活動の輪を広げよう`,\n impactShareText: ({ brandName = \"\" }) =>\n `${brandName}の寄付目標達成に向けて、SNSでこの活動を是非シェアしてください。`,\n impactShareTitle: () => `SNSでシェアする`,\n impactShareCopy: () => `コピー`,\n impactShareDownload: () => `ダウンロード`,\n impactShareClose: () => `閉じる`,\n },\n};\n"],"names":["BeamProgressBar","LitElement","html","css","__decorateClass","property","progressBarConfigDefaults","postSocialShareAnalyticsEvent","baseUrl","apiKey","requestBody","url","body","fetchJson","error","urlToFile","r","u","blob","strings","brandName"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as ft}from"./handlebars-3tRO54kz.esm.js";var Y={},Z={},Ke={},Be={},vt;function P(){return vt||(vt=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r.Log=r.LogLevel=void 0;const g=" DEBUG ",y=" INFO ",h=" WARN ",v=" ERROR ";function d(c){return c.unshift("[Statsig]"),c}r.LogLevel={None:0,Error:1,Warn:2,Info:3,Debug:4};class u{static info(...l){u.level>=r.LogLevel.Info&&console.info(y,...d(l))}static debug(...l){u.level>=r.LogLevel.Debug&&console.debug(g,...d(l))}static warn(...l){u.level>=r.LogLevel.Warn&&console.warn(h,...d(l))}static error(...l){u.level>=r.LogLevel.Error&&console.error(v,...d(l))}}r.Log=u,u.level=r.LogLevel.Warn})(Be)),Be}var ht;function H(){return ht||(ht=1,(function(r){var g,y,h;Object.defineProperty(r,"__esModule",{value:!0}),r._getInstance=r._getStatsigGlobalFlag=r._getStatsigGlobal=void 0;const v=P(),d=()=>{try{return typeof __STATSIG__<"u"?__STATSIG__:n}catch{return n}};r._getStatsigGlobal=d;const u=s=>(0,r._getStatsigGlobal)()[s];r._getStatsigGlobalFlag=u;const c=s=>{const i=(0,r._getStatsigGlobal)();return s?i.instances&&i.instances[s]:(i.instances&&Object.keys(i.instances).length>1&&v.Log.warn("Call made to Statsig global instance without an SDK key but there is more than one client instance. If you are using mulitple clients, please specify the SDK key."),i.firstInstance)};r._getInstance=c;const l="__STATSIG__",a=typeof window<"u"?window:{},o=typeof ft<"u"?ft:{},e=typeof globalThis<"u"?globalThis:{},n=(h=(y=(g=a[l])!==null&&g!==void 0?g:o[l])!==null&&y!==void 0?y:e[l])!==null&&h!==void 0?h:{instance:r._getInstance};a[l]=n,o[l]=n,e[l]=n})(Ke)),Ke}var xe={},yt;function $e(){return yt||(yt=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r.Diagnostics=void 0;const g=new Map,y="start",h="end",v="statsig::diagnostics";r.Diagnostics={_getMarkers:a=>g.get(a),_markInitOverallStart:a=>{c(a,d({},y,"overall"))},_markInitOverallEnd:(a,o,e)=>{c(a,d({success:o,error:o?void 0:{name:"InitializeError",message:"Failed to initialize"},evaluationDetails:e},h,"overall"))},_markInitNetworkReqStart:(a,o)=>{c(a,d(o,y,"initialize","network_request"))},_markInitNetworkReqEnd:(a,o)=>{c(a,d(o,h,"initialize","network_request"))},_markInitProcessStart:a=>{c(a,d({},y,"initialize","process"))},_markInitProcessEnd:(a,o)=>{c(a,d(o,h,"initialize","process"))},_clearMarkers:a=>{g.delete(a)},_formatError(a){if(a&&typeof a=="object")return{code:l(a,"code"),name:l(a,"name"),message:l(a,"message")}},_getDiagnosticsData(a,o,e,n){var s;return{success:a?.ok===!0,statusCode:a?.status,sdkRegion:(s=a?.headers)===null||s===void 0?void 0:s.get("x-statsig-region"),isDelta:e.includes('"is_delta":true')===!0?!0:void 0,attempt:o,error:r.Diagnostics._formatError(n)}},_enqueueDiagnosticsEvent(a,o,e,n){const s=r.Diagnostics._getMarkers(e);if(s==null||s.length<=0)return-1;const i=s[s.length-1].timestamp-s[0].timestamp;r.Diagnostics._clearMarkers(e);const t=u(a,{context:"initialize",markers:s.slice(),statsigOptions:n});return o.enqueue(t),i}};function d(a,o,e,n){return Object.assign({key:e,action:o,step:n,timestamp:Date.now()},a)}function u(a,o){return{eventName:v,user:a,value:null,metadata:o,time:Date.now()}}function c(a,o){var e;const n=(e=g.get(a))!==null&&e!==void 0?e:[];n.push(o),g.set(a,n)}function l(a,o){if(o in a)return a[o]}})(xe)),xe}var ee={},te={},Ge={},ne={},mt;function ze(){if(mt)return ne;mt=1,Object.defineProperty(ne,"__esModule",{value:!0}),ne._isTypeMatch=ne._typeOf=void 0;function r(y){return Array.isArray(y)?"array":typeof y}ne._typeOf=r;function g(y,h){const v=d=>Array.isArray(d)?"array":typeof d;return v(y)===v(h)}return ne._isTypeMatch=g,ne}var St;function ve(){return St||(St=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r._getSortedObject=r._DJB2Object=r._DJB2=void 0;const g=ze(),y=d=>{let u=0;for(let c=0;c<d.length;c++){const l=d.charCodeAt(c);u=(u<<5)-u+l,u=u&u}return String(u>>>0)};r._DJB2=y;const h=(d,u)=>(0,r._DJB2)(JSON.stringify((0,r._getSortedObject)(d,u)));r._DJB2Object=h;const v=(d,u)=>{if(d==null)return null;const c=Object.keys(d).sort(),l={};return c.forEach(a=>{const o=d[a];if(u===0||(0,g._typeOf)(o)!=="object"){l[a]=o;return}l[a]=(0,r._getSortedObject)(o,u!=null?u-1:u)}),l};r._getSortedObject=v})(Ge)),Ge}var pt;function Le(){if(pt)return te;pt=1,Object.defineProperty(te,"__esModule",{value:!0}),te._getStorageKey=te._getUserStorageKey=void 0;const r=ve();function g(h,v,d){var u;if(d)return d(h,v);const c=v&&v.customIDs?v.customIDs:{},l=[`uid:${(u=v?.userID)!==null&&u!==void 0?u:""}`,`cids:${Object.keys(c).sort((a,o)=>a.localeCompare(o)).map(a=>`${a}-${c[a]}`).join(",")}`,`k:${h}`];return(0,r._DJB2)(l.join("|"))}te._getUserStorageKey=g;function y(h,v,d){return v?g(h,v,d):(0,r._DJB2)(`k:${h}`)}return te._getStorageKey=y,te}var Ve={},bt;function Ae(){return bt||(bt=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r.NetworkParam=r.NetworkDefault=r.Endpoint=void 0,r.Endpoint={_initialize:"initialize",_rgstr:"rgstr",_download_config_specs:"download_config_specs"},r.NetworkDefault={[r.Endpoint._rgstr]:"https://prodregistryv2.org/v1",[r.Endpoint._initialize]:"https://featureassets.org/v1",[r.Endpoint._download_config_specs]:"https://api.statsigcdn.com/v1"},r.NetworkParam={EventCount:"ec",SdkKey:"k",SdkType:"st",SdkVersion:"sv",Time:"t",SessionID:"sid",StatsigEncoded:"se",IsGzipped:"gz"}})(Ve)),Ve}var Je={},Et;function re(){return Et||(Et=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r._getUnloadEvent=r._getCurrentPageUrlSafe=r._addDocumentEventListenerSafe=r._addWindowEventListenerSafe=r._isServerEnv=r._getDocumentSafe=r._getWindowSafe=void 0;const g=()=>typeof window<"u"?window:null;r._getWindowSafe=g;const y=()=>{var l;const a=(0,r._getWindowSafe)();return(l=a?.document)!==null&&l!==void 0?l:null};r._getDocumentSafe=y;const h=()=>{if((0,r._getDocumentSafe)()!==null)return!1;const l=typeof process<"u"&&process.versions!=null&&process.versions.node!=null;return typeof EdgeRuntime=="string"||l};r._isServerEnv=h;const v=(l,a)=>{const o=(0,r._getWindowSafe)();typeof o?.addEventListener=="function"&&o.addEventListener(l,a)};r._addWindowEventListenerSafe=v;const d=(l,a)=>{const o=(0,r._getDocumentSafe)();typeof o?.addEventListener=="function"&&o.addEventListener(l,a)};r._addDocumentEventListenerSafe=d;const u=()=>{var l;try{return(l=(0,r._getWindowSafe)())===null||l===void 0?void 0:l.location.href.split(/[?#]/)[0]}catch{return}};r._getCurrentPageUrlSafe=u;const c=()=>{const l=(0,r._getWindowSafe)();return l&&"onpagehide"in l?"pagehide":"beforeunload"};r._getUnloadEvent=c})(Je)),Je}var q={},Dt;function wt(){if(Dt)return q;Dt=1,Object.defineProperty(q,"__esModule",{value:!0}),q._createLayerParameterExposure=q._createConfigExposure=q._mapExposures=q._createGateExposure=q._isExposureEvent=void 0;const r="statsig::config_exposure",g="statsig::gate_exposure",y="statsig::layer_exposure",h=(o,e,n,s,i)=>(n.bootstrapMetadata&&(s.bootstrapMetadata=n.bootstrapMetadata),{eventName:o,user:e,value:null,metadata:a(n,s),secondaryExposures:i,time:Date.now()}),v=({eventName:o})=>o===g||o===r||o===y;q._isExposureEvent=v;const d=(o,e,n)=>{var s,i,t;const _={gate:e.name,gateValue:String(e.value),ruleID:e.ruleID};return((s=e.__evaluation)===null||s===void 0?void 0:s.version)!=null&&(_.configVersion=e.__evaluation.version),h(g,o,e.details,_,u((t=(i=e.__evaluation)===null||i===void 0?void 0:i.secondary_exposures)!==null&&t!==void 0?t:[],n))};q._createGateExposure=d;function u(o,e){return o.map(n=>typeof n=="string"?(e??{})[n]:n).filter(n=>n!=null)}q._mapExposures=u;const c=(o,e,n)=>{var s,i,t,_;const m={config:e.name,ruleID:e.ruleID};return((s=e.__evaluation)===null||s===void 0?void 0:s.version)!=null&&(m.configVersion=e.__evaluation.version),((i=e.__evaluation)===null||i===void 0?void 0:i.passed)!=null&&(m.rulePassed=String(e.__evaluation.passed)),h(r,o,e.details,m,u((_=(t=e.__evaluation)===null||t===void 0?void 0:t.secondary_exposures)!==null&&_!==void 0?_:[],n))};q._createConfigExposure=c;const l=(o,e,n,s)=>{var i,t,_,m,f,E;const D=e.__evaluation,S=((i=D?.explicit_parameters)===null||i===void 0?void 0:i.includes(n))===!0;let p="",w=(t=D?.undelegated_secondary_exposures)!==null&&t!==void 0?t:[];S&&(p=(_=D.allocated_experiment_name)!==null&&_!==void 0?_:"",w=D.secondary_exposures);const k=(m=e.__evaluation)===null||m===void 0?void 0:m.parameter_rule_ids,C={config:e.name,parameterName:n,ruleID:(f=k?.[n])!==null&&f!==void 0?f:e.ruleID,allocatedExperiment:p,isExplicitParameter:String(S)};return((E=e.__evaluation)===null||E===void 0?void 0:E.version)!=null&&(C.configVersion=e.__evaluation.version),h(y,o,e.details,C,u(w,s))};q._createLayerParameterExposure=l;const a=(o,e)=>(e.reason=o.reason,o.lcut&&(e.lcut=String(o.lcut)),o.receivedAt&&(e.receivedAt=String(o.receivedAt)),e);return q}var ie={},kt;function Pe(){return kt||(kt=1,Object.defineProperty(ie,"__esModule",{value:!0}),ie.LoggingEnabledOption=ie.LogEventCompressionMode=void 0,ie.LogEventCompressionMode={Disabled:"d",Enabled:"e",Forced:"f"},ie.LoggingEnabledOption={disabled:"disabled",browserOnly:"browser-only",always:"always"}),ie}var We={},Ot;function X(){return Ot||(Ot=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r._setObjectInStorage=r._getObjectFromStorage=r.Storage=void 0;const g=P(),y=re(),h={},v={isReady:()=>!0,isReadyResolver:()=>null,getProviderName:()=>"InMemory",getItem:e=>h[e]?h[e]:null,setItem:(e,n)=>{h[e]=n},removeItem:e=>{delete h[e]},getAllKeys:()=>Object.keys(h)};let d=null;try{const e=(0,y._getWindowSafe)();e&&e.localStorage&&typeof e.localStorage.getItem=="function"&&(d={isReady:()=>!0,isReadyResolver:()=>null,getProviderName:()=>"LocalStorage",getItem:n=>e.localStorage.getItem(n),setItem:(n,s)=>e.localStorage.setItem(n,s),removeItem:n=>e.localStorage.removeItem(n),getAllKeys:()=>Object.keys(e.localStorage)})}catch{g.Log.warn("Failed to setup localStorageProvider.")}let u=d??v,c=u;function l(e){try{return e()}catch(n){if(n instanceof Error&&n.name==="SecurityError")return r.Storage._setProvider(v),null;if(n instanceof Error&&n.name==="QuotaExceededError"){const i=r.Storage.getAllKeys().filter(t=>t.startsWith("statsig."));n.message=`${n.message}. Statsig Keys: ${i.length}`}throw n}}r.Storage={isReady:()=>c.isReady(),isReadyResolver:()=>c.isReadyResolver(),getProviderName:()=>c.getProviderName(),getItem:e=>l(()=>c.getItem(e)),setItem:(e,n)=>l(()=>c.setItem(e,n)),removeItem:e=>c.removeItem(e),getAllKeys:()=>c.getAllKeys(),_setProvider:e=>{u=e,c=e},_setDisabled:e=>{e?c=v:c=u}};function a(e){const n=r.Storage.getItem(e);return JSON.parse(n??"null")}r._getObjectFromStorage=a;function o(e,n){r.Storage.setItem(e,JSON.stringify(n))}r._setObjectInStorage=o})(We)),We}var be={},It;function Ct(){if(It)return be;It=1,Object.defineProperty(be,"__esModule",{value:!0}),be.UrlConfiguration=void 0;const r=ve(),g=Ae(),y={[g.Endpoint._initialize]:"i",[g.Endpoint._rgstr]:"e",[g.Endpoint._download_config_specs]:"d"};let h=class{constructor(d,u,c,l){this.customUrl=null,this.fallbackUrls=null,this.endpoint=d,this.endpointDnsKey=y[d],u&&(this.customUrl=u),!u&&c&&(this.customUrl=c.endsWith("/")?`${c}${d}`:`${c}/${d}`),l&&(this.fallbackUrls=l);const a=g.NetworkDefault[d];this.defaultUrl=`${a}/${d}`}getUrl(){var d;return(d=this.customUrl)!==null&&d!==void 0?d:this.defaultUrl}getChecksum(){var d;const u=((d=this.fallbackUrls)!==null&&d!==void 0?d:[]).sort().join(",");return(0,r._DJB2)(this.customUrl+u)}};return be.UrlConfiguration=h,be}var He={},Rt;function Xe(){return Rt||(Rt=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r._notifyVisibilityChanged=r._subscribeToVisiblityChanged=r._isUnloading=r._isCurrentlyVisible=void 0;const g=re(),y="foreground",h="background",v=[];let d=y,u=!1;const c=()=>d===y;r._isCurrentlyVisible=c;const l=()=>u;r._isUnloading=l;const a=e=>{v.unshift(e)};r._subscribeToVisiblityChanged=a;const o=e=>{e!==d&&(d=e,v.forEach(n=>n(e)))};r._notifyVisibilityChanged=o,(0,g._addWindowEventListenerSafe)("focus",()=>{u=!1,(0,r._notifyVisibilityChanged)(y)}),(0,g._addWindowEventListenerSafe)("blur",()=>(0,r._notifyVisibilityChanged)(h)),(0,g._addDocumentEventListenerSafe)("visibilitychange",()=>{(0,r._notifyVisibilityChanged)(document.visibilityState==="visible"?y:h)}),(0,g._addWindowEventListenerSafe)((0,g._getUnloadEvent)(),()=>{u=!0,(0,r._notifyVisibilityChanged)(h)})})(He)),He}var Ut;function Mt(){if(Ut)return ee;Ut=1;var r=ee&&ee.__awaiter||function(D,S,p,w){function k(C){return C instanceof p?C:new p(function(L){L(C)})}return new(p||(p=Promise))(function(C,L){function T(B){try{W(w.next(B))}catch(I){L(I)}}function J(B){try{W(w.throw(B))}catch(I){L(I)}}function W(B){B.done?C(B.value):k(B.value).then(T,J)}W((w=w.apply(D,S||[])).next())})};Object.defineProperty(ee,"__esModule",{value:!0}),ee.EventLogger=void 0;const g=Le(),y=ve(),h=P(),v=Ae(),d=re(),u=wt(),c=Pe(),l=X(),a=Ct(),o=Xe(),e=100,n=1e4,s=1e3,i=6e5,t=500,_=200,m={},f={Startup:"startup",GainedFocus:"gained_focus"};let E=class me{static _safeFlushAndForget(S){var p;(p=m[S])===null||p===void 0||p.flush().catch(()=>{})}static _safeRetryFailedLogs(S){var p;(p=m[S])===null||p===void 0||p._retryFailedLogs(f.GainedFocus)}constructor(S,p,w,k){var C,L;this._sdkKey=S,this._emitter=p,this._network=w,this._options=k,this._queue=[],this._lastExposureTimeMap={},this._nonExposedChecks={},this._hasRunQuickFlush=!1,this._creationTime=Date.now(),this._loggingEnabled=(C=k?.loggingEnabled)!==null&&C!==void 0?C:k?.disableLogging===!0?c.LoggingEnabledOption.disabled:c.LoggingEnabledOption.browserOnly,k?.loggingEnabled&&k.disableLogging!==void 0&&h.Log.warn("Detected both loggingEnabled and disableLogging options. loggingEnabled takes precedence - please remove disableLogging."),this._maxQueueSize=(L=k?.loggingBufferMaxSize)!==null&&L!==void 0?L:e;const T=k?.networkConfig;this._logEventUrlConfig=new a.UrlConfiguration(v.Endpoint._rgstr,T?.logEventUrl,T?.api,T?.logEventFallbackUrls)}setLogEventCompressionMode(S){this._network.setLogEventCompressionMode(S)}setLoggingEnabled(S){this._loggingEnabled=S}enqueue(S){this._shouldLogEvent(S)&&(this._normalizeAndAppendEvent(S),this._quickFlushIfNeeded(),this._queue.length>this._maxQueueSize&&me._safeFlushAndForget(this._sdkKey))}incrementNonExposureCount(S){var p;const w=(p=this._nonExposedChecks[S])!==null&&p!==void 0?p:0;this._nonExposedChecks[S]=w+1}reset(){this._lastExposureTimeMap={}}start(){var S;const p=(0,d._isServerEnv)();p&&((S=this._options)===null||S===void 0?void 0:S.loggingEnabled)!=="always"||(m[this._sdkKey]=this,p||(0,o._subscribeToVisiblityChanged)(w=>{w==="background"?me._safeFlushAndForget(this._sdkKey):w==="foreground"&&me._safeRetryFailedLogs(this._sdkKey)}),this._retryFailedLogs(f.Startup),this._startBackgroundFlushInterval())}stop(){return r(this,void 0,void 0,function*(){this._flushIntervalId&&(clearInterval(this._flushIntervalId),this._flushIntervalId=null),delete m[this._sdkKey],yield this.flush()})}flush(){return r(this,void 0,void 0,function*(){if(this._appendAndResetNonExposedChecks(),this._queue.length===0)return;const S=this._queue;this._queue=[],yield this._sendEvents(S)})}_quickFlushIfNeeded(){this._hasRunQuickFlush||(this._hasRunQuickFlush=!0,!(Date.now()-this._creationTime>_)&&setTimeout(()=>me._safeFlushAndForget(this._sdkKey),_))}_shouldLogEvent(S){var p;if(((p=this._options)===null||p===void 0?void 0:p.loggingEnabled)!=="always"&&(0,d._isServerEnv)())return!1;if(!(0,u._isExposureEvent)(S))return!0;const w=S.user?S.user:{statsigEnvironment:void 0},k=(0,g._getUserStorageKey)(this._sdkKey,w),C=S.metadata?S.metadata:{},L=[S.eventName,k,C.gate,C.config,C.ruleID,C.allocatedExperiment,C.parameterName,String(C.isExplicitParameter),C.reason].join("|"),T=this._lastExposureTimeMap[L],J=Date.now();return T&&J-T<i?!1:(Object.keys(this._lastExposureTimeMap).length>s&&(this._lastExposureTimeMap={}),this._lastExposureTimeMap[L]=J,!0)}_sendEvents(S){var p,w;return r(this,void 0,void 0,function*(){if(this._loggingEnabled==="disabled")return this._saveFailedLogsToStorage(S),!1;try{const C=(0,o._isUnloading)()&&this._network.isBeaconSupported()&&((w=(p=this._options)===null||p===void 0?void 0:p.networkConfig)===null||w===void 0?void 0:w.networkOverrideFunc)==null;return this._emitter({name:"pre_logs_flushed",events:S}),(C?this._sendEventsViaBeacon(S):yield this._sendEventsViaPost(S)).success?(this._emitter({name:"logs_flushed",events:S}),!0):(h.Log.warn("Failed to flush events."),this._saveFailedLogsToStorage(S),!1)}catch{return h.Log.warn("Failed to flush events."),!1}})}_sendEventsViaPost(S){var p;return r(this,void 0,void 0,function*(){const w=yield this._network.post(this._getRequestData(S)),k=(p=w?.code)!==null&&p!==void 0?p:-1;return{success:k>=200&&k<300}})}_sendEventsViaBeacon(S){return{success:this._network.beacon(this._getRequestData(S))}}_getRequestData(S){return{sdkKey:this._sdkKey,data:{events:S},urlConfig:this._logEventUrlConfig,retries:3,isCompressable:!0,params:{[v.NetworkParam.EventCount]:String(S.length)},credentials:"same-origin"}}_saveFailedLogsToStorage(S){for(;S.length>t;)S.shift();const p=this._getStorageKey();try{(0,l._setObjectInStorage)(p,S)}catch{h.Log.warn("Unable to save failed logs to storage")}}_retryFailedLogs(S){const p=this._getStorageKey();r(this,void 0,void 0,function*(){l.Storage.isReady()||(yield l.Storage.isReadyResolver());const w=(0,l._getObjectFromStorage)(p);if(!w)return;S===f.Startup&&l.Storage.removeItem(p),(yield this._sendEvents(w))&&S===f.GainedFocus&&l.Storage.removeItem(p)}).catch(()=>{h.Log.warn("Failed to flush stored logs")})}_getStorageKey(){return`statsig.failed_logs.${(0,y._DJB2)(this._sdkKey)}`}_normalizeAndAppendEvent(S){S.user&&(S.user=Object.assign({},S.user),delete S.user.privateAttributes);const p={},w=this._getCurrentPageUrl();w&&(p.statsigMetadata={currentPage:w});const k=Object.assign(Object.assign({},S),p);h.Log.debug("Enqueued Event:",k),this._queue.push(k)}_appendAndResetNonExposedChecks(){Object.keys(this._nonExposedChecks).length!==0&&(this._normalizeAndAppendEvent({eventName:"statsig::non_exposed_checks",user:null,time:Date.now(),metadata:{checks:Object.assign({},this._nonExposedChecks)}}),this._nonExposedChecks={})}_getCurrentPageUrl(){var S;if(((S=this._options)===null||S===void 0?void 0:S.includeCurrentPageUrlWithEvents)!==!1)return(0,d._getCurrentPageUrlSafe)()}_startBackgroundFlushInterval(){var S,p;const w=(p=(S=this._options)===null||S===void 0?void 0:S.loggingIntervalMs)!==null&&p!==void 0?p:n,k=setInterval(()=>{const C=m[this._sdkKey];!C||C._flushIntervalId!==k?clearInterval(k):me._safeFlushAndForget(this._sdkKey)},w);this._flushIntervalId=k}};return ee.EventLogger=E,ee}var Qe={},Tt;function je(){return Tt||(Tt=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r.StatsigMetadataProvider=r.SDK_VERSION=void 0,r.SDK_VERSION="3.17.2";let g={sdkVersion:r.SDK_VERSION,sdkType:"js-mono"};r.StatsigMetadataProvider={get:()=>g,add:y=>{g=Object.assign(Object.assign({},g),y)}}})(Qe)),Qe}var Ye={},Lt;function Dn(){return Lt||(Lt=1,Object.defineProperty(Ye,"__esModule",{value:!0})),Ye}var z={},Ee={},De={},At;function Ze(){if(At)return De;At=1,Object.defineProperty(De,"__esModule",{value:!0}),De.getUUID=void 0;function r(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let g=new Date().getTime(),y=typeof performance<"u"&&performance.now&&performance.now()*1e3||0;return`xxxxxxxx-xxxx-4xxx-${"89ab"[Math.floor(Math.random()*4)]}xxx-xxxxxxxxxxxx`.replace(/[xy]/g,v=>{let d=Math.random()*16;return g>0?(d=(g+d)%16|0,g=Math.floor(g/16)):(d=(y+d)%16|0,y=Math.floor(y/16)),(v==="x"?d:d&7|8).toString(16)})}return De.getUUID=r,De}var Pt;function Ne(){if(Pt)return Ee;Pt=1,Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.StableID=void 0;const r=Le(),g=P(),y=re(),h=X(),v=Ze(),d={},u={},c={};Ee.StableID={cookiesEnabled:!1,randomID:Math.random().toString(36),get:i=>{if(c[i])return null;if(d[i]!=null)return d[i];let t=null;return t=e(i),t!=null?(d[i]=t,a(t,i),t):(t=o(i),t==null&&(t=(0,v.getUUID)()),a(t,i),n(t,i),d[i]=t,t)},setOverride:(i,t)=>{d[t]=i,a(i,t),n(i,t)},_setCookiesEnabled:(i,t)=>{u[i]=t},_setDisabled:(i,t)=>{c[i]=t}};function l(i){return`statsig.stable_id.${(0,r._getStorageKey)(i)}`}function a(i,t){const _=l(t);try{(0,h._setObjectInStorage)(_,i)}catch{g.Log.warn("Failed to save StableID to storage")}}function o(i){const t=l(i);return(0,h._getObjectFromStorage)(t)}function e(i){if(!u[i]||(0,y._getDocumentSafe)()==null)return null;const t=document.cookie.split(";");for(const _ of t){const[m,f]=_.trim().split("=");if(m===s(i))return decodeURIComponent(f)}return null}function n(i,t){if(!u[t]||!document)return;const _=new Date;_.setFullYear(_.getFullYear()+1),document.cookie=`${s(t)}=${encodeURIComponent(i)}; expires=${_.toUTCString()}; path=/`}function s(i){return`statsig.stable_id.${(0,r._getStorageKey)(i)}`}return Ee}var oe={},jt;function Nt(){if(jt)return oe;jt=1,Object.defineProperty(oe,"__esModule",{value:!0}),oe._getFullUserHash=oe._normalizeUser=void 0;const r=ve(),g=P();function y(v,d,u){try{const c=JSON.parse(JSON.stringify(v));return d!=null&&d.environment!=null?c.statsigEnvironment=d.environment:u!=null&&(c.statsigEnvironment={tier:u}),c}catch{return g.Log.error("Failed to JSON.stringify user"),{statsigEnvironment:void 0}}}oe._normalizeUser=y;function h(v){return v?(0,r._DJB2Object)(v):null}return oe._getFullUserHash=h,oe}var we={},Ft;function qt(){if(Ft)return we;Ft=1,Object.defineProperty(we,"__esModule",{value:!0}),we._typedJsonParse=void 0;const r=P();function g(y,h,v){try{const d=JSON.parse(y);if(d&&typeof d=="object"&&h in d)return d}catch{}return r.Log.error(`Failed to parse ${v}`),null}return we._typedJsonParse=g,we}var Kt;function wn(){if(Kt)return z;Kt=1;var r=z&&z.__awaiter||function(e,n,s,i){function t(_){return _ instanceof s?_:new s(function(m){m(_)})}return new(s||(s=Promise))(function(_,m){function f(S){try{D(i.next(S))}catch(p){m(p)}}function E(S){try{D(i.throw(S))}catch(p){m(p)}}function D(S){S.done?_(S.value):t(S.value).then(f,E)}D((i=i.apply(e,n||[])).next())})};Object.defineProperty(z,"__esModule",{value:!0}),z._makeDataAdapterResult=z.DataAdapterCore=void 0;const g=P(),y=Ne(),h=Nt(),v=X(),d=qt(),u=10;let c=class{constructor(n,s){this._adapterName=n,this._cacheSuffix=s,this._options=null,this._sdkKey=null,this._lastModifiedStoreKey=`statsig.last_modified_time.${s}`,this._inMemoryCache=new a}attach(n,s,i){this._sdkKey=n,this._options=s}getDataSync(n){const s=n&&(0,h._normalizeUser)(n,this._options),i=this._getCacheKey(s),t=this._inMemoryCache.get(i,s);if(t)return t;const _=this._loadFromCache(i);return _?(this._inMemoryCache.add(i,_),this._inMemoryCache.get(i,s)):null}setData(n,s){const i=s&&(0,h._normalizeUser)(s,this._options),t=this._getCacheKey(i);this._inMemoryCache.add(t,l("Bootstrap",n,null,i))}_getDataAsyncImpl(n,s,i){return r(this,void 0,void 0,function*(){v.Storage.isReady()||(yield v.Storage.isReadyResolver());const t=n??this.getDataSync(s),_=[this._fetchAndPrepFromNetwork(t,s,i)];return i?.timeoutMs&&_.push(new Promise(m=>setTimeout(m,i.timeoutMs)).then(()=>(g.Log.debug("Fetching latest value timed out"),null))),yield Promise.race(_)})}_prefetchDataImpl(n,s){return r(this,void 0,void 0,function*(){const i=n&&(0,h._normalizeUser)(n,this._options),t=this._getCacheKey(i),_=yield this._getDataAsyncImpl(null,i,s);_&&this._inMemoryCache.add(t,Object.assign(Object.assign({},_),{source:"Prefetch"}))})}_fetchAndPrepFromNetwork(n,s,i){var t;return r(this,void 0,void 0,function*(){const _=(t=n?.data)!==null&&t!==void 0?t:null,m=n!=null&&this._isCachedResultValidFor204(n,s),f=yield this._fetchFromNetwork(_,s,i,m);if(!f)return g.Log.debug("No response returned for latest value"),null;const E=(0,d._typedJsonParse)(f,"has_updates","Response"),D=this._getSdkKey(),S=y.StableID.get(D);let p=null;if(E?.has_updates===!0)p=l("Network",f,S,s);else if(_&&E?.has_updates===!1)p=l("NetworkNotModified",_,S,s);else return null;const w=this._getCacheKey(s);return this._inMemoryCache.add(w,p),this._writeToCache(w,p),p})}_getSdkKey(){return this._sdkKey!=null?this._sdkKey:(g.Log.error(`${this._adapterName} is not attached to a Client`),"")}_loadFromCache(n){var s;const i=(s=v.Storage.getItem)===null||s===void 0?void 0:s.call(v.Storage,n);if(i==null)return null;const t=(0,d._typedJsonParse)(i,"source","Cached Result");return t?Object.assign(Object.assign({},t),{source:"Cache"}):null}_writeToCache(n,s){v.Storage.setItem(n,JSON.stringify(s)),this._runLocalStorageCacheEviction(n)}_runLocalStorageCacheEviction(n){var s;const i=(s=(0,v._getObjectFromStorage)(this._lastModifiedStoreKey))!==null&&s!==void 0?s:{};i[n]=Date.now();const t=o(i,u);t&&(delete i[t],v.Storage.removeItem(t)),(0,v._setObjectInStorage)(this._lastModifiedStoreKey,i)}};z.DataAdapterCore=c;function l(e,n,s,i){return{source:e,data:n,receivedAt:Date.now(),stableID:s,fullUserHash:(0,h._getFullUserHash)(i)}}z._makeDataAdapterResult=l;class a{constructor(){this._data={}}get(n,s){var i;const t=this._data[n],_=t?.stableID,m=(i=s?.customIDs)===null||i===void 0?void 0:i.stableID;return m&&_&&m!==_?(g.Log.warn("'StatsigUser.customIDs.stableID' mismatch"),null):t}add(n,s){const i=o(this._data,u-1);i&&delete this._data[i],this._data[n]=s}merge(n){this._data=Object.assign(Object.assign({},this._data),n)}}function o(e,n){const s=Object.keys(e);return s.length<=n?null:s.reduce((i,t)=>{const _=e[i],m=e[t];return typeof _=="object"&&typeof m=="object"?m.receivedAt<_.receivedAt?t:i:m<_?t:i})}return z}var et={},Bt;function kn(){return Bt||(Bt=1,Object.defineProperty(et,"__esModule",{value:!0})),et}var ke={},Oe={},xt;function tt(){if(xt)return Oe;xt=1,Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.SDKType=void 0;const r={};let g;return Oe.SDKType={_get:y=>{var h;return((h=r[y])!==null&&h!==void 0?h:"js-mono")+(g??"")},_setClientType(y,h){r[y]=h},_setBindingType(y){(!g||g==="-react")&&(g="-"+y)}},Oe}var $t;function Gt(){return $t||($t=1,(function(r){var g=ke&&ke.__awaiter||function(e,n,s,i){function t(_){return _ instanceof s?_:new s(function(m){m(_)})}return new(s||(s=Promise))(function(_,m){function f(S){try{D(i.next(S))}catch(p){m(p)}}function E(S){try{D(i.throw(S))}catch(p){m(p)}}function D(S){S.done?_(S.value):t(S.value).then(f,E)}D((i=i.apply(e,n||[])).next())})};Object.defineProperty(r,"__esModule",{value:!0}),r.ErrorBoundary=r.EXCEPTION_ENDPOINT=void 0;const y=P(),h=tt(),v=je();r.EXCEPTION_ENDPOINT="https://statsigapi.net/v1/sdk_exception";const d="[Statsig] UnknownError";let u=class{constructor(n,s,i,t){this._sdkKey=n,this._options=s,this._emitter=i,this._lastSeenError=t,this._seen=new Set}wrap(n){try{const s=n;a(s).forEach(i=>{const t=s[i];"$EB"in t||(s[i]=(..._)=>this._capture(i,()=>t.apply(n,_)),s[i].$EB=!0)})}catch(s){this._onError("eb:wrap",s)}}logError(n,s){this._onError(n,s)}getLastSeenErrorAndReset(){const n=this._lastSeenError;return this._lastSeenError=void 0,n??null}attachErrorIfNoneExists(n){this._lastSeenError||(this._lastSeenError=c(n))}_capture(n,s){try{const i=s();return i&&i instanceof Promise?i.catch(t=>this._onError(n,t)):i}catch(i){return this._onError(n,i),null}}_onError(n,s){try{y.Log.warn(`Caught error in ${n}`,{error:s}),g(this,void 0,void 0,function*(){var t,_,m,f,E,D,S;const p=s||Error(d),w=p instanceof Error,k=w?p.name:"No Name",C=c(p);if(this._lastSeenError=C,this._seen.has(k))return;if(this._seen.add(k),!((_=(t=this._options)===null||t===void 0?void 0:t.networkConfig)===null||_===void 0)&&_.preventAllNetworkTraffic){(m=this._emitter)===null||m===void 0||m.call(this,{name:"error",error:s,tag:n});return}const L=h.SDKType._get(this._sdkKey),T=v.StatsigMetadataProvider.get(),J=w?p.stack:l(p),W=Object.assign({tag:n,exception:k,info:J,statsigOptions:o(this._options)},Object.assign(Object.assign({},T),{sdkType:L}));yield((D=(E=(f=this._options)===null||f===void 0?void 0:f.networkConfig)===null||E===void 0?void 0:E.networkOverrideFunc)!==null&&D!==void 0?D:fetch)(r.EXCEPTION_ENDPOINT,{method:"POST",headers:{"STATSIG-API-KEY":this._sdkKey,"STATSIG-SDK-TYPE":String(L),"STATSIG-SDK-VERSION":String(T.sdkVersion),"Content-Type":"application/json"},body:JSON.stringify(W)}),(S=this._emitter)===null||S===void 0||S.call(this,{name:"error",error:s,tag:n})}).then(()=>{}).catch(()=>{})}catch{}}};r.ErrorBoundary=u;function c(e){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("An unknown error occurred.")}function l(e){try{return JSON.stringify(e)}catch{return d}}function a(e){const n=new Set;let s=Object.getPrototypeOf(e);for(;s&&s!==Object.prototype;)Object.getOwnPropertyNames(s).filter(i=>typeof s?.[i]=="function").forEach(i=>n.add(i)),s=Object.getPrototypeOf(s);return Array.from(n)}function o(e){if(!e)return{};const n={};return Object.entries(e).forEach(([s,i])=>{switch(typeof i){case"number":case"bigint":case"boolean":n[String(s)]=i;break;case"string":i.length<50?n[String(s)]=i:n[String(s)]="set";break;case"object":s==="environment"?n.environment=i:s==="networkConfig"?n.networkConfig=i:n[String(s)]=i!=null?"set":"unset";break}}),n}})(ke)),ke}var nt={},zt;function On(){return zt||(zt=1,Object.defineProperty(nt,"__esModule",{value:!0})),nt}var rt={},Vt;function In(){return Vt||(Vt=1,Object.defineProperty(rt,"__esModule",{value:!0})),rt}var it={},Jt;function Cn(){return Jt||(Jt=1,Object.defineProperty(it,"__esModule",{value:!0})),it}var se={},Wt;function Ht(){if(Wt)return se;Wt=1,Object.defineProperty(se,"__esModule",{value:!0}),se.createMemoKey=se.MemoPrefix=void 0,se.MemoPrefix={_gate:"g",_dynamicConfig:"c",_experiment:"e",_layer:"l",_paramStore:"p"};const r=new Set([]),g=new Set(["userPersistedValues"]);function y(h,v,d){let u=`${h}|${v}`;if(!d)return u;for(const c of Object.keys(d)){if(g.has(c))return;r.has(c)?u+=`|${c}=true`:u+=`|${c}=${d[c]}`}return u}return se.createMemoKey=y,se}var ae={},V={},le={},Xt;function Rn(){if(Xt)return le;Xt=1;var r=le&&le.__awaiter||function(c,l,a,o){function e(n){return n instanceof a?n:new a(function(s){s(n)})}return new(a||(a=Promise))(function(n,s){function i(m){try{_(o.next(m))}catch(f){s(f)}}function t(m){try{_(o.throw(m))}catch(f){s(f)}}function _(m){m.done?n(m.value):e(m.value).then(i,t)}_((o=o.apply(c,l||[])).next())})};Object.defineProperty(le,"__esModule",{value:!0}),le._fetchTxtRecords=void 0;const g=new Uint8Array([0,0,1,0,0,1,0,0,0,0,0,0,13,102,101,97,116,117,114,101,97,115,115,101,116,115,3,111,114,103,0,0,16,0,1]),y="https://cloudflare-dns.com/dns-query",h=["i","e","d"],v=200;function d(c){return r(this,void 0,void 0,function*(){const l=yield c(y,{method:"POST",headers:{"Content-Type":"application/dns-message",Accept:"application/dns-message"},body:g});if(!l.ok){const e=new Error("Failed to fetch TXT records from DNS");throw e.name="DnsTxtFetchError",e}const a=yield l.arrayBuffer(),o=new Uint8Array(a);return u(o)})}le._fetchTxtRecords=d;function u(c){const l=c.findIndex((o,e)=>e<v&&String.fromCharCode(o)==="="&&h.includes(String.fromCharCode(c[e-1])));if(l===-1){const o=new Error("Failed to parse TXT records from DNS");throw o.name="DnsTxtParseError",o}let a="";for(let o=l-1;o<c.length;o++)a+=String.fromCharCode(c[o]);return a.split(",")}return le}var Qt;function Un(){if(Qt)return V;Qt=1;var r=V&&V.__awaiter||function(s,i,t,_){function m(f){return f instanceof t?f:new t(function(E){E(f)})}return new(t||(t=Promise))(function(f,E){function D(w){try{p(_.next(w))}catch(k){E(k)}}function S(w){try{p(_.throw(w))}catch(k){E(k)}}function p(w){w.done?f(w.value):m(w.value).then(D,S)}p((_=_.apply(s,i||[])).next())})};Object.defineProperty(V,"__esModule",{value:!0}),V._isDomainFailure=V.NetworkFallbackResolver=void 0;const g=Rn(),y=ve(),h=P(),v=X(),d=10080*60*1e3,u=14400*1e3;let c=class{constructor(i){var t;this._fallbackInfo=null,this._errorBoundary=null,this._dnsQueryCooldowns={},this._networkOverrideFunc=(t=i.networkConfig)===null||t===void 0?void 0:t.networkOverrideFunc}setErrorBoundary(i){this._errorBoundary=i}tryBumpExpiryTime(i,t){var _;const m=(_=this._fallbackInfo)===null||_===void 0?void 0:_[t.endpoint];m&&(m.expiryTime=Date.now()+d,o(i,Object.assign(Object.assign({},this._fallbackInfo),{[t.endpoint]:m})))}getActiveFallbackUrl(i,t){var _,m;if(t.customUrl!=null&&t.fallbackUrls!=null)return null;let f=this._fallbackInfo;f==null&&(f=(_=e(i))!==null&&_!==void 0?_:{},this._fallbackInfo=f);const E=f[t.endpoint];return!E||Date.now()>((m=E.expiryTime)!==null&&m!==void 0?m:0)||t.getChecksum()!==E.urlConfigChecksum?(delete f[t.endpoint],this._fallbackInfo=f,o(i,this._fallbackInfo),null):E.url?E.url:null}tryFetchUpdatedFallbackInfo(i,t,_,m){var f,E;return r(this,void 0,void 0,function*(){try{if(!l(_,m))return!1;const S=t.customUrl==null&&t.fallbackUrls==null?yield this._tryFetchFallbackUrlsFromNetwork(t):t.fallbackUrls,p=this._pickNewFallbackUrl((f=this._fallbackInfo)===null||f===void 0?void 0:f[t.endpoint],S);return p?(this._updateFallbackInfoWithNewUrl(i,t,p),!0):!1}catch(D){return(E=this._errorBoundary)===null||E===void 0||E.logError("tryFetchUpdatedFallbackInfo",D),!1}})}_updateFallbackInfoWithNewUrl(i,t,_){var m,f,E;const D={urlConfigChecksum:t.getChecksum(),url:_,expiryTime:Date.now()+d,previous:[]},S=t.endpoint,p=(m=this._fallbackInfo)===null||m===void 0?void 0:m[S];p&&D.previous.push(...p.previous),D.previous.length>10&&(D.previous=[]);const w=(E=(f=this._fallbackInfo)===null||f===void 0?void 0:f[S])===null||E===void 0?void 0:E.url;w!=null&&D.previous.push(w),this._fallbackInfo=Object.assign(Object.assign({},this._fallbackInfo),{[S]:D}),o(i,this._fallbackInfo)}_tryFetchFallbackUrlsFromNetwork(i){var t;return r(this,void 0,void 0,function*(){const _=this._dnsQueryCooldowns[i.endpoint];if(_&&Date.now()<_)return null;this._dnsQueryCooldowns[i.endpoint]=Date.now()+u;const m=[],f=yield(0,g._fetchTxtRecords)((t=this._networkOverrideFunc)!==null&&t!==void 0?t:fetch),E=n(i.defaultUrl);for(const D of f){if(!D.startsWith(i.endpointDnsKey+"="))continue;const S=D.split("=");if(S.length>1){let p=S[1];p.endsWith("/")&&(p=p.slice(0,-1)),m.push(`https://${p}${E}`)}}return m})}_pickNewFallbackUrl(i,t){var _;if(t==null)return null;const m=new Set((_=i?.previous)!==null&&_!==void 0?_:[]),f=i?.url;let E=null;for(const D of t){const S=D.endsWith("/")?D.slice(0,-1):D;if(!m.has(D)&&S!==f){E=S;break}}return E}};V.NetworkFallbackResolver=c;function l(s,i){var t;const _=(t=s?.toLowerCase())!==null&&t!==void 0?t:"";return i||_.includes("uncaught exception")||_.includes("failed to fetch")||_.includes("networkerror when attempting to fetch resource")}V._isDomainFailure=l;function a(s){return`statsig.network_fallback.${(0,y._DJB2)(s)}`}function o(s,i){const t=a(s);if(!i||Object.keys(i).length===0){v.Storage.removeItem(t);return}v.Storage.setItem(t,JSON.stringify(i))}function e(s){const i=a(s),t=v.Storage.getItem(i);if(!t)return null;try{return JSON.parse(t)}catch{return h.Log.error("Failed to parse FallbackInfo"),null}}function n(s){try{return new URL(s).pathname}catch{return null}}return V}var Ie={},Yt;function Zt(){if(Yt)return Ie;Yt=1,Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.SDKFlags=void 0;const r={};return Ie.SDKFlags={setFlags:(g,y)=>{r[g]=y},get:(g,y)=>{var h,v;return(v=(h=r[g])===null||h===void 0?void 0:h[y])!==null&&v!==void 0?v:!1}},Ie}var ot={},en;function st(){return en||(en=1,(function(r){Object.defineProperty(r,"__esModule",{value:!0}),r.StatsigSession=r.SessionID=void 0;const g=H(),y=Le(),h=P(),v=X(),d=Ze(),u=1800*1e3,c=14400*1e3,l={};r.SessionID={get:f=>r.StatsigSession.get(f).data.sessionID},r.StatsigSession={get:f=>{l[f]==null&&(l[f]=a(f));const E=l[f];return e(E)},overrideInitialSessionID:(f,E)=>{l[E]=o(f,E)}};function a(f){let E=m(f);const D=Date.now();return E||(E={sessionID:(0,d.getUUID)(),startTime:D,lastUpdate:D}),{data:E,sdkKey:f}}function o(f,E){const D=Date.now();return{data:{sessionID:f,startTime:D,lastUpdate:D},sdkKey:E}}function e(f){const E=Date.now(),D=f.data,S=f.sdkKey;if(s(D)||i(D)){D.sessionID=(0,d.getUUID)(),D.startTime=E;const w=__STATSIG__==null?void 0:__STATSIG__.instance(S);w&&w.$emt({name:"session_expired"})}D.lastUpdate=E,_(D,f.sdkKey),clearTimeout(f.idleTimeoutID),clearTimeout(f.ageTimeoutID);const p=E-D.startTime;return f.idleTimeoutID=n(S,u),f.ageTimeoutID=n(S,c-p),f}function n(f,E){return setTimeout(()=>{var D;const S=(D=(0,g._getStatsigGlobal)())===null||D===void 0?void 0:D.instance(f);S&&S.$emt({name:"session_expired"})},E)}function s({lastUpdate:f}){return Date.now()-f>u}function i({startTime:f}){return Date.now()-f>c}function t(f){return`statsig.session_id.${(0,y._getStorageKey)(f)}`}function _(f,E){const D=t(E);try{(0,v._setObjectInStorage)(D,f)}catch{h.Log.warn("Failed to save SessionID")}}function m(f){const E=t(f);return(0,v._getObjectFromStorage)(E)}})(ot)),ot}var Ce={},tn;function nn(){return tn||(tn=1,Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.ErrorTag=void 0,Ce.ErrorTag={NetworkError:"NetworkError"}),Ce}var rn;function Mn(){if(rn)return ae;rn=1;var r=ae&&ae.__awaiter||function(I,b,O,R){function U(M){return M instanceof O?M:new O(function(A){A(M)})}return new(O||(O=Promise))(function(M,A){function Se(N){try{x(R.next(N))}catch(F){A(F)}}function G(N){try{x(R.throw(N))}catch(F){A(F)}}function x(N){N.done?M(N.value):U(N.value).then(Se,G)}x((R=R.apply(I,b||[])).next())})};Object.defineProperty(ae,"__esModule",{value:!0}),ae.NetworkCore=void 0,H();const g=H(),y=$e(),h=P(),v=Ae(),d=Un(),u=Zt(),c=tt(),l=re(),a=st(),o=Ne(),e=nn(),n=je(),s=Pe(),i=Xe(),t=1e4,_=500,m=3e4,f=1e3,E=50,D=E/f,S=new Set([408,500,502,503,504,522,524,599]);let p=class{constructor(b,O){this._emitter=O,this._errorBoundary=null,this._timeout=t,this._netConfig={},this._options={},this._leakyBucket={},this._lastUsedInitUrl=null,b&&(this._options=b),this._options.networkConfig&&(this._netConfig=this._options.networkConfig),this._netConfig.networkTimeoutMs&&(this._timeout=this._netConfig.networkTimeoutMs),this._fallbackResolver=new d.NetworkFallbackResolver(this._options),this.setLogEventCompressionMode(this._getLogEventCompressionMode(b))}setLogEventCompressionMode(b){this._options.logEventCompressionMode=b}setErrorBoundary(b){this._errorBoundary=b,this._errorBoundary.wrap(this),this._errorBoundary.wrap(this._fallbackResolver),this._fallbackResolver.setErrorBoundary(b)}isBeaconSupported(){return typeof navigator<"u"&&typeof navigator.sendBeacon=="function"}getLastUsedInitUrlAndReset(){const b=this._lastUsedInitUrl;return this._lastUsedInitUrl=null,b}beacon(b){if(!w(b))return!1;const O=this._getInternalRequestArgs("POST",b),R=this._getPopulatedURL(O),U=navigator;return U.sendBeacon.bind(U)(R,O.body)}post(b){return r(this,void 0,void 0,function*(){const O=this._getInternalRequestArgs("POST",b);return this._tryEncodeBody(O),yield this._tryToCompressBody(O),this._sendRequest(O)})}get(b){const O=this._getInternalRequestArgs("GET",b);return this._sendRequest(O)}_sendRequest(b){var O,R,U,M;return r(this,void 0,void 0,function*(){if(!w(b)||this._netConfig.preventAllNetworkTraffic)return null;const{method:A,body:Se,retries:G,attempt:x}=b,N=b.urlConfig.endpoint;if(this._isRateLimited(N))return h.Log.warn(`Request to ${N} was blocked because you are making requests too frequently.`),null;const F=x??1,K=typeof AbortController<"u"?new AbortController:null,_e=setTimeout(()=>{K?.abort(`Timeout of ${this._timeout}ms expired.`)},this._timeout),pe=this._getPopulatedURL(b);let $=null;const En=(0,i._isUnloading)();try{const ge={method:A,body:Se,headers:Object.assign({},b.headers),signal:K?.signal,priority:b.priority,keepalive:En};J(b,F);const fe=this._leakyBucket[N];if(fe&&(fe.lastRequestTime=Date.now(),this._leakyBucket[N]=fe),$=yield((O=this._netConfig.networkOverrideFunc)!==null&&O!==void 0?O:fetch)(pe,ge),clearTimeout(_e),!$.ok){const Te=yield $.text().catch(()=>"No Text"),gt=new Error(`NetworkError: ${pe} ${Te}`);throw gt.name="NetworkError",gt}const qe=yield $.text();return W(b,$,F,qe),this._fallbackResolver.tryBumpExpiryTime(b.sdkKey,b.urlConfig),{body:qe,code:$.status}}catch(ge){const fe=L(K,ge),_t=T(K);if(W(b,$,F,"",ge),(yield this._fallbackResolver.tryFetchUpdatedFallbackInfo(b.sdkKey,b.urlConfig,fe,_t))&&(b.fallbackUrl=this._fallbackResolver.getActiveFallbackUrl(b.sdkKey,b.urlConfig)),!G||F>G||!S.has((R=$?.status)!==null&&R!==void 0?R:500)){(U=this._emitter)===null||U===void 0||U.call(this,{name:"error",error:ge,tag:e.ErrorTag.NetworkError,requestArgs:b});const Te=`A networking error occurred during ${A} request to ${pe}.`;return h.Log.error(Te,fe,ge),(M=this._errorBoundary)===null||M===void 0||M.attachErrorIfNoneExists(Te),null}return yield B(F),this._sendRequest(Object.assign(Object.assign({},b),{retries:G,attempt:F+1}))}})}_getLogEventCompressionMode(b){let O=b?.logEventCompressionMode;return!O&&b?.disableCompression===!0&&(O=s.LogEventCompressionMode.Disabled),O||(O=s.LogEventCompressionMode.Enabled),O}_isRateLimited(b){var O;const R=Date.now(),U=(O=this._leakyBucket[b])!==null&&O!==void 0?O:{count:0,lastRequestTime:R},M=R-U.lastRequestTime,A=Math.floor(M*D);return U.count=Math.max(0,U.count-A),U.count>=E?!0:(U.count+=1,U.lastRequestTime=R,this._leakyBucket[b]=U,!1)}_getPopulatedURL(b){var O;const R=(O=b.fallbackUrl)!==null&&O!==void 0?O:b.urlConfig.getUrl();(b.urlConfig.endpoint===v.Endpoint._initialize||b.urlConfig.endpoint===v.Endpoint._download_config_specs)&&(this._lastUsedInitUrl=R);const U=Object.assign({[v.NetworkParam.SdkKey]:b.sdkKey,[v.NetworkParam.SdkType]:c.SDKType._get(b.sdkKey),[v.NetworkParam.SdkVersion]:n.SDK_VERSION,[v.NetworkParam.Time]:String(Date.now()),[v.NetworkParam.SessionID]:a.SessionID.get(b.sdkKey)},b.params),M=Object.keys(U).map(A=>`${encodeURIComponent(A)}=${encodeURIComponent(U[A])}`).join("&");return`${R}${M?`?${M}`:""}`}_tryEncodeBody(b){var O;const R=(0,l._getWindowSafe)(),U=b.body;if(!(!b.isStatsigEncodable||this._options.disableStatsigEncoding||typeof U!="string"||(0,g._getStatsigGlobalFlag)("no-encode")!=null||!R?.btoa))try{b.body=R.btoa(U).split("").reverse().join(""),b.params=Object.assign(Object.assign({},(O=b.params)!==null&&O!==void 0?O:{}),{[v.NetworkParam.StatsigEncoded]:"1"})}catch(M){h.Log.warn(`Request encoding failed for ${b.urlConfig.getUrl()}`,M)}}_tryToCompressBody(b){var O;return r(this,void 0,void 0,function*(){const R=b.body;if(!(typeof R!="string"||!C(b,this._options)))try{const U=new TextEncoder().encode(R),M=new CompressionStream("gzip"),A=M.writable.getWriter();A.write(U).catch(h.Log.error),A.close().catch(h.Log.error);const Se=M.readable.getReader(),G=[];let x;for(;!(x=yield Se.read()).done;)G.push(x.value);const N=G.reduce((_e,pe)=>_e+pe.length,0),F=new Uint8Array(N);let K=0;for(const _e of G)F.set(_e,K),K+=_e.length;b.body=F,b.params=Object.assign(Object.assign({},(O=b.params)!==null&&O!==void 0?O:{}),{[v.NetworkParam.IsGzipped]:"1"})}catch(U){h.Log.warn(`Request compression failed for ${b.urlConfig.getUrl()}`,U)}})}_getInternalRequestArgs(b,O){const R=this._fallbackResolver.getActiveFallbackUrl(O.sdkKey,O.urlConfig),U=Object.assign(Object.assign({},O),{method:b,fallbackUrl:R});return"data"in O&&k(U,O.data),U}};ae.NetworkCore=p;const w=I=>I.sdkKey?!0:(h.Log.warn("Unable to make request without an SDK key"),!1),k=(I,b)=>{const{sdkKey:O,fallbackUrl:R}=I,U=o.StableID.get(O),M=a.SessionID.get(O),A=c.SDKType._get(O);I.body=JSON.stringify(Object.assign(Object.assign({},b),{statsigMetadata:Object.assign(Object.assign({},n.StatsigMetadataProvider.get()),{stableID:U,sessionID:M,sdkType:A,fallbackUrl:R})}))};function C(I,b){if(!I.isCompressable||(0,g._getStatsigGlobalFlag)("no-compress")!=null||typeof CompressionStream>"u"||typeof TextEncoder>"u")return!1;const O=I.urlConfig.customUrl!=null||I.urlConfig.fallbackUrls!=null,R=u.SDKFlags.get(I.sdkKey,"enable_log_event_compression")===!0;switch(b.logEventCompressionMode){case s.LogEventCompressionMode.Disabled:return!1;case s.LogEventCompressionMode.Enabled:return!(O&&!R);case s.LogEventCompressionMode.Forced:return!0;default:return!1}}function L(I,b){return I?.signal.aborted&&typeof I.signal.reason=="string"?I.signal.reason:typeof b=="string"?b:b instanceof Error?`${b.name}: ${b.message}`:"Unknown Error"}function T(I){return I?.signal.aborted&&typeof I.signal.reason=="string"&&I.signal.reason.includes("Timeout")||!1}function J(I,b){I.urlConfig.endpoint===v.Endpoint._initialize&&y.Diagnostics._markInitNetworkReqStart(I.sdkKey,{attempt:b})}function W(I,b,O,R,U){I.urlConfig.endpoint===v.Endpoint._initialize&&y.Diagnostics._markInitNetworkReqEnd(I.sdkKey,y.Diagnostics._getDiagnosticsData(b,O,R,U))}function B(I){return r(this,void 0,void 0,function*(){yield new Promise(b=>setTimeout(b,Math.min(_*(I*I),m)))})}return ae}var at={},on;function Tn(){return on||(on=1,Object.defineProperty(at,"__esModule",{value:!0})),at}var lt={},sn;function Ln(){return sn||(sn=1,Object.defineProperty(lt,"__esModule",{value:!0})),lt}var ue={},an;function An(){if(an)return ue;an=1;var r=ue&&ue.__awaiter||function(i,t,_,m){function f(E){return E instanceof _?E:new _(function(D){D(E)})}return new(_||(_=Promise))(function(E,D){function S(k){try{w(m.next(k))}catch(C){D(C)}}function p(k){try{w(m.throw(k))}catch(C){D(C)}}function w(k){k.done?E(k.value):f(k.value).then(S,p)}w((m=m.apply(i,t||[])).next())})};Object.defineProperty(ue,"__esModule",{value:!0}),ue.StatsigClientBase=void 0,H();const g=H(),y=Gt(),h=Mt(),v=P(),d=Ht(),u=re(),c=st(),l=Ne(),a=Pe(),o=X(),e=3e3;let n=class{constructor(t,_,m,f){var E,D,S,p;this.loadingStatus="Uninitialized",this._initializePromise=null,this._listeners={};const w=this.$emt.bind(this);f?.logLevel!=null&&(v.Log.level=f.logLevel),f?.disableStorage&&o.Storage._setDisabled(!0),f?.initialSessionID&&c.StatsigSession.overrideInitialSessionID(f.initialSessionID,t),f?.storageProvider&&o.Storage._setProvider(f.storageProvider),f?.enableCookies&&l.StableID._setCookiesEnabled(t,f.enableCookies),f?.disableStableID&&l.StableID._setDisabled(t,!0),this._sdkKey=t,this._options=f??{},this._memoCache={},this.overrideAdapter=(E=f?.overrideAdapter)!==null&&E!==void 0?E:null,this._logger=new h.EventLogger(t,w,m,f),this._errorBoundary=new y.ErrorBoundary(t,f,w),this._errorBoundary.wrap(this),this._errorBoundary.wrap(_),this._errorBoundary.wrap(this._logger),m.setErrorBoundary(this._errorBoundary),this.dataAdapter=_,this.dataAdapter.attach(t,f,m),this.storageProvider=o.Storage,(p=(S=(D=this.overrideAdapter)===null||D===void 0?void 0:D.loadFromStorage)===null||S===void 0?void 0:S.call(D))===null||p===void 0||p.catch(k=>this._errorBoundary.logError("OA::loadFromStorage",k)),this._primeReadyRipcord(),s(t,this)}updateRuntimeOptions(t){t.loggingEnabled?(this._options.loggingEnabled=t.loggingEnabled,this._logger.setLoggingEnabled(t.loggingEnabled)):t.disableLogging!=null&&(this._options.disableLogging=t.disableLogging,this._logger.setLoggingEnabled(t.disableLogging?"disabled":"browser-only")),t.disableStorage!=null&&(this._options.disableStorage=t.disableStorage,o.Storage._setDisabled(t.disableStorage)),t.enableCookies!=null&&(this._options.enableCookies=t.enableCookies,l.StableID._setCookiesEnabled(this._sdkKey,t.enableCookies)),t.logEventCompressionMode?this._logger.setLogEventCompressionMode(t.logEventCompressionMode):t.disableCompression&&this._logger.setLogEventCompressionMode(a.LogEventCompressionMode.Disabled)}flush(){return this._logger.flush()}shutdown(){return r(this,void 0,void 0,function*(){this.$emt({name:"pre_shutdown"}),this._setStatus("Uninitialized",null),this._initializePromise=null,yield this._logger.stop()})}on(t,_){this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(_)}off(t,_){if(this._listeners[t]){const m=this._listeners[t].indexOf(_);m!==-1&&this._listeners[t].splice(m,1)}}$on(t,_){_.__isInternal=!0,this.on(t,_)}$emt(t){var _;const m=f=>{try{f(t)}catch(E){if(f.__isInternal===!0){this._errorBoundary.logError(`__emit:${t.name}`,E);return}v.Log.error("An error occurred in a StatsigClientEvent listener. This is not an issue with Statsig.",t)}};this._listeners[t.name]&&this._listeners[t.name].forEach(f=>m(f)),(_=this._listeners["*"])===null||_===void 0||_.forEach(m)}_setStatus(t,_){this.loadingStatus=t,this._memoCache={},this.$emt({name:"values_updated",status:t,values:_})}_enqueueExposure(t,_,m){if(m?.disableExposureLog===!0){this._logger.incrementNonExposureCount(t);return}this._logger.enqueue(_)}_memoize(t,_){return(m,f)=>{if(this._options.disableEvaluationMemoization)return _(m,f);const E=(0,d.createMemoKey)(t,m,f);return E?(E in this._memoCache||(Object.keys(this._memoCache).length>=e&&(this._memoCache={}),this._memoCache[E]=_(m,f)),this._memoCache[E]):_(m,f)}}};ue.StatsigClientBase=n;function s(i,t){var _;if((0,u._isServerEnv)())return;const m=(0,g._getStatsigGlobal)(),f=(_=m.instances)!==null&&_!==void 0?_:{},E=t;f[i]!=null&&v.Log.warn("Creating multiple Statsig clients with the same SDK key can lead to unexpected behavior. Multi-instance support requires different SDK keys."),f[i]=E,m.firstInstance||(m.firstInstance=E),m.instances=f,__STATSIG__=m}return ue}var Re={},ln;function Pn(){return ln||(ln=1,Object.defineProperty(Re,"__esModule",{value:!0}),Re.DataAdapterCachePrefix=void 0,Re.DataAdapterCachePrefix="statsig.cached"),Re}var ut={},un;function jn(){return un||(un=1,Object.defineProperty(ut,"__esModule",{value:!0})),ut}var j={},dn;function Nn(){if(dn)return j;dn=1,Object.defineProperty(j,"__esModule",{value:!0}),j._makeTypedGet=j._mergeOverride=j._makeLayer=j._makeExperiment=j._makeDynamicConfig=j._makeFeatureGate=void 0;const r=P(),g=ze();function y(a,o,e,n){var s;return{name:a,details:o,ruleID:(s=e?.rule_id)!==null&&s!==void 0?s:"",__evaluation:e,value:n}}function h(a,o,e){var n;return Object.assign(Object.assign({},y(a,o,e,e?.value===!0)),{idType:(n=e?.id_type)!==null&&n!==void 0?n:null})}j._makeFeatureGate=h;function v(a,o,e){var n;const s=(n=e?.value)!==null&&n!==void 0?n:{};return Object.assign(Object.assign({},y(a,o,e,s)),{get:l(a,e?.value)})}j._makeDynamicConfig=v;function d(a,o,e){var n;const s=v(a,o,e);return Object.assign(Object.assign({},s),{groupName:(n=e?.group_name)!==null&&n!==void 0?n:null})}j._makeExperiment=d;function u(a,o,e,n){var s,i;return Object.assign(Object.assign({},y(a,o,e,void 0)),{get:l(a,e?.value,n),groupName:(s=e?.group_name)!==null&&s!==void 0?s:null,__value:(i=e?.value)!==null&&i!==void 0?i:{}})}j._makeLayer=u;function c(a,o,e,n){return Object.assign(Object.assign(Object.assign({},a),o),{get:l(a.name,e,n)})}j._mergeOverride=c;function l(a,o,e){return(n,s)=>{var i;const t=(i=o?.[n])!==null&&i!==void 0?i:null;return t==null?s??null:s!=null&&!(0,g._isTypeMatch)(t,s)?(r.Log.warn(`Parameter type mismatch. '${a}.${n}' was found to be type '${typeof t}' but fallback/return type is '${typeof s}'. See https://docs.statsig.com/client/javascript-sdk/#typed-getters`),s??null):(e?.(n),t)}}return j._makeTypedGet=l,j}var dt={},cn;function Fn(){return cn||(cn=1,Object.defineProperty(dt,"__esModule",{value:!0})),dt}var de={},_n;function qn(){if(_n)return de;_n=1,Object.defineProperty(de,"__esModule",{value:!0}),de.UPDATE_DETAIL_ERROR_MESSAGES=de.createUpdateDetails=void 0;const r=(g,y,h,v,d,u)=>({duration:h,source:y,success:g,error:v,sourceUrl:d,warnings:u});return de.createUpdateDetails=r,de.UPDATE_DETAIL_ERROR_MESSAGES={NO_NETWORK_DATA:"No data was returned from the network. This may be due to a network timeout if a timeout value was specified in the options or ad blocker error."},de}var gn;function Q(){return gn||(gn=1,(function(r){var g=Z&&Z.__createBinding||(Object.create?(function(a,o,e,n){n===void 0&&(n=e);var s=Object.getOwnPropertyDescriptor(o,e);(!s||("get"in s?!o.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return o[e]}}),Object.defineProperty(a,n,s)}):(function(a,o,e,n){n===void 0&&(n=e),a[n]=o[e]})),y=Z&&Z.__exportStar||function(a,o){for(var e in a)e!=="default"&&!Object.prototype.hasOwnProperty.call(o,e)&&g(o,a,e)};Object.defineProperty(r,"__esModule",{value:!0}),r.Storage=r.Log=r.EventLogger=r.Diagnostics=void 0,H();const h=H(),v=$e();Object.defineProperty(r,"Diagnostics",{enumerable:!0,get:function(){return v.Diagnostics}});const d=Mt();Object.defineProperty(r,"EventLogger",{enumerable:!0,get:function(){return d.EventLogger}});const u=P();Object.defineProperty(r,"Log",{enumerable:!0,get:function(){return u.Log}});const c=je(),l=X();Object.defineProperty(r,"Storage",{enumerable:!0,get:function(){return l.Storage}}),y(H(),r),y(Le(),r),y(Dn(),r),y(wn(),r),y($e(),r),y(kn(),r),y(Gt(),r),y(On(),r),y(In(),r),y(ve(),r),y(Cn(),r),y(P(),r),y(Ht(),r),y(Ae(),r),y(Mn(),r),y(Tn(),r),y(Ln(),r),y(re(),r),y(tt(),r),y(st(),r),y(Ne(),r),y(An(),r),y(nn(),r),y(Pn(),r),y(wt(),r),y(je(),r),y(Pe(),r),y(jn(),r),y(Nn(),r),y(Fn(),r),y(Nt(),r),y(X(),r),y(qt(),r),y(ze(),r),y(Ct(),r),y(Ze(),r),y(Xe(),r),y(qn(),r),y(Zt(),r),Object.assign((0,h._getStatsigGlobal)(),{Log:u.Log,SDK_VERSION:c.SDK_VERSION})})(Z)),Z}var he={},Fe={},fn;function Kn(){if(fn)return Fe;fn=1,Object.defineProperty(Fe,"__esModule",{value:!0});const r=Q();let g=class{constructor(h){this._sdkKey=h,this._rawValues=null,this._values=null,this._source="Uninitialized",this._lcut=0,this._receivedAt=0,this._bootstrapMetadata=null,this._warnings=new Set}reset(){this._values=null,this._rawValues=null,this._source="Loading",this._lcut=0,this._receivedAt=0,this._bootstrapMetadata=null}finalize(){this._values||(this._source="NoValues")}getValues(){return this._rawValues?(0,r._typedJsonParse)(this._rawValues,"has_updates","EvaluationStoreValues"):null}setValues(h,v){var d;if(!h)return!1;const u=(0,r._typedJsonParse)(h.data,"has_updates","EvaluationResponse");return u==null?!1:(this._source=h.source,u?.has_updates!==!0||(this._rawValues=h.data,this._lcut=u.time,this._receivedAt=h.receivedAt,this._values=u,this._bootstrapMetadata=this._extractBootstrapMetadata(h.source,u),h.source&&u.user&&this._setWarningState(v,u),r.SDKFlags.setFlags(this._sdkKey,(d=u.sdk_flags)!==null&&d!==void 0?d:{})),!0)}getWarnings(){if(this._warnings.size!==0)return Array.from(this._warnings)}getGate(h){var v;return this._getDetailedStoreResult((v=this._values)===null||v===void 0?void 0:v.feature_gates,h)}getConfig(h){var v;return this._getDetailedStoreResult((v=this._values)===null||v===void 0?void 0:v.dynamic_configs,h)}getLayer(h){var v;return this._getDetailedStoreResult((v=this._values)===null||v===void 0?void 0:v.layer_configs,h)}getParamStore(h){var v;return this._getDetailedStoreResult((v=this._values)===null||v===void 0?void 0:v.param_stores,h)}getSource(){return this._source}getExposureMapping(){var h;return(h=this._values)===null||h===void 0?void 0:h.exposures}_extractBootstrapMetadata(h,v){if(h!=="Bootstrap")return null;const d={};return v.user&&(d.user=v.user),v.sdkInfo&&(d.generatorSDKInfo=v.sdkInfo),d.lcut=v.time,d}_getDetailedStoreResult(h,v){let d=null;return h&&(d=h[v]?h[v]:h[(0,r._DJB2)(v)]),{result:d,details:this._getDetails(d==null)}}_setWarningState(h,v){var d,u;const c=r.StableID.get(this._sdkKey);if(((d=h.customIDs)===null||d===void 0?void 0:d.stableID)!==c&&(!((u=h.customIDs)===null||u===void 0)&&u.stableID||c)){this._warnings.add("StableIDMismatch");return}if("user"in v){const l=v.user;(0,r._getFullUserHash)(h)!==(0,r._getFullUserHash)(l)&&this._warnings.add("PartialUserMatch")}}getCurrentSourceDetails(){if(this._source==="Uninitialized"||this._source==="NoValues")return{reason:this._source};const h={reason:this._source,lcut:this._lcut,receivedAt:this._receivedAt};return this._warnings.size>0&&(h.warnings=Array.from(this._warnings)),h}_getDetails(h){var v,d;const u=this.getCurrentSourceDetails();let c=u.reason;const l=(v=u.warnings)!==null&&v!==void 0?v:[];this._source==="Bootstrap"&&l.length>0&&(c=c+l[0]),c!=="Uninitialized"&&c!=="NoValues"&&(c=`${c}:${h?"Unrecognized":"Recognized"}`);const a=this._source==="Bootstrap"&&(d=this._bootstrapMetadata)!==null&&d!==void 0?d:void 0;return a&&(u.bootstrapMetadata=a),Object.assign(Object.assign({},u),{reason:c})}};return Fe.default=g,Fe}var ye={},Ue={},vn;function Bn(){if(vn)return Ue;vn=1,Object.defineProperty(Ue,"__esModule",{value:!0}),Ue._resolveDeltasResponse=void 0;const r=Q(),g=2;function y(u,c){const l=(0,r._typedJsonParse)(c,"checksum","DeltasEvaluationResponse");if(!l)return{hadBadDeltaChecksum:!0};const a=h(u,l),o=v(a),e=(0,r._DJB2Object)({feature_gates:o.feature_gates,dynamic_configs:o.dynamic_configs,layer_configs:o.layer_configs},g);return e===l.checksumV2?JSON.stringify(o):{hadBadDeltaChecksum:!0,badChecksum:e,badMergedConfigs:o,badFullResponse:l.deltas_full_response}}Ue._resolveDeltasResponse=y;function h(u,c){return Object.assign(Object.assign(Object.assign({},u),c),{feature_gates:Object.assign(Object.assign({},u.feature_gates),c.feature_gates),layer_configs:Object.assign(Object.assign({},u.layer_configs),c.layer_configs),dynamic_configs:Object.assign(Object.assign({},u.dynamic_configs),c.dynamic_configs)})}function v(u){const c=u;return d(u.deleted_gates,c.feature_gates),delete c.deleted_gates,d(u.deleted_configs,c.dynamic_configs),delete c.deleted_configs,d(u.deleted_layers,c.layer_configs),delete c.deleted_layers,c}function d(u,c){u?.forEach(l=>{delete c[l]})}return Ue}var hn;function yn(){if(hn)return ye;hn=1;var r=ye&&ye.__awaiter||function(v,d,u,c){function l(a){return a instanceof u?a:new u(function(o){o(a)})}return new(u||(u=Promise))(function(a,o){function e(i){try{s(c.next(i))}catch(t){o(t)}}function n(i){try{s(c.throw(i))}catch(t){o(t)}}function s(i){i.done?a(i.value):l(i.value).then(e,n)}s((c=c.apply(v,d||[])).next())})};Object.defineProperty(ye,"__esModule",{value:!0});const g=Q(),y=Bn();class h extends g.NetworkCore{constructor(d,u){super(d,u);const c=d?.networkConfig;this._option=d,this._initializeUrlConfig=new g.UrlConfiguration(g.Endpoint._initialize,c?.initializeUrl,c?.api,c?.initializeFallbackUrls)}fetchEvaluations(d,u,c,l,a){var o,e,n,s,i,t;return r(this,void 0,void 0,function*(){const _=u?(0,g._typedJsonParse)(u,"has_updates","InitializeResponse"):null;let m={user:l,hash:(n=(e=(o=this._option)===null||o===void 0?void 0:o.networkConfig)===null||e===void 0?void 0:e.initializeHashAlgorithm)!==null&&n!==void 0?n:"djb2",deltasResponseRequested:!1,full_checksum:null};if(_?.has_updates){const f=_?.hash_used!==((t=(i=(s=this._option)===null||s===void 0?void 0:s.networkConfig)===null||i===void 0?void 0:i.initializeHashAlgorithm)!==null&&t!==void 0?t:"djb2");m=Object.assign(Object.assign({},m),{sinceTime:a&&!f?_.time:0,previousDerivedFields:"derived_fields"in _&&a?_.derived_fields:{},deltasResponseRequested:!0,full_checksum:_.full_checksum,partialUserMatchSinceTime:f?0:_.time})}return this._fetchEvaluations(d,_,m,c)})}_fetchEvaluations(d,u,c,l){var a,o;return r(this,void 0,void 0,function*(){const e=yield this.post({sdkKey:d,urlConfig:this._initializeUrlConfig,data:c,retries:2,isStatsigEncodable:!0,priority:l});if(e?.code===204)return'{"has_updates": false}';if(e?.code!==200)return(a=e?.body)!==null&&a!==void 0?a:null;if(u?.has_updates!==!0||((o=e.body)===null||o===void 0?void 0:o.includes('"is_delta":true'))!==!0||c.deltasResponseRequested!==!0)return e.body;const n=(0,y._resolveDeltasResponse)(u,e.body);return typeof n=="string"?n:this._fetchEvaluations(d,u,Object.assign(Object.assign(Object.assign({},c),n),{deltasResponseRequested:!1}),l)})}}return ye.default=h,ye}var Me={},mn;function xn(){if(mn)return Me;mn=1,Object.defineProperty(Me,"__esModule",{value:!0}),Me._makeParamStoreGetter=void 0;const r=Q(),g={disableExposureLog:!0};function y(o){return o==null||o.disableExposureLog===!1}function h(o,e){return e!=null&&!(0,r._isTypeMatch)(o,e)}function v(o,e){return o.value}function d(o,e,n){return o.getFeatureGate(e.gate_name,y(n)?void 0:g).value?e.pass_value:e.fail_value}function u(o,e,n,s){const t=o.getDynamicConfig(e.config_name,y(s)?void 0:g).get(e.param_name);return h(t,n)?n:t}function c(o,e,n,s){const t=o.getExperiment(e.experiment_name,y(s)?void 0:g).get(e.param_name);return h(t,n)?n:t}function l(o,e,n,s){const t=o.getLayer(e.layer_name,y(s)?void 0:g).get(e.param_name);return h(t,n)?n:t}function a(o,e,n){return(s,i)=>{if(e==null)return i;const t=e[s];if(t==null||i!=null&&(0,r._typeOf)(i)!==t.param_type)return i;switch(t.ref_type){case"static":return v(t);case"gate":return d(o,t,n);case"dynamic_config":return u(o,t,i,n);case"experiment":return c(o,t,i,n);case"layer":return l(o,t,i,n);default:return i}}}return Me._makeParamStoreGetter=a,Me}var ce={},Sn;function $n(){if(Sn)return ce;Sn=1;var r=ce&&ce.__awaiter||function(v,d,u,c){function l(a){return a instanceof u?a:new u(function(o){o(a)})}return new(u||(u=Promise))(function(a,o){function e(i){try{s(c.next(i))}catch(t){o(t)}}function n(i){try{s(c.throw(i))}catch(t){o(t)}}function s(i){i.done?a(i.value):l(i.value).then(e,n)}s((c=c.apply(v,d||[])).next())})};Object.defineProperty(ce,"__esModule",{value:!0}),ce.StatsigEvaluationsDataAdapter=void 0;const g=Q(),y=yn();let h=class extends g.DataAdapterCore{constructor(){super("EvaluationsDataAdapter","evaluations"),this._network=null,this._options=null}attach(d,u,c){super.attach(d,u,c),c!==null&&c instanceof y.default?this._network=c:this._network=new y.default(u??{})}getDataAsync(d,u,c){return this._getDataAsyncImpl(d,(0,g._normalizeUser)(u,this._options),c)}prefetchData(d,u){return this._prefetchDataImpl(d,u)}setData(d){const u=(0,g._typedJsonParse)(d,"has_updates","data");u&&"user"in u?super.setData(d,u.user):g.Log.error("StatsigUser not found. You may be using an older server SDK version. Please upgrade your SDK or use setDataLegacy.")}setDataLegacy(d,u){super.setData(d,u)}_fetchFromNetwork(d,u,c,l){var a;return r(this,void 0,void 0,function*(){const o=yield(a=this._network)===null||a===void 0?void 0:a.fetchEvaluations(this._getSdkKey(),d,c?.priority,u,l);return o??null})}_getCacheKey(d){var u;const c=(0,g._getStorageKey)(this._getSdkKey(),d,(u=this._options)===null||u===void 0?void 0:u.customUserCacheKeyFunc);return`${g.DataAdapterCachePrefix}.${this._cacheSuffix}.${c}`}_isCachedResultValidFor204(d,u){return d.fullUserHash!=null&&d.fullUserHash===(0,g._getFullUserHash)(u)}};return ce.StatsigEvaluationsDataAdapter=h,ce}var pn;function Gn(){if(pn)return he;pn=1;var r=he&&he.__awaiter||function(c,l,a,o){function e(n){return n instanceof a?n:new a(function(s){s(n)})}return new(a||(a=Promise))(function(n,s){function i(m){try{_(o.next(m))}catch(f){s(f)}}function t(m){try{_(o.throw(m))}catch(f){s(f)}}function _(m){m.done?n(m.value):e(m.value).then(i,t)}_((o=o.apply(c,l||[])).next())})};Object.defineProperty(he,"__esModule",{value:!0});const g=Q(),y=Kn(),h=yn(),v=xn(),d=$n();let u=class ct extends g.StatsigClientBase{static instance(l){const a=(0,g._getStatsigGlobal)().instance(l);return a instanceof ct?a:(g.Log.warn((0,g._isServerEnv)()?"StatsigClient.instance is not supported in server environments":"Unable to find StatsigClient instance"),new ct(l??"",{}))}constructor(l,a,o=null){var e,n;g.SDKType._setClientType(l,"javascript-client");const s=new h.default(o,t=>{this.$emt(t)});super(l,(e=o?.dataAdapter)!==null&&e!==void 0?e:new d.StatsigEvaluationsDataAdapter,s,o),this.getFeatureGate=this._memoize(g.MemoPrefix._gate,this._getFeatureGateImpl.bind(this)),this.getDynamicConfig=this._memoize(g.MemoPrefix._dynamicConfig,this._getDynamicConfigImpl.bind(this)),this.getExperiment=this._memoize(g.MemoPrefix._experiment,this._getExperimentImpl.bind(this)),this.getLayer=this._memoize(g.MemoPrefix._layer,this._getLayerImpl.bind(this)),this.getParameterStore=this._memoize(g.MemoPrefix._paramStore,this._getParameterStoreImpl.bind(this)),this._store=new y.default(l),this._network=s,this._user=this._configureUser(a,o);const i=(n=o?.plugins)!==null&&n!==void 0?n:[];for(const t of i)t.bind(this)}initializeSync(l){var a;return this.loadingStatus!=="Uninitialized"?(0,g.createUpdateDetails)(!0,this._store.getSource(),-1,null,null,["MultipleInitializations",...(a=this._store.getWarnings())!==null&&a!==void 0?a:[]]):(this._logger.start(),this.updateUserSync(this._user,l))}initializeAsync(l){return r(this,void 0,void 0,function*(){return this._initializePromise?this._initializePromise:(this._initializePromise=this._initializeAsyncImpl(l),this._initializePromise)})}updateUserSync(l,a){var o;const e=performance.now(),n=[...(o=this._store.getWarnings())!==null&&o!==void 0?o:[]];this._resetForUser(l);const s=this.dataAdapter.getDataSync(this._user);s==null&&n.push("NoCachedValues"),this._store.setValues(s,this._user),this._finalizeUpdate(s);const i=a?.disableBackgroundCacheRefresh;return i===!0||i==null&&s?.source==="Bootstrap"?(0,g.createUpdateDetails)(!0,this._store.getSource(),performance.now()-e,this._errorBoundary.getLastSeenErrorAndReset(),this._network.getLastUsedInitUrlAndReset(),n):(this._runPostUpdate(s??null,this._user),(0,g.createUpdateDetails)(!0,this._store.getSource(),performance.now()-e,this._errorBoundary.getLastSeenErrorAndReset(),this._network.getLastUsedInitUrlAndReset(),n))}updateUserAsync(l,a){return r(this,void 0,void 0,function*(){this._resetForUser(l);const o=this._user;g.Diagnostics._markInitOverallStart(this._sdkKey);let e=this.dataAdapter.getDataSync(o);if(this._store.setValues(e,this._user),this._setStatus("Loading",e),e=yield this.dataAdapter.getDataAsync(e,o,a),o!==this._user)return(0,g.createUpdateDetails)(!1,this._store.getSource(),-1,new Error("User changed during update"),this._network.getLastUsedInitUrlAndReset());let n=!1;e!=null&&(g.Diagnostics._markInitProcessStart(this._sdkKey),n=this._store.setValues(e,this._user),g.Diagnostics._markInitProcessEnd(this._sdkKey,{success:n})),this._finalizeUpdate(e),n||(this._errorBoundary.attachErrorIfNoneExists(g.UPDATE_DETAIL_ERROR_MESSAGES.NO_NETWORK_DATA),this.$emt({name:"initialization_failure"})),g.Diagnostics._markInitOverallEnd(this._sdkKey,n,this._store.getCurrentSourceDetails());const s=g.Diagnostics._enqueueDiagnosticsEvent(this._user,this._logger,this._sdkKey,this._options);return(0,g.createUpdateDetails)(n,this._store.getSource(),s,this._errorBoundary.getLastSeenErrorAndReset(),this._network.getLastUsedInitUrlAndReset(),this._store.getWarnings())})}getContext(){return{sdkKey:this._sdkKey,options:this._options,values:this._store.getValues(),user:JSON.parse(JSON.stringify(this._user)),errorBoundary:this._errorBoundary,session:g.StatsigSession.get(this._sdkKey),stableID:g.StableID.get(this._sdkKey)}}checkGate(l,a){return this.getFeatureGate(l,a).value}logEvent(l,a,o){const e=typeof l=="string"?{eventName:l,value:a,metadata:o}:l;this.$emt({name:"log_event_called",event:e}),this._logger.enqueue(Object.assign(Object.assign({},e),{user:this._user,time:Date.now()}))}_primeReadyRipcord(){this.$on("error",()=>{this.loadingStatus==="Loading"&&this._finalizeUpdate(null)})}_initializeAsyncImpl(l){return r(this,void 0,void 0,function*(){return g.Storage.isReady()||(yield g.Storage.isReadyResolver()),this._logger.start(),this.updateUserAsync(this._user,l)})}_finalizeUpdate(l){this._store.finalize(),this._setStatus("Ready",l)}_runPostUpdate(l,a){this.dataAdapter.getDataAsync(l,a,{priority:"low"}).catch(o=>{g.Log.error("An error occurred after update.",o)})}_resetForUser(l){this._logger.reset(),this._store.reset(),this._user=this._configureUser(l,this._options)}_configureUser(l,a){var o;const e=(0,g._normalizeUser)(l,a),n=(o=e.customIDs)===null||o===void 0?void 0:o.stableID;return n&&g.StableID.setOverride(n,this._sdkKey),e}_getFeatureGateImpl(l,a){var o,e;const{result:n,details:s}=this._store.getGate(l),i=(0,g._makeFeatureGate)(l,s,n),t=(e=(o=this.overrideAdapter)===null||o===void 0?void 0:o.getGateOverride)===null||e===void 0?void 0:e.call(o,i,this._user,a),_=t??i;return this._enqueueExposure(l,(0,g._createGateExposure)(this._user,_,this._store.getExposureMapping()),a),this.$emt({name:"gate_evaluation",gate:_}),_}_getDynamicConfigImpl(l,a){var o,e;const{result:n,details:s}=this._store.getConfig(l),i=(0,g._makeDynamicConfig)(l,s,n),t=(e=(o=this.overrideAdapter)===null||o===void 0?void 0:o.getDynamicConfigOverride)===null||e===void 0?void 0:e.call(o,i,this._user,a),_=t??i;return this._enqueueExposure(l,(0,g._createConfigExposure)(this._user,_,this._store.getExposureMapping()),a),this.$emt({name:"dynamic_config_evaluation",dynamicConfig:_}),_}_getExperimentImpl(l,a){var o,e,n,s;const{result:i,details:t}=this._store.getConfig(l),_=(0,g._makeExperiment)(l,t,i);_.__evaluation!=null&&(_.__evaluation.secondary_exposures=(0,g._mapExposures)((e=(o=_.__evaluation)===null||o===void 0?void 0:o.secondary_exposures)!==null&&e!==void 0?e:[],this._store.getExposureMapping()));const m=(s=(n=this.overrideAdapter)===null||n===void 0?void 0:n.getExperimentOverride)===null||s===void 0?void 0:s.call(n,_,this._user,a),f=m??_;return this._enqueueExposure(l,(0,g._createConfigExposure)(this._user,f,this._store.getExposureMapping()),a),this.$emt({name:"experiment_evaluation",experiment:f}),f}_getLayerImpl(l,a){var o,e,n;const{result:s,details:i}=this._store.getLayer(l),t=(0,g._makeLayer)(l,i,s),_=(e=(o=this.overrideAdapter)===null||o===void 0?void 0:o.getLayerOverride)===null||e===void 0?void 0:e.call(o,t,this._user,a);a?.disableExposureLog&&this._logger.incrementNonExposureCount(l);const m=(0,g._mergeOverride)(t,_,(n=_?.__value)!==null&&n!==void 0?n:t.__value,f=>{a?.disableExposureLog||this._enqueueExposure(l,(0,g._createLayerParameterExposure)(this._user,m,f,this._store.getExposureMapping()),a)});return this.$emt({name:"layer_evaluation",layer:m}),m}_getParameterStoreImpl(l,a){var o,e;const{result:n,details:s}=this._store.getParamStore(l);this._logger.incrementNonExposureCount(l);const i={name:l,details:s,__configuration:n,get:(0,v._makeParamStoreGetter)(this,n,a)},t=(e=(o=this.overrideAdapter)===null||o===void 0?void 0:o.getParamStoreOverride)===null||e===void 0?void 0:e.call(o,i,a);return t!=null&&(i.__configuration=t.config,i.details=t.details,i.get=(0,v._makeParamStoreGetter)(this,t.config,a)),i}};return he.default=u,he}var bn;function zn(){return bn||(bn=1,(function(r){var g=Y&&Y.__createBinding||(Object.create?(function(u,c,l,a){a===void 0&&(a=l);var o=Object.getOwnPropertyDescriptor(c,l);(!o||("get"in o?!c.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return c[l]}}),Object.defineProperty(u,a,o)}):(function(u,c,l,a){a===void 0&&(a=l),u[a]=c[l]})),y=Y&&Y.__exportStar||function(u,c){for(var l in u)l!=="default"&&!Object.prototype.hasOwnProperty.call(c,l)&&g(c,u,l)};Object.defineProperty(r,"__esModule",{value:!0}),r.StatsigClient=void 0;const h=Q(),v=Gn();r.StatsigClient=v.default,y(Q(),r);const d=Object.assign((0,h._getStatsigGlobal)(),{StatsigClient:v.default});r.default=d})(Y)),Y}var Vn=zn();export{Vn as s};
|
|
2
|
+
//# sourceMappingURL=statsig-DlszSNOf.esm.js.map
|