@hanzogui/react-native-use-pressable 2.0.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.
@@ -0,0 +1,48 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
+ usePressEvents: () => usePressEvents
35
+ });
36
+ module.exports = __toCommonJS(index_exports);
37
+ var import_react = __toESM(require("react"), 1),
38
+ import_PressResponder = require("./PressResponder.cjs");
39
+ function usePressEvents(_, config) {
40
+ const pressResponderRef = import_react.default.useRef(null);
41
+ pressResponderRef.current == null && (pressResponderRef.current = new import_PressResponder.PressResponder(config));
42
+ const pressResponder = pressResponderRef.current;
43
+ return import_react.default.useEffect(() => {
44
+ pressResponder.configure(config);
45
+ }, [config, pressResponder]), import_react.default.useEffect(() => () => {
46
+ pressResponder.reset();
47
+ }, [pressResponder]), import_react.default.useDebugValue(config), pressResponder.getEventHandlers();
48
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf,
8
+ __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: !0
13
+ });
14
+ },
15
+ __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
17
+ get: () => from[key],
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: !0
30
+ }) : target, mod)),
31
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: !0
33
+ }), mod);
34
+ var index_exports = {};
35
+ __export(index_exports, {
36
+ usePressEvents: () => usePressEvents
37
+ });
38
+ module.exports = __toCommonJS(index_exports);
39
+ var import_react = __toESM(require("react"), 1),
40
+ import_PressResponder = require("./PressResponder.native.js");
41
+ function usePressEvents(_, config) {
42
+ var pressResponderRef = import_react.default.useRef(null);
43
+ pressResponderRef.current == null && (pressResponderRef.current = new import_PressResponder.PressResponder(config));
44
+ var pressResponder = pressResponderRef.current;
45
+ return import_react.default.useEffect(function () {
46
+ pressResponder.configure(config);
47
+ }, [config, pressResponder]), import_react.default.useEffect(function () {
48
+ return function () {
49
+ pressResponder.reset();
50
+ };
51
+ }, [pressResponder]), import_react.default.useDebugValue(config), pressResponder.getEventHandlers();
52
+ }
53
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","usePressEvents","module","exports","import_react","__toESM","require","import_PressResponder","_","config","pressResponderRef","default","useRef","current","PressResponder","pressResponder","useEffect","configure"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAA;EAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;IAAAC,KAAA;EAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAkB,CAAAK,aAAA;AAiBX,IAAAK,YAAS,GAAAC,OAAe,CAAGC,OAAA,CAAc;EAAAC,qBAAA,GAAAD,OAAA;AAC9C,SAAML,eAAAO,CAAA,EAAAC,MAAoB;EAEtB,IAAAC,iBAAkB,GAAAN,YAAW,CAAAO,OAC/B,CAAAC,MAAA,KAAkB;EAGpBF,iBAAM,CAAAG,OAAiB,aAAAH,iBAAkB,CAAAG,OAAA,OAAAN,qBAAA,CAAAO,cAAA,CAAAL,MAAA;EAEzC,IAAAM,cAAA,GAAAL,iBAAgB,CAAAG,OAAM;EACpB,OAAAT,YAAe,CAAAO,OAAU,CAAAK,SAAM;IACjCD,cAAY,CAAAE,SAAc,CAACR,MAG3B;EAEI,IACFA,MACE,EAGNM,cAAA,C","ignoreList":[]}
@@ -0,0 +1,248 @@
1
+ const DELAY = "DELAY",
2
+ ERROR = "ERROR",
3
+ LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED",
4
+ NOT_RESPONDER = "NOT_RESPONDER",
5
+ RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START",
6
+ RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START",
7
+ RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START",
8
+ RESPONDER_GRANT = "RESPONDER_GRANT",
9
+ RESPONDER_RELEASE = "RESPONDER_RELEASE",
10
+ RESPONDER_TERMINATED = "RESPONDER_TERMINATED",
11
+ Transitions = Object.freeze({
12
+ NOT_RESPONDER: {
13
+ DELAY: ERROR,
14
+ RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
15
+ RESPONDER_RELEASE: ERROR,
16
+ RESPONDER_TERMINATED: ERROR,
17
+ LONG_PRESS_DETECTED: ERROR
18
+ },
19
+ RESPONDER_INACTIVE_PRESS_START: {
20
+ DELAY: RESPONDER_ACTIVE_PRESS_START,
21
+ RESPONDER_GRANT: ERROR,
22
+ RESPONDER_RELEASE: NOT_RESPONDER,
23
+ RESPONDER_TERMINATED: NOT_RESPONDER,
24
+ LONG_PRESS_DETECTED: ERROR
25
+ },
26
+ RESPONDER_ACTIVE_PRESS_START: {
27
+ DELAY: ERROR,
28
+ RESPONDER_GRANT: ERROR,
29
+ RESPONDER_RELEASE: NOT_RESPONDER,
30
+ RESPONDER_TERMINATED: NOT_RESPONDER,
31
+ LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
32
+ },
33
+ RESPONDER_ACTIVE_LONG_PRESS_START: {
34
+ DELAY: ERROR,
35
+ RESPONDER_GRANT: ERROR,
36
+ RESPONDER_RELEASE: NOT_RESPONDER,
37
+ RESPONDER_TERMINATED: NOT_RESPONDER,
38
+ LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
39
+ },
40
+ ERROR: {
41
+ DELAY: NOT_RESPONDER,
42
+ RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
43
+ RESPONDER_RELEASE: NOT_RESPONDER,
44
+ RESPONDER_TERMINATED: NOT_RESPONDER,
45
+ LONG_PRESS_DETECTED: NOT_RESPONDER
46
+ }
47
+ }),
48
+ isActiveSignal = signal => signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START,
49
+ isButtonRole = element => element.getAttribute("role") === "button",
50
+ isPressStartSignal = signal => signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START,
51
+ isTerminalSignal = signal => signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE,
52
+ isValidKeyPress = event => {
53
+ const key = event.key,
54
+ role = event.target.getAttribute("role");
55
+ return key === "Enter" || (key === " " || key === "Spacebar") && role === "button";
56
+ },
57
+ DEFAULT_LONG_PRESS_DELAY_MS = 450,
58
+ DEFAULT_PRESS_DELAY_MS = 50;
59
+ class PressResponder {
60
+ _touchActivatePosition = null;
61
+ _pressDelayTimeout = 0;
62
+ _selectionTerminated = !1;
63
+ _isPointerTouch = !1;
64
+ _longPressDelayTimeout = 0;
65
+ _longPressDispatched = !1;
66
+ _pressOutDelayTimeout = 0;
67
+ _touchState = NOT_RESPONDER;
68
+ _config = null;
69
+ _eventHandlers = null;
70
+ constructor(config) {
71
+ this.configure(config);
72
+ }
73
+ configure(config) {
74
+ this._config = config;
75
+ }
76
+ /**
77
+ * Resets any pending timers. This should be called on unmount.
78
+ */
79
+ reset() {
80
+ this._cancelLongPressDelayTimeout(), this._cancelPressDelayTimeout(), this._cancelPressOutDelayTimeout();
81
+ }
82
+ /**
83
+ * Returns a set of props to spread into the interactive element.
84
+ */
85
+ getEventHandlers() {
86
+ return this._eventHandlers == null && (this._eventHandlers = this._createEventHandlers()), this._eventHandlers;
87
+ }
88
+ _createEventHandlers() {
89
+ const start = (event, shouldDelay) => {
90
+ event.persist(), this._cancelPressOutDelayTimeout(), this._longPressDispatched = !1, this._selectionTerminated = !1, this._touchState = NOT_RESPONDER, this._isPointerTouch = event.nativeEvent.type === "touchstart", this._receiveSignal(RESPONDER_GRANT, event);
91
+ const delayPressStart = normalizeDelay(this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);
92
+ shouldDelay !== !1 && delayPressStart > 0 ? this._pressDelayTimeout = setTimeout(() => {
93
+ this._receiveSignal(DELAY, event);
94
+ }, delayPressStart) : this._receiveSignal(DELAY, event);
95
+ const delayLongPress = normalizeDelay(this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);
96
+ this._longPressDelayTimeout = setTimeout(() => {
97
+ this._handleLongPress(event);
98
+ }, delayLongPress + delayPressStart);
99
+ },
100
+ end = event => {
101
+ this._receiveSignal(RESPONDER_RELEASE, event);
102
+ },
103
+ keyupHandler = event => {
104
+ const onPress = this._config.onPress,
105
+ target = event.target;
106
+ if (this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
107
+ end(event), document.removeEventListener("keyup", keyupHandler);
108
+ const role = target.getAttribute("role"),
109
+ elementType = target.tagName.toLowerCase(),
110
+ isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
111
+ onPress != null && !isNativeInteractiveElement && onPress(event);
112
+ }
113
+ };
114
+ return {
115
+ onStartShouldSetResponder: event => {
116
+ const disabled = this._config.disabled;
117
+ return disabled && isButtonRole(event.currentTarget) && event.stopPropagation(), disabled == null ? !0 : !disabled;
118
+ },
119
+ onKeyDown: event => {
120
+ const disabled = this._config.disabled,
121
+ key = event.key,
122
+ target = event.target;
123
+ if (!disabled && isValidKeyPress(event)) {
124
+ this._touchState === NOT_RESPONDER && (start(event, !1), document.addEventListener("keyup", keyupHandler));
125
+ const role = target.getAttribute("role");
126
+ (key === " " || key === "Spacebar") && (role === "button" || role === "menuitem") && event.preventDefault(), event.stopPropagation();
127
+ }
128
+ },
129
+ onResponderGrant: event => start(event),
130
+ onResponderMove: event => {
131
+ this._config.onPressMove != null && this._config.onPressMove(event);
132
+ const touch = getTouchFromResponderEvent(event);
133
+ if (this._touchActivatePosition != null) {
134
+ const deltaX = this._touchActivatePosition.pageX - touch.pageX,
135
+ deltaY = this._touchActivatePosition.pageY - touch.pageY;
136
+ Math.hypot(deltaX, deltaY) > 10 && this._cancelLongPressDelayTimeout();
137
+ }
138
+ },
139
+ onResponderRelease: event => end(event),
140
+ onResponderTerminate: event => {
141
+ event.nativeEvent.type === "selectionchange" && (this._selectionTerminated = !0), this._receiveSignal(RESPONDER_TERMINATED, event);
142
+ },
143
+ onResponderTerminationRequest: event => {
144
+ const _this$_config = this._config,
145
+ cancelable = _this$_config.cancelable,
146
+ disabled = _this$_config.disabled,
147
+ onLongPress = _this$_config.onLongPress;
148
+ return !disabled && onLongPress != null && this._isPointerTouch && event.nativeEvent.type === "contextmenu" ? !1 : cancelable ?? !0;
149
+ },
150
+ // NOTE: this diverges from react-native in 3 significant ways:
151
+ // * The `onPress` callback is not connected to the responder system (the native
152
+ // `click` event must be used but is dispatched in many scenarios where no pointers
153
+ // are on the screen.) Therefore, it's possible for `onPress` to be called without
154
+ // `onPress{Start,End}` being called first.
155
+ // * The `onPress` callback is only be called on the first ancestor of the native
156
+ // `click` target that is using the PressResponder.
157
+ // * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.
158
+ onClick: event => {
159
+ const _this$_config2 = this._config,
160
+ disabled = _this$_config2.disabled,
161
+ onPress = _this$_config2.onPress;
162
+ disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : (event.stopPropagation(), this._longPressDispatched || this._selectionTerminated ? event.preventDefault() : onPress != null && event.altKey === !1 && onPress(event));
163
+ },
164
+ // If `onLongPress` is provided and a touch pointer is being used, prevent the
165
+ // default context menu from opening.
166
+ onContextMenu: event => {
167
+ const _this$_config3 = this._config,
168
+ disabled = _this$_config3.disabled,
169
+ onLongPress = _this$_config3.onLongPress;
170
+ disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : onLongPress != null && this._isPointerTouch && !event.defaultPrevented && (event.preventDefault(), event.stopPropagation());
171
+ }
172
+ };
173
+ }
174
+ /**
175
+ * Receives a state machine signal, performs side effects of the transition
176
+ * and stores the new state. Validates the transition as well.
177
+ */
178
+ _receiveSignal(signal, event) {
179
+ const prevState = this._touchState;
180
+ let nextState = null;
181
+ Transitions[prevState] != null && (nextState = Transitions[prevState][signal]), !(this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) && (nextState == null || nextState === ERROR ? console.error(`PressResponder: Invalid signal ${signal} for state ${prevState} on responder`) : prevState !== nextState && (this._performTransitionSideEffects(prevState, nextState, signal, event), this._touchState = nextState));
182
+ }
183
+ /**
184
+ * Performs a transition between touchable states and identify any activations
185
+ * or deactivations (and callback invocations).
186
+ */
187
+ _performTransitionSideEffects(prevState, nextState, signal, event) {
188
+ if (isTerminalSignal(signal) && (setTimeout(() => {
189
+ this._isPointerTouch = !1;
190
+ }, 0), this._touchActivatePosition = null, this._cancelLongPressDelayTimeout()), isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {
191
+ const onLongPress = this._config.onLongPress;
192
+ onLongPress != null && event.nativeEvent.key == null && (onLongPress(event), this._longPressDispatched = !0);
193
+ }
194
+ const isPrevActive = isActiveSignal(prevState),
195
+ isNextActive = isActiveSignal(nextState);
196
+ if (!isPrevActive && isNextActive ? this._activate(event) : isPrevActive && !isNextActive && this._deactivate(event), isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {
197
+ const _this$_config4 = this._config,
198
+ _onLongPress = _this$_config4.onLongPress;
199
+ _this$_config4.onPress != null && (_onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START || isNextActive || isPrevActive || (this._activate(event), this._deactivate(event)));
200
+ }
201
+ this._cancelPressDelayTimeout();
202
+ }
203
+ _activate(event) {
204
+ const _this$_config5 = this._config,
205
+ onPressChange = _this$_config5.onPressChange,
206
+ onPressStart = _this$_config5.onPressStart,
207
+ touch = getTouchFromResponderEvent(event);
208
+ this._touchActivatePosition = {
209
+ pageX: touch.pageX,
210
+ pageY: touch.pageY
211
+ }, onPressStart?.(event), onPressChange?.(!0);
212
+ }
213
+ _deactivate(event) {
214
+ const _this$_config6 = this._config,
215
+ onPressChange = _this$_config6.onPressChange,
216
+ onPressEnd = _this$_config6.onPressEnd;
217
+ function end() {
218
+ onPressEnd?.(event), onPressChange?.(!1);
219
+ }
220
+ const delayPressEnd = normalizeDelay(this._config.delayPressEnd);
221
+ delayPressEnd > 0 ? this._pressOutDelayTimeout = setTimeout(() => {
222
+ end();
223
+ }, delayPressEnd) : end();
224
+ }
225
+ _handleLongPress(event) {
226
+ (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) && this._receiveSignal(LONG_PRESS_DETECTED, event);
227
+ }
228
+ _cancelLongPressDelayTimeout() {
229
+ this._longPressDelayTimeout != null && (clearTimeout(this._longPressDelayTimeout), this._longPressDelayTimeout = null);
230
+ }
231
+ _cancelPressDelayTimeout() {
232
+ this._pressDelayTimeout != null && (clearTimeout(this._pressDelayTimeout), this._pressDelayTimeout = null);
233
+ }
234
+ _cancelPressOutDelayTimeout() {
235
+ this._pressOutDelayTimeout != null && (clearTimeout(this._pressOutDelayTimeout), this._pressOutDelayTimeout = null);
236
+ }
237
+ }
238
+ function normalizeDelay(delay, min, fallback) {
239
+ return min === void 0 && (min = 0), fallback === void 0 && (fallback = 0), Math.max(min, delay ?? fallback);
240
+ }
241
+ function getTouchFromResponderEvent(event) {
242
+ const _event$nativeEvent = event.nativeEvent,
243
+ changedTouches = _event$nativeEvent.changedTouches,
244
+ touches = _event$nativeEvent.touches;
245
+ return touches != null && touches.length > 0 ? touches[0] : changedTouches != null && changedTouches.length > 0 ? changedTouches[0] : event.nativeEvent;
246
+ }
247
+ export { PressResponder };
248
+ //# sourceMappingURL=PressResponder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DELAY","ERROR","LONG_PRESS_DETECTED","NOT_RESPONDER","RESPONDER_ACTIVE_LONG_PRESS_START","RESPONDER_ACTIVE_PRESS_START","RESPONDER_INACTIVE_PRESS_START","RESPONDER_GRANT","RESPONDER_RELEASE","RESPONDER_TERMINATED","Transitions","Object","freeze","isActiveSignal","signal","isButtonRole","element","getAttribute","isPressStartSignal","isTerminalSignal","isValidKeyPress","event","key","role","target","DEFAULT_LONG_PRESS_DELAY_MS","DEFAULT_PRESS_DELAY_MS","PressResponder","_touchActivatePosition","_pressDelayTimeout","_selectionTerminated","_isPointerTouch","_longPressDelayTimeout","_longPressDispatched","_pressOutDelayTimeout","_touchState","_config","_eventHandlers","constructor","config","configure","reset","_cancelLongPressDelayTimeout","_cancelPressDelayTimeout","_cancelPressOutDelayTimeout","getEventHandlers","_createEventHandlers","start","shouldDelay","persist","nativeEvent","type","_receiveSignal","delayPressStart","normalizeDelay","setTimeout","delayLongPress","_handleLongPress","end","keyupHandler","onPress","document","removeEventListener","elementType","tagName","toLowerCase","isNativeInteractiveElement","onStartShouldSetResponder","disabled","currentTarget","stopPropagation","onKeyDown","addEventListener","preventDefault","onResponderGrant","onResponderMove","onPressMove","touch","getTouchFromResponderEvent","deltaX","pageX","deltaY","pageY","Math","hypot","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","_this$_config","cancelable","onLongPress","onClick","_this$_config2","altKey","onContextMenu","_this$_config3","defaultPrevented","prevState","nextState","console","error","_performTransitionSideEffects","isPrevActive","isNextActive","_activate","_deactivate","_this$_config4","_onLongPress","_this$_config5","onPressChange","onPressStart","_this$_config6","onPressEnd","delayPressEnd","clearTimeout","delay","min","fallback","max","_event$nativeEvent","changedTouches","touches","length"],"sources":["../../src/PressResponder.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}