@snap/camera-kit 1.11.0 → 1.12.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/README.md +1 -1
- package/dist/CameraKit.d.ts +1 -0
- package/dist/CameraKit.d.ts.map +1 -1
- package/dist/configuration.d.ts +9 -9
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js +4 -2
- package/dist/configuration.js.map +1 -1
- package/dist/environment.js +1 -1
- package/dist/environment.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lens-core-module/generated-types.d.ts +7 -1
- package/dist/lens-core-module/generated-types.d.ts.map +1 -1
- package/dist/lens-core-module/generated-types.js.map +1 -1
- package/dist/lensCoreWasmVersions.js +3 -3
- package/dist/lensCoreWasmVersions.js.map +1 -1
- package/dist/logger/logger.d.ts +45 -9
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +21 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/logger/registerLogEntriesSubscriber.d.ts.map +1 -1
- package/dist/logger/registerLogEntriesSubscriber.js +2 -15
- package/dist/logger/registerLogEntriesSubscriber.js.map +1 -1
- package/dist/metrics/businessEventsReporter.js +1 -1
- package/dist/metrics/businessEventsReporter.js.map +1 -1
- package/docs/html/assets/navigation.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/CameraKit.html +2 -2
- package/docs/html/classes/CameraKitSession.html +2 -2
- package/docs/html/classes/CameraKitSource.html +2 -2
- package/docs/html/classes/LensPerformanceMeasurement.html +2 -2
- package/docs/html/classes/LensPerformanceMetrics.html +2 -2
- package/docs/html/classes/LensRepository.html +2 -2
- package/docs/html/classes/Transform2D.html +2 -2
- package/docs/html/classes/TypedCustomEvent.html +2 -2
- package/docs/html/classes/TypedEventTarget.html +2 -2
- package/docs/html/enums/Lens_CameraFacing.html +2 -2
- package/docs/html/functions/bootstrapCameraKit.html +2 -2
- package/docs/html/functions/createExtension.html +2 -2
- package/docs/html/functions/createImageSource.html +2 -2
- package/docs/html/functions/createMediaStreamSource.html +2 -2
- package/docs/html/functions/createVideoSource.html +2 -2
- package/docs/html/functions/estimateLensPerformance.html +2 -2
- package/docs/html/functions/filePickerFactory.html +2 -2
- package/docs/html/functions/getExtensionRequestContext.html +2 -2
- package/docs/html/functions/lensSourcesFactory.html +2 -2
- package/docs/html/functions/remoteApiServicesFactory.html +1 -1
- package/docs/html/hierarchy.html +1 -1
- package/docs/html/index.html +3 -3
- package/docs/html/interfaces/BitmojiUserInfo.html +2 -2
- package/docs/html/interfaces/CameraKitBootstrapConfiguration.html +9 -9
- package/docs/html/interfaces/CameraKitDeviceOptions.html +2 -2
- package/docs/html/interfaces/CameraKitSourceInfo.html +2 -2
- package/docs/html/interfaces/CameraKitSourceSubscriber.html +2 -2
- package/docs/html/interfaces/ComputedFrameMetrics.html +2 -2
- package/docs/html/interfaces/CreateSessionOptions.html +2 -2
- package/docs/html/interfaces/EstimatedLensPerformance.html +2 -2
- package/docs/html/interfaces/Font.html +2 -2
- package/docs/html/interfaces/FriendUserInfo.html +2 -2
- package/docs/html/interfaces/FunctionSourceOptions.html +2 -2
- package/docs/html/interfaces/Keyboard.html +2 -2
- package/docs/html/interfaces/KeyboardActiveEvent.html +2 -2
- package/docs/html/interfaces/Lens.html +2 -2
- package/docs/html/interfaces/LensCreator.html +2 -2
- package/docs/html/interfaces/LensHttpRequest.html +2 -2
- package/docs/html/interfaces/LensLaunchData.html +2 -2
- package/docs/html/interfaces/LensSource.html +2 -2
- package/docs/html/interfaces/LensUserData.html +2 -2
- package/docs/html/interfaces/LoadAssetRequest.html +2 -2
- package/docs/html/interfaces/MediaStreamSourceOptions.html +2 -2
- package/docs/html/interfaces/Preview.html +2 -2
- package/docs/html/interfaces/RemoteApiRequest.html +2 -2
- package/docs/html/interfaces/RemoteApiResponse.html +2 -2
- package/docs/html/interfaces/RemoteApiService.html +2 -2
- package/docs/html/interfaces/ScreenRegion.html +2 -2
- package/docs/html/interfaces/Snapcode.html +2 -2
- package/docs/html/interfaces/UriCancelRequest.html +2 -2
- package/docs/html/interfaces/UriRequest.html +2 -2
- package/docs/html/interfaces/UriResponse.html +2 -2
- package/docs/html/interfaces/VideoSourceOptions.html +2 -2
- package/docs/html/modules.html +1 -1
- package/docs/html/types/ArgumentValidationError.html +2 -2
- package/docs/html/types/AssetLoader.html +2 -2
- package/docs/html/types/AssetResponse.html +1 -1
- package/docs/html/types/AssetTiming.html +2 -2
- package/docs/html/types/BenchmarkError.html +1 -1
- package/docs/html/types/BootstrapError.html +2 -2
- package/docs/html/types/CacheKeyNotFoundError.html +1 -1
- package/docs/html/types/CameraKitSessionEventListener.html +2 -2
- package/docs/html/types/CameraKitSessionEvents.html +2 -2
- package/docs/html/types/CameraKitSourceError.html +1 -1
- package/docs/html/types/ConfigurationError.html +2 -2
- package/docs/html/types/FetchHandler.html +1 -1
- package/docs/html/types/FilePicker.html +2 -2
- package/docs/html/types/FilePickerOptions.html +2 -2
- package/docs/html/types/FilePickerResult.html +2 -2
- package/docs/html/types/KeyboardEventListener.html +2 -2
- package/docs/html/types/KeyboardEvents.html +2 -2
- package/docs/html/types/LegalError.html +1 -1
- package/docs/html/types/LensAbortError.html +2 -2
- package/docs/html/types/LensAssetError.html +2 -2
- package/docs/html/types/LensContentValidationError.html +1 -1
- package/docs/html/types/LensError.html +1 -1
- package/docs/html/types/LensExecutionError.html +2 -2
- package/docs/html/types/LensHttpHandler.html +2 -2
- package/docs/html/types/LensImagePickerError.html +2 -2
- package/docs/html/types/LensLaunchParams.html +2 -2
- package/docs/html/types/LensMetricsEvents.html +2 -2
- package/docs/html/types/LensPerformanceCluster.html +1 -1
- package/docs/html/types/LensView.html +2 -2
- package/docs/html/types/LensWait.html +2 -2
- package/docs/html/types/LogLevel.html +11 -0
- package/docs/html/types/Logger.html +5 -0
- package/docs/html/types/Matrix.html +2 -2
- package/docs/html/types/PersistentStoreError.html +2 -2
- package/docs/html/types/PlatformNotSupportedError.html +2 -2
- package/docs/html/types/PublicContainer.html +2 -2
- package/docs/html/types/PublicServices.html +2 -2
- package/docs/html/types/RemoteApiCancelRequestHandler.html +2 -2
- package/docs/html/types/RemoteApiRequestHandler.html +2 -2
- package/docs/html/types/RemoteApiServices.html +1 -1
- package/docs/html/types/RemoteApiStatus.html +2 -2
- package/docs/html/types/RenderTarget.html +2 -2
- package/docs/html/types/ScreenRegionType.html +2 -2
- package/docs/html/types/ScreenRegions.html +2 -2
- package/docs/html/types/Uri.html +1 -1
- package/docs/html/types/WebGLError.html +1 -1
- package/docs/html/types/Zodiac.html +1 -1
- package/docs/html/variables/extensionRequestContext.html +2 -2
- package/docs/md/README.md +2 -2
- package/docs/md/classes/CameraKit.md +1 -1
- package/docs/md/classes/CameraKitSession.md +1 -1
- package/docs/md/classes/CameraKitSource.md +1 -1
- package/docs/md/classes/LensPerformanceMeasurement.md +1 -1
- package/docs/md/classes/LensPerformanceMetrics.md +1 -1
- package/docs/md/classes/LensRepository.md +1 -1
- package/docs/md/classes/Transform2D.md +1 -1
- package/docs/md/classes/TypedCustomEvent.md +1 -1
- package/docs/md/classes/TypedEventTarget.md +1 -1
- package/docs/md/enumerations/Lens_CameraFacing.md +1 -1
- package/docs/md/functions/bootstrapCameraKit.md +1 -1
- package/docs/md/functions/createExtension.md +1 -1
- package/docs/md/functions/createImageSource.md +1 -1
- package/docs/md/functions/createMediaStreamSource.md +1 -1
- package/docs/md/functions/createVideoSource.md +1 -1
- package/docs/md/functions/estimateLensPerformance.md +1 -1
- package/docs/md/functions/filePickerFactory.md +1 -1
- package/docs/md/functions/getExtensionRequestContext.md +1 -1
- package/docs/md/functions/lensSourcesFactory.md +1 -1
- package/docs/md/functions/remoteApiServicesFactory.md +1 -1
- package/docs/md/globals.md +4 -2
- package/docs/md/interfaces/BitmojiUserInfo.md +1 -1
- package/docs/md/interfaces/CameraKitBootstrapConfiguration.md +7 -7
- package/docs/md/interfaces/CameraKitDeviceOptions.md +1 -1
- package/docs/md/interfaces/CameraKitSourceInfo.md +1 -1
- package/docs/md/interfaces/CameraKitSourceSubscriber.md +1 -1
- package/docs/md/interfaces/ComputedFrameMetrics.md +1 -1
- package/docs/md/interfaces/CreateSessionOptions.md +1 -1
- package/docs/md/interfaces/EstimatedLensPerformance.md +1 -1
- package/docs/md/interfaces/Font.md +1 -1
- package/docs/md/interfaces/FriendUserInfo.md +1 -1
- package/docs/md/interfaces/FunctionSourceOptions.md +1 -1
- package/docs/md/interfaces/Keyboard.md +1 -1
- package/docs/md/interfaces/KeyboardActiveEvent.md +1 -1
- package/docs/md/interfaces/Lens.md +1 -1
- package/docs/md/interfaces/LensCreator.md +1 -1
- package/docs/md/interfaces/LensHttpRequest.md +1 -1
- package/docs/md/interfaces/LensLaunchData.md +1 -1
- package/docs/md/interfaces/LensSource.md +1 -1
- package/docs/md/interfaces/LensUserData.md +1 -1
- package/docs/md/interfaces/LoadAssetRequest.md +1 -1
- package/docs/md/interfaces/MediaStreamSourceOptions.md +1 -1
- package/docs/md/interfaces/Preview.md +1 -1
- package/docs/md/interfaces/RemoteApiRequest.md +1 -1
- package/docs/md/interfaces/RemoteApiResponse.md +1 -1
- package/docs/md/interfaces/RemoteApiService.md +1 -1
- package/docs/md/interfaces/ScreenRegion.md +1 -1
- package/docs/md/interfaces/Snapcode.md +1 -1
- package/docs/md/interfaces/UriCancelRequest.md +1 -1
- package/docs/md/interfaces/UriRequest.md +1 -1
- package/docs/md/interfaces/UriResponse.md +1 -1
- package/docs/md/interfaces/VideoSourceOptions.md +1 -1
- package/docs/md/type-aliases/ArgumentValidationError.md +1 -1
- package/docs/md/type-aliases/AssetLoader.md +1 -1
- package/docs/md/type-aliases/AssetResponse.md +1 -1
- package/docs/md/type-aliases/AssetTiming.md +1 -1
- package/docs/md/type-aliases/BenchmarkError.md +1 -1
- package/docs/md/type-aliases/BootstrapError.md +1 -1
- package/docs/md/type-aliases/CacheKeyNotFoundError.md +1 -1
- package/docs/md/type-aliases/CameraKitSessionEventListener.md +1 -1
- package/docs/md/type-aliases/CameraKitSessionEvents.md +1 -1
- package/docs/md/type-aliases/CameraKitSourceError.md +1 -1
- package/docs/md/type-aliases/ConfigurationError.md +1 -1
- package/docs/md/type-aliases/FetchHandler.md +1 -1
- package/docs/md/type-aliases/FilePicker.md +1 -1
- package/docs/md/type-aliases/FilePickerOptions.md +1 -1
- package/docs/md/type-aliases/FilePickerResult.md +1 -1
- package/docs/md/type-aliases/KeyboardEventListener.md +1 -1
- package/docs/md/type-aliases/KeyboardEvents.md +1 -1
- package/docs/md/type-aliases/LegalError.md +1 -1
- package/docs/md/type-aliases/LensAbortError.md +1 -1
- package/docs/md/type-aliases/LensAssetError.md +1 -1
- package/docs/md/type-aliases/LensContentValidationError.md +1 -1
- package/docs/md/type-aliases/LensError.md +1 -1
- package/docs/md/type-aliases/LensExecutionError.md +1 -1
- package/docs/md/type-aliases/LensHttpHandler.md +1 -1
- package/docs/md/type-aliases/LensImagePickerError.md +1 -1
- package/docs/md/type-aliases/LensLaunchParams.md +1 -1
- package/docs/md/type-aliases/LensMetricsEvents.md +1 -1
- package/docs/md/type-aliases/LensPerformanceCluster.md +1 -1
- package/docs/md/type-aliases/LensView.md +1 -1
- package/docs/md/type-aliases/LensWait.md +1 -1
- package/docs/md/type-aliases/LogLevel.md +20 -0
- package/docs/md/type-aliases/Logger.md +15 -0
- package/docs/md/type-aliases/Matrix.md +1 -1
- package/docs/md/type-aliases/PersistentStoreError.md +1 -1
- package/docs/md/type-aliases/PlatformNotSupportedError.md +1 -1
- package/docs/md/type-aliases/PublicContainer.md +1 -1
- package/docs/md/type-aliases/PublicServices.md +1 -1
- package/docs/md/type-aliases/RemoteApiCancelRequestHandler.md +1 -1
- package/docs/md/type-aliases/RemoteApiRequestHandler.md +1 -1
- package/docs/md/type-aliases/RemoteApiServices.md +1 -1
- package/docs/md/type-aliases/RemoteApiStatus.md +1 -1
- package/docs/md/type-aliases/RenderTarget.md +1 -1
- package/docs/md/type-aliases/ScreenRegionType.md +1 -1
- package/docs/md/type-aliases/ScreenRegions.md +1 -1
- package/docs/md/type-aliases/Uri.md +1 -1
- package/docs/md/type-aliases/WebGLError.md +1 -1
- package/docs/md/type-aliases/Zodiac.md +1 -1
- package/docs/md/variables/extensionRequestContext.md +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQ5C,IAAI,iBAAiB,GAAG,IAAI,OAAO,EAAY,CAAC;AAShD,MAAM,CAAC,MAAM,WAAW,GAA6B;IACjD,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACX,CAAC;AAYF,MAAM,UAAU,WAAW;IACvB,OAAO,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAY,CAAC,CAAC;AACzD,CAAC;AA2CD,MAAM,UAAU,SAAS,CAAC,MAAc;IACpC,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAe,EAAE,EAAE;YACnC,iBAAiB,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,MAAM;gBACN,KAAK;gBACL,QAAQ;aACX,CAAC,CAAC;QACP,CAAC,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC,EAAE,EAAY,CAAC,CAAC;AACrB,CAAC;AAWD,MAAM,UAAU,SAAS,CAAC,MAA+C;IACrE,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE;QAC9B,OAAO,UAAU,CAAC;KACrB;IAED,IAAI,MAAM,KAAK,SAAS,EAAE;QACtB,OAAO,OAAO,CAAC;KAClB;IAGD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAiB,CAAC,CAAC;QAC5C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,qDAAqD,CAAC,CAAC;SACjG;KACJ;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAQD,MAAM,CAAC,MAAM,UAAU,GAAW;IAC9B,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAClB,CAAC","sourcesContent":["import { Subject } from \"rxjs\";\nimport { entries } from \"../common/entries\";\n\n/**\n * A reference to the recently created log messages subject.\n * The subject is overridden in resetLogger() method, which is called during CameraKit bootstrapping.\n *\n * @internal\n */\nlet logEntriesSubject = new Subject<LogEntry>();\n\n/**\n * This map associates log level names with their corresponding level value.\n * This means that a configured log level will match all log entries with a level value greater than\n * or equal to the configured value.\n *\n * @internal\n */\nexport const logLevelMap: Record<LogLevel, number> = {\n error: 3,\n warn: 2,\n info: 1,\n debug: 0,\n};\n\n/**\n * Initializes a new logger subject.\n *\n * Note: currently only one `CameraKit` instance is allowed to listen to log messages at a time, therefore that is\n * necessary to avoid sharing the same subject between multiple `CameraKit` instances by calling`resetLogger()`.\n * Also, `resetLogger()` should be called when there is no interest in logged messages.\n * This allows the previous logEntriesSubject to be GCec.\n *\n * @internal\n */\nexport function resetLogger() {\n return (logEntriesSubject = new Subject<LogEntry>());\n}\n\n/**\n * @internal\n */\nexport interface LogEntry {\n time: Date;\n module: string;\n level: keyof Logger;\n messages: any[];\n}\n\n/**\n * Defines the available logging levels for the Camera Kit SDK.\n *\n * Possible values are:\n * - `\"error\"` - Log only errors (most restrictive)\n * - `\"warn\"` - Log warnings and errors\n * - `\"info\"` - Log informational messages, warnings, and errors\n * - `\"debug\"` - Log all messages including debug information (most verbose)\n *\n * When a log level is set, all messages at that level and higher priority levels will be logged.\n * For example, setting the log level to `\"warn\"` will log warnings and errors, but not info or debug messages.\n */\nexport type LogLevel = \"error\" | \"warn\" | \"info\" | \"debug\";\n\n/**\n * A logger interface that provides methods for logging messages at different severity levels.\n *\n * Each method corresponds to a {@link LogLevel} and accepts a message with optional additional parameters.\n * All logged messages are emitted through the internal logging subject and can be consumed by configuring\n * a logger in the Camera Kit configuration.\n */\nexport type Logger = Record<LogLevel, (message?: any, ...optionalParams: any[]) => void>;\n\n/**\n * Gets logger for a given module.\n *\n * @internal\n *\n * @param module Module name.\n * @returns Logger instance.\n */\nexport function getLogger(module: string): Logger {\n return entries(logLevelMap).reduce((logger, [level]) => {\n logger[level] = (...messages: any[]) => {\n logEntriesSubject.next({\n time: new Date(),\n module,\n level,\n messages,\n });\n };\n return logger;\n }, {} as Logger);\n}\n\n/**\n * Maps a logger configuration to a Logger instance.\n *\n * @internal\n *\n * @param logger - Either \"noop\" for no logging, \"console\" for console output, or a custom Logger instance\n * @returns A Logger instance\n * @throws Error if the provided logger instance doesn't implement all required methods\n */\nexport function mapLogger(logger: undefined | \"noop\" | \"console\" | Logger): Logger {\n if (!logger || logger === \"noop\") {\n return noopLogger;\n }\n\n if (logger === \"console\") {\n return console;\n }\n\n // Validate that the custom logger implements all required methods\n for (const level of Object.keys(logLevelMap)) {\n // Safety: level is guaranteed to be a key of Logger due to the loop over logLevelMap\n const logMethod = logger[level as LogLevel];\n if (typeof logMethod !== \"function\") {\n throw new Error(`Logger method '${level}' is not available on the provided logger instance.`);\n }\n }\n\n return logger;\n}\n\n/**\n * A no-op logger that discards all log messages.\n * Useful when logging should be disabled entirely.\n *\n * @internal\n */\nexport const noopLogger: Logger = {\n error: () => {},\n warn: () => {},\n info: () => {},\n debug: () => {},\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerLogEntriesSubscriber.d.ts","sourceRoot":"","sources":["../../src/logger/registerLogEntriesSubscriber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"registerLogEntriesSubscriber.d.ts","sourceRoot":"","sources":["../../src/logger/registerLogEntriesSubscriber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B;;;;CAWxC,CAAC"}
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
import { filter } from "rxjs";
|
|
2
2
|
import { Injectable } from "@snap/ts-inject";
|
|
3
|
-
import { stringifyError } from "../common/errorHelpers";
|
|
4
3
|
import { configurationToken } from "../configuration";
|
|
5
|
-
import { getPlatformInfo } from "../platform/platformInfo";
|
|
6
4
|
import { logEntriesFactory } from "./logEntries";
|
|
7
5
|
import { logLevelMap } from "./logger";
|
|
8
6
|
export const registerLogEntriesSubscriber = Injectable("registerLogEntriesSubscriber", [configurationToken, logEntriesFactory.token], (configuration, logEntries) => {
|
|
9
7
|
logEntries
|
|
10
8
|
.pipe(filter((entry) => logLevelMap[entry.level] >= logLevelMap[configuration.logLevel]))
|
|
11
9
|
.subscribe((logEntry) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const messages = getPlatformInfo().browser.brand === "Chrome"
|
|
15
|
-
? logEntry.messages.map((message) => {
|
|
16
|
-
if (!(message instanceof Error))
|
|
17
|
-
return message;
|
|
18
|
-
message.stack = stringifyError(message);
|
|
19
|
-
return message;
|
|
20
|
-
})
|
|
21
|
-
: logEntry.messages;
|
|
22
|
-
console[logEntry.level](`[CameraKit.${logEntry.module}]`, ...messages);
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
10
|
+
const logMethod = configuration.logger[logEntry.level];
|
|
11
|
+
logMethod(`[CameraKit.${logEntry.module}]`, ...logEntry.messages);
|
|
25
12
|
});
|
|
26
13
|
});
|
|
27
14
|
//# sourceMappingURL=registerLogEntriesSubscriber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerLogEntriesSubscriber.js","sourceRoot":"","sources":["../../src/logger/registerLogEntriesSubscriber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"registerLogEntriesSubscriber.js","sourceRoot":"","sources":["../../src/logger/registerLogEntriesSubscriber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQvC,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAClD,8BAA8B,EAC9B,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,KAAK,CAAU,EACtD,CAAC,aAAqC,EAAE,UAAgC,EAAE,EAAE;IACxE,UAAU;SACL,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxF,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpB,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvD,SAAS,CAAC,cAAc,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACX,CAAC,CACJ,CAAC","sourcesContent":["import type { Observable } from \"rxjs\";\nimport { filter } from \"rxjs\";\nimport { Injectable } from \"@snap/ts-inject\";\nimport type { CameraKitConfiguration } from \"../configuration\";\nimport { configurationToken } from \"../configuration\";\nimport { logEntriesFactory } from \"./logEntries\";\nimport type { LogEntry } from \"./logger\";\nimport { logLevelMap } from \"./logger\";\n\n/**\n * The factory subscribes to log entry events and, based on the configured log level,\n * forwards matching log entries to the logger specified in the CameraKit configuration object.\n *\n * @internal\n */\nexport const registerLogEntriesSubscriber = Injectable(\n \"registerLogEntriesSubscriber\",\n [configurationToken, logEntriesFactory.token] as const,\n (configuration: CameraKitConfiguration, logEntries: Observable<LogEntry>) => {\n logEntries\n .pipe(filter((entry) => logLevelMap[entry.level] >= logLevelMap[configuration.logLevel]))\n .subscribe((logEntry) => {\n const logMethod = configuration.logger[logEntry.level];\n logMethod(`[CameraKit.${logEntry.module}]`, ...logEntry.messages);\n });\n }\n);\n"]}
|
|
@@ -39,7 +39,7 @@ const getOrGenerateVendorUuid = (persistence) => __awaiter(void 0, void 0, void
|
|
|
39
39
|
});
|
|
40
40
|
function listenAndReport(metricsEventTarget, metricsClient, eventHandlers, appVendorAndPartnerUuid) {
|
|
41
41
|
const sessionId = v4();
|
|
42
|
-
logger.
|
|
42
|
+
logger.info(`Session ID: ${sessionId}`);
|
|
43
43
|
let sequenceId = 1;
|
|
44
44
|
const makeBlizzardEvent = (event, appVendorUuid, partnerUuid) => {
|
|
45
45
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"businessEventsReporter.js","sourceRoot":"","sources":["../../src/metrics/businessEventsReporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 } from \"uuid\";\nimport type { Observable } from \"rxjs\";\nimport { catchError, combineLatestWith, from, fromEvent, map, merge, of, switchMap, take } from \"rxjs\";\nimport { Injectable } from \"@snap/ts-inject\";\nimport { entries } from \"../common/entries\";\nimport type { EventOfType } from \"../events/TypedCustomEvent\";\nimport type { EventsFromTarget } from \"../events/TypedEventTarget\";\nimport * as blizzard from \"../generated-proto/blizzard/cameraKitEvents\";\nimport { getLogger } from \"../logger/logger\";\nimport type { MetricsClient } from \"../clients/metricsClient\";\nimport { metricsClientFactory } from \"../clients/metricsClient\";\nimport type { CameraKitConfiguration } from \"../configuration\";\nimport { configurationToken } from \"../configuration\";\nimport type { RemoteConfiguration } from \"../remote-configuration/remoteConfiguration\";\nimport { remoteConfigurationFactory } from \"../remote-configuration/remoteConfiguration\";\nimport { IndexedDBPersistence } from \"../persistence/IndexedDBPersistence\";\nimport { ExpiringPersistence } from \"../persistence/ExpiringPersistence\";\nimport { convertDaysToSeconds } from \"../common/time\";\nimport type { ConnectionType } from \"../platform/platformInfo\";\nimport { getPlatformInfo } from \"../platform/platformInfo\";\nimport type { MetricsEventTarget } from \"./metricsEventTarget\";\nimport { metricsEventTargetFactory } from \"./metricsEventTarget\";\n\nconst logger = getLogger(\"BusinessEventsReporter\");\n\ntype Nullables<T> = { [K in keyof T]-?: undefined extends T[K] ? K : never }[keyof T];\ntype UndefinedToOptional<T> = Partial<Pick<T, Nullables<T>>> & Omit<T, Nullables<T>>;\n\ntype CameraKitBusinessEvents = EventsFromTarget<MetricsEventTarget>[\"detail\"];\n\ntype MakeBlizzardEvent<E> = Omit<E, \"name\"> & { cameraKitEventBase: blizzard.CameraKitEventBase };\n\ntype CreateEventData<EventType extends EventsFromTarget<MetricsEventTarget>[\"type\"]> = (\n event: MakeBlizzardEvent<EventOfType<EventType, EventsFromTarget<MetricsEventTarget>>[\"detail\"]>\n) => [string, UndefinedToOptional<blizzard.ServerEventData>];\n\ntype EventHandlers = {\n [EventType in EventsFromTarget<MetricsEventTarget>[\"type\"]]: CreateEventData<EventType>;\n};\n\n/**\n * Translate between an external metric name, which is exposed to SDK users, and an internal Blizzard event name,\n * property name, and constructor.\n *\n * It is very important that we do this, since the naming of these internal business events are unintuitive and will\n * not make sense to SDK users.\n *\n * For a full list of business events (using their internal names), see:\n * https://docs.google.com/document/d/1-kSzFWCWw9Qo3D08FR1_cqeHTsUtk9p3p3uOptzWDTY/\n */\ntype CameraKitBusinessEventMap = {\n assetDownload: MakeBusinessEvent<blizzard.CameraKitAssetDownload>;\n assetValidationFailed: MakeBusinessEvent<blizzard.CameraKitAssetValidationFailed>;\n benchmarkComplete: MakeBusinessEvent<blizzard.CameraKitWebBenchmarkComplete>;\n exception: MakeBusinessEvent<blizzard.CameraKitException>;\n legalPrompt: MakeBusinessEvent<blizzard.CameraKitLegalPrompt>;\n lensDownload: MakeBusinessEvent<blizzard.CameraKitLensDownload>;\n lensView: MakeBusinessEvent<blizzard.CameraKitWebLensSwipe>;\n lensWait: MakeBusinessEvent<blizzard.CameraKitLensSpin>;\n lensContentValidationFailed: MakeBusinessEvent<blizzard.CameraKitLensContentValidationFailed>;\n session: MakeBusinessEvent<blizzard.CameraKitSession>;\n};\n\ninterface AppVendorAndPartnerUuid {\n appVendorUuid: string | undefined;\n partnerUuid: string | undefined;\n}\n\nconst connectivityTypeMapping: Partial<Record<ConnectionType, blizzard.CameraKitConnectivityType>> = {\n cellular: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_MOBILE,\n bluetooth: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_BLUETOOTH,\n wifi: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_WIFI,\n unknown: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_UNKNOWN,\n none: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_UNREACHABLE,\n};\n\nconst vendorUuidKey = \"vendorUuid\";\nconst vendorUuidExpiry = convertDaysToSeconds(60);\n\n/**\n * Retrieves or generates a vendor UUID (Universally Unique Identifier).\n *\n * @param persistence - The persistence storage interface where UUID is stored.\n * @returns {Promise<string | undefined>} - A Promise that resolves to the vendor UUID or undefined,\n * if any failure occurs or opt-in is not enabled.\n */\nconst getOrGenerateVendorUuid = async (persistence: ExpiringPersistence<string>): Promise<string | undefined> => {\n try {\n const storedUuid = await persistence.retrieve(vendorUuidKey);\n if (storedUuid) {\n return storedUuid;\n }\n\n const newUuid = v4();\n await persistence.store(vendorUuidKey, newUuid);\n\n return newUuid;\n } catch (error) {\n throw new Error(\"Failed to generate vendor UUID\");\n }\n};\n\nfunction listenAndReport(\n metricsEventTarget: MetricsEventTarget,\n metricsClient: MetricsClient,\n eventHandlers: EventHandlers,\n appVendorAndPartnerUuid: Observable<AppVendorAndPartnerUuid>\n): void {\n const sessionId = v4();\n logger.log(`Session ID: ${sessionId}`);\n\n // Blizzard convention is to start the sequenceId at 1.\n let sequenceId = 1;\n\n const makeBlizzardEvent = <E extends CameraKitBusinessEvents>(\n event: E,\n appVendorUuid: string | undefined,\n partnerUuid: string | undefined\n ): MakeBlizzardEvent<E> => {\n const { sdkShortVersion, sdkLongVersion, lensCore, locale, origin, deviceModel, connectionType } =\n getPlatformInfo();\n\n const deviceConnectivity =\n connectivityTypeMapping[connectionType!] ??\n blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_UNKNOWN;\n\n return {\n ...event,\n cameraKitEventBase: blizzard.CameraKitEventBase.fromPartial({\n kitEventBase: blizzard.KitEventBase.fromPartial({\n locale,\n kitVariant: blizzard.KitType.CAMERA_KIT_WEB,\n kitVariantVersion: sdkShortVersion,\n kitClientTimestampMillis: `${Date.now()}`,\n }),\n deviceCluster: \"0\",\n cameraKitVersion: sdkLongVersion,\n lensCoreVersion: lensCore.version,\n deviceModel,\n cameraKitVariant: blizzard.CameraKitVariant.CAMERA_KIT_VARIANT_PARTNER,\n cameraKitFlavor: blizzard.CameraKitFlavor.CAMERA_KIT_FLAVOR_DEBUG,\n // We overload appId, using the origin instead because it's nice and human-readable (our backed adds\n // the true appId as oauth_client_id before forwarding events to Blizzard).\n appId: origin,\n deviceConnectivity,\n sessionId,\n appVendorUuid,\n partnerUuid,\n }),\n };\n };\n\n const sendServerEvent = (\n eventName: string,\n eventData: UndefinedToOptional<blizzard.ServerEventData>\n ): Promise<void> => {\n const { osName: osType, osVersion } = getPlatformInfo();\n return metricsClient.setBusinessEvents(\n blizzard.ServerEvent.fromPartial({\n eventName,\n osType,\n osVersion,\n maxSequenceIdOnInstance: \"0\",\n sequenceId: `${sequenceId++}`,\n eventData,\n })\n );\n };\n\n // Add event listeners for each event type and turn those listeners into Observables\n const metricsEvents = entries(eventHandlers).map(([eventType, createEventData]) =>\n fromEvent(metricsEventTarget, eventType).pipe(map((event) => ({ event, createEventData })))\n );\n\n // Subscribe to all the metrics events and combine them with the app/partner IDs obtained\n // from remote configuration -- this means we'll queue up any metrics events that occur\n // before remote config is downloaded, and send them once that config is available.\n merge(...metricsEvents)\n .pipe(combineLatestWith(appVendorAndPartnerUuid))\n .subscribe(([{ event, createEventData }, { appVendorUuid, partnerUuid }]) => {\n // Safety: When iterating over object keys in a mapped type, we lose the association between the key type\n // and the value type – at each iteration, the key type is a union of all possible keys and the value type\n // is a union of all possible values. When the value is a function with an argument, and that argument\n // depends on the key type (which is a union), the contravariance of the argument type means that the union\n // becomes an intersection. In our case here, this means the compiler expects each argument to contain all\n // properties from all event types. The cast is safe because the mapped `EventHandlers` type ensures that\n // `createEventData` takes an argument of the type corresponding its key's `eventType`'s event detail.\n const [eventName, eventData] = createEventData(\n makeBlizzardEvent(event.detail, appVendorUuid, partnerUuid) as any\n );\n sendServerEvent(eventName, eventData);\n });\n}\n\nexport type MakeBusinessEvent<E> = Omit<\n {\n [K in keyof E]: Exclude<E[K], undefined> extends Record<keyof any, any>\n ? MakeBusinessEvent<Exclude<E[K], undefined>>\n : E[K];\n },\n \"cameraKitEventBase\"\n>;\n\nfunction getAppVendorAndPartnerUuid(\n configuration: CameraKitConfiguration,\n remoteConfiguration: RemoteConfiguration\n): Observable<AppVendorAndPartnerUuid> {\n const vendorAnalyticsPersistence = new ExpiringPersistence<string>(\n () => vendorUuidExpiry,\n new IndexedDBPersistence({ databaseName: \"VendorAnalytics\" })\n );\n\n return remoteConfiguration.getInitializationConfig().pipe(\n take(1),\n\n switchMap(({ appVendorUuidOptIn }) => {\n const partnerUuid = configuration.analyticsId;\n if (appVendorUuidOptIn) {\n return from(getOrGenerateVendorUuid(vendorAnalyticsPersistence)).pipe(\n map((appVendorUuid) => ({ appVendorUuid, partnerUuid }))\n );\n }\n return of({ appVendorUuid: undefined, partnerUuid });\n }),\n\n catchError((error) => {\n logger.warn(`Failed to retrieve or generate vendor UUID.`, error);\n return of({ appVendorUuid: undefined, partnerUuid: configuration.analyticsId });\n })\n );\n}\n\nexport type MakeTaggedBusinessEvent<K extends keyof CameraKitBusinessEventMap> = {\n name: K;\n} & CameraKitBusinessEventMap[K];\n\nexport const businessEventsReporterFactory = Injectable(\n \"businessEventsReporter\",\n [\n metricsEventTargetFactory.token,\n metricsClientFactory.token,\n configurationToken,\n remoteConfigurationFactory.token,\n ] as const,\n (\n metricsEventTarget: MetricsEventTarget,\n metricsClient: MetricsClient,\n configuration: CameraKitConfiguration,\n remoteConfiguration: RemoteConfiguration\n ) => {\n const appVendorAndPartnerUuid = getAppVendorAndPartnerUuid(configuration, remoteConfiguration);\n\n /**\n * This defines a mapping from a business event's external name (the name we document in public\n * API docs), to its internal representation as a Blizzard ServerEvent.\n *\n * It is important that we do this, since the naming of these internal business events are\n * unintuitive and will not make sense to SDK users.\n *\n * To specify the internal event, we must give the ServerEvent's eventName, the specific property\n * name which contains the event data (this is a \"oneof\" property on ServerEvent), and use the\n * correct event type's `fromPartial` method (this is generated from the ServerEvent protobuf).\n *\n * These events are documented here:\n * https://docs.google.com/document/d/1-kSzFWCWw9Qo3D08FR1_cqeHTsUtk9p3p3uOptzWDTY/\n *\n * They are defined in code here:\n * https://github.sc-corp.net/Snapchat/snapchat/tree/master/blizzard/schema/blizzard-schema/\n * codeGen/src/main/java/com/snapchat/analytics/schema/events/cameraKit\n */\n listenAndReport(\n metricsEventTarget,\n metricsClient,\n {\n assetDownload: (event) => [\n \"CAMERA_KIT_ASSET_DOWNLOAD\",\n { cameraKitAssetDownload: blizzard.CameraKitAssetDownload.fromPartial(event) },\n ],\n assetValidationFailed: (event) => [\n \"CAMERA_KIT_ASSET_VALIDATION_FAILED\",\n {\n cameraKitAssetValidationFailed: blizzard.CameraKitAssetValidationFailed.fromPartial(event),\n },\n ],\n benchmarkComplete: (event) => [\n \"CAMERA_KIT_WEB_BENCHMARK_COMPLETE\",\n {\n cameraKitWebBenchmarkComplete: blizzard.CameraKitWebBenchmarkComplete.fromPartial(event),\n },\n ],\n exception: (event) => [\n \"CAMERA_KIT_EXCEPTION\",\n { cameraKitException: blizzard.CameraKitException.fromPartial(event) },\n ],\n legalPrompt: (event) => [\n \"CAMERA_KIT_LEGAL_PROMPT\",\n { cameraKitLegalPrompt: blizzard.CameraKitLegalPrompt.fromPartial(event) },\n ],\n lensDownload: (event) => [\n \"CAMERA_KIT_LENS_DOWNLOAD\",\n { cameraKitLensDownload: blizzard.CameraKitLensDownload.fromPartial(event) },\n ],\n lensView: (event) => [\n \"CAMERA_KIT_WEB_LENS_SWIPE\",\n { cameraKitWebLensSwipe: blizzard.CameraKitWebLensSwipe.fromPartial(event) },\n ],\n lensWait: (event) => [\n \"CAMERA_KIT_LENS_SPIN\",\n { cameraKitLensSpin: blizzard.CameraKitLensSpin.fromPartial(event) },\n ],\n lensContentValidationFailed: (event) => [\n \"CAMERA_KIT_LENS_CONTENT_VALIDATION_FAILED\",\n {\n cameraKitLensContentValidationFailed:\n blizzard.CameraKitLensContentValidationFailed.fromPartial(event),\n },\n ],\n session: (event) => [\n \"CAMERA_KIT_SESSION\",\n { cameraKitSession: blizzard.CameraKitSession.fromPartial(event) },\n ],\n },\n appVendorAndPartnerUuid\n );\n }\n);\n"]}
|
|
1
|
+
{"version":3,"file":"businessEventsReporter.js","sourceRoot":"","sources":["../../src/metrics/businessEventsReporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 } from \"uuid\";\nimport type { Observable } from \"rxjs\";\nimport { catchError, combineLatestWith, from, fromEvent, map, merge, of, switchMap, take } from \"rxjs\";\nimport { Injectable } from \"@snap/ts-inject\";\nimport { entries } from \"../common/entries\";\nimport type { EventOfType } from \"../events/TypedCustomEvent\";\nimport type { EventsFromTarget } from \"../events/TypedEventTarget\";\nimport * as blizzard from \"../generated-proto/blizzard/cameraKitEvents\";\nimport { getLogger } from \"../logger/logger\";\nimport type { MetricsClient } from \"../clients/metricsClient\";\nimport { metricsClientFactory } from \"../clients/metricsClient\";\nimport type { CameraKitConfiguration } from \"../configuration\";\nimport { configurationToken } from \"../configuration\";\nimport type { RemoteConfiguration } from \"../remote-configuration/remoteConfiguration\";\nimport { remoteConfigurationFactory } from \"../remote-configuration/remoteConfiguration\";\nimport { IndexedDBPersistence } from \"../persistence/IndexedDBPersistence\";\nimport { ExpiringPersistence } from \"../persistence/ExpiringPersistence\";\nimport { convertDaysToSeconds } from \"../common/time\";\nimport type { ConnectionType } from \"../platform/platformInfo\";\nimport { getPlatformInfo } from \"../platform/platformInfo\";\nimport type { MetricsEventTarget } from \"./metricsEventTarget\";\nimport { metricsEventTargetFactory } from \"./metricsEventTarget\";\n\nconst logger = getLogger(\"BusinessEventsReporter\");\n\ntype Nullables<T> = { [K in keyof T]-?: undefined extends T[K] ? K : never }[keyof T];\ntype UndefinedToOptional<T> = Partial<Pick<T, Nullables<T>>> & Omit<T, Nullables<T>>;\n\ntype CameraKitBusinessEvents = EventsFromTarget<MetricsEventTarget>[\"detail\"];\n\ntype MakeBlizzardEvent<E> = Omit<E, \"name\"> & { cameraKitEventBase: blizzard.CameraKitEventBase };\n\ntype CreateEventData<EventType extends EventsFromTarget<MetricsEventTarget>[\"type\"]> = (\n event: MakeBlizzardEvent<EventOfType<EventType, EventsFromTarget<MetricsEventTarget>>[\"detail\"]>\n) => [string, UndefinedToOptional<blizzard.ServerEventData>];\n\ntype EventHandlers = {\n [EventType in EventsFromTarget<MetricsEventTarget>[\"type\"]]: CreateEventData<EventType>;\n};\n\n/**\n * Translate between an external metric name, which is exposed to SDK users, and an internal Blizzard event name,\n * property name, and constructor.\n *\n * It is very important that we do this, since the naming of these internal business events are unintuitive and will\n * not make sense to SDK users.\n *\n * For a full list of business events (using their internal names), see:\n * https://docs.google.com/document/d/1-kSzFWCWw9Qo3D08FR1_cqeHTsUtk9p3p3uOptzWDTY/\n */\ntype CameraKitBusinessEventMap = {\n assetDownload: MakeBusinessEvent<blizzard.CameraKitAssetDownload>;\n assetValidationFailed: MakeBusinessEvent<blizzard.CameraKitAssetValidationFailed>;\n benchmarkComplete: MakeBusinessEvent<blizzard.CameraKitWebBenchmarkComplete>;\n exception: MakeBusinessEvent<blizzard.CameraKitException>;\n legalPrompt: MakeBusinessEvent<blizzard.CameraKitLegalPrompt>;\n lensDownload: MakeBusinessEvent<blizzard.CameraKitLensDownload>;\n lensView: MakeBusinessEvent<blizzard.CameraKitWebLensSwipe>;\n lensWait: MakeBusinessEvent<blizzard.CameraKitLensSpin>;\n lensContentValidationFailed: MakeBusinessEvent<blizzard.CameraKitLensContentValidationFailed>;\n session: MakeBusinessEvent<blizzard.CameraKitSession>;\n};\n\ninterface AppVendorAndPartnerUuid {\n appVendorUuid: string | undefined;\n partnerUuid: string | undefined;\n}\n\nconst connectivityTypeMapping: Partial<Record<ConnectionType, blizzard.CameraKitConnectivityType>> = {\n cellular: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_MOBILE,\n bluetooth: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_BLUETOOTH,\n wifi: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_WIFI,\n unknown: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_UNKNOWN,\n none: blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_UNREACHABLE,\n};\n\nconst vendorUuidKey = \"vendorUuid\";\nconst vendorUuidExpiry = convertDaysToSeconds(60);\n\n/**\n * Retrieves or generates a vendor UUID (Universally Unique Identifier).\n *\n * @param persistence - The persistence storage interface where UUID is stored.\n * @returns {Promise<string | undefined>} - A Promise that resolves to the vendor UUID or undefined,\n * if any failure occurs or opt-in is not enabled.\n */\nconst getOrGenerateVendorUuid = async (persistence: ExpiringPersistence<string>): Promise<string | undefined> => {\n try {\n const storedUuid = await persistence.retrieve(vendorUuidKey);\n if (storedUuid) {\n return storedUuid;\n }\n\n const newUuid = v4();\n await persistence.store(vendorUuidKey, newUuid);\n\n return newUuid;\n } catch (error) {\n throw new Error(\"Failed to generate vendor UUID\");\n }\n};\n\nfunction listenAndReport(\n metricsEventTarget: MetricsEventTarget,\n metricsClient: MetricsClient,\n eventHandlers: EventHandlers,\n appVendorAndPartnerUuid: Observable<AppVendorAndPartnerUuid>\n): void {\n const sessionId = v4();\n logger.info(`Session ID: ${sessionId}`);\n\n // Blizzard convention is to start the sequenceId at 1.\n let sequenceId = 1;\n\n const makeBlizzardEvent = <E extends CameraKitBusinessEvents>(\n event: E,\n appVendorUuid: string | undefined,\n partnerUuid: string | undefined\n ): MakeBlizzardEvent<E> => {\n const { sdkShortVersion, sdkLongVersion, lensCore, locale, origin, deviceModel, connectionType } =\n getPlatformInfo();\n\n const deviceConnectivity =\n connectivityTypeMapping[connectionType!] ??\n blizzard.CameraKitConnectivityType.CAMERA_KIT_CONNECTIVITY_TYPE_UNKNOWN;\n\n return {\n ...event,\n cameraKitEventBase: blizzard.CameraKitEventBase.fromPartial({\n kitEventBase: blizzard.KitEventBase.fromPartial({\n locale,\n kitVariant: blizzard.KitType.CAMERA_KIT_WEB,\n kitVariantVersion: sdkShortVersion,\n kitClientTimestampMillis: `${Date.now()}`,\n }),\n deviceCluster: \"0\",\n cameraKitVersion: sdkLongVersion,\n lensCoreVersion: lensCore.version,\n deviceModel,\n cameraKitVariant: blizzard.CameraKitVariant.CAMERA_KIT_VARIANT_PARTNER,\n cameraKitFlavor: blizzard.CameraKitFlavor.CAMERA_KIT_FLAVOR_DEBUG,\n // We overload appId, using the origin instead because it's nice and human-readable (our backed adds\n // the true appId as oauth_client_id before forwarding events to Blizzard).\n appId: origin,\n deviceConnectivity,\n sessionId,\n appVendorUuid,\n partnerUuid,\n }),\n };\n };\n\n const sendServerEvent = (\n eventName: string,\n eventData: UndefinedToOptional<blizzard.ServerEventData>\n ): Promise<void> => {\n const { osName: osType, osVersion } = getPlatformInfo();\n return metricsClient.setBusinessEvents(\n blizzard.ServerEvent.fromPartial({\n eventName,\n osType,\n osVersion,\n maxSequenceIdOnInstance: \"0\",\n sequenceId: `${sequenceId++}`,\n eventData,\n })\n );\n };\n\n // Add event listeners for each event type and turn those listeners into Observables\n const metricsEvents = entries(eventHandlers).map(([eventType, createEventData]) =>\n fromEvent(metricsEventTarget, eventType).pipe(map((event) => ({ event, createEventData })))\n );\n\n // Subscribe to all the metrics events and combine them with the app/partner IDs obtained\n // from remote configuration -- this means we'll queue up any metrics events that occur\n // before remote config is downloaded, and send them once that config is available.\n merge(...metricsEvents)\n .pipe(combineLatestWith(appVendorAndPartnerUuid))\n .subscribe(([{ event, createEventData }, { appVendorUuid, partnerUuid }]) => {\n // Safety: When iterating over object keys in a mapped type, we lose the association between the key type\n // and the value type – at each iteration, the key type is a union of all possible keys and the value type\n // is a union of all possible values. When the value is a function with an argument, and that argument\n // depends on the key type (which is a union), the contravariance of the argument type means that the union\n // becomes an intersection. In our case here, this means the compiler expects each argument to contain all\n // properties from all event types. The cast is safe because the mapped `EventHandlers` type ensures that\n // `createEventData` takes an argument of the type corresponding its key's `eventType`'s event detail.\n const [eventName, eventData] = createEventData(\n makeBlizzardEvent(event.detail, appVendorUuid, partnerUuid) as any\n );\n sendServerEvent(eventName, eventData);\n });\n}\n\nexport type MakeBusinessEvent<E> = Omit<\n {\n [K in keyof E]: Exclude<E[K], undefined> extends Record<keyof any, any>\n ? MakeBusinessEvent<Exclude<E[K], undefined>>\n : E[K];\n },\n \"cameraKitEventBase\"\n>;\n\nfunction getAppVendorAndPartnerUuid(\n configuration: CameraKitConfiguration,\n remoteConfiguration: RemoteConfiguration\n): Observable<AppVendorAndPartnerUuid> {\n const vendorAnalyticsPersistence = new ExpiringPersistence<string>(\n () => vendorUuidExpiry,\n new IndexedDBPersistence({ databaseName: \"VendorAnalytics\" })\n );\n\n return remoteConfiguration.getInitializationConfig().pipe(\n take(1),\n\n switchMap(({ appVendorUuidOptIn }) => {\n const partnerUuid = configuration.analyticsId;\n if (appVendorUuidOptIn) {\n return from(getOrGenerateVendorUuid(vendorAnalyticsPersistence)).pipe(\n map((appVendorUuid) => ({ appVendorUuid, partnerUuid }))\n );\n }\n return of({ appVendorUuid: undefined, partnerUuid });\n }),\n\n catchError((error) => {\n logger.warn(`Failed to retrieve or generate vendor UUID.`, error);\n return of({ appVendorUuid: undefined, partnerUuid: configuration.analyticsId });\n })\n );\n}\n\nexport type MakeTaggedBusinessEvent<K extends keyof CameraKitBusinessEventMap> = {\n name: K;\n} & CameraKitBusinessEventMap[K];\n\nexport const businessEventsReporterFactory = Injectable(\n \"businessEventsReporter\",\n [\n metricsEventTargetFactory.token,\n metricsClientFactory.token,\n configurationToken,\n remoteConfigurationFactory.token,\n ] as const,\n (\n metricsEventTarget: MetricsEventTarget,\n metricsClient: MetricsClient,\n configuration: CameraKitConfiguration,\n remoteConfiguration: RemoteConfiguration\n ) => {\n const appVendorAndPartnerUuid = getAppVendorAndPartnerUuid(configuration, remoteConfiguration);\n\n /**\n * This defines a mapping from a business event's external name (the name we document in public\n * API docs), to its internal representation as a Blizzard ServerEvent.\n *\n * It is important that we do this, since the naming of these internal business events are\n * unintuitive and will not make sense to SDK users.\n *\n * To specify the internal event, we must give the ServerEvent's eventName, the specific property\n * name which contains the event data (this is a \"oneof\" property on ServerEvent), and use the\n * correct event type's `fromPartial` method (this is generated from the ServerEvent protobuf).\n *\n * These events are documented here:\n * https://docs.google.com/document/d/1-kSzFWCWw9Qo3D08FR1_cqeHTsUtk9p3p3uOptzWDTY/\n *\n * They are defined in code here:\n * https://github.sc-corp.net/Snapchat/snapchat/tree/master/blizzard/schema/blizzard-schema/\n * codeGen/src/main/java/com/snapchat/analytics/schema/events/cameraKit\n */\n listenAndReport(\n metricsEventTarget,\n metricsClient,\n {\n assetDownload: (event) => [\n \"CAMERA_KIT_ASSET_DOWNLOAD\",\n { cameraKitAssetDownload: blizzard.CameraKitAssetDownload.fromPartial(event) },\n ],\n assetValidationFailed: (event) => [\n \"CAMERA_KIT_ASSET_VALIDATION_FAILED\",\n {\n cameraKitAssetValidationFailed: blizzard.CameraKitAssetValidationFailed.fromPartial(event),\n },\n ],\n benchmarkComplete: (event) => [\n \"CAMERA_KIT_WEB_BENCHMARK_COMPLETE\",\n {\n cameraKitWebBenchmarkComplete: blizzard.CameraKitWebBenchmarkComplete.fromPartial(event),\n },\n ],\n exception: (event) => [\n \"CAMERA_KIT_EXCEPTION\",\n { cameraKitException: blizzard.CameraKitException.fromPartial(event) },\n ],\n legalPrompt: (event) => [\n \"CAMERA_KIT_LEGAL_PROMPT\",\n { cameraKitLegalPrompt: blizzard.CameraKitLegalPrompt.fromPartial(event) },\n ],\n lensDownload: (event) => [\n \"CAMERA_KIT_LENS_DOWNLOAD\",\n { cameraKitLensDownload: blizzard.CameraKitLensDownload.fromPartial(event) },\n ],\n lensView: (event) => [\n \"CAMERA_KIT_WEB_LENS_SWIPE\",\n { cameraKitWebLensSwipe: blizzard.CameraKitWebLensSwipe.fromPartial(event) },\n ],\n lensWait: (event) => [\n \"CAMERA_KIT_LENS_SPIN\",\n { cameraKitLensSpin: blizzard.CameraKitLensSpin.fromPartial(event) },\n ],\n lensContentValidationFailed: (event) => [\n \"CAMERA_KIT_LENS_CONTENT_VALIDATION_FAILED\",\n {\n cameraKitLensContentValidationFailed:\n blizzard.CameraKitLensContentValidationFailed.fromPartial(event),\n },\n ],\n session: (event) => [\n \"CAMERA_KIT_SESSION\",\n { cameraKitSession: blizzard.CameraKitSession.fromPartial(event) },\n ],\n },\n appVendorAndPartnerUuid\n );\n }\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "
|
|
1
|
+
window.navigationData = "H4sIAAAAAAAAA52Z227jNhCG30XXQdNNu9s2d4kTdxdJtoGdZIEWRUFTY5uNRKrkyE2w6LsXOtimeBgye6v5+c1ohhoe9MfXAuEFi/PiFqT5a8Zq0GzOuJCb4qRoGG6L8wJkW5tTT/DdFuuqOCmehSyL85//OzmwBtWNwCODV8wYMKcH03T0uzN7/MNrA+WsNajq6x3IAMZVJGm96oHpDcRoloKidWlYQKOMQKVffdbUTpEOqViqVnMgcjUI8lhgjFCSgg2K1Dveg14rXTPJ4Q6YaTXUwUrEtW/ygFpwk0HvdWS1NZOm059dBQp9NJLZ1MAQxkT91qBQ0opNSAS9ZrxLakA4BZ+9/2CBrw2KmiGUznsF4TEx5WCu7BpZsM5ADex8fERsFvBPCybMcDQU7jDbLpVCg5o1MyXXYtNqhpPpaSeTHkO5e9SCCvxoTkJMo6QJ18OyJzCzrkxVIqKJKFWafqIpHS3LaE9houOpgfcadgL+DY4dbdTwpWQNV2U4p3tjKvBb1kq+vWLIoq9wlKRgjwY0idoLKNClwFr9LTrpJ7lWQZajIT9cLUCWJG0qSb2ku6g4rxhaUhyIYuWFMYBkS3BEWT1h8L1sV4ZrsYLwrI6qs1xcwU5wIFt3UPqG+KN1CujIyreSd74HNRVyUEmh76AUbIkaWJ2mx8SUgydRgkqjfRkFvYHXlWK6vOAoduBsAC1qQJeDJVlk/VXdtAjlXLPa37HYEyAgJDsk1wByAZvYymgLKNACaoVw0ZCLoSvKBBILo6fKQi5Bdx8eTRxFqWY3JrmfA1ZN8LUZ291E4NC+/+Wnd+/P7AWvXVWCj6493NSaYjl7t1nVGrQ73jFEX5UX50xJZEL6UMecE2m3u/vIZFmFQ7TMKdockG8jKNuW5IgK7gV/Bu01mBHmCvKJCzBthXHgYM/nxUkpxqMW7uBHLXIqNux67plmdXDi2/YU73dVCsZdyvA0NbbfBDyIenJxMAAsUxbF7zUWJ9JiwqRud+KXxTIlM6w2t7CDysvs+Dxj/CbwKfVPc6r7NNl3H6v65O+5g+O/MOHN7/3z9PgNq661VoFWsLfkxNA1IJD4xCpR9ge5CDOmzPERRWYRnA1bEBbS5ET2qWabsQlEg3Q16Xj5Fm7g9bPCuWplGQk4IEqS7QN3GOspUswvsPr1Nsg6WlKMS5B8WzP9HORMrclVs2LYLbSfFS7bplEaIZzBqDBrRr4Ab8nZPlXkMC9WSmOUd7QmMwDaCNN9aktUOjzfQ5qsGLvmGo/xYE1WfH8HFK74xJpcC/SmrdMtKCJL0RcgS9Du1fKAtG35XWi4TgxvZsOqb2Lf9vX1lydSnPK0P0iFo59a38SKRRsUpcj2gaq7/Hehrv0tPO+lJ8YU6Y6hFi8uYnianon7UxMybL04HHM2bXJRGdnSk+JsT5k+vpEeO9B5ghQRXhBk92WMgfT7lhfr498xLdiqAnMakU49/HB2MvyhKM6LEhoNvLv1L2yP46+A6G+D9Xg1ZE4j0qnHDz9a8NXhut3/bXfk+ioCyfv/Itf7lw/xHAkB2wBepzJ+5MbVhIv14aQ2Z3z6X+9I9kQEsDpcsRqC6KuSOe33iu7drptVS5QEetd+cawnTcKti7841hIRQO1+pUReY1oP/+f/VmTGlgAfAAA="
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "H4sIAAAAAAAAA819UZPbNrLuf9G8znHULVGU/OZ1kt3U2llX7Ozee1ypFEfCzDCWSB2SGttJ5b/fAkhKjUaDbM5MTt0nu0ZAdwP80Gj01yD/mFXl53r28uMfs095sZu9xGR1PSuyg5m9nP3TfL0ps2o3u56dqv3s5SwvGlPdZltTf9P/9uK+Oexn17PtPqtrU89ezmZ/XvfCYI7Ls7Rst/vuwRTNm7xuTGGqUalX2W5nbI/9pQdRcz07ZpUpGmroRfUqSRaXkfz6a/P1aKZrPPcb1vsiGFtkDipzKB/MxGloO/0vz4SgVDsZ0iAj81GbYvdDcTw1H8o3pqjHzbIdctuhKfdth794HphC7RzwgUXGv8vrQ14rxn1p+BePt1OkHWdvV2R8d6b5bm8OttOo5jvTmHPbv3iUF13agZKRXJTjfJNCgoHDdNi/PFWr4WJB++Og35Sc8Kttk3eramh8pNkE1+w6TRF7de4yPG/U6ojyxnyZNKKrrsOTFe9HPE6gWOVxFIrN+JIIdGuXhqx+EKjBTiTgtW+jhu3r7GCq7J9587eybOqmyo6vy+I2vztVWZOXhTT2kS4T4HzMP5SfzKOVXGXHvOkEyLM9NroY4sq7O3nHV5l17v7cRr0xD2b/FLP2nYDnNcwU9TtT3ZbVISu2onvS2WeK+ujJeXYzX5eV+deDqap8Z36u9qJbUdu6LStTdsJOrbCnGqzdJR9t48g2OiZXnMPIfH/O6sNfYHsn9vnsf9HNSWQYvz0vSFplvz0aLI8Zgp2y74rdscyLpu/26EFZYaYTVl6EPetSzYps/7XJt/UP4plWtzf0MvLdc5t3W9Kocaphfe9nd27/aJrjP7Jit3/K1mWK+r5pjvdnOc9qZlOd6sbsPtjA5V25z7dff7Q/PNbaTpyLg45OXNGKe6rRNEL6vpRDQPt3faxTRMZ5lnI1aLozInY4zZpsWHTXQiWaDv1Nh6qfzP+cTC3OAmuinxArSSnvqm0rm89tjKjLd6Zo8ttcXhuiVq/Lk5QfTHNfiq5MVHxu/iSlMViIKgcRolR4b7KdqUTHKOq8tH+S2tjxUNQ5eDSMK+TnsjcRd9ueyNivg2tiMOKLi7saCeS4gUQhOd/WTX7IGvMmEsDfnoqtdYz1N5GW6lPmd13/XUwVeW6xtnrXst3bbUFc6IPCry4d5VmNDiNiyI0ptveHrPokAnTYFq/v85jz2dzc7X8yxc5UpvqhuC2nW+VEVJ2IvBXxaOOkVUVavmaP8bIawkbDa4xAozJZY7770piipumNC9RZC63gm3NI0QcZguyw0fAKYvPz7nSzz7evy6LJ8jAPxH59hOT3pnrIt4YnRP0fB+UuLiJNP4OdN7WG0QziQ1bl2c3e1N9EWmpn3mZ8R3RdnkC8sd697Mze3GWN5CdHxF+RrvKqGRiMcs+YbszIVjIg5jycePj4vjxVsp+//DoC1eX6EsXVf6/K0/FfnyOEHJN5ldd3tn35eYiLI2ZG1O7LbBfjvbhK23Y0ytCpc2OdovOu6zBB8coPpNrf6++zbVNWXwVQhY0mOZqfq5x5l5+rXB1G/FzlA0eRy69TTiG5QtRV20yeVmLUo84eXJfi2DGuMn7i4OpGDhvjqrbWGRTNh0iqkuvrmg+6nHGlscMN1zZ4rlFNY6ZVRdpOUBfAuz6WRR2fyfbnCbFwKef6uLCrruGA6Z1l0V2x3lb5MUYaBfr89o9Wq0GfP0wl/EZGOwQKb5ijiBhWNIpAqkwHwUAhw+BrG1fvhx2t1+Y53G0ocMzp+mZGC3ncz3IeWVbbdRlIGw8o5/vdT+ZQNubV0e8gpw0G2z41iTAufCylMDwUGU3nPgNo4m0m8cfvj2YrP1xRrGWM66PZDjzcwORYcUDHgUzR3vd5BvXHrMoOponk22T1Xp+nqb8pd1/1irvWk1VGV5NuHf1FK+gpa2fqqolHA0Ej/bqpm6w5jeGG7ivnDqOje/xmFlE9uqWplSsgSxVrMTu4m57bddmTQf1dm+f2f1TsFP/Xmxw5pN6ZJrIKR424M023yY7RjIPGRHxDJIsV/D7p3Hrp7a8dLtv9qs1cVdyk+LE71nQYLHh5XGFasuvyjS4XGVAuZIJlSVfnViNsrNYND6rRFra86KyKxovHss69h6BQ6/XSGTBSsnEwTZVvR6f40kw/x8GT/GnSmKeMNeY72hz7e1N7OfiI0rZxfW78SJ07UzdVOTrES7MJemg9JR3av9zxVi4VEdpNWID5g2mJnA9ZdWfEuDqq4cr2bjmcpu8dGaw0mOjKsQL/c5/vzYfs5h/5bhcp7Iya1Ur4bCU02c19L+FRpknU0tt2sYhF38Hvk3YH2/vfufksCLV/nizrPxnx0xdZ9s/qXOlQvloPtDxatdAnKwfTzdH7BjZRLcctF9mu0SMVxMptLtIHy22GROfbsvg5XrzSzcu2LMaqVmIKHkyxK6tvB8o3Wh1tu9HKjUeUl0o6FAUHL4jlsXSdc5/fZ9u8uHtXmVvrh+L0ULcBuD63rs+R9pk+tcfKPNB1Kuq7NJquwFVnWtdURvkpUht6bjhdUV1kx1hu96KFtJqu4tZkzakybwcObRdNXePR4xpTSD3W+4Eh9b9N8FyH7M5E1qkn7cq1HFqsZ8OiqW9zfJMXn8ZV2Zb7tqVaFZ2id3H8dj89zwRRYePz01t1UbT2tqFfX5NVf1ZnitOhRZD3+/AASKD16u13P7369ftXr3/48e+//vzj++8+qER37uTX1p/8eirqgQAotF5hy/c//evHR9lyW5UDN4ceZcvfXr3+52NMucm2cZAqLfn5x5++e/2vv//4w39/963OhlNRmW15V+S/m+FtP6adB0Ajrrj7eULpR14f91m0aJnLvOraj8YavZ3xsPBVXZvmQ36gK6iNDMkv6mzAm+Fjn/+zvjwjqJMYEKgrlCBGaoolpmm+67s8Rf822967usjXLbOossB1aq+H9J2eYsOdaboDjL9TD5lwZxprgGrDHregvUv+2g7LPQ0hOyQZ0XZzs7EbSRfF7WBr/k12Krb3Q+HzpcUE5rI2VfzAwiRe2dYjJxdi5oDKCcNwSkcf5bjavWvxznJF0QMkV932OfZ9JqrnT/DnkYH3vz/X0/PkaZ7d2cABdUMn0FDh6A4xpvImr5r7Ha1KHNRJmz9eqWI79NVq98MxxdvyVDTV16EDkK/Y7/B4xe4+n05l3/Qpz7Q5lL/lsUpt6am6DoN12RrFt1Xu3ouh1du2f7La38tdnm11Ks9tJ6mjnuZv7WTZVrGRsiYTmLmHrMkiHkcSetV2GHA73NoYPs3+NjcTFLcdHqXYuyTnEDA0l34L/VS22Krv8+P7Jqvkm3ih6KtLt7rrJg+PGR7dE+vmB6sw28YK3CQjbLfc6/YUI+qmMpmYZJB0n1tPVCnlo99IIcElL01/npTr/m9/wbcS2z9OkuOOQG9Ke51MOhy1vzy1/oOLGqv5oEZFYp0y27lWQ/crWZsJPsj2+rarsoycgSXhV67jjnaM+Fhu/kBOVK99+EioVOmG8DYr8tsp09qO/HDp9sRxl5/fVXlZ5Y1YdxIZfvn5eOk02QBxZQRlRATQquohLvV702zv5eIr+tNTV1wga2zJeXaN1EGwiykBHay4mpIAkoi0qJvqtKUrbUjmld9hhGwevi+yLY8DvLav9Kigtoe1OdBYpvZ9/rtu/q5qW/Bju9Rtl6fq/1BlRW1vAKrVN6THZO3S65LaVrFgR2imd9wHs8vFs29M6lXfQzWyoRDjVJu3WXHK9t/bStF3Vbm1BDtJOWqsOdXm4ITcWiFHKuTJBlbGnh8/VNn2U17cxZIEUdPa7k3XfTBZMmzU5Bf1jFuirWAikoTZiB0lT7e3I68F0Vp4FvUUO8PyJ3GVfWtssdtQGY3YcsL1GNc/dntkQHrHl+gemT+M2EHnWL/JD7lcyzNgyO2x3nf9HmnGgIN7f7qxceCNCjuXxvoHUBavmibb3k8Xf1UWWd9VBUUylicv5Jgt0xYxkXKeh+g8fWsePU878//PPLW2PGGeunkQK2rbWsG3djt8b8+/Bxbl8Wv+QUt1eVXQc8BJxdrqV0kTBDxa8VfjkU90KPGsr72437Z9ddrlYgg0bFUno3a/ZJ2M5zFv2KUPmxVx6k29+6+8/q+8uDdV3jhu+tHmDbn5YeNER/9E07wcXrc4RvEsNnyuPTcuXLPlymMY8BX/znemHPESpI3aP5A+AzMZtprkEwaD4IjsK1X0K5j/qKcZM+IRC01v0tASixk0eXENmhPA7AdbQzUCM9Jm4t0UoRC8v5hy+Wn6VZHRAv2uwYRo79QcTwNXUKjAq3PjsRihM/Ox10gEperwpOvamTpQrf8I9fuhF3dHTBi5VrLNjrZK8xHGXHo+pz32WEjTC8P2XFr/byKi0zoVEr2xT8eEZ8A0UHRdnxUVnjmTYaGzyPh3NIYNOjeejIppV648peqbVyNaP/FvtwyrJc0n6/WyqNnxuP8q1urJil37QW5Gq7mt+Zqguu3wLLot+ibA/On6slOtXldd26dpPJwarcKu6dP0nYoJGs+Nn6azNuPsDVVbm6bu2z9Z8/fv3vvB5ahufYJOMe5tZUzxk7nzThTjw3fdqnO3p9kxepXSU6++USlp9SNdOvoPIV/If1Yf1mhH8RIH+V0f7H5Ribr6Er8MQs2KKBGp5VBJfPo1Sj7nu0bMPIaK+qaPV3Zv8rt78ewWaju3naRuCFa8vsX7bdKxjONavHcqN3q6nsi3Ygbbqg+IZ/oVvw18APlNv1Le5lVVVv9nVNjVwTWMrxhq2aCu/6vVFV84Cl0/uFf5NaGnDJTll5ZTtGkrEAJ9muoDxQAPWVPlXxRz2bebookD/a2vrEV0+8dJF1/I24Pfmqx2txYj9zbkps9SFDIiXvWEBkYTCw/bJpOtufR7LksqU5vJk37V93ouK0wRnrzGbGj7PMUCyreWh+OpMTtXcPGWHUEprya0m1KPfPf9cZrcq+zh7nbgdpRo+EAFIKso+ZAfzNv61YNcWhI1ykpiZSVNfjCHOnsYyAs9h6nvG/lbNNNNrZuB4/tzmOp4H/nlG9OtPfTC/hKDf3yylY83bWhbkFNBcjP9/cgbc5cXk/YcMnbX+eB1VvogPnLVYW7IlLEj3agFXjT59Wh2r091Ux78r2aeownW4Fm2X1GoLizi9sb4OSnFLKsdzCwP6ePT6BowJshTTRo83zRyofpppPbGEpWxz1EPm6D+JrXWDnt1LWu29wMYDYzo+5iHofWqtWDoo9TDdkz5MvWgNawMPN+bd/n2k6k4xd3Vb/PfpxWZn3v/ZOrTnlOb/OdHyo5KfXLxui9ptHT9YpFII9+ef4+/JDBoM2lO3pi7bP+dPfMGV3z6HybKO9+J/3e2z3fuG2uy/FjDyfpi4qdLYxVokmCpyWSLHenfPrSY8bzJxHFs780/zdcfy+b78lTs5IEIbaZpod/RE1UEDSbJ/4+5+fsbSe7lh0ny/tZ/XEmS6f84Se67fdbYqOfHsnl/Oh7LqjHijEfbTUf8F7M9Da0sv8Fk+a9uyqqJyb78OG2W7EUQuw0175uyEteW1GS67faCU9T284/TkNN/wklEjvfjtCuM1d3pMOoqI60kTb9cz/JiZ77MXv4xe7CzWRazlzN8sXixmV3PbnOz39Wzlx9b/dezbXnoDhW7cut0zH7pmv3b2M3ENm5bfzOfXX+cXy/TF6vF5pdfrj/2nd0P7g+9jMtfXEeYXX8EqSMEHcHriLPrj3iNqxfJJvU6YtARvY6L2fXHhaRxEXRceB2XMY3LoOPS65jMrj8urxN8kS79jknQMfE6rmIaV0HHldcxnV1/TCSNadAx9TquYxrXQce113Ezu/64kjRugo4bHwDzmEoIsQMMPBYSqaQVBPj4+AGLirXYN0QQ+BACC4yN2DcEEfgoAosNmIudQyCBjySw+AC4XsKLdAV+5xBM4KMJLEYARc0hoMBHFFicwELsHIIKfFSBxQqISwBCYIGPLLB4ARHNEIILfHShBQyIwMQQXujDC51zEvGFIb6Q+ScLGRABhoKL8gGGFjMgIgxDhKGPMIw6KgwBhj7A0EIGRXRiCDD0AYbOX4HYOQQY+gBDCxkU0YkhwNAHGDq/JaITQ4ChDzC0kEERnRgCDH2ALZz7SsT9JATYwgfYwkIGRXQuQoAtfIAt3A4oonMRAmzBNkELGVyLZgv7oA+whQPYRvJCixBhCx9hC4uZhYiwRYiwhY+whcXMQkTYIkTYwkfYwmJmgeKYQ4QtfIQtLGYWctwQImzhI2yxiU9YiLCFj7ClxcxChOcyRNjSR9gSohvGMkTY0kfYEqPYXoYIW/oIWy6i4VIIsCWLtCxkFqLLXwrBlg+wpQOYuKiWIcCWPsCWDmDiolqGAFv6AFs6gIkufxkCbOkDbOkAJrr8ZQiwpQ+wpYXMUlxUyxBgSx9giYXMUlxUSQiwxAdYYiGzFN12EgIs8QGWWMgsRbedhABLfIAlFjNLOa4OEZb4CEssZpYiwpIQYQmL511ALyIsEUJ6H2GJxcxSRFgSIizxEZaksUWVhABLfIAlFjJLEZ1JCLDEB1jiACaiMwkBlvgAW1nIJOLxcBUCbOUDbGUhk4joXIUAW/kAW1nIJCI6VyHAVj7AVhYyyeJ6uXyB6dLvHAJs5QNsZSGTiOhchQBb+QBbJXHNIcBW7NC4im5zK+Hc6ANslUa3uVWIsJWPsJXFTCLuF6sQYSsfYav4HrkKEbbyEZY6hK2kCUtDhKU+wlKHMHFFpiHCUh9hqUOYuKrSEGGpj7DUIUxcVWmIsNRHWLqMznYaIiz1EZYm0dlOQ4SlPsLSVXy2Q4SlLDVhMbMSt6pUyE74CEvX0YWRhghLfYSlLkchepI0RFjqI2xtMbMSPck6RNjaR9gaommVEGBrH2BrC5mVuEeuQ4CtfYCtLWRWSwkj6xBgax9gawuZlbhHrkOArX2ArS1kVuIeuQ4BtvYBtraQWaWi2SHA1j7A1g5g4opchwBbs/xXPAEmZMB8fK0dvsTVvA7xtfbxtbGIScVlsQnxtfHxtYHogtyEANv4ANtgdLI3IcA2PsA2FjKpuKY2IcA2PsA2yyg6NyHANj7ANhYyqbggNyHANj7ANhYyqbioNiHANj7ANhYyqbi1b0KAbXyAbSxmUnFRbUKEbViS1WImldOsQp6VJ1odxOR06VzKtbJk6zzqxdqfeHeWb51b5KRyxnUupFznLOc6d1DbiFzBXEi7zlnedW7xsxaj0PY33p+lXucWQmsR6u1vvD/Lvs4titYoLdL2N96fJWDnFkhrOQM7F1Kwc5aDnVssreUk7FzIws5ZGnZu4bSW87BzIRE7Z/Bzufu1CF6QUv1Brt/iaR3J9kvpfoa/NuEv409K+fOcv8vjR3LvUtqf5/1dKn8tswZS5p+n/l02fyMTB1Lyn2f/XUJfTvmBlP/nBIDL6W9k/EsUAOcAXFp/I9MPEgvAaQCX2Zfdj8QDMCIAXG5/Iy8fgQoAxgWAS+9vxM0KBDYAGB0ALsO/EcN1EAgBYIwAuCT/ZiX3F+DHSAFwif6NvHwEXgAYMQAu1x/TL8CPcQPg0v0bGX4COwCMHgCX8d/Iy0cgCIAxBOCS/rHnJ8CPkQTg8v4x+wX8MZ4AXOof5vL6FagCYFwBuPQ/zOUFKNAFwPgCcBQAzOUVKFAGwDgDcDQAzOU1JNAGwHgDWLTcp7wHCdQBMO4AHB0QWUQCewCMPgDHCMA8IkBAIaMQwLECMJd3MYFFAEYjgGMGIlGIQCQAYxLAkQNyLg0ELgEYmQDLFoayHxD4BGCEArSMwlzeRwVOARipAMsWhvJKFngFYMQCLNuNOEKhCzBk7AI4wgBAXkkCwQCMYYBlS8OLOTYQSAZgLAM44gAidLpANABjGsCRBxCh1AWyARjbAI5AgAitLhAOwBgHcCRCdA4EJDLWARyRADI3DwLxAIx5gKTltmQoC+QDMPYBEhzwBgIBAYyBgKRForwWBBICGAsBSYtEeS0IRAQwJgIcuQAyYQ8CGQGMjYCkLQqR14JASABjJMCxDIAyDgRWAhgtAY5pAJm8B4GZAEZNgGMbQCbwQWAngNET4BgHQHktCAwFMIoCHOsAMpEPAksBjKYAxzyATOaDwFQAoyrAsQ/27ocoQEAioyvAMRCAMhIFxgIYZQGOhQCZ2AeBtQBGW8BqNQAkgbkARl3Aqi1RkqEssBfA6AtYRZN/IPAXwAgMcJwELCIFVgIOGYkBjpeARaTISsAhIzIgjbP9IFAZwLgMcPQEyLUGINAZwPgMcBQFyMw9CJQGME4DHE0BMnsPAq0BjNeAtIWhvJIEagMYtwFptOgSBHIDGLsBaQtCeSEKBAcwhgMcaQGLzfVi8yJNWJ5IIDmAsRzgiAuQiwFAIDqAMR3gyAuQCwJAIDuAsR3gGAyQiwJAYDyAUR7gWAyQCwNAYD2A0R7gmAyQiwNAYD6AUR/g2AyQCwRAYD+A0R/gGA2QiwRAYECAUSCwjuNQ4ECAkSDgeA2Q6wxA4EGAESGwbms2ZSALZAgwNgTWLQ5FjhEEQgQYIwKO5AB71hEypgIpAowVAUd0gFw7AAIxAowZAUd2gFw/AAI5AowdgU20CAoEegQYPwKO8oBEXgcCRQKMIwFHe0T0CxhkLAk44gPkKgYQiBJgTAk48gOSSPGugELGloAjQCCRl5FAmABjTGDTVg/L60AgTYCxJjifx2GMAm2CjDbBOcRhjAJxgow4wXmLQrmUWGBOkDEnOF8MDUGoJ2bUCc5bHMr1yAJ3gow7QceFgMz6o0CeICNP0JEhIJP3KLAnyNgTnKdDcyAUGDP6BOfroccoFBkz/gQdHwJyCQEKBAoyAgWhrWWXq5wFBgUZg4KOEYGVXOksUCjIKBR0lAjIJQEocCjIOBSEqD9EgUJBRqFge3diJSahUeBQkHEo2N6fkMluFEgUZCQKtnco5OoCFFgUZCwKQrSCDwUSBRmJgu1NitgMCChkLAq2tyliMyCgkF+o6G5UyL5AulPBL1U4YkTmcVG6VhHcq8DYXTMUL1YwCLZXK+RKC5QuV/DbFY4YAbnmAaUbFvyKhWNGQC5dQOmWBb9m4agRkMsXULppwa9aOG4E5BIGlG5b8OsWjhwBuYwBpRsX/MqFY0dALmVA6dYFo1OwpVPkagYU6BRkdAq2dIpcj4ACnYKMTkHHjsh8PgpsCjI2BVs2JY1c8pFu+TAgtmzKWkaywKYgY1PQsSMglzSgQKcgo1OwpVPWMpIFOgUZnYItnSIXNaBApyCjU9DRIyBXNaDApyDjU9DxIyCXNaBAqCAjVLAlVOS6BhQIFWSECraEilzYgAKhgoxQwZZQkSsbUCBUkBEq2BIqcmkCCoQKMkIFW0JFrk1AgVBBRqhgS6jIxQUoECrICBVsCRU5a4ICoYKMUMGWUNmI2UcUCBVkhAq2hEpMgIBERqhgS6jIFQooECrICBVsCZXIHAiECjJCBVtCZSMvJoFQQUaoYEuobOTFJBAqyAgVbAmVjbyYBEIFGaGCLaEilzmgQKggI1SwJVQ28mISCBVkhAq2hIpcqIACoYKMUMH2jodcKIACoYKMUEHHj6BcKIACoYKMUEHHj6BcKIACoYKMUEHHj6BcKIACoYKMUEHHj6BcKIACoYKMUMHVwOYs8CnI+BR09AjOZSQLfAoyPgVbPiWyGAU+BRmfgqv2Jq68FAQ+BRmfgo4eQZnpR4FPQcanYMenRIYgAJHxKegIEvHlDijwKcj4FGxvhMiVBijwKcj4FHT0iHiXBQU2BRmbgmkLQnklC3QKMjoFHTuCcqECCnQKMjoFHTuCcqECCnQKMjoF0/hVcIFMQUamYHtLRH5lAApkCjIyBVsyRa5zQIFOQUanoGNHUK5zQIFOQUanoGNHUK5zQIFOQUanoGNHMPIKAYFOQUanoGNHMPIaAYFOQUanYHt7JPIqAYFOQUan4LrFoQxkgU5BRqegY0cw8loAgU5BRqegY0cw8moAgU5BRqegY0cw8noAgU5BRqdgS6fEXhEgIJERKrhu308gI1EgVJARKtheLZGrDFAgVJARKuj4EZSrDFAgVJARKuj4EZSrDFAgVJARKuj4EZSrDFAgVPq/uRcPPRj7Sqsf2hcQffx4fkXeH7Nfu7cSnV999McMZy//+PN6tmz/WbX/rNt/YN7+i92vy0X7b5J2zaD799y++4OtCW7/s+p/SjvRlj9r/7NZ9P9JOjWw6P/TKbB+8uUff/55eUWS+3M/bPebnYds27hPM11GuLmMsJU6LiN4aeVFGhBpnWXtwMalFtn+a5Nv63znPYAFeQJKSce8PpqtL+fyksI/Zutu9jbKOTvmTfnJFN44EzLQjVLM+dtERE46J+ND5QPo3q/1cH6/lmnfwkWm7fLO1T9mFvMqufZlYztjP2J7bHx5tgTkMuB0rpe3L7Mdw8iComSV6mUdsiK/NXXjS1tSy1AvrTL1sSxq40tbUWlKgFhpTX5wX30jsuZU1kI5zoesySofu4B0iIkSbt2L0YmYDcVEkqjEhO9zJiCbE7vseUcnsHtvoYBZoGtdN/dncd5QF2SkS93E3+RVc7/LGh8OkNKZV44wbw7lb3le3Jb+U5xTWcrpb2WdalOF8uiSTHS+8abcffXcIhlfv99sdGvopn+NYPuV1E+5h40l2Tm189YLFJCRUm+m8z43p9tb5niW9GmudbjY2teOfjJfi7K5ta8dDY0DuqzWurE6qXYz2LavlPX9BhFoa9V1Au1D+PU229qvHt5k20++SIqVhW6b8UXeViU3E6lMHWh8mafCfSeDyqRbw2LK0FuRx8rcmsoUWz/GoaNHHXxEVKfEo290fvgs57Je6FtmfXxSeE6TvjMP+daU/RuuqVCKpvVEsXX/cV0ikIZSlo9/jMB4ALmmS30S+Jl0fxbWKyp2IgT67/LROIHOaqp1JZ48wZNQI9OJ+GqFBrvEkmJ/PWWVnmXWpxsbE96wJ5XQtaoMMekXtamR9BSy7o5Etmyp+09/3JlrJ7r73itFLcUVnA9Syknen+rGH/6CyFuudFLKnWdTQjCkDFy33ddC3OdFzl93pTEeHWaii6E8hySgckP3N62d5NsKdNnQB512R15cdpGHpX+6Q+Oy/4/yibfbKAdWQo5p/QFbGdRvy+NXH6M0fNMuzvJUNNVX/uCBhgz2Bo5Klvv8uvnSmIK75CVZiYnStzlpuX1pu+DdVjTvMVeO1Ul0H+Kpm8pkB0FuQne4jXLVOLnCRrSm/meui6c9YcJuuabeUuttnMyHfGdKach09cx12NtlTeYtQSJj0a2MReclV92/qW4CdsYc93nhRYcbuihRN+id2Zs7dlqi4XWie7h9toE9WjppqW55nL/2Qx4mDVDnvY9ZYO9adK5sl9fZzb5bJdlpl/v7a0LPFMqYcJfXh7z2gEcclfIB+F9toadyeh5ZqS2yn5J23bx4nOa5Fn1CMtHNnNkHKQOgj0QHEfchO7rD0SBJ6TtNsTuWedGwnCAZnDLdYOomP2SN2dmz2/Hy8SgvMiAGLnWrshc7JJUYu1QaG4bBK+qNlCeh85ZTmf85mbpxe+0X/7RPjFMGHbcma1xOqcm4u6MxDKBWXLO9v8+K3Z4nG6kwpZO0n6g5dh/eoYEQzU8p3dJF1G3/RRwqke6zk40T9i/LDROJuqD8IrHqvmFETaQJamWUestSBTR9o0wUWBH+yOipU+fULp80p/6ahnGb8wmjZyvmugPybZWbYhem5GhIotwCW1H1fX6sm6xi3pKCV7lftfLkjCFNSCvztecPN7n9T0ow0GOMveihkXpnGmF3oNkVtRiFdyJylXnXO9NYXyx5J6BLzL4JQimvs0/wUSnxAhulfVV5Ovq72YYCG3Ri7o0lZ/zUOVlnyjxJ/31zmm6hq3WhW1P5tizsZ2TomOh6Al1g5M/Kmj4s0O0l7Weub3N24CdPadHRrivdEr98N5vGMXQ3UcYJ7rzG54ieJbEP0ZQuMq8dksrPLA1HEzJKwuk3313T0elm6ZP5elNmlff4CKZ7V426FddLaxnvIEr2Jm2SwHjq0qNIp8v05o86fp2j3md14z5Pm22DxDJlg+17FnTyTsX2/phV2cH3916aWsmu2cPiXkgtUXY/1cEkoNC9PbfttDyXV/SlE8pQyAr/lRIKvuenLnahc45WYma/QCawWtRJKukoJ87yzYI4ejBa6xYtoaCGqgnoI0dltrsVXZnywVRVvrNui6Uq6RahF2mzLb55G3pIxe54b1+0pZUpDDihA9btX06Sv4jpKp7r8WL6r+EJD9mrh9GvmPB71PTQQI8hSnc//I1z+pjpc1bGxKPf+abG051GSYMPf/WcCqenn0QP/PumOQqRHhJYLboNTRlB9lK7MNKLTIiRE1Dvgon23CcsAMojrPXQbXeNIGb2nLQyfXERJ2xCdMz2vT1agR1nEm64lCAE0A84kq7xigL0T5hIEzgnSkEs9cuUCI1U8gBlyPGxogM2CmnZgb1RoRVbmWNZ5zxdsqbPfL7s/bx+yYfpeUqOT/AdHS8qpHQS4kqVB3Yr0B7Xw0VD97Wl3rqH3Hz25s0LJvWB0OfMz52saRSpjJr3rNzUXhQnPGxP8ynLHay0ytginKb7fDyxjoalyjSOLU7sagEDrwoLL1etXBNltuMBKs04reY9aqfJc6c0TyhxqMpMjifL96ZzihDlqX9f3t2xAxB9tGohe/NgvAOtt/Voh/b5WOVlxc/YNGkOyoztIWuq/IvvHWl8tOxLrpUrsnO5vkAaTyvL41zo4zPSXr2QcnScnxUzel51sy7qkVJlCQFE2iG/L29XFowcTHNfejEZrURedJy+skpA2KJSmh8615koYXfIbdzkY4UmnHCpfChODksP0chTGTEdTqx8NaU4UzK7nAOkuYNFf5xWcndlkTVNtr330UX9qrLYtCx2JhREEy7KYv7y1BxPvp+nNCAqtzUXkdpDuAcmuretdTHpMTuxCvSUxkzK1Nnx/CHy2n6IXDg20jEqiwCP3effi7Kp+8+/C5Kpb9QOep/5YKcZcPtuEa0QnqBZ0ahbidFjZXjARN0zYJ9LUl4/OZ5u9vnWJlWynGdVyaNVcuittNpUtrzTAxv1/koavDKHsjHZMd/agH0fZyRo/Y/y8HeWLYRSKzJuZQEZFycZSR62MntGpIZ3Pyg3rkyfneV1D8jbWUiEtpn4fKTnTf2CsnQqkCccWFLiGTY6hF/ENllz8o0koFQGDlbag3EF8bswhQaUfwblftqKjCbqaQDRbfjKG02t4PASF01BKQsWYscYoIsFlYmIVtjn+3xvmuzmPt/t/OtqaxrQKev5KmM9bFNl2095cRccTimpCkq/Lx/rU3qsVPLHnVdg9TzkMSgLNCvDbyDQZDIqnbTLc/uopWGlsiLGprZNUZk7zt7QvAcupgtjlfB0gMpjKJUWFG+nXiJft0Jrs7/NDb/mRlGqzBbVrgzjeGqaki9Luj8qZTViyQhN46OS9nE5Bbso6/x3VutOU6HKzbU2TfyB0vWDyjszVmBYq0qvt6CSQbZXH6usqG2k6I+ThvnKa1F1Ya/H+MXStN4PsD+AKINEYYcii0l5k8wdl/37VLQiF1a6JcnLUvydTSci5o2p68O5LjqQHxs9s4MyIDhLQn9B04QhKnmOprJp7531MvWx3OfboCiV8pxKuAfX+unVXFTSB1bIbnuqm/IgFN1Sr6pk2J1AJyoMA5Cm5FBZZ3IqwgwAtUt5gjkVldmWd0X+u/GfJ73vC8qN6FTlXkqIRDerbjGvOtZeybOeKv/84oUAZE0peepTJR1Z6E0F5fp2gsJjBS0QV1YhsAofel9+oURCbQ5Zccr2jOX0PTTdb5UF0DJRQRMxystQrkDRh5dXHL7sQAFKNsrK454CaEYalDdjHkyxK4Mx0hQwKNkKciVEyrJSrKLy/srnrD74boJGq2oRfT18X5vhZ3Ro6YNOpLm5E6p7POOU+Wknqo2cwgJWentMmX3/nO8aP2tIr/ig8q0MLMVLN1sl4e7nu+jNFFQu6d/LXZ5t/SiEgrJ/1wxoNotfrmfH/Gj2eWFmLz/+8uef/w9PE5WcuxMBAA==";
|
|
1
|
+
window.searchData = "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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CameraKit | CameraKit Web SDK - v1.
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CameraKit | CameraKit Web SDK - v1.12.1</title><meta name="description" content="Documentation for CameraKit Web SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">CameraKit Web SDK - v1.12.1</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">CameraKit Web SDK</a></li><li><a href="CameraKit.html">CameraKit</a></li></ul><h1>Class CameraKit</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>The entry point to the CameraKit SDK's API. Most of CameraKit's features are accessed via this class.</p>
|
|
2
2
|
<p>Applications obtain an instance of CameraKit by calling <a href="../functions/bootstrapCameraKit.html" class="tsd-kind-function">bootstrapCameraKit</a>.</p>
|
|
3
3
|
</div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link"><a id="example" class="tsd-anchor"></a>Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-6">cameraKit</span><span class="hl-1"> = </span><span class="hl-2">await</span><span class="hl-1"> </span><span class="hl-5">bootstrapCameraKit</span><span class="hl-1">(</span><span class="hl-0">config</span><span class="hl-1">)</span>
|
|
4
4
|
</code><button type="button">Copy</button></pre>
|
|
@@ -25,4 +25,4 @@ to Lens rendering.</p>
|
|
|
25
25
|
</code><button type="button">Copy</button></pre>
|
|
26
26
|
|
|
27
27
|
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="destroy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>destroy</span><a href="#destroy" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="destroy-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">destroy</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span><a href="#destroy-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Destroys all sessions and frees all resources.</p>
|
|
28
|
-
</div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#lenses" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>lenses</span></a><a href="#metrics" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>metrics</span></a><a href="#lensrepository" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>lens<wbr/>Repository</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#createsession" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Session</span></a><a href="#destroy" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>destroy</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.
|
|
28
|
+
</div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#lenses" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>lenses</span></a><a href="#metrics" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>metrics</span></a><a href="#lensrepository" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>lens<wbr/>Repository</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#createsession" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>create<wbr/>Session</span></a><a href="#destroy" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>destroy</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.12.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CameraKitSession | CameraKit Web SDK - v1.
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CameraKitSession | CameraKit Web SDK - v1.12.1</title><meta name="description" content="Documentation for CameraKit Web SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">CameraKit Web SDK - v1.12.1</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">CameraKit Web SDK</a></li><li><a href="CameraKitSession.html">CameraKitSession</a></li></ul><h1>Class CameraKitSession</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>A CameraKitSession represents a single rendering pipeline connecting an input media source to output <code><canvas></code>
|
|
2
2
|
elements. When a Lens is applied to the session, CameraKit uses the Lens to transform the input media into rendered
|
|
3
3
|
output.</p>
|
|
4
4
|
<p>CameraKitSession is the primary object that applications interact with when integrating the CameraKit SDK.</p>
|
|
@@ -158,4 +158,4 @@ will be automatically removed.</p>
|
|
|
158
158
|
</div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><p>Promise that resolves when the screen regions have been successfully set</p>
|
|
159
159
|
<div class="tsd-comment tsd-typography"></div></li></ul></section><section class="tsd-panel tsd-member"><a id="destroy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>destroy</span><a href="#destroy" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="destroy-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">destroy</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span><a href="#destroy-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Destroy the session.</p>
|
|
160
160
|
<p>The session will become inoperable. Frame processing stops, and any session-scoped graphical resources are freed.</p>
|
|
161
|
-
</div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#output" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>output</span></a><a href="#playing" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>playing</span></a><a href="#events" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>events</span></a><a href="#metrics" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>metrics</span></a><a href="#keyboard" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>keyboard</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#applylens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>apply<wbr/>Lens</span></a><a href="#removelens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>remove<wbr/>Lens</span></a><a href="#play" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>play</span></a><a href="#pause" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>pause</span></a><a href="#mute" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>mute</span></a><a href="#unmute" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>unmute</span></a><a href="#setsource" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Source</span></a><a href="#setfpslimit" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>setFPSLimit</span></a><a href="#setscreenregions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Screen<wbr/>Regions</span></a><a href="#destroy" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>destroy</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.
|
|
161
|
+
</div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#output" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>output</span></a><a href="#playing" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>playing</span></a><a href="#events" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>events</span></a><a href="#metrics" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>metrics</span></a><a href="#keyboard" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>keyboard</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#applylens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>apply<wbr/>Lens</span></a><a href="#removelens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>remove<wbr/>Lens</span></a><a href="#play" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>play</span></a><a href="#pause" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>pause</span></a><a href="#mute" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>mute</span></a><a href="#unmute" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>unmute</span></a><a href="#setsource" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Source</span></a><a href="#setfpslimit" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>setFPSLimit</span></a><a href="#setscreenregions" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Screen<wbr/>Regions</span></a><a href="#destroy" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>destroy</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.12.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CameraKitSource | CameraKit Web SDK - v1.
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CameraKitSource | CameraKit Web SDK - v1.12.1</title><meta name="description" content="Documentation for CameraKit Web SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">CameraKit Web SDK - v1.12.1</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">CameraKit Web SDK</a></li><li><a href="CameraKitSource.html">CameraKitSource</a></li></ul><h1>Class CameraKitSource</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>This general-purpose class represents a source of media for a <a href="CameraKitSession.html" class="tsd-kind-class">CameraKitSession</a>.</p>
|
|
2
2
|
<p>When an instance is passed to <a href="CameraKitSession.html#setsource" class="tsd-kind-method">CameraKitSession.setSource</a>, it will be "attached"
|
|
3
3
|
to the session. Later it may be "detached" from the session.</p>
|
|
4
4
|
<p>Passing a <a href="../interfaces/CameraKitSourceSubscriber.html" class="tsd-kind-interface">CameraKitSourceSubscriber</a> to the constructor allows callers to specify behavior
|
|
@@ -33,4 +33,4 @@ of as free.</p>
|
|
|
33
33
|
constraint should be removed, so callers don't have to understand the underlying LensCore state machine.</p>
|
|
34
34
|
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="settransform" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>set<wbr/>Transform</span><a href="#settransform" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="settransform-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">setTransform</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">transform</span><span class="tsd-signature-symbol">:</span> <a href="Transform2D.html" class="tsd-signature-type tsd-kind-class">Transform2D</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span><a href="#settransform-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Apply a 2D transformation to the source (e.g. translation, rotation, scale).</p>
|
|
35
35
|
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">transform</span>: <a href="Transform2D.html" class="tsd-signature-type tsd-kind-class">Transform2D</a></span><div class="tsd-comment tsd-typography"><p>Specifies the 3x3 matrix describing the transformation.</p>
|
|
36
|
-
</div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#copy" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>copy</span></a><a href="#setrendersize" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Render<wbr/>Size</span></a><a href="#settransform" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Transform</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.
|
|
36
|
+
</div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#copy" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>copy</span></a><a href="#setrendersize" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Render<wbr/>Size</span></a><a href="#settransform" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Transform</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.12.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LensPerformanceMeasurement | CameraKit Web SDK - v1.
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LensPerformanceMeasurement | CameraKit Web SDK - v1.12.1</title><meta name="description" content="Documentation for CameraKit Web SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">CameraKit Web SDK - v1.12.1</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">CameraKit Web SDK</a></li><li><a href="LensPerformanceMeasurement.html">LensPerformanceMeasurement</a></li></ul><h1>Class LensPerformanceMeasurement</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Represents an ongoing measurement of rendering metrics.</p>
|
|
2
2
|
<p>An instance of this class is obtained by calling <a href="LensPerformanceMetrics.html#beginmeasurement" class="tsd-kind-method">LensPerformanceMetrics.beginMeasurement</a>. Then it may be
|
|
3
3
|
used to record rendering performance metrics, reset measurement, or end the measurement.</p>
|
|
4
4
|
</div><div class="tsd-comment tsd-typography"></div></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="LensPerformanceMeasurement.html#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
|
|
@@ -15,4 +15,4 @@ more convenient.</p>
|
|
|
15
15
|
<p>This instance will not be garbage collected until this method is called. Therefore it is important to call this
|
|
16
16
|
method at the appropriate time to avoid leaking memory -- particularly if your application creates many
|
|
17
17
|
LensPerformanceMeasurement instances.</p>
|
|
18
|
-
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#measure" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>measure</span></a><a href="#reset" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>reset</span></a><a href="#end" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>end</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.
|
|
18
|
+
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#measure" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>measure</span></a><a href="#reset" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>reset</span></a><a href="#end" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>end</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">CameraKit Web SDK - v1.12.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|