@taskp3/react 0.1.1 → 0.2.0

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.
Files changed (58) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/past-submissions.d.ts.map +1 -1
  6. package/dist/past-submissions.js +1 -10
  7. package/dist/past-submissions.js.map +1 -1
  8. package/dist/recorder/camera-overlay.d.ts +9 -0
  9. package/dist/recorder/camera-overlay.d.ts.map +1 -0
  10. package/dist/recorder/camera-overlay.js +3 -0
  11. package/dist/recorder/camera-overlay.js.map +1 -0
  12. package/dist/recorder/composeRecordingWithCamera.d.ts +8 -0
  13. package/dist/recorder/composeRecordingWithCamera.d.ts.map +1 -0
  14. package/dist/recorder/composeRecordingWithCamera.js +183 -0
  15. package/dist/recorder/composeRecordingWithCamera.js.map +1 -0
  16. package/dist/recorder/finalize-recording-worker-source.d.ts +1 -1
  17. package/dist/recorder/finalize-recording-worker-source.d.ts.map +1 -1
  18. package/dist/recorder/finalize-recording-worker-source.js +1 -1
  19. package/dist/recorder/finalize-recording-worker-source.js.map +1 -1
  20. package/dist/recorder/finalize-recording-worker.js +4 -1
  21. package/dist/recorder/finalize-recording-worker.js.map +1 -1
  22. package/dist/recorder/finalizeRecording.d.ts +18 -1
  23. package/dist/recorder/finalizeRecording.d.ts.map +1 -1
  24. package/dist/recorder/finalizeRecording.js +167 -40
  25. package/dist/recorder/finalizeRecording.js.map +1 -1
  26. package/dist/recorder/finalizeRecordingInWorker.d.ts +6 -2
  27. package/dist/recorder/finalizeRecordingInWorker.d.ts.map +1 -1
  28. package/dist/recorder/finalizeRecordingInWorker.js +36 -11
  29. package/dist/recorder/finalizeRecordingInWorker.js.map +1 -1
  30. package/dist/screen-recorder-context.d.ts.map +1 -1
  31. package/dist/screen-recorder-context.js +7 -1
  32. package/dist/screen-recorder-context.js.map +1 -1
  33. package/dist/screen-recorder.d.ts +2 -0
  34. package/dist/screen-recorder.d.ts.map +1 -1
  35. package/dist/screen-recorder.js +78 -12
  36. package/dist/screen-recorder.js.map +1 -1
  37. package/dist/triage-button.d.ts.map +1 -1
  38. package/dist/triage-button.js +39 -6
  39. package/dist/triage-button.js.map +1 -1
  40. package/dist/triage-rich-content.d.ts.map +1 -1
  41. package/dist/triage-rich-content.js +1 -15
  42. package/dist/triage-rich-content.js.map +1 -1
  43. package/dist/triage-ui-controller.d.ts +1 -0
  44. package/dist/triage-ui-controller.d.ts.map +1 -1
  45. package/dist/triage-ui-controller.js.map +1 -1
  46. package/dist/use-recorder-controller.d.ts +17 -2
  47. package/dist/use-recorder-controller.d.ts.map +1 -1
  48. package/dist/use-recorder-controller.js +302 -35
  49. package/dist/use-recorder-controller.js.map +1 -1
  50. package/dist/use-screen-recorder.d.ts +7 -0
  51. package/dist/use-screen-recorder.d.ts.map +1 -1
  52. package/dist/use-screen-recorder.js +7 -0
  53. package/dist/use-screen-recorder.js.map +1 -1
  54. package/package.json +6 -6
  55. package/dist/loom-recorder.d.ts +0 -9
  56. package/dist/loom-recorder.d.ts.map +0 -1
  57. package/dist/loom-recorder.js +0 -92
  58. package/dist/loom-recorder.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-screen-recorder.d.ts","sourceRoot":"","sources":["../src/use-screen-recorder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;CAAG;AAE9E,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC5B;AAQD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAiBzB"}
1
+ {"version":3,"file":"use-screen-recorder.d.ts","sourceRoot":"","sources":["../src/use-screen-recorder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;CAAG;AAE9E,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC5B;AAQD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAwBzB"}
@@ -20,8 +20,15 @@ function useScreenRecorder(options = {}) {
20
20
  duration: r.duration,
21
21
  previewUrl: r.previewUrl,
22
22
  cameraPreviewUrl: r.cameraPreviewUrl,
23
+ liveCameraStream: r.liveCameraStream,
23
24
  error: r.error,
25
+ microphoneError: r.microphoneError,
26
+ cameraError: r.cameraError,
24
27
  isSupported: r.isSupported,
28
+ microphoneEnabled: r.microphoneEnabled,
29
+ cameraEnabled: r.cameraEnabled,
30
+ setMicrophoneEnabled: r.setMicrophoneEnabled,
31
+ setCameraEnabled: r.setCameraEnabled,
25
32
  startRecording: r.start,
26
33
  stopRecording: r.stop,
27
34
  pauseRecording: r.pause,
@@ -1 +1 @@
1
- {"version":3,"file":"use-screen-recorder.js","sourceRoot":"","sources":["../src/use-screen-recorder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsCH,8CAmBC;AAvDD,uEAAkE;AA8BlE,SAAS,aAAa,CAAC,KAAwF;IAC7G,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC;IAC9C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,iBAAiB,CAC/B,UAAoC,EAAE;IAEtC,MAAM,CAAC,GAAG,IAAA,+CAAqB,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,cAAc,EAAE,CAAC,CAAC,KAAK;QACvB,aAAa,EAAE,CAAC,CAAC,IAAI;QACrB,cAAc,EAAE,CAAC,CAAC,KAAK;QACvB,eAAe,EAAE,CAAC,CAAC,MAAM;QACzB,gBAAgB,EAAE,CAAC,CAAC,OAAO;QAC3B,gBAAgB,EAAE,CAAC,CAAC,OAAO;QAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"use-screen-recorder.js","sourceRoot":"","sources":["../src/use-screen-recorder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA6CH,8CA0BC;AArED,uEAAkE;AAqClE,SAAS,aAAa,CAAC,KAAwF;IAC7G,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC;IAC9C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,iBAAiB,CAC/B,UAAoC,EAAE;IAEtC,MAAM,CAAC,GAAG,IAAA,+CAAqB,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,oBAAoB,EAAE,CAAC,CAAC,oBAAoB;QAC5C,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,cAAc,EAAE,CAAC,CAAC,KAAK;QACvB,aAAa,EAAE,CAAC,CAAC,IAAI;QACrB,cAAc,EAAE,CAAC,CAAC,KAAK;QACvB,eAAe,EAAE,CAAC,CAAC,MAAM;QACzB,gBAAgB,EAAE,CAAC,CAAC,OAAO;QAC3B,gBAAgB,EAAE,CAAC,CAAC,OAAO;QAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taskp3/react",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "TaskP3 React components — drop-in triage button, changelog, and hooks",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.taskp3.com/developers",
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "publishConfig": {
13
13
  "access": "public",
14
- "provenance": true
14
+ "provenance": false
15
15
  },
16
16
  "main": "dist/index.js",
17
17
  "types": "dist/index.d.ts",
@@ -35,19 +35,19 @@
35
35
  },
36
36
  "sideEffects": false,
37
37
  "peerDependencies": {
38
+ "@taskp3/sdk": ">=0.1.0",
38
39
  "react": ">=17",
39
- "react-dom": ">=17",
40
- "@taskp3/sdk": ">=0.1.0"
40
+ "react-dom": ">=17"
41
41
  },
42
42
  "devDependencies": {
43
+ "@taskp3/sdk": "^0.2.0",
43
44
  "@types/react": "^18.2.0",
44
45
  "@types/react-dom": "^18.2.0",
45
46
  "esbuild": "^0.27.4",
46
- "@taskp3/sdk": "^0.1.1",
47
47
  "typescript": "^5.4.2"
48
48
  },
49
49
  "dependencies": {
50
- "@loomhq/record-sdk": "^4.9.1",
50
+ "@mediabunny/aac-encoder": "^1.40.1",
51
51
  "@segment/isodate-traverse": "^1.1.1",
52
52
  "is-hotkey": "^0.2.0",
53
53
  "mediabunny": "^1.39.2",
@@ -1,9 +0,0 @@
1
- import React from "react";
2
- export interface LoomRecorderProps {
3
- visible?: boolean;
4
- buttonLabel?: React.ReactNode;
5
- className?: string;
6
- onInsert: (sharedUrl: string) => void;
7
- }
8
- export declare function LoomRecorder({ visible, buttonLabel, className, onInsert, }: LoomRecorderProps): import("react/jsx-runtime").JSX.Element;
9
- //# sourceMappingURL=loom-recorder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loom-recorder.d.ts","sourceRoot":"","sources":["../src/loom-recorder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAc,EACd,WAAgC,EAChC,SAAkC,EAClC,QAAQ,GACT,EAAE,iBAAiB,2CAoEnB"}
@@ -1,92 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.LoomRecorder = LoomRecorder;
40
- const jsx_runtime_1 = require("react/jsx-runtime");
41
- const react_1 = __importDefault(require("react"));
42
- const DEFAULT_LOOM_APP_ID = "c2d73d578c4e41ce9b07405cb04e5695";
43
- function LoomRecorder({ visible = true, buttonLabel = "Record with Loom", className = "p3-btn p3-btn--ghost", onInsert, }) {
44
- const buttonRef = react_1.default.useRef(null);
45
- const [error, setError] = react_1.default.useState(null);
46
- react_1.default.useEffect(() => {
47
- if (!visible || !buttonRef.current)
48
- return;
49
- let cancelled = false;
50
- const setup = async () => {
51
- try {
52
- const [{ isSupported }, { createInstance }] = await Promise.all([
53
- Promise.resolve().then(() => __importStar(require("@loomhq/record-sdk/is-supported"))),
54
- Promise.resolve().then(() => __importStar(require("@loomhq/record-sdk"))),
55
- ]);
56
- const { supported, error: supportError } = await isSupported();
57
- if (!supported) {
58
- if (!cancelled) {
59
- setError(supportError || "Loom is not supported in this browser.");
60
- }
61
- return;
62
- }
63
- const instance = await createInstance({
64
- publicAppId: DEFAULT_LOOM_APP_ID,
65
- mode: "standard",
66
- });
67
- const sdkButton = instance.configureButton({
68
- element: buttonRef.current,
69
- });
70
- sdkButton.on("insert-click", (video) => {
71
- onInsert(video.sharedUrl);
72
- });
73
- if (!cancelled) {
74
- setError(null);
75
- }
76
- }
77
- catch (setupError) {
78
- if (!cancelled) {
79
- setError(setupError instanceof Error
80
- ? setupError.message
81
- : "Failed to initialize Loom.");
82
- }
83
- }
84
- };
85
- void setup();
86
- return () => {
87
- cancelled = true;
88
- };
89
- }, [onInsert, visible]);
90
- return ((0, jsx_runtime_1.jsx)("button", { ref: buttonRef, type: "button", className: className, disabled: !!error, title: error ?? "Record a Loom video", children: buttonLabel }));
91
- }
92
- //# sourceMappingURL=loom-recorder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loom-recorder.js","sourceRoot":"","sources":["../src/loom-recorder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,oCAyEC;;AApFD,kDAA0B;AAE1B,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAS/D,SAAgB,YAAY,CAAC,EAC3B,OAAO,GAAG,IAAI,EACd,WAAW,GAAG,kBAAkB,EAChC,SAAS,GAAG,sBAAsB,EAClC,QAAQ,GACU;IAClB,MAAM,SAAS,GAAG,eAAK,CAAC,MAAM,CAA2B,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE9D,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QAE3C,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;sEACvD,iCAAiC;sEACjC,oBAAoB;iBAC5B,CAAC,CAAC;gBAEH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;gBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,QAAQ,CAAC,YAAY,IAAI,wCAAwC,CAAC,CAAC;oBACrE,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;oBACpC,WAAW,EAAE,mBAAmB;oBAChC,IAAI,EAAE,UAAU;iBACjB,CAAC,CAAC;gBAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC;oBACzC,OAAO,EAAE,SAAS,CAAC,OAAQ;iBAC5B,CAAC,CAAC;gBAEH,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAA4B,EAAE,EAAE;oBAC5D,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CACN,UAAU,YAAY,KAAK;wBACzB,CAAC,CAAC,UAAU,CAAC,OAAO;wBACpB,CAAC,CAAC,4BAA4B,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAExB,OAAO,CACL,mCACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,CAAC,KAAK,EACjB,KAAK,EAAE,KAAK,IAAI,qBAAqB,YAEpC,WAAW,GACL,CACV,CAAC;AACJ,CAAC"}