@coveo/headless-react 2.4.37 → 2.4.38-pre.1f7f071dd2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client-utils.d.ts +3 -2
- package/dist/ssr/search-engine.d.ts +1 -3
- package/dist/ssr/search-engine.js +1 -1
- package/dist/ssr/search-engine.js.map +1 -1
- package/dist/ssr/types.d.ts +2 -1
- package/dist/ssr-commerce/commerce-engine.d.ts +1 -4
- package/dist/ssr-commerce/commerce-engine.js +1 -1
- package/dist/ssr-commerce/commerce-engine.js.map +1 -1
- package/dist/ssr-commerce/types.d.ts +0 -4
- package/package.json +4 -10
- package/dist/ssr-commerce/client-utils.d.ts +0 -10
- package/dist/ssr-commerce/client-utils.js +0 -46
- package/dist/ssr-commerce/client-utils.js.map +0 -1
package/dist/client-utils.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Subscriber is a function that takes a single argument, which is another function `listener` that returns `void`. The Subscriber function itself returns another function that can be used to unsubscribe the `listener`.
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type Subscriber = (listener: () => void) => () => void;
|
|
5
|
+
type SnapshotGetter<T> = () => T;
|
|
6
6
|
/**
|
|
7
7
|
* Alternate for `useSyncExternalStore` which runs into infinite loops when hooks are used in `getSnapshot`
|
|
8
8
|
* https://github.com/facebook/react/issues/24529
|
|
9
9
|
*/
|
|
10
10
|
export declare function useSyncMemoizedStore<T>(subscribe: Subscriber, getSnapshot: SnapshotGetter<T>): T;
|
|
11
|
+
export {};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { type Controller, type ControllerDefinitionsMap, type SearchEngine, type SearchEngineDefinitionOptions, type SearchEngineOptions } from '@coveo/headless/ssr';
|
|
2
|
-
import
|
|
3
|
-
import type { ContextState, ReactEngineDefinition } from './types.js';
|
|
2
|
+
import type { ReactEngineDefinition } from './types.js';
|
|
4
3
|
export type ReactSearchEngineDefinition<TControllers extends ControllerDefinitionsMap<SearchEngine, Controller>> = ReactEngineDefinition<SearchEngine, TControllers, SearchEngineOptions>;
|
|
5
|
-
export declare function createSingletonContext<TControllers extends ControllerDefinitionsMap<SearchEngine, Controller>>(): import("../utils.js").SingletonGetter<React.Context<ContextState<SearchEngine, TControllers> | null>>;
|
|
6
4
|
/**
|
|
7
5
|
* Returns controller hooks as well as SSR and CSR context providers that can be used to interact with a search engine
|
|
8
6
|
* on the server and client side respectively.
|
|
@@ -4,7 +4,7 @@ import React from 'react';
|
|
|
4
4
|
import { singleton } from '../utils.js';
|
|
5
5
|
import { buildControllerHooks, buildEngineHook, buildHydratedStateProvider, buildStateProvider, buildStaticStateProvider, } from './common.js';
|
|
6
6
|
// Wrapper to workaround the limitation that `createContext()` cannot be called directly during SSR in next.js
|
|
7
|
-
|
|
7
|
+
function createSingletonContext() {
|
|
8
8
|
return singleton(() => React.createContext(null));
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-engine.js","sourceRoot":"","sources":["../../src/ssr/search-engine.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,IAAI,sBAAsB,GAI7C,MAAM,qBAAqB,CAAC;AAC7B,wEAAwE;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAOrB,8GAA8G;AAC9G,
|
|
1
|
+
{"version":3,"file":"search-engine.js","sourceRoot":"","sources":["../../src/ssr/search-engine.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,IAAI,sBAAsB,GAI7C,MAAM,qBAAqB,CAAC;AAC7B,wEAAwE;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAOrB,8GAA8G;AAC9G,SAAS,sBAAsB;IAG7B,OAAO,SAAS,CAAC,GAAG,EAAE,CACpB,KAAK,CAAC,aAAa,CAAkD,IAAI,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAGhC,OAAoD;IAEpD,MAAM,gBAAgB,GAAG,sBAAsB,EAAgB,CAAC;IAChE,OAAO;QACL,GAAG,sBAAsB,CAAC,EAAC,GAAG,OAAO,EAAC,CAAC;QACvC,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC;QAC5C,WAAW,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC;QACxE;;WAEG;QACH,mBAAmB,EAAE,wBAAwB,CAAC,gBAAgB,CAAC;QAC/D;;WAEG;QACH,qBAAqB,EAAE,0BAA0B,CAAC,gBAAgB,CAAC;QACnE,aAAa,EAAE,kBAAkB,CAAC,gBAAgB,CAAC;KACpD,CAAC;AACJ,CAAC"}
|
package/dist/ssr/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Controller, ControllerDefinitionsMap, CoreEngine, EngineDefinition, InferControllerFromDefinition, InferControllerStaticStateMapFromDefinitions, InferControllersMapFromDefinition } from '@coveo/headless/ssr';
|
|
2
2
|
import type { FunctionComponent, PropsWithChildren } from 'react';
|
|
3
|
-
|
|
3
|
+
type ContextStaticState<TEngine extends CoreEngine, TControllers extends ControllerDefinitionsMap<TEngine, Controller>> = {
|
|
4
4
|
controllers: InferControllerStaticStateMapFromDefinitions<TControllers>;
|
|
5
5
|
};
|
|
6
6
|
export type ContextHydratedState<TEngine extends CoreEngine, TControllers extends ControllerDefinitionsMap<TEngine, Controller>> = {
|
|
@@ -36,3 +36,4 @@ export type ReactEngineDefinition<TEngine extends CoreEngine, TControllers exten
|
|
|
36
36
|
controllers: InferControllersMapFromDefinition<TControllers> | InferControllerStaticStateMapFromDefinitions<TControllers>;
|
|
37
37
|
}>>;
|
|
38
38
|
};
|
|
39
|
+
export {};
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { type CommerceEngine, type CommerceEngineDefinitionOptions, type CommerceEngineOptions, type Controller, type ControllerDefinitionsMap, SolutionType } from '@coveo/headless/ssr-commerce';
|
|
2
|
-
import
|
|
3
|
-
import { type SingletonGetter } from '../utils.js';
|
|
4
|
-
import type { ContextState, InferControllerHooksMapFromDefinition, ReactEngineDefinition } from './types.js';
|
|
2
|
+
import type { InferControllerHooksMapFromDefinition, ReactEngineDefinition } from './types.js';
|
|
5
3
|
/**
|
|
6
4
|
* A React engine definition that includes context providers for static and hydrated states.
|
|
7
5
|
*
|
|
8
6
|
* @group Engine
|
|
9
7
|
* */
|
|
10
8
|
export type ReactCommerceEngineDefinition<TControllers extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = ReactEngineDefinition<TControllers, CommerceEngineOptions, TSolutionType>;
|
|
11
|
-
export declare function createSingletonContext<TControllers extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType = SolutionType>(): SingletonGetter<React.Context<ContextState<TControllers, TSolutionType> | null>>;
|
|
12
9
|
/**
|
|
13
10
|
* Returns engine and controller hooks, and context providers.
|
|
14
11
|
*
|
|
@@ -4,7 +4,7 @@ import React from 'react';
|
|
|
4
4
|
import { singleton } from '../utils.js';
|
|
5
5
|
import { buildControllerHooks, buildEngineHook, buildHydratedStateProvider, buildStateProvider, buildStaticStateProvider, } from './common.js';
|
|
6
6
|
// Wrapper to workaround the limitation that `createContext()` cannot be called directly during SSR in next.js
|
|
7
|
-
|
|
7
|
+
function createSingletonContext() {
|
|
8
8
|
return singleton(() => React.createContext(null));
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce-engine.js","sourceRoot":"","sources":["../../src/ssr-commerce/commerce-engine.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,oBAAoB,IAAI,wBAAwB,EAChD,YAAY,GACb,MAAM,8BAA8B,CAAC;AACtC,wEAAwE;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAuB,SAAS,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAiBrB,8GAA8G;AAC9G,
|
|
1
|
+
{"version":3,"file":"commerce-engine.js","sourceRoot":"","sources":["../../src/ssr-commerce/commerce-engine.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,oBAAoB,IAAI,wBAAwB,EAChD,YAAY,GACb,MAAM,8BAA8B,CAAC;AACtC,wEAAwE;AACxE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAuB,SAAS,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAiBrB,8GAA8G;AAC9G,SAAS,sBAAsB;IAI7B,OAAO,SAAS,CAAC,GAAG,EAAE,CACpB,KAAK,CAAC,aAAa,CAAmD,IAAI,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAGlC,OAAsD;IAqBtD,MAAM,gBAAgB,GAAG,sBAAsB,EAAgB,CAAC;IAUhE,MAAM,EACJ,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,GAC/B,GAAG,wBAAwB,CAAC,EAAC,GAAG,OAAO,EAAC,CAAC,CAAC;IAC3C,OAAO;QACL,SAAS,EAAE,eAAe,CAAC,gBAAgB,CAAC;QAC5C,WAAW,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC;QACxE,uBAAuB,EAAE;YACvB,GAAG,uBAAuB;YAC1B,mBAAmB,EAAE,wBAAwB,CAC3C,gBAAkC,EAClC,YAAY,CAAC,OAAO,CACrB;YAED,qBAAqB,EAAE,0BAA0B,CAC/C,gBAAkC,EAClC,YAAY,CAAC,OAAO,CACrB;YAED,aAAa,EAAE,kBAAkB,CAC/B,gBAAkC,EAClC,YAAY,CAAC,OAAO,CACrB;SACF;QACD,sBAAsB,EAAE;YACtB,GAAG,sBAAsB;YACzB,mBAAmB,EAAE,wBAAwB,CAC3C,gBAAiC,EACjC,YAAY,CAAC,MAAM,CACpB;YACD,qBAAqB,EAAE,0BAA0B,CAC/C,gBAAiC,EACjC,YAAY,CAAC,MAAM,CACpB;YACD,aAAa,EAAE,kBAAkB,CAC/B,gBAAiC,EACjC,YAAY,CAAC,MAAM,CACpB;SACF;QACD,0BAA0B,EAAE;YAC1B,GAAG,0BAA0B;YAC7B,mBAAmB,EAAE,wBAAwB,CAC3C,gBAAqC,EACrC,YAAY,CAAC,UAAU,CACxB;YACD,qBAAqB,EAAE,0BAA0B,CAC/C,gBAAqC,EACrC,YAAY,CAAC,UAAU,CACxB;YACD,aAAa,EAAE,kBAAkB,CAC/B,gBAAqC,EACrC,YAAY,CAAC,UAAU,CACxB;SACF;QACD,8BAA8B,EAAE;YAC9B,GAAG,8BAA8B;YACjC,mBAAmB,EAAE,wBAAwB,CAC3C,gBAAyC,EACzC,YAAY,CAAC,cAAc,CAC5B;YACD,qBAAqB,EAAE,0BAA0B,CAC/C,gBAAyC,EACzC,YAAY,CAAC,cAAc,CAC5B;YACD,aAAa,EAAE,kBAAkB,CAC/B,gBAAyC,EACzC,YAAY,CAAC,cAAc,CAC5B;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import type { Controller, ControllerDefinitionsMap, EngineDefinition, InferControllerFromDefinition, InferControllerStaticStateMapFromDefinitionsWithSolutionType, InferControllersMapFromDefinition, SolutionType, CommerceEngine as SSRCommerceEngine } from '@coveo/headless/ssr-commerce';
|
|
2
2
|
import type { FunctionComponent, PropsWithChildren } from 'react';
|
|
3
|
-
export type ContextStaticState<TControllers extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = {
|
|
4
|
-
controllers: InferControllerStaticStateMapFromDefinitionsWithSolutionType<TControllers, TSolutionType>;
|
|
5
|
-
solutionType: TSolutionType;
|
|
6
|
-
};
|
|
7
3
|
export type ContextHydratedState<TControllers extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = {
|
|
8
4
|
engine: SSRCommerceEngine;
|
|
9
5
|
controllers: InferControllersMapFromDefinition<TControllers, TSolutionType>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coveo/headless-react",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.38-pre.1f7f071dd2",
|
|
4
4
|
"description": "React utilities for SSR (Server Side Rendering) with headless",
|
|
5
5
|
"homepage": "https://docs.coveo.com/en/headless/latest/",
|
|
6
6
|
"repository": {
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
"clean": "rimraf dist",
|
|
29
29
|
"test": "vitest run",
|
|
30
30
|
"test:watch": "vitest",
|
|
31
|
-
"lint": "eslint .; publint",
|
|
32
31
|
"publish:npm": "npm run-script -w=@coveo/ci npm-publish",
|
|
33
32
|
"publish:bump": "npm run-script -w=@coveo/ci bump",
|
|
34
33
|
"promote:npm:latest": "npm run-script -w=@coveo/ci promote-npm-prod",
|
|
@@ -40,21 +39,16 @@
|
|
|
40
39
|
"serve:typedoc": "live-server ./docs"
|
|
41
40
|
},
|
|
42
41
|
"dependencies": {
|
|
43
|
-
"@coveo/headless": "3.27.
|
|
42
|
+
"@coveo/headless": "3.27.6-pre.1f7f071dd2"
|
|
44
43
|
},
|
|
45
44
|
"devDependencies": {
|
|
46
|
-
"@coveo/ci": "1.0.0",
|
|
47
45
|
"@testing-library/react": "16.3.0",
|
|
48
|
-
"@typescript-eslint/eslint-plugin": "7.18.0",
|
|
49
|
-
"eslint-plugin-react": "7.37.5",
|
|
50
|
-
"eslint-plugin-testing-library": "7.6.0",
|
|
51
|
-
"gts": "5.3.1",
|
|
52
46
|
"live-server": "1.2.2",
|
|
53
|
-
"publint": "0.3.12",
|
|
54
47
|
"rimraf": "6.0.1",
|
|
55
48
|
"typescript": "5.8.3",
|
|
56
49
|
"typedoc": "0.28.7",
|
|
57
|
-
"vitest": "3.2.4"
|
|
50
|
+
"vitest": "3.2.4",
|
|
51
|
+
"@coveo/documentation": "1.0.0"
|
|
58
52
|
},
|
|
59
53
|
"peerDependencies": {
|
|
60
54
|
"react": "^18 || ^19",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subscriber is a function that takes a single argument, which is another function `listener` that returns `void`. The Subscriber function itself returns another function that can be used to unsubscribe the `listener`.
|
|
3
|
-
*/
|
|
4
|
-
export type Subscriber = (listener: () => void) => () => void;
|
|
5
|
-
export type SnapshotGetter<T> = () => T;
|
|
6
|
-
/**
|
|
7
|
-
* Alternate for `useSyncExternalStore` which runs into infinite loops when hooks are used in `getSnapshot`
|
|
8
|
-
* https://github.com/facebook/react/issues/24529
|
|
9
|
-
*/
|
|
10
|
-
export declare function useSyncMemoizedStore<T>(subscribe: Subscriber, getSnapshot: SnapshotGetter<T>): T;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { useEffect, useReducer, useRef } from 'react';
|
|
3
|
-
/**
|
|
4
|
-
* Determine if the given list of dependencies has changed.
|
|
5
|
-
*/
|
|
6
|
-
function useHasDepsChanged(deps) {
|
|
7
|
-
const ref = useRef(null);
|
|
8
|
-
if (ref.current === null) {
|
|
9
|
-
ref.current = deps;
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
if (ref.current.length === deps.length &&
|
|
13
|
-
!deps.some((dep, i) => !Object.is(ref.current[i], dep))) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
ref.current = deps;
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Alternate for `useSyncExternalStore` which runs into infinite loops when hooks are used in `getSnapshot`
|
|
21
|
-
* https://github.com/facebook/react/issues/24529
|
|
22
|
-
*/
|
|
23
|
-
export function useSyncMemoizedStore(subscribe, getSnapshot) {
|
|
24
|
-
const snapshot = useRef(null);
|
|
25
|
-
const [, forceRender] = useReducer((s) => s + 1, 0);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
let isMounted = true;
|
|
28
|
-
const unsubscribe = subscribe(() => {
|
|
29
|
-
if (isMounted) {
|
|
30
|
-
snapshot.current = getSnapshot();
|
|
31
|
-
forceRender();
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
return () => {
|
|
35
|
-
isMounted = false;
|
|
36
|
-
unsubscribe();
|
|
37
|
-
};
|
|
38
|
-
}, [subscribe, getSnapshot]);
|
|
39
|
-
// Since useRef does not take a dependencies array changes to dependencies need to be processed explicitly
|
|
40
|
-
if (useHasDepsChanged([subscribe, getSnapshot]) ||
|
|
41
|
-
snapshot.current === null) {
|
|
42
|
-
snapshot.current = getSnapshot();
|
|
43
|
-
}
|
|
44
|
-
return snapshot.current;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=client-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-utils.js","sourceRoot":"","sources":["../../src/ssr-commerce/client-utils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAsB,SAAS,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,OAAO,CAAC;AASzE;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAoB;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAChD,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EACxD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAqB,EACrB,WAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE;YACjC,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;gBACjC,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;YAClB,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7B,0GAA0G;IAC1G,IACE,iBAAiB,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,KAAK,IAAI,EACzB,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
|