@tamagui/react-native-web-internals 1.129.13 → 1.129.14

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,5 +1,84 @@
1
- import requestIdleCallback, { cancelIdleCallback } from "./requestIdleCallback";
2
- const InteractionManager = {
1
+ import { invariant } from "./invariant";
2
+ import requestIdleCallback from "./requestIdleCallback/index";
3
+ class EventEmitter {
4
+ _registry = {};
5
+ addListener(eventType, listener, context) {
6
+ const registrations = this._allocate(eventType), registration = {
7
+ context,
8
+ listener,
9
+ remove: () => {
10
+ registrations.delete(registration);
11
+ }
12
+ };
13
+ return registrations.add(registration), registration;
14
+ }
15
+ emit(eventType, ...args) {
16
+ const registrations = this._registry[eventType];
17
+ if (registrations != null)
18
+ for (const registration of Array.from(registrations))
19
+ registration.listener.apply(registration.context, args);
20
+ }
21
+ _allocate(eventType) {
22
+ let registrations = this._registry[eventType];
23
+ return registrations == null && (registrations = /* @__PURE__ */ new Set(), this._registry[eventType] = registrations), registrations;
24
+ }
25
+ }
26
+ class TaskQueue {
27
+ _queueStack;
28
+ _onMoreTasks;
29
+ constructor({ onMoreTasks }) {
30
+ this._onMoreTasks = onMoreTasks, this._queueStack = [{ tasks: [], popable: !0 }];
31
+ }
32
+ enqueueTasks(tasks) {
33
+ tasks.forEach((task) => this._enqueue(task));
34
+ }
35
+ cancelTasks(tasksToCancel) {
36
+ this._queueStack = this._queueStack.map((queue) => ({
37
+ ...queue,
38
+ tasks: queue.tasks.filter((task) => !tasksToCancel.includes(task))
39
+ })).filter((queue, idx) => queue.tasks.length > 0 || idx === 0);
40
+ }
41
+ hasTasksToProcess() {
42
+ return this._getCurrentQueue().length > 0;
43
+ }
44
+ processNext() {
45
+ const queue = this._getCurrentQueue();
46
+ if (queue.length) {
47
+ const task = queue.shift();
48
+ try {
49
+ typeof task == "object" && task && "gen" in task ? this._genPromise(task) : typeof task == "object" && task && "run" in task ? task.run() : (invariant(
50
+ typeof task == "function",
51
+ `Expected Function, SimpleTask, or PromiseTask, but got:
52
+ ` + JSON.stringify(task, null, 2)
53
+ ), task());
54
+ } catch (e) {
55
+ if (e instanceof Error) {
56
+ const taskName = task && typeof task == "object" && "name" in task ? task.name : "";
57
+ e.message = "TaskQueue: Error with task " + taskName + ": " + e.message;
58
+ }
59
+ throw e;
60
+ }
61
+ }
62
+ }
63
+ _enqueue(task) {
64
+ this._getCurrentQueue().push(task);
65
+ }
66
+ _getCurrentQueue() {
67
+ const stackIdx = this._queueStack.length - 1, queue = this._queueStack[stackIdx];
68
+ return queue.popable && queue.tasks.length === 0 && stackIdx > 0 ? (this._queueStack.pop(), this._getCurrentQueue()) : queue.tasks;
69
+ }
70
+ _genPromise(task) {
71
+ const stackIdx = this._queueStack.push({ tasks: [], popable: !1 }) - 1, stackItem = this._queueStack[stackIdx];
72
+ task.gen().then(() => {
73
+ stackItem.popable = !0, this.hasTasksToProcess() && this._onMoreTasks();
74
+ }).catch((ex) => {
75
+ setTimeout(() => {
76
+ throw ex instanceof Error && (ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`), ex;
77
+ }, 0);
78
+ });
79
+ }
80
+ }
81
+ const _emitter = new EventEmitter(), InteractionManager = {
3
82
  Events: {
4
83
  interactionStart: "interactionStart",
5
84
  interactionComplete: "interactionComplete"
@@ -8,17 +87,17 @@ const InteractionManager = {
8
87
  * Schedule a function to run after all interactions have completed.
9
88
  */
10
89
  runAfterInteractions(task) {
11
- let handle;
12
- const promise = new Promise((resolve) => {
13
- handle = requestIdleCallback(() => {
14
- task ? resolve(task()) : resolve();
15
- });
90
+ const tasks = [], promise = new Promise((resolve) => {
91
+ _scheduleUpdate(), task && tasks.push(task), tasks.push({
92
+ run: resolve,
93
+ name: "resolve " + (task && typeof task == "object" && "name" in task && task.name || "?")
94
+ }), _taskQueue.enqueueTasks(tasks);
16
95
  });
17
96
  return {
18
97
  then: promise.then.bind(promise),
19
98
  done: promise.then.bind(promise),
20
99
  cancel: () => {
21
- cancelIdleCallback(handle);
100
+ _taskQueue.cancelTasks(tasks);
22
101
  }
23
102
  };
24
103
  },
@@ -26,19 +105,44 @@ const InteractionManager = {
26
105
  * Notify manager that an interaction has started.
27
106
  */
28
107
  createInteractionHandle() {
29
- return 1;
108
+ _scheduleUpdate();
109
+ const handle = ++_inc;
110
+ return _addInteractionSet.add(handle), handle;
30
111
  },
31
112
  /**
32
113
  * Notify manager that an interaction has completed.
33
114
  */
34
115
  clearInteractionHandle(handle) {
116
+ invariant(!!handle, "Must provide a handle to clear."), _scheduleUpdate(), _addInteractionSet.delete(handle), _deleteInteractionSet.add(handle);
35
117
  },
36
- addListener: () => {
118
+ addListener: _emitter.addListener.bind(_emitter),
119
+ /**
120
+ * Set deadline for task processing
121
+ */
122
+ setDeadline(deadline) {
123
+ _deadline = deadline;
37
124
  }
38
- };
39
- var InteractionManager_default = InteractionManager;
125
+ }, _interactionSet = /* @__PURE__ */ new Set(), _addInteractionSet = /* @__PURE__ */ new Set(), _deleteInteractionSet = /* @__PURE__ */ new Set(), _taskQueue = new TaskQueue({ onMoreTasks: _scheduleUpdate });
126
+ let _nextUpdateHandle = null, _inc = 0, _deadline = -1;
127
+ function _scheduleUpdate() {
128
+ _nextUpdateHandle || (_deadline > 0 ? _nextUpdateHandle = setTimeout(_processUpdate) : _nextUpdateHandle = requestIdleCallback(_processUpdate));
129
+ }
130
+ function _processUpdate() {
131
+ _nextUpdateHandle = null;
132
+ const interactionCount = _interactionSet.size;
133
+ _addInteractionSet.forEach((handle) => _interactionSet.add(handle)), _deleteInteractionSet.forEach((handle) => _interactionSet.delete(handle));
134
+ const nextInteractionCount = _interactionSet.size;
135
+ if (interactionCount !== 0 && nextInteractionCount === 0 ? _emitter.emit("interactionComplete") : interactionCount === 0 && nextInteractionCount !== 0 && _emitter.emit("interactionStart"), nextInteractionCount === 0) {
136
+ const begin = Date.now();
137
+ for (; _taskQueue.hasTasksToProcess(); )
138
+ if (_taskQueue.processNext(), _deadline > 0 && Date.now() - begin >= _deadline) {
139
+ _scheduleUpdate();
140
+ break;
141
+ }
142
+ }
143
+ _addInteractionSet.clear(), _deleteInteractionSet.clear();
144
+ }
40
145
  export {
41
- InteractionManager,
42
- InteractionManager_default as default
146
+ InteractionManager
43
147
  };
44
148
  //# sourceMappingURL=InteractionManager.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/modules/InteractionManager.tsx"],
4
- "mappings": "AAUA,OAAO,uBAAuB,0BAA0B;AAEjD,MAAM,qBAAqB;AAAA,EAChC,QAAQ;AAAA,IACN,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,MAInB;AACA,QAAI;AAEJ,UAAM,UAAU,IAAI,QAAQ,CAAC,YAAY;AACvC,eAAS,oBAAoB,MAAM;AACjC,QAAI,OACF,QAAQ,KAAK,CAAC,IAGd,QAAQ;AAAA,MAEZ,CAAC;AAAA,IACH,CAAC;AACD,WAAO;AAAA,MACL,MAAM,QAAQ,KAAK,KAAK,OAAO;AAAA,MAC/B,MAAM,QAAQ,KAAK,KAAK,OAAO;AAAA,MAC/B,QAAQ,MAAM;AACZ,2BAAmB,MAAM;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,0BAAkC;AAChC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB,QAAgB;AAAA,EAAC;AAAA,EAExC,aAAa,MAAM;AAAA,EAAC;AACtB;AAEA,IAAO,6BAAQ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,39 +1,161 @@
1
- import requestIdleCallback, { cancelIdleCallback } from "./requestIdleCallback";
2
- const InteractionManager = {
3
- Events: {
4
- interactionStart: "interactionStart",
5
- interactionComplete: "interactionComplete"
6
- },
7
- /**
8
- * Schedule a function to run after all interactions have completed.
9
- */
10
- runAfterInteractions(task) {
11
- let handle;
12
- const promise = new Promise(resolve => {
13
- handle = requestIdleCallback(() => {
14
- task ? resolve(task()) : resolve();
15
- });
16
- });
17
- return {
18
- then: promise.then.bind(promise),
19
- done: promise.then.bind(promise),
20
- cancel: () => {
21
- cancelIdleCallback(handle);
1
+ import { invariant } from "./invariant.mjs";
2
+ import requestIdleCallback from "./requestIdleCallback/index.mjs";
3
+ class EventEmitter {
4
+ _registry = {};
5
+ addListener(eventType, listener, context) {
6
+ const registrations = this._allocate(eventType),
7
+ registration = {
8
+ context,
9
+ listener,
10
+ remove: () => {
11
+ registrations.delete(registration);
12
+ }
13
+ };
14
+ return registrations.add(registration), registration;
15
+ }
16
+ emit(eventType, ...args) {
17
+ const registrations = this._registry[eventType];
18
+ if (registrations != null) for (const registration of Array.from(registrations)) registration.listener.apply(registration.context, args);
19
+ }
20
+ _allocate(eventType) {
21
+ let registrations = this._registry[eventType];
22
+ return registrations == null && (registrations = /* @__PURE__ */new Set(), this._registry[eventType] = registrations), registrations;
23
+ }
24
+ }
25
+ class TaskQueue {
26
+ _queueStack;
27
+ _onMoreTasks;
28
+ constructor({
29
+ onMoreTasks
30
+ }) {
31
+ this._onMoreTasks = onMoreTasks, this._queueStack = [{
32
+ tasks: [],
33
+ popable: !0
34
+ }];
35
+ }
36
+ enqueueTasks(tasks) {
37
+ tasks.forEach(task => this._enqueue(task));
38
+ }
39
+ cancelTasks(tasksToCancel) {
40
+ this._queueStack = this._queueStack.map(queue => ({
41
+ ...queue,
42
+ tasks: queue.tasks.filter(task => !tasksToCancel.includes(task))
43
+ })).filter((queue, idx) => queue.tasks.length > 0 || idx === 0);
44
+ }
45
+ hasTasksToProcess() {
46
+ return this._getCurrentQueue().length > 0;
47
+ }
48
+ processNext() {
49
+ const queue = this._getCurrentQueue();
50
+ if (queue.length) {
51
+ const task = queue.shift();
52
+ try {
53
+ typeof task == "object" && task && "gen" in task ? this._genPromise(task) : typeof task == "object" && task && "run" in task ? task.run() : (invariant(typeof task == "function", `Expected Function, SimpleTask, or PromiseTask, but got:
54
+ ` + JSON.stringify(task, null, 2)), task());
55
+ } catch (e) {
56
+ if (e instanceof Error) {
57
+ const taskName = task && typeof task == "object" && "name" in task ? task.name : "";
58
+ e.message = "TaskQueue: Error with task " + taskName + ": " + e.message;
59
+ }
60
+ throw e;
22
61
  }
23
- };
24
- },
25
- /**
26
- * Notify manager that an interaction has started.
27
- */
28
- createInteractionHandle() {
29
- return 1;
62
+ }
63
+ }
64
+ _enqueue(task) {
65
+ this._getCurrentQueue().push(task);
66
+ }
67
+ _getCurrentQueue() {
68
+ const stackIdx = this._queueStack.length - 1,
69
+ queue = this._queueStack[stackIdx];
70
+ return queue.popable && queue.tasks.length === 0 && stackIdx > 0 ? (this._queueStack.pop(), this._getCurrentQueue()) : queue.tasks;
71
+ }
72
+ _genPromise(task) {
73
+ const stackIdx = this._queueStack.push({
74
+ tasks: [],
75
+ popable: !1
76
+ }) - 1,
77
+ stackItem = this._queueStack[stackIdx];
78
+ task.gen().then(() => {
79
+ stackItem.popable = !0, this.hasTasksToProcess() && this._onMoreTasks();
80
+ }).catch(ex => {
81
+ setTimeout(() => {
82
+ throw ex instanceof Error && (ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`), ex;
83
+ }, 0);
84
+ });
85
+ }
86
+ }
87
+ const _emitter = new EventEmitter(),
88
+ InteractionManager = {
89
+ Events: {
90
+ interactionStart: "interactionStart",
91
+ interactionComplete: "interactionComplete"
92
+ },
93
+ /**
94
+ * Schedule a function to run after all interactions have completed.
95
+ */
96
+ runAfterInteractions(task) {
97
+ const tasks = [],
98
+ promise = new Promise(resolve => {
99
+ _scheduleUpdate(), task && tasks.push(task), tasks.push({
100
+ run: resolve,
101
+ name: "resolve " + (task && typeof task == "object" && "name" in task && task.name || "?")
102
+ }), _taskQueue.enqueueTasks(tasks);
103
+ });
104
+ return {
105
+ then: promise.then.bind(promise),
106
+ done: promise.then.bind(promise),
107
+ cancel: () => {
108
+ _taskQueue.cancelTasks(tasks);
109
+ }
110
+ };
111
+ },
112
+ /**
113
+ * Notify manager that an interaction has started.
114
+ */
115
+ createInteractionHandle() {
116
+ _scheduleUpdate();
117
+ const handle = ++_inc;
118
+ return _addInteractionSet.add(handle), handle;
119
+ },
120
+ /**
121
+ * Notify manager that an interaction has completed.
122
+ */
123
+ clearInteractionHandle(handle) {
124
+ invariant(!!handle, "Must provide a handle to clear."), _scheduleUpdate(), _addInteractionSet.delete(handle), _deleteInteractionSet.add(handle);
125
+ },
126
+ addListener: _emitter.addListener.bind(_emitter),
127
+ /**
128
+ * Set deadline for task processing
129
+ */
130
+ setDeadline(deadline) {
131
+ _deadline = deadline;
132
+ }
30
133
  },
31
- /**
32
- * Notify manager that an interaction has completed.
33
- */
34
- clearInteractionHandle(handle) {},
35
- addListener: () => {}
36
- };
37
- var InteractionManager_default = InteractionManager;
38
- export { InteractionManager, InteractionManager_default as default };
134
+ _interactionSet = /* @__PURE__ */new Set(),
135
+ _addInteractionSet = /* @__PURE__ */new Set(),
136
+ _deleteInteractionSet = /* @__PURE__ */new Set(),
137
+ _taskQueue = new TaskQueue({
138
+ onMoreTasks: _scheduleUpdate
139
+ });
140
+ let _nextUpdateHandle = null,
141
+ _inc = 0,
142
+ _deadline = -1;
143
+ function _scheduleUpdate() {
144
+ _nextUpdateHandle || (_deadline > 0 ? _nextUpdateHandle = setTimeout(_processUpdate) : _nextUpdateHandle = requestIdleCallback(_processUpdate));
145
+ }
146
+ function _processUpdate() {
147
+ _nextUpdateHandle = null;
148
+ const interactionCount = _interactionSet.size;
149
+ _addInteractionSet.forEach(handle => _interactionSet.add(handle)), _deleteInteractionSet.forEach(handle => _interactionSet.delete(handle));
150
+ const nextInteractionCount = _interactionSet.size;
151
+ if (interactionCount !== 0 && nextInteractionCount === 0 ? _emitter.emit("interactionComplete") : interactionCount === 0 && nextInteractionCount !== 0 && _emitter.emit("interactionStart"), nextInteractionCount === 0) {
152
+ const begin = Date.now();
153
+ for (; _taskQueue.hasTasksToProcess();) if (_taskQueue.processNext(), _deadline > 0 && Date.now() - begin >= _deadline) {
154
+ _scheduleUpdate();
155
+ break;
156
+ }
157
+ }
158
+ _addInteractionSet.clear(), _deleteInteractionSet.clear();
159
+ }
160
+ export { InteractionManager };
39
161
  //# sourceMappingURL=InteractionManager.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["requestIdleCallback","cancelIdleCallback","InteractionManager","Events","interactionStart","interactionComplete","runAfterInteractions","task","handle","promise","Promise","resolve","then","bind","done","cancel","createInteractionHandle","clearInteractionHandle","addListener","InteractionManager_default"],"sources":["../../../src/modules/InteractionManager.tsx"],"sourcesContent":[null],"mappings":"AAUA,OAAOA,mBAAA,IAAuBC,kBAAA,QAA0B;AAEjD,MAAMC,kBAAA,GAAqB;EAChCC,MAAA,EAAQ;IACNC,gBAAA,EAAkB;IAClBC,mBAAA,EAAqB;EACvB;EAAA;AAAA;AAAA;EAKAC,qBAAqBC,IAAA,EAInB;IACA,IAAIC,MAAA;IAEJ,MAAMC,OAAA,GAAU,IAAIC,OAAA,CAASC,OAAA,IAAY;MACvCH,MAAA,GAASR,mBAAA,CAAoB,MAAM;QAC7BO,IAAA,GACFI,OAAA,CAAQJ,IAAA,CAAK,CAAC,IAGdI,OAAA,CAAQ;MAEZ,CAAC;IACH,CAAC;IACD,OAAO;MACLC,IAAA,EAAMH,OAAA,CAAQG,IAAA,CAAKC,IAAA,CAAKJ,OAAO;MAC/BK,IAAA,EAAML,OAAA,CAAQG,IAAA,CAAKC,IAAA,CAAKJ,OAAO;MAC/BM,MAAA,EAAQA,CAAA,KAAM;QACZd,kBAAA,CAAmBO,MAAM;MAC3B;IACF;EACF;EAAA;AAAA;AAAA;EAKAQ,wBAAA,EAAkC;IAChC,OAAO;EACT;EAAA;AAAA;AAAA;EAKAC,uBAAuBT,MAAA,EAAgB,CAAC;EAExCU,WAAA,EAAaA,CAAA,KAAM,CAAC;AACtB;AAEA,IAAOC,0BAAA,GAAQjB,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["invariant","requestIdleCallback","EventEmitter","_registry","addListener","eventType","listener","context","registrations","_allocate","registration","remove","delete","add","emit","args","Array","from","apply","Set","TaskQueue","_queueStack","_onMoreTasks","constructor","onMoreTasks","tasks","popable","enqueueTasks","forEach","task","_enqueue","cancelTasks","tasksToCancel","map","queue","filter","includes","idx","length","hasTasksToProcess","_getCurrentQueue","processNext","shift","_genPromise","run","JSON","stringify","e","Error","taskName","name","message","push","stackIdx","pop","stackItem","gen","then","catch","ex","setTimeout","_emitter","InteractionManager","Events","interactionStart","interactionComplete","runAfterInteractions","promise","Promise","resolve","_scheduleUpdate","_taskQueue","bind","done","cancel","createInteractionHandle","handle","_inc","_addInteractionSet","clearInteractionHandle","_deleteInteractionSet","setDeadline","deadline","_deadline","_interactionSet","_nextUpdateHandle","_processUpdate","interactionCount","size","nextInteractionCount","begin","Date","now","clear"],"sources":["../../../src/modules/InteractionManager.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,168 @@
1
- import requestIdleCallback, { cancelIdleCallback } from "./requestIdleCallback";
2
- var InteractionManager = {
1
+ import { invariant } from "./invariant.native.js";
2
+ import requestIdleCallback from "./requestIdleCallback/index.native.js";
3
+ function _class_call_check(instance, Constructor) {
4
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for (var i = 0; i < props.length; i++) {
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
10
+ }
11
+ }
12
+ function _create_class(Constructor, protoProps, staticProps) {
13
+ return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor;
14
+ }
15
+ function _define_property(obj, key, value) {
16
+ return key in obj ? Object.defineProperty(obj, key, {
17
+ value,
18
+ enumerable: !0,
19
+ configurable: !0,
20
+ writable: !0
21
+ }) : obj[key] = value, obj;
22
+ }
23
+ var EventEmitter = /* @__PURE__ */function () {
24
+ "use strict";
25
+
26
+ function EventEmitter2() {
27
+ _class_call_check(this, EventEmitter2), _define_property(this, "_registry", {});
28
+ }
29
+ return _create_class(EventEmitter2, [{
30
+ key: "addListener",
31
+ value: function (eventType, listener, context) {
32
+ var registrations = this._allocate(eventType),
33
+ registration = {
34
+ context,
35
+ listener,
36
+ remove: function () {
37
+ registrations.delete(registration);
38
+ }
39
+ };
40
+ return registrations.add(registration), registration;
41
+ }
42
+ }, {
43
+ key: "emit",
44
+ value: function (eventType) {
45
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) args[_key - 1] = arguments[_key];
46
+ var registrations = this._registry[eventType];
47
+ if (registrations != null) {
48
+ var _iteratorNormalCompletion = !0,
49
+ _didIteratorError = !1,
50
+ _iteratorError = void 0;
51
+ try {
52
+ for (var _iterator = Array.from(registrations)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
53
+ var registration = _step.value;
54
+ registration.listener.apply(registration.context, args);
55
+ }
56
+ } catch (err) {
57
+ _didIteratorError = !0, _iteratorError = err;
58
+ } finally {
59
+ try {
60
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
61
+ } finally {
62
+ if (_didIteratorError) throw _iteratorError;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }, {
68
+ key: "_allocate",
69
+ value: function (eventType) {
70
+ var registrations = this._registry[eventType];
71
+ return registrations == null && (registrations = /* @__PURE__ */new Set(), this._registry[eventType] = registrations), registrations;
72
+ }
73
+ }]), EventEmitter2;
74
+ }(),
75
+ TaskQueue = /* @__PURE__ */function () {
76
+ "use strict";
77
+
78
+ function TaskQueue2(param) {
79
+ var {
80
+ onMoreTasks
81
+ } = param;
82
+ _class_call_check(this, TaskQueue2), _define_property(this, "_queueStack", void 0), _define_property(this, "_onMoreTasks", void 0), this._onMoreTasks = onMoreTasks, this._queueStack = [{
83
+ tasks: [],
84
+ popable: !0
85
+ }];
86
+ }
87
+ return _create_class(TaskQueue2, [{
88
+ key: "enqueueTasks",
89
+ value: function (tasks) {
90
+ var _this = this;
91
+ tasks.forEach(function (task) {
92
+ return _this._enqueue(task);
93
+ });
94
+ }
95
+ }, {
96
+ key: "cancelTasks",
97
+ value: function (tasksToCancel) {
98
+ this._queueStack = this._queueStack.map(function (queue) {
99
+ return {
100
+ ...queue,
101
+ tasks: queue.tasks.filter(function (task) {
102
+ return !tasksToCancel.includes(task);
103
+ })
104
+ };
105
+ }).filter(function (queue, idx) {
106
+ return queue.tasks.length > 0 || idx === 0;
107
+ });
108
+ }
109
+ }, {
110
+ key: "hasTasksToProcess",
111
+ value: function () {
112
+ return this._getCurrentQueue().length > 0;
113
+ }
114
+ }, {
115
+ key: "processNext",
116
+ value: function () {
117
+ var queue = this._getCurrentQueue();
118
+ if (queue.length) {
119
+ var task = queue.shift();
120
+ try {
121
+ typeof task == "object" && task && "gen" in task ? this._genPromise(task) : typeof task == "object" && task && "run" in task ? task.run() : (invariant(typeof task == "function", `Expected Function, SimpleTask, or PromiseTask, but got:
122
+ ` + JSON.stringify(task, null, 2)), task());
123
+ } catch (e) {
124
+ if (e instanceof Error) {
125
+ var taskName = task && typeof task == "object" && "name" in task ? task.name : "";
126
+ e.message = "TaskQueue: Error with task " + taskName + ": " + e.message;
127
+ }
128
+ throw e;
129
+ }
130
+ }
131
+ }
132
+ }, {
133
+ key: "_enqueue",
134
+ value: function (task) {
135
+ this._getCurrentQueue().push(task);
136
+ }
137
+ }, {
138
+ key: "_getCurrentQueue",
139
+ value: function () {
140
+ var stackIdx = this._queueStack.length - 1,
141
+ queue = this._queueStack[stackIdx];
142
+ return queue.popable && queue.tasks.length === 0 && stackIdx > 0 ? (this._queueStack.pop(), this._getCurrentQueue()) : queue.tasks;
143
+ }
144
+ }, {
145
+ key: "_genPromise",
146
+ value: function (task) {
147
+ var _this = this,
148
+ length = this._queueStack.push({
149
+ tasks: [],
150
+ popable: !1
151
+ }),
152
+ stackIdx = length - 1,
153
+ stackItem = this._queueStack[stackIdx];
154
+ task.gen().then(function () {
155
+ stackItem.popable = !0, _this.hasTasksToProcess() && _this._onMoreTasks();
156
+ }).catch(function (ex) {
157
+ setTimeout(function () {
158
+ throw ex instanceof Error && (ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`), ex;
159
+ }, 0);
160
+ });
161
+ }
162
+ }]), TaskQueue2;
163
+ }(),
164
+ _emitter = new EventEmitter(),
165
+ InteractionManager = {
3
166
  Events: {
4
167
  interactionStart: "interactionStart",
5
168
  interactionComplete: "interactionComplete"
@@ -8,17 +171,18 @@ var InteractionManager = {
8
171
  * Schedule a function to run after all interactions have completed.
9
172
  */
10
173
  runAfterInteractions(task) {
11
- var handle,
174
+ var tasks = [],
12
175
  promise = new Promise(function (resolve) {
13
- handle = requestIdleCallback(function () {
14
- task ? resolve(task()) : resolve();
15
- });
176
+ _scheduleUpdate(), task && tasks.push(task), tasks.push({
177
+ run: resolve,
178
+ name: "resolve " + (task && typeof task == "object" && "name" in task && task.name || "?")
179
+ }), _taskQueue.enqueueTasks(tasks);
16
180
  });
17
181
  return {
18
182
  then: promise.then.bind(promise),
19
183
  done: promise.then.bind(promise),
20
184
  cancel: function () {
21
- cancelIdleCallback(handle);
185
+ _taskQueue.cancelTasks(tasks);
22
186
  }
23
187
  };
24
188
  },
@@ -26,14 +190,52 @@ var InteractionManager = {
26
190
  * Notify manager that an interaction has started.
27
191
  */
28
192
  createInteractionHandle() {
29
- return 1;
193
+ _scheduleUpdate();
194
+ var handle = ++_inc;
195
+ return _addInteractionSet.add(handle), handle;
30
196
  },
31
197
  /**
32
198
  * Notify manager that an interaction has completed.
33
199
  */
34
- clearInteractionHandle(handle) {},
35
- addListener: function () {}
200
+ clearInteractionHandle(handle) {
201
+ invariant(!!handle, "Must provide a handle to clear."), _scheduleUpdate(), _addInteractionSet.delete(handle), _deleteInteractionSet.add(handle);
202
+ },
203
+ addListener: _emitter.addListener.bind(_emitter),
204
+ /**
205
+ * Set deadline for task processing
206
+ */
207
+ setDeadline(deadline) {
208
+ _deadline = deadline;
209
+ }
36
210
  },
37
- InteractionManager_default = InteractionManager;
38
- export { InteractionManager, InteractionManager_default as default };
211
+ _interactionSet = /* @__PURE__ */new Set(),
212
+ _addInteractionSet = /* @__PURE__ */new Set(),
213
+ _deleteInteractionSet = /* @__PURE__ */new Set(),
214
+ _taskQueue = new TaskQueue({
215
+ onMoreTasks: _scheduleUpdate
216
+ }),
217
+ _nextUpdateHandle = null,
218
+ _inc = 0,
219
+ _deadline = -1;
220
+ function _scheduleUpdate() {
221
+ _nextUpdateHandle || (_deadline > 0 ? _nextUpdateHandle = setTimeout(_processUpdate) : _nextUpdateHandle = requestIdleCallback(_processUpdate));
222
+ }
223
+ function _processUpdate() {
224
+ _nextUpdateHandle = null;
225
+ var interactionCount = _interactionSet.size;
226
+ _addInteractionSet.forEach(function (handle) {
227
+ return _interactionSet.add(handle);
228
+ }), _deleteInteractionSet.forEach(function (handle) {
229
+ return _interactionSet.delete(handle);
230
+ });
231
+ var nextInteractionCount = _interactionSet.size;
232
+ if (interactionCount !== 0 && nextInteractionCount === 0 ? _emitter.emit("interactionComplete") : interactionCount === 0 && nextInteractionCount !== 0 && _emitter.emit("interactionStart"), nextInteractionCount === 0) {
233
+ for (var begin = Date.now(); _taskQueue.hasTasksToProcess();) if (_taskQueue.processNext(), _deadline > 0 && Date.now() - begin >= _deadline) {
234
+ _scheduleUpdate();
235
+ break;
236
+ }
237
+ }
238
+ _addInteractionSet.clear(), _deleteInteractionSet.clear();
239
+ }
240
+ export { InteractionManager };
39
241
  //# sourceMappingURL=InteractionManager.native.js.map