@oxyhq/bloom 0.79.1 → 0.81.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.
- package/lib/commonjs/scroll/index.web.js +52 -18
- package/lib/commonjs/scroll/index.web.js.map +1 -1
- package/lib/commonjs/scroll/scrollable.web.js +9 -3
- package/lib/commonjs/scroll/scrollable.web.js.map +1 -1
- package/lib/commonjs/tabs/Tabs.js +409 -71
- package/lib/commonjs/tabs/Tabs.js.map +1 -1
- package/lib/commonjs/tabs/expo-router/RouterTabs.js +215 -0
- package/lib/commonjs/tabs/expo-router/RouterTabs.js.map +1 -0
- package/lib/commonjs/tabs/expo-router/index.js +13 -0
- package/lib/commonjs/tabs/expo-router/index.js.map +1 -0
- package/lib/commonjs/theme/color-engine/index.js +6 -0
- package/lib/commonjs/theme/color-engine/index.js.map +1 -1
- package/lib/commonjs/theme/color-engine/scheme-variants.js +29 -1
- package/lib/commonjs/theme/color-engine/scheme-variants.js.map +1 -1
- package/lib/commonjs/theme/color-policy.js +54 -10
- package/lib/commonjs/theme/color-policy.js.map +1 -1
- package/lib/commonjs/theme/color-presets.js +14 -2
- package/lib/commonjs/theme/color-presets.js.map +1 -1
- package/lib/commonjs/theme/color-scope/seed-scope.js +5 -1
- package/lib/commonjs/theme/color-scope/seed-scope.js.map +1 -1
- package/lib/module/scroll/index.web.js +52 -18
- package/lib/module/scroll/index.web.js.map +1 -1
- package/lib/module/scroll/scrollable.web.js +9 -3
- package/lib/module/scroll/scrollable.web.js.map +1 -1
- package/lib/module/tabs/Tabs.js +417 -73
- package/lib/module/tabs/Tabs.js.map +1 -1
- package/lib/module/tabs/expo-router/RouterTabs.js +210 -0
- package/lib/module/tabs/expo-router/RouterTabs.js.map +1 -0
- package/lib/module/tabs/expo-router/index.js +10 -0
- package/lib/module/tabs/expo-router/index.js.map +1 -0
- package/lib/module/theme/color-engine/index.js +1 -1
- package/lib/module/theme/color-engine/index.js.map +1 -1
- package/lib/module/theme/color-engine/scheme-variants.js +28 -1
- package/lib/module/theme/color-engine/scheme-variants.js.map +1 -1
- package/lib/module/theme/color-policy.js +53 -10
- package/lib/module/theme/color-policy.js.map +1 -1
- package/lib/module/theme/color-presets.js +14 -2
- package/lib/module/theme/color-presets.js.map +1 -1
- package/lib/module/theme/color-scope/seed-scope.js +6 -2
- package/lib/module/theme/color-scope/seed-scope.js.map +1 -1
- package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/scrollable.web.d.ts +18 -5
- package/lib/typescript/commonjs/scroll/scrollable.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/Tabs.d.ts +41 -1
- package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts +80 -0
- package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts.map +1 -0
- package/lib/typescript/commonjs/tabs/expo-router/index.d.ts +9 -0
- package/lib/typescript/commonjs/tabs/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/tabs/types.d.ts +48 -4
- package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-engine/index.d.ts +1 -1
- package/lib/typescript/commonjs/theme/color-engine/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts +13 -1
- package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-policy.d.ts +6 -0
- package/lib/typescript/commonjs/theme/color-policy.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-presets.d.ts +1 -1
- package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/seed-scope.d.ts.map +1 -1
- package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/module/scroll/scrollable.web.d.ts +18 -5
- package/lib/typescript/module/scroll/scrollable.web.d.ts.map +1 -1
- package/lib/typescript/module/tabs/Tabs.d.ts +41 -1
- package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts +80 -0
- package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts.map +1 -0
- package/lib/typescript/module/tabs/expo-router/index.d.ts +9 -0
- package/lib/typescript/module/tabs/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/module/tabs/types.d.ts +48 -4
- package/lib/typescript/module/tabs/types.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-engine/index.d.ts +1 -1
- package/lib/typescript/module/theme/color-engine/index.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts +13 -1
- package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-policy.d.ts +6 -0
- package/lib/typescript/module/theme/color-policy.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-presets.d.ts +1 -1
- package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/seed-scope.d.ts.map +1 -1
- package/package.json +15 -1
- package/src/__tests__/Tabs.test.tsx +470 -7
- package/src/__tests__/optional-peer-imports.test.ts +5 -0
- package/src/__tests__/scroll-web.test.tsx +255 -2
- package/src/__tests__/theme.test.ts +2 -1
- package/src/scroll/index.web.tsx +55 -19
- package/src/scroll/scrollable.web.ts +30 -8
- package/src/tabs/Tabs.tsx +518 -83
- package/src/tabs/expo-router/RouterTabs.tsx +268 -0
- package/src/tabs/expo-router/index.ts +8 -0
- package/src/tabs/types.ts +48 -4
- package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +120 -0
- package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +70 -0
- package/src/theme/__tests__/policy-legibility.test.ts +12 -4
- package/src/theme/color-engine/index.ts +1 -1
- package/src/theme/color-engine/scheme-variants.ts +38 -1
- package/src/theme/color-policy.ts +68 -14
- package/src/theme/color-presets.ts +11 -2
- package/src/theme/color-scope/seed-scope.ts +6 -2
|
@@ -165,22 +165,51 @@ function useScrollRestoration(target, options) {
|
|
|
165
165
|
// than what the scroll listener already saved live.
|
|
166
166
|
let lastObservedOffset = null;
|
|
167
167
|
|
|
168
|
-
// The
|
|
169
|
-
// event (jsdom does not, so the
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
168
|
+
// The offset WE last wrote, which a real browser dispatches back as a
|
|
169
|
+
// `scroll` event (jsdom does not, so the tests for this emit it
|
|
170
|
+
// explicitly). Both writers arm it: the reset, and every frame of the
|
|
171
|
+
// restore loop. Persisting either records an offset the user never
|
|
172
|
+
// chose — the reset's 0 under a key another LIVE screen may share (the
|
|
173
|
+
// two-live-entries trade content keying makes, see `deriveScrollKey`),
|
|
174
|
+
// and the loop's intermediate value as a PARTIAL that outlives an
|
|
175
|
+
// interrupted restore.
|
|
176
|
+
//
|
|
177
|
+
// A `restoring` FLAG covering the loop's duration is the obvious
|
|
178
|
+
// alternative and is wrong. It could only be cleared by a takeover
|
|
179
|
+
// event, so a session whose scroll came from a source that fires none —
|
|
180
|
+
// `scrollIntoView` from another component, a focus-driven scroll — would
|
|
181
|
+
// suppress saves indefinitely and never record the user's position at
|
|
182
|
+
// all: an unbounded corruption traded for a bounded one. Arming a VALUE
|
|
183
|
+
// is bounded to one event per write and covers every way the loop can
|
|
184
|
+
// end (stuck, capped, aborted), because each frame re-arms.
|
|
175
185
|
let echoOffset = null;
|
|
186
|
+
|
|
187
|
+
// The largest offset reachable when we last PERSISTED one. A browser
|
|
188
|
+
// clamp is recognised against this rather than against the previous
|
|
189
|
+
// OBSERVATION, and that distinction is the whole mechanism: Chrome
|
|
190
|
+
// dispatches TWO `scroll` events for one clamp, so an
|
|
191
|
+
// observation-relative test sees the shrink on the first and nothing on
|
|
192
|
+
// the second, which then saves the clamped value anyway. Measured.
|
|
193
|
+
let maxOffsetAtLastSave = scroller.getMaxOffset();
|
|
176
194
|
const save = () => {
|
|
177
195
|
const offset = scroller.getOffset();
|
|
196
|
+
const maxOffset = scroller.getMaxOffset();
|
|
178
197
|
// Ignore a spurious 0 produced by the navigator collapsing a hidden
|
|
179
198
|
// background screen: while collapsed the container cannot scroll, so
|
|
180
199
|
// its `scrollTop` is forced to 0. Persisting it would clobber the good
|
|
181
200
|
// offset recorded by earlier live saves (problem A). A genuine
|
|
182
201
|
// scroll-to-top keeps the container scrollable and is saved normally.
|
|
183
|
-
if (offset === 0 &&
|
|
202
|
+
if (offset === 0 && maxOffset <= 0) return;
|
|
203
|
+
// A partial clamp: the reachable range SHRANK and the offset is sitting
|
|
204
|
+
// exactly at the new bottom. That is what the browser does to a tab
|
|
205
|
+
// whose document has been taken over by a shorter sibling — the two
|
|
206
|
+
// together are a signature a genuine scroll does not have, because
|
|
207
|
+
// reaching the bottom on your own does not shrink the page in the same
|
|
208
|
+
// breath. Suppressing keeps the pre-clamp offset, which on return
|
|
209
|
+
// simply clamps to the same place if the content really did shrink.
|
|
210
|
+
if (maxOffset < maxOffsetAtLastSave && Math.abs(offset - maxOffset) <= RESTORE_STICK_TOLERANCE_PX) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
184
213
|
if (offset === echoOffset) {
|
|
185
214
|
// Our own write coming back. Consume the arming so a real scroll to
|
|
186
215
|
// the same offset later is saved normally.
|
|
@@ -189,6 +218,7 @@ function useScrollRestoration(target, options) {
|
|
|
189
218
|
}
|
|
190
219
|
echoOffset = null;
|
|
191
220
|
lastObservedOffset = offset;
|
|
221
|
+
maxOffsetAtLastSave = maxOffset;
|
|
192
222
|
store.save(scrollKey, offset);
|
|
193
223
|
};
|
|
194
224
|
|
|
@@ -228,22 +258,26 @@ function useScrollRestoration(target, options) {
|
|
|
228
258
|
// single write while it is still collapsed would be clamped to 0 and
|
|
229
259
|
// never re-applied (problem B).
|
|
230
260
|
//
|
|
231
|
-
//
|
|
232
|
-
// `
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
//
|
|
236
|
-
// leaves the CLAMPED offset stored — which is the right thing to
|
|
237
|
-
// remember when the content genuinely shrank, since that is as far as
|
|
238
|
-
// the user can now scroll.
|
|
261
|
+
// Every write the loop makes is suppressed from the save path (see
|
|
262
|
+
// `echoOffset` below), so an interrupted restore leaves the ORIGINAL
|
|
263
|
+
// target stored rather than a partial. Nothing is lost on the success
|
|
264
|
+
// path: `targetOffset` came out of the store, so persisting it again
|
|
265
|
+
// would write back the same number.
|
|
239
266
|
let framesLeft = RESTORE_FRAME_CAP;
|
|
240
267
|
const applyOffset = () => {
|
|
241
268
|
rafId = null;
|
|
242
269
|
scroller.setOffset(targetOffset);
|
|
243
270
|
framesLeft -= 1;
|
|
271
|
+
// `getOffset` re-reads the value the browser actually took, which is
|
|
272
|
+
// clamped to the content height it has reached so far. Arm it as the
|
|
273
|
+
// echo to swallow: this write is about to come back as a `scroll`
|
|
274
|
+
// event, and persisting a PARTIAL offset we wrote ourselves is how a
|
|
275
|
+
// restore that is aborted or capped corrupts the stored position.
|
|
276
|
+
const landed = scroller.getOffset();
|
|
277
|
+
echoOffset = landed;
|
|
244
278
|
// Stop once the write took effect (content grew tall enough) or we
|
|
245
|
-
// exhaust the frame budget.
|
|
246
|
-
const reached = Math.abs(
|
|
279
|
+
// exhaust the frame budget.
|
|
280
|
+
const reached = Math.abs(landed - targetOffset) <= RESTORE_STICK_TOLERANCE_PX;
|
|
247
281
|
if (!reached && framesLeft > 0) {
|
|
248
282
|
rafId = requestAnimationFrame(applyOffset);
|
|
249
283
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_context","_scrollableWeb","_store","RESTORE_FRAME_CAP","RESTORE_STICK_TOLERANCE_PX","WEB_BINDING","onScroll","undefined","USER_TAKEOVER_EVENTS","useScrollRestoration","target","options","store","adapter","useScrollRestorationContext","contentId","useScreenContentId","enabled","scrollKey","deriveScrollKey","key","resetKeyRef","useRef","useScreenFocusEffect","useCallback","scroller","createScroller","element","window","resolveScrollEventTarget","lastObservedOffset","echoOffset","save","offset","getOffset","
|
|
1
|
+
{"version":3,"names":["_react","require","_context","_scrollableWeb","_store","RESTORE_FRAME_CAP","RESTORE_STICK_TOLERANCE_PX","WEB_BINDING","onScroll","undefined","USER_TAKEOVER_EVENTS","useScrollRestoration","target","options","store","adapter","useScrollRestorationContext","contentId","useScreenContentId","enabled","scrollKey","deriveScrollKey","key","resetKeyRef","useRef","useScreenFocusEffect","useCallback","scroller","createScroller","element","window","resolveScrollEventTarget","lastObservedOffset","echoOffset","maxOffsetAtLastSave","getMaxOffset","save","offset","getOffset","maxOffset","Math","abs","targetOffset","read","isReset","has","alreadyReset","current","rafId","stopRestore","cancelAnimationFrame","setOffset","requestAnimationFrame","framesLeft","applyOffset","landed","reached","type","addEventListener","passive","removeEventListener","EventTarget","handle","getScrollableNode","node"],"sourceRoot":"../../../src","sources":["scroll/index.web.tsx"],"mappings":";;;;;;;;;;;;AAwCA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AA5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,iBAAiB,GAAG,EAAE;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAAG,CAAC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAqC,GAAG;EAAEC,QAAQ,EAAEA,CAAA,KAAMC;AAAU,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAClCC,MAA+B,EAC/BC,OAAqC,EACX;EAC1B,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAAC,oCAA2B,EAAC,CAAC;EACxD,MAAMC,SAAS,GAAGF,OAAO,CAACG,kBAAkB,CAAC,CAAC;EAC9C,MAAMC,OAAO,GAAGN,OAAO,EAAEM,OAAO,IAAI,IAAI;EACxC,MAAMC,SAAS,GAAG,IAAAC,sBAAe,EAACJ,SAAS,EAAEJ,OAAO,EAAES,GAAG,CAAC;;EAE1D;EACA;EACA;EACA;EACA;EACA,MAAMC,WAAW,GAAG,IAAAC,aAAM,EA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","ignoreList":[]}
|
|
@@ -48,7 +48,12 @@ function createScroller(target) {
|
|
|
48
48
|
setOffset: offset => {
|
|
49
49
|
if (typeof window !== 'undefined') window.scrollTo(0, offset);
|
|
50
50
|
},
|
|
51
|
-
|
|
51
|
+
getMaxOffset: () => {
|
|
52
|
+
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
53
|
+
return 0;
|
|
54
|
+
}
|
|
55
|
+
return Math.max(0, document.documentElement.scrollHeight - window.innerHeight);
|
|
56
|
+
}
|
|
52
57
|
};
|
|
53
58
|
}
|
|
54
59
|
return {
|
|
@@ -60,9 +65,10 @@ function createScroller(target) {
|
|
|
60
65
|
const element = resolveElement(target);
|
|
61
66
|
if (element) element.scrollTop = offset;
|
|
62
67
|
},
|
|
63
|
-
|
|
68
|
+
getMaxOffset: () => {
|
|
64
69
|
const element = resolveElement(target);
|
|
65
|
-
|
|
70
|
+
if (!element) return 0;
|
|
71
|
+
return Math.max(0, element.scrollHeight - element.clientHeight);
|
|
66
72
|
}
|
|
67
73
|
};
|
|
68
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isElement","value","HTMLElement","hasGetScrollableNode","getScrollableNode","resolveElement","target","current","node","createScroller","getOffset","window","scrollY","setOffset","offset","scrollTo","
|
|
1
|
+
{"version":3,"names":["isElement","value","HTMLElement","hasGetScrollableNode","getScrollableNode","resolveElement","target","current","node","createScroller","getOffset","window","scrollY","setOffset","offset","scrollTo","getMaxOffset","document","Math","max","documentElement","scrollHeight","innerHeight","element","scrollTop","clientHeight"],"sourceRoot":"../../../src","sources":["scroll/scrollable.web.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;;AA+BA,SAASA,SAASA,CAACC,KAAc,EAAwB;EACvD,OAAO,OAAOC,WAAW,KAAK,WAAW,IAAID,KAAK,YAAYC,WAAW;AAC3E;AAEA,SAASC,oBAAoBA,CAC3BF,KAAc,EACkD;EAChE,OACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAQA,KAAK,CAAsBG,iBAAiB,KAAK,UAAU;AAEvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,MAA+B,EAAsB;EAC3E,IAAIA,MAAM,KAAK,QAAQ,EAAE,OAAO,IAAI;EAEpC,MAAMC,OAAO,GAAID,MAAM,CAA0BC,OAAO;EACxD,IAAIA,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI;EAEhC,IAAIP,SAAS,CAACO,OAAO,CAAC,EAAE,OAAOA,OAAO;EAEtC,IAAIJ,oBAAoB,CAACI,OAAO,CAAC,EAAE;IACjC,MAAMC,IAAI,GAAGD,OAAO,CAACH,iBAAiB,CAAC,CAAC;IACxC,IAAIJ,SAAS,CAACQ,IAAI,CAAC,EAAE,OAAOA,IAAI;EAClC;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAACH,MAA+B,EAAoB;EAChF,IAAIA,MAAM,KAAK,QAAQ,EAAE;IACvB,OAAO;MACLI,SAAS,EAAEA,CAAA,KAAO,OAAOC,MAAM,KAAK,WAAW,GAAG,CAAC,GAAGA,MAAM,CAACC,OAAQ;MACrEC,SAAS,EAAGC,MAAM,IAAK;QACrB,IAAI,OAAOH,MAAM,KAAK,WAAW,EAAEA,MAAM,CAACI,QAAQ,CAAC,CAAC,EAAED,MAAM,CAAC;MAC/D,CAAC;MACDE,YAAY,EAAEA,CAAA,KAAM;QAClB,IAAI,OAAOL,MAAM,KAAK,WAAW,IAAI,OAAOM,QAAQ,KAAK,WAAW,EAAE;UACpE,OAAO,CAAC;QACV;QACA,OAAOC,IAAI,CAACC,GAAG,CACb,CAAC,EACDF,QAAQ,CAACG,eAAe,CAACC,YAAY,GAAGV,MAAM,CAACW,WACjD,CAAC;MACH;IACF,CAAC;EACH;EAEA,OAAO;IACLZ,SAAS,EAAEA,CAAA,KAAM;MACf,MAAMa,OAAO,GAAGlB,cAAc,CAACC,MAAM,CAAC;MACtC,OAAOiB,OAAO,GAAGA,OAAO,CAACC,SAAS,GAAG,CAAC;IACxC,CAAC;IACDX,SAAS,EAAGC,MAAM,IAAK;MACrB,MAAMS,OAAO,GAAGlB,cAAc,CAACC,MAAM,CAAC;MACtC,IAAIiB,OAAO,EAAEA,OAAO,CAACC,SAAS,GAAGV,MAAM;IACzC,CAAC;IACDE,YAAY,EAAEA,CAAA,KAAM;MAClB,MAAMO,OAAO,GAAGlB,cAAc,CAACC,MAAM,CAAC;MACtC,IAAI,CAACiB,OAAO,EAAE,OAAO,CAAC;MACtB,OAAOL,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEI,OAAO,CAACF,YAAY,GAAGE,OAAO,CAACE,YAAY,CAAC;IACjE;EACF,CAAC;AACH","ignoreList":[]}
|