@coveo/headless-react 2.4.37 → 2.4.38-pre.1c6054ebe0

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.
@@ -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
- export type Subscriber = (listener: () => void) => () => void;
5
- export type SnapshotGetter<T> = () => T;
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 React from 'react';
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
- export function createSingletonContext() {
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,MAAM,UAAU,sBAAsB;IAGpC,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"}
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"}
@@ -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
- export type ContextStaticState<TEngine extends CoreEngine, TControllers extends ControllerDefinitionsMap<TEngine, Controller>> = {
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 React from 'react';
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
- export function createSingletonContext() {
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,MAAM,UAAU,sBAAsB;IAIpC,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
+ {"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.37",
3
+ "version": "2.4.38-pre.1c6054ebe0",
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.5"
42
+ "@coveo/headless": "3.27.6-pre.1c6054ebe0"
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"}