@payloadcms/ui 3.62.0-internal.7fb5145 → 3.62.0-internal.ec3a6fa

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.
@@ -25,13 +25,13 @@ type QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void;
25
25
  * 3. All remaining tasks will be discarded
26
26
  * @returns {queueTask} A function used to queue a function.
27
27
  * @example
28
- * const { queueTask } = useQueues()
28
+ * const { queueTask } = useQueue()
29
29
  * queueTask(async () => {
30
30
  * await fetch('https://api.example.com')
31
31
  * })
32
32
  */
33
- export declare function useQueues(): {
33
+ export declare function useQueue(): {
34
34
  queueTask: QueueTask;
35
35
  };
36
36
  export {};
37
- //# sourceMappingURL=useQueues.d.ts.map
37
+ //# sourceMappingURL=useQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueue.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzC,KAAK,iBAAiB,GAAG;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAE1E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,IAAI;IAC1B,SAAS,EAAE,SAAS,CAAA;CACrB,CA8CA"}
@@ -10,12 +10,12 @@ import { useCallback, useRef } from 'react';
10
10
  * 3. All remaining tasks will be discarded
11
11
  * @returns {queueTask} A function used to queue a function.
12
12
  * @example
13
- * const { queueTask } = useQueues()
13
+ * const { queueTask } = useQueue()
14
14
  * queueTask(async () => {
15
15
  * await fetch('https://api.example.com')
16
16
  * })
17
17
  */
18
- export function useQueues() {
18
+ export function useQueue() {
19
19
  const queue = useRef([]);
20
20
  const isProcessing = useRef(false);
21
21
  const queueTask = useCallback((fn, options) => {
@@ -56,4 +56,4 @@ export function useQueues() {
56
56
  queueTask
57
57
  };
58
58
  }
59
- //# sourceMappingURL=useQueues.js.map
59
+ //# sourceMappingURL=useQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueue.js","names":["useCallback","useRef","useQueue","queue","isProcessing","queueTask","fn","options","current","push","processQueue","beforeProcess","shouldContinue","length","latestTask","pop","err","console","error","afterProcess"],"sources":["../../src/hooks/useQueue.ts"],"sourcesContent":["import { useCallback, useRef } from 'react'\n\ntype QueuedFunction = () => Promise<void>\n\ntype QueuedTaskOptions = {\n /**\n * A function that is called after the queue has processed a function\n * Used to perform side effects after processing the queue\n * @returns {void}\n */\n afterProcess?: () => void\n /**\n * A function that can be used to prevent the queue from processing under certain conditions\n * Can also be used to perform side effects before processing the queue\n * @returns {boolean} If `false`, the queue will not process\n */\n beforeProcess?: () => boolean | void\n}\n\ntype QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void\n\n/**\n * A React hook that allows you to queue up functions to be executed in order.\n * This is useful when you need to ensure long running networks requests are processed sequentially.\n * Builds up a \"queue\" of functions to be executed in order, only ever processing the last function in the queue.\n * This ensures that a long queue of tasks doesn't cause a backlog of tasks to be processed.\n * E.g. if you queue a task and it begins running, then you queue 9 more tasks:\n * 1. The currently task will finish\n * 2. The next task in the queue will run\n * 3. All remaining tasks will be discarded\n * @returns {queueTask} A function used to queue a function.\n * @example\n * const { queueTask } = useQueue()\n * queueTask(async () => {\n * await fetch('https://api.example.com')\n * })\n */\nexport function useQueue(): {\n queueTask: QueueTask\n} {\n const queue = useRef<QueuedFunction[]>([])\n\n const isProcessing = useRef(false)\n\n const queueTask = useCallback<QueueTask>((fn, options) => {\n queue.current.push(fn)\n\n async function processQueue() {\n if (isProcessing.current) {\n return\n }\n\n // Allow the consumer to prevent the queue from processing under certain conditions\n if (typeof options?.beforeProcess === 'function') {\n const shouldContinue = options.beforeProcess()\n\n if (shouldContinue === false) {\n return\n }\n }\n\n while (queue.current.length > 0) {\n const latestTask = queue.current.pop() // Only process the last task in the queue\n queue.current = [] // Discard all other tasks\n\n isProcessing.current = true\n\n try {\n await latestTask()\n } catch (err) {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n } finally {\n isProcessing.current = false\n\n if (typeof options?.afterProcess === 'function') {\n options.afterProcess()\n }\n }\n }\n }\n\n void processQueue()\n }, [])\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ;AAqBpC;;;;;;;;;;;;;;;;AAgBA,OAAO,SAASC,SAAA;EAGd,MAAMC,KAAA,GAAQF,MAAA,CAAyB,EAAE;EAEzC,MAAMG,YAAA,GAAeH,MAAA,CAAO;EAE5B,MAAMI,SAAA,GAAYL,WAAA,CAAuB,CAACM,EAAA,EAAIC,OAAA;IAC5CJ,KAAA,CAAMK,OAAO,CAACC,IAAI,CAACH,EAAA;IAEnB,eAAeI,aAAA;MACb,IAAIN,YAAA,CAAaI,OAAO,EAAE;QACxB;MACF;MAEA;MACA,IAAI,OAAOD,OAAA,EAASI,aAAA,KAAkB,YAAY;QAChD,MAAMC,cAAA,GAAiBL,OAAA,CAAQI,aAAa;QAE5C,IAAIC,cAAA,KAAmB,OAAO;UAC5B;QACF;MACF;MAEA,OAAOT,KAAA,CAAMK,OAAO,CAACK,MAAM,GAAG,GAAG;QAC/B,MAAMC,UAAA,GAAaX,KAAA,CAAMK,OAAO,CAACO,GAAG,GAAG;QAAA;QACvCZ,KAAA,CAAMK,OAAO,GAAG,EAAE,CAAC;QAAA;QAEnBJ,YAAA,CAAaI,OAAO,GAAG;QAEvB,IAAI;UACF,MAAMM,UAAA;QACR,EAAE,OAAOE,GAAA,EAAK;UACZC,OAAA,CAAQC,KAAK,CAAC,6BAA6BF,GAAA,EAAK;UAAA;QAClD,UAAU;UACRZ,YAAA,CAAaI,OAAO,GAAG;UAEvB,IAAI,OAAOD,OAAA,EAASY,YAAA,KAAiB,YAAY;YAC/CZ,OAAA,CAAQY,YAAY;UACtB;QACF;MACF;IACF;IAEA,KAAKT,YAAA;EACP,GAAG,EAAE;EAEL,OAAO;IAAEL;EAAU;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ToastContainer/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,MAAM,EAAE,YAAY,CAAA;CACrB,CAoCA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ToastContainer/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,MAAM,EAAE,YAAY,CAAA;CACrB,CAqCA,CAAA"}
@@ -15,7 +15,8 @@ export const ToastContainer = ({
15
15
  toast: {
16
16
  duration,
17
17
  expand,
18
- limit
18
+ limit,
19
+ position
19
20
  } = {}
20
21
  } = {}
21
22
  } = config;
@@ -34,6 +35,7 @@ export const ToastContainer = ({
34
35
  warning: /*#__PURE__*/_jsx(Warning, {})
35
36
  },
36
37
  offset: "calc(var(--gutter-h) / 2)",
38
+ position: position ?? 'bottom-right',
37
39
  toastOptions: {
38
40
  classNames: {
39
41
  closeButton: 'payload-toast-close-button',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","Toaster","Error","Info","Success","Warning","ToastContainer","config","admin","toast","duration","expand","limit","_jsx","className","closeButton","dir","gap","icons","error","info","success","warning","offset","toastOptions","classNames","content","icon","title","unstyled","visibleToasts"],"sources":["../../../src/providers/ToastContainer/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientConfig } from 'payload'\n\nimport React from 'react'\nimport { Toaster } from 'sonner'\n\nimport { Error } from './icons/Error.js'\nimport { Info } from './icons/Info.js'\nimport { Success } from './icons/Success.js'\nimport { Warning } from './icons/Warning.js'\n\nexport const ToastContainer: React.FC<{\n config: ClientConfig\n}> = ({ config }) => {\n const { admin: { toast: { duration, expand, limit } = {} } = {} } = config\n\n return (\n <Toaster\n className=\"payload-toast-container\"\n closeButton\n // @ts-expect-error\n dir=\"undefined\"\n duration={duration ?? 4000}\n expand={expand ?? false}\n gap={8}\n icons={{\n error: <Error />,\n info: <Info />,\n success: <Success />,\n warning: <Warning />,\n }}\n offset=\"calc(var(--gutter-h) / 2)\"\n toastOptions={{\n classNames: {\n closeButton: 'payload-toast-close-button',\n content: 'toast-content',\n error: 'toast-error',\n icon: 'toast-icon',\n info: 'toast-info',\n success: 'toast-success',\n title: 'toast-title',\n toast: 'payload-toast-item',\n warning: 'toast-warning',\n },\n unstyled: true,\n }}\n visibleToasts={limit ?? 5}\n />\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,MAAW;AAClB,SAASC,OAAO,QAAQ;AAExB,SAASC,KAAK,QAAQ;AACtB,SAASC,IAAI,QAAQ;AACrB,SAASC,OAAO,QAAQ;AACxB,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,cAAA,GAERA,CAAC;EAAEC;AAAM,CAAE;EACd,MAAM;IAAEC,KAAA,EAAO;MAAEC,KAAA,EAAO;QAAEC,QAAQ;QAAEC,MAAM;QAAEC;MAAK,CAAE,GAAG,CAAC;IAAC,CAAE,GAAG,CAAC;EAAC,CAAE,GAAGL,MAAA;EAEpE,oBACEM,IAAA,CAACZ,OAAA;IACCa,SAAA,EAAU;IACVC,WAAW;IACX;IACAC,GAAA,EAAI;IACJN,QAAA,EAAUA,QAAA,IAAY;IACtBC,MAAA,EAAQA,MAAA,IAAU;IAClBM,GAAA,EAAK;IACLC,KAAA,EAAO;MACLC,KAAA,eAAON,IAAA,CAACX,KAAA;MACRkB,IAAA,eAAMP,IAAA,CAACV,IAAA;MACPkB,OAAA,eAASR,IAAA,CAACT,OAAA;MACVkB,OAAA,eAAST,IAAA,CAACR,OAAA;IACZ;IACAkB,MAAA,EAAO;IACPC,YAAA,EAAc;MACZC,UAAA,EAAY;QACVV,WAAA,EAAa;QACbW,OAAA,EAAS;QACTP,KAAA,EAAO;QACPQ,IAAA,EAAM;QACNP,IAAA,EAAM;QACNC,OAAA,EAAS;QACTO,KAAA,EAAO;QACPnB,KAAA,EAAO;QACPa,OAAA,EAAS;MACX;MACAO,QAAA,EAAU;IACZ;IACAC,aAAA,EAAelB,KAAA,IAAS;;AAG9B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","Toaster","Error","Info","Success","Warning","ToastContainer","config","admin","toast","duration","expand","limit","position","_jsx","className","closeButton","dir","gap","icons","error","info","success","warning","offset","toastOptions","classNames","content","icon","title","unstyled","visibleToasts"],"sources":["../../../src/providers/ToastContainer/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientConfig } from 'payload'\n\nimport React from 'react'\nimport { Toaster } from 'sonner'\n\nimport { Error } from './icons/Error.js'\nimport { Info } from './icons/Info.js'\nimport { Success } from './icons/Success.js'\nimport { Warning } from './icons/Warning.js'\n\nexport const ToastContainer: React.FC<{\n config: ClientConfig\n}> = ({ config }) => {\n const { admin: { toast: { duration, expand, limit, position } = {} } = {} } = config\n\n return (\n <Toaster\n className=\"payload-toast-container\"\n closeButton\n // @ts-expect-error\n dir=\"undefined\"\n duration={duration ?? 4000}\n expand={expand ?? false}\n gap={8}\n icons={{\n error: <Error />,\n info: <Info />,\n success: <Success />,\n warning: <Warning />,\n }}\n offset=\"calc(var(--gutter-h) / 2)\"\n position={position ?? 'bottom-right'}\n toastOptions={{\n classNames: {\n closeButton: 'payload-toast-close-button',\n content: 'toast-content',\n error: 'toast-error',\n icon: 'toast-icon',\n info: 'toast-info',\n success: 'toast-success',\n title: 'toast-title',\n toast: 'payload-toast-item',\n warning: 'toast-warning',\n },\n unstyled: true,\n }}\n visibleToasts={limit ?? 5}\n />\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,MAAW;AAClB,SAASC,OAAO,QAAQ;AAExB,SAASC,KAAK,QAAQ;AACtB,SAASC,IAAI,QAAQ;AACrB,SAASC,OAAO,QAAQ;AACxB,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,cAAA,GAERA,CAAC;EAAEC;AAAM,CAAE;EACd,MAAM;IAAEC,KAAA,EAAO;MAAEC,KAAA,EAAO;QAAEC,QAAQ;QAAEC,MAAM;QAAEC,KAAK;QAAEC;MAAQ,CAAE,GAAG,CAAC;IAAC,CAAE,GAAG,CAAC;EAAC,CAAE,GAAGN,MAAA;EAE9E,oBACEO,IAAA,CAACb,OAAA;IACCc,SAAA,EAAU;IACVC,WAAW;IACX;IACAC,GAAA,EAAI;IACJP,QAAA,EAAUA,QAAA,IAAY;IACtBC,MAAA,EAAQA,MAAA,IAAU;IAClBO,GAAA,EAAK;IACLC,KAAA,EAAO;MACLC,KAAA,eAAON,IAAA,CAACZ,KAAA;MACRmB,IAAA,eAAMP,IAAA,CAACX,IAAA;MACPmB,OAAA,eAASR,IAAA,CAACV,OAAA;MACVmB,OAAA,eAAST,IAAA,CAACT,OAAA;IACZ;IACAmB,MAAA,EAAO;IACPX,QAAA,EAAUA,QAAA,IAAY;IACtBY,YAAA,EAAc;MACZC,UAAA,EAAY;QACVV,WAAA,EAAa;QACbW,OAAA,EAAS;QACTP,KAAA,EAAO;QACPQ,IAAA,EAAM;QACNP,IAAA,EAAM;QACNC,OAAA,EAAS;QACTO,KAAA,EAAO;QACPpB,KAAA,EAAO;QACPc,OAAA,EAAS;MACX;MACAO,QAAA,EAAU;IACZ;IACAC,aAAA,EAAenB,KAAA,IAAS;;AAG9B","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.62.0-internal.7fb5145",
3
+ "version": "3.62.0-internal.ec3a6fa",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -136,7 +136,7 @@
136
136
  "ts-essentials": "10.0.3",
137
137
  "use-context-selector": "2.0.0",
138
138
  "uuid": "10.0.0",
139
- "@payloadcms/translations": "3.62.0-internal.7fb5145"
139
+ "@payloadcms/translations": "3.62.0-internal.ec3a6fa"
140
140
  },
141
141
  "devDependencies": {
142
142
  "@babel/cli": "7.27.2",
@@ -151,14 +151,14 @@
151
151
  "babel-plugin-react-compiler": "19.1.0-rc.3",
152
152
  "esbuild": "0.25.5",
153
153
  "esbuild-sass-plugin": "3.3.1",
154
- "@payloadcms/eslint-config": "3.28.0",
155
- "payload": "3.62.0-internal.7fb5145"
154
+ "payload": "3.62.0-internal.ec3a6fa",
155
+ "@payloadcms/eslint-config": "3.28.0"
156
156
  },
157
157
  "peerDependencies": {
158
158
  "next": "^15.2.3",
159
159
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
160
160
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
161
- "payload": "3.62.0-internal.7fb5145"
161
+ "payload": "3.62.0-internal.ec3a6fa"
162
162
  },
163
163
  "engines": {
164
164
  "node": "^18.20.2 || >=20.9.0"
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQueues.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueues.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzC,KAAK,iBAAiB,GAAG;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAE1E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,IAAI;IAC3B,SAAS,EAAE,SAAS,CAAA;CACrB,CA8CA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQueues.js","names":["useCallback","useRef","useQueues","queue","isProcessing","queueTask","fn","options","current","push","processQueue","beforeProcess","shouldContinue","length","latestTask","pop","err","console","error","afterProcess"],"sources":["../../src/hooks/useQueues.ts"],"sourcesContent":["import { useCallback, useRef } from 'react'\n\ntype QueuedFunction = () => Promise<void>\n\ntype QueuedTaskOptions = {\n /**\n * A function that is called after the queue has processed a function\n * Used to perform side effects after processing the queue\n * @returns {void}\n */\n afterProcess?: () => void\n /**\n * A function that can be used to prevent the queue from processing under certain conditions\n * Can also be used to perform side effects before processing the queue\n * @returns {boolean} If `false`, the queue will not process\n */\n beforeProcess?: () => boolean | void\n}\n\ntype QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void\n\n/**\n * A React hook that allows you to queue up functions to be executed in order.\n * This is useful when you need to ensure long running networks requests are processed sequentially.\n * Builds up a \"queue\" of functions to be executed in order, only ever processing the last function in the queue.\n * This ensures that a long queue of tasks doesn't cause a backlog of tasks to be processed.\n * E.g. if you queue a task and it begins running, then you queue 9 more tasks:\n * 1. The currently task will finish\n * 2. The next task in the queue will run\n * 3. All remaining tasks will be discarded\n * @returns {queueTask} A function used to queue a function.\n * @example\n * const { queueTask } = useQueues()\n * queueTask(async () => {\n * await fetch('https://api.example.com')\n * })\n */\nexport function useQueues(): {\n queueTask: QueueTask\n} {\n const queue = useRef<QueuedFunction[]>([])\n\n const isProcessing = useRef(false)\n\n const queueTask = useCallback<QueueTask>((fn, options) => {\n queue.current.push(fn)\n\n async function processQueue() {\n if (isProcessing.current) {\n return\n }\n\n // Allow the consumer to prevent the queue from processing under certain conditions\n if (typeof options?.beforeProcess === 'function') {\n const shouldContinue = options.beforeProcess()\n\n if (shouldContinue === false) {\n return\n }\n }\n\n while (queue.current.length > 0) {\n const latestTask = queue.current.pop() // Only process the last task in the queue\n queue.current = [] // Discard all other tasks\n\n isProcessing.current = true\n\n try {\n await latestTask()\n } catch (err) {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n } finally {\n isProcessing.current = false\n\n if (typeof options?.afterProcess === 'function') {\n options.afterProcess()\n }\n }\n }\n }\n\n void processQueue()\n }, [])\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ;AAqBpC;;;;;;;;;;;;;;;;AAgBA,OAAO,SAASC,UAAA;EAGd,MAAMC,KAAA,GAAQF,MAAA,CAAyB,EAAE;EAEzC,MAAMG,YAAA,GAAeH,MAAA,CAAO;EAE5B,MAAMI,SAAA,GAAYL,WAAA,CAAuB,CAACM,EAAA,EAAIC,OAAA;IAC5CJ,KAAA,CAAMK,OAAO,CAACC,IAAI,CAACH,EAAA;IAEnB,eAAeI,aAAA;MACb,IAAIN,YAAA,CAAaI,OAAO,EAAE;QACxB;MACF;MAEA;MACA,IAAI,OAAOD,OAAA,EAASI,aAAA,KAAkB,YAAY;QAChD,MAAMC,cAAA,GAAiBL,OAAA,CAAQI,aAAa;QAE5C,IAAIC,cAAA,KAAmB,OAAO;UAC5B;QACF;MACF;MAEA,OAAOT,KAAA,CAAMK,OAAO,CAACK,MAAM,GAAG,GAAG;QAC/B,MAAMC,UAAA,GAAaX,KAAA,CAAMK,OAAO,CAACO,GAAG,GAAG;QAAA;QACvCZ,KAAA,CAAMK,OAAO,GAAG,EAAE,CAAC;QAAA;QAEnBJ,YAAA,CAAaI,OAAO,GAAG;QAEvB,IAAI;UACF,MAAMM,UAAA;QACR,EAAE,OAAOE,GAAA,EAAK;UACZC,OAAA,CAAQC,KAAK,CAAC,6BAA6BF,GAAA,EAAK;UAAA;QAClD,UAAU;UACRZ,YAAA,CAAaI,OAAO,GAAG;UAEvB,IAAI,OAAOD,OAAA,EAASY,YAAA,KAAiB,YAAY;YAC/CZ,OAAA,CAAQY,YAAY;UACtB;QACF;MACF;IACF;IAEA,KAAKT,YAAA;EACP,GAAG,EAAE;EAEL,OAAO;IAAEL;EAAU;AACrB","ignoreList":[]}